-
Task
-
-
Major
-
Resolution:
Fixed
-
-
-
In order to remove some duplicate code and simplify creating data type plugins, lets unify these Type_handler methods:
virtual Field *make_table_field(MEM_ROOT *root,
|
const LEX_CSTRING *name,
|
const Record_addr &addr,
|
const Type_all_attributes &attr,
|
TABLE *table) const= 0;
|
and
virtual Field *
|
make_table_field_from_def(TABLE_SHARE *share,
|
MEM_ROOT *mem_root,
|
const LEX_CSTRING *name,
|
const Record_addr &addr,
|
const Bit_addr &bit,
|
const Column_definition_attributes *attr,
|
uint32 flags) const= 0;
|
for Type_handler_int_result and Type_handler_real_result descendants.
Details
Let's add a new constructor:
Column_definition_attributes::
|
Column_definition_attributes(const Type_all_attributes &attr)
|
:length(attr.max_length),
|
decimals(attr.decimals),
|
unireg_check(Field::NONE),
|
interval(attr.get_typelib()),
|
charset(attr.collation.collation),
|
srid(0),
|
pack_flag(attr.unsigned_flag ? 0 : FIELDFLAG_DECIMAL)
|
{}
|
Let's remove these virtual method implementations:
- Type_handler_tiny::make_table_field()
- Type_handler_short::make_table_field()
- Type_handler_long::make_table_field()
- Type_handler_longlong::make_table_field()
- Type_handler_int24::make_table_field()
- Type_handler_year::make_table_field()
- Type_handler_float::make_table_field()
- Type_handler_double::make_table_field()
Instead, let's add these two virtual method implementations:
Field *Type_handler_int_result::make_table_field(MEM_ROOT *root,
|
const LEX_CSTRING *name,
|
const Record_addr &addr,
|
const Type_all_attributes &attr,
|
TABLE_SHARE *share) const
|
{
|
DBUG_ASSERT(is_unsigned() == attr.unsigned_flag);
|
Column_definition_attributes dattr(attr);
|
return make_table_field_from_def(share, root, name, addr,
|
Bit_addr(), &dattr, 0);
|
}
|
Field *
|
Type_handler_real_result::make_table_field(MEM_ROOT *root,
|
const LEX_CSTRING *name,
|
const Record_addr &addr,
|
const Type_all_attributes &attr,
|
TABLE_SHARE *share) const
|
{
|
Column_definition_attributes dattr(attr);
|
return make_table_field_from_def(share, root, name, addr,
|
Bit_addr(), &dattr, 0);
|
}
|
Note, later, in separate changes, we'll also unify the same methods for descendants of:
- Type_handler_temporal_result
- Type_handler_decimal_result
- Type_handler_string_result
- blocks
-
MDEV-4912
Data type plugin API version 1
-
-
Closed
{"report":{"fcp":831.1999998092651,"ttfb":189.29999923706055,"pageVisibility":"visible","entityId":79397,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":1,"journeyId":"04bc11b0-83d6-4ab8-9a09-a6a7500719cf","navigationType":0,"readyForUser":915.6999998092651,"redirectCount":0,"resourceLoadedEnd":539.2999992370605,"resourceLoadedStart":194.29999923706055,"resourceTiming":[{"duration":77.80000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":194.29999923706055,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":194.29999923706055,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":272.0999994277954,"responseStart":0,"secureConnectionStart":0},{"duration":77.90000057220459,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/css/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":194.5999994277954,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":194.5999994277954,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":272.5,"responseStart":0,"secureConnectionStart":0},{"duration":136.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/e9b27a47da5fb0f74a35acd57e9847fb-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":194.79999923706055,"connectEnd":194.79999923706055,"connectStart":194.79999923706055,"domainLookupEnd":194.79999923706055,"domainLookupStart":194.79999923706055,"fetchStart":194.79999923706055,"redirectEnd":0,"redirectStart":0,"requestStart":194.79999923706055,"responseEnd":331.5999994277954,"responseStart":331.5999994277954,"secureConnectionStart":194.79999923706055},{"duration":253,"initiatorType":"script","name":"https://jira.mariadb.org/s/c32eb0da7ad9831253f8397e6cc26afd-CDN/lu2bv2/820016/12ta74/2380add21a9a1006587582385952de73/_/download/contextbatch/js/jira.browse.project,project.issue.navigator,jira.view.issue,jira.general,jira.global,atl.general,-_super/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":194.89999961853027,"connectEnd":194.89999961853027,"connectStart":194.89999961853027,"domainLookupEnd":194.89999961853027,"domainLookupStart":194.89999961853027,"fetchStart":194.89999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":194.89999961853027,"responseEnd":447.8999996185303,"responseStart":447.8999996185303,"secureConnectionStart":194.89999961853027},{"duration":256.80000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/bc0bcb146314416123c992714ee00ff7-CDN/lu2bv2/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":195.0999994277954,"connectEnd":195.0999994277954,"connectStart":195.0999994277954,"domainLookupEnd":195.0999994277954,"domainLookupStart":195.0999994277954,"fetchStart":195.0999994277954,"redirectEnd":0,"redirectStart":0,"requestStart":195.0999994277954,"responseEnd":451.8999996185303,"responseStart":451.8999996185303,"secureConnectionStart":195.0999994277954},{"duration":257.20000076293945,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":195.29999923706055,"connectEnd":195.29999923706055,"connectStart":195.29999923706055,"domainLookupEnd":195.29999923706055,"domainLookupStart":195.29999923706055,"fetchStart":195.29999923706055,"redirectEnd":0,"redirectStart":0,"requestStart":195.29999923706055,"responseEnd":452.5,"responseStart":452.5,"secureConnectionStart":195.29999923706055},{"duration":257.19999980926514,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":195.5999994277954,"connectEnd":195.5999994277954,"connectStart":195.5999994277954,"domainLookupEnd":195.5999994277954,"domainLookupStart":195.5999994277954,"fetchStart":195.5999994277954,"redirectEnd":0,"redirectStart":0,"requestStart":195.5999994277954,"responseEnd":452.79999923706055,"responseStart":452.79999923706055,"secureConnectionStart":195.5999994277954},{"duration":281.0999994277954,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2bv2/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":195.69999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":195.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":476.79999923706055,"responseStart":0,"secureConnectionStart":0},{"duration":257.29999923706055,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":196,"connectEnd":196,"connectStart":196,"domainLookupEnd":196,"domainLookupStart":196,"fetchStart":196,"redirectEnd":0,"redirectStart":0,"requestStart":196,"responseEnd":453.29999923706055,"responseStart":453.29999923706055,"secureConnectionStart":196},{"duration":280.80000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/css/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.css?jira.create.linked.issue=true","startTime":196.0999994277954,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":196.0999994277954,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":476.8999996185303,"responseStart":0,"secureConnectionStart":0},{"duration":257.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/719848dd97ebe0663199f49a3936487a-CDN/lu2bv2/820016/12ta74/d176f0986478cc64f24226b3d20c140d/_/download/contextbatch/js/com.atlassian.jira.projects.sidebar.init,-_super,-project.issue.navigator,-jira.view.issue/batch.js?jira.create.linked.issue=true&locale=en","startTime":196.39999961853027,"connectEnd":196.39999961853027,"connectStart":196.39999961853027,"domainLookupEnd":196.39999961853027,"domainLookupStart":196.39999961853027,"fetchStart":196.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":196.39999961853027,"responseEnd":453.8999996185303,"responseStart":453.8999996185303,"secureConnectionStart":196.39999961853027},{"duration":301.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":203.5999994277954,"connectEnd":203.5999994277954,"connectStart":203.5999994277954,"domainLookupEnd":203.5999994277954,"domainLookupStart":203.5999994277954,"fetchStart":203.5999994277954,"redirectEnd":0,"redirectStart":0,"requestStart":203.5999994277954,"responseEnd":505.0999994277954,"responseStart":505.0999994277954,"secureConnectionStart":203.5999994277954},{"duration":334.8999996185303,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":203.69999980926514,"connectEnd":203.69999980926514,"connectStart":203.69999980926514,"domainLookupEnd":203.69999980926514,"domainLookupStart":203.69999980926514,"fetchStart":203.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":203.69999980926514,"responseEnd":538.5999994277954,"responseStart":538.5999994277954,"secureConnectionStart":203.69999980926514},{"duration":17.5,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":488.5,"connectEnd":488.5,"connectStart":488.5,"domainLookupEnd":488.5,"domainLookupStart":488.5,"fetchStart":488.5,"redirectEnd":0,"redirectStart":0,"requestStart":488.5,"responseEnd":506,"responseStart":506,"secureConnectionStart":488.5},{"duration":23.299999237060547,"initiatorType":"link","name":"https://jira.mariadb.org/s/d5715adaadd168a9002b108b2b039b50-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/css/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.css?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":516,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":516,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":539.2999992370605,"responseStart":0,"secureConnectionStart":0},{"duration":501.3999996185303,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2bv2/820016/12ta74/e65b778d185daf5aee24936755b43da6/_/download/contextbatch/js/browser-metrics-plugin.contrib,-_super,-project.issue.navigator,-jira.view.issue,-atl.general/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&slack-enabled=true","startTime":516.8999996185303,"connectEnd":516.8999996185303,"connectStart":516.8999996185303,"domainLookupEnd":516.8999996185303,"domainLookupStart":516.8999996185303,"fetchStart":516.8999996185303,"redirectEnd":0,"redirectStart":0,"requestStart":516.8999996185303,"responseEnd":1018.2999992370605,"responseStart":1018.2999992370605,"secureConnectionStart":516.8999996185303},{"duration":506.30000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/53a43b6764f587426c7bb9a150184c00-CDN/lu2bv2/820016/12ta74/be4b45e9cec53099498fa61c8b7acba4/_/download/contextbatch/js/jira.project.sidebar,-_super,-project.issue.navigator,-jira.general,-jira.browse.project,-jira.view.issue,-jira.global,-atl.general,-com.atlassian.jira.projects.sidebar.init/batch.js?agile_global_admin_condition=true&jag=true&jira.create.linked.issue=true&locale=en&slack-enabled=true","startTime":517.2999992370605,"connectEnd":517.2999992370605,"connectStart":517.2999992370605,"domainLookupEnd":517.2999992370605,"domainLookupStart":517.2999992370605,"fetchStart":517.2999992370605,"redirectEnd":0,"redirectStart":0,"requestStart":517.2999992370605,"responseEnd":1023.5999994277954,"responseStart":1023.5999994277954,"secureConnectionStart":517.2999992370605},{"duration":372.1000003814697,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":609.0999994277954,"connectEnd":609.0999994277954,"connectStart":609.0999994277954,"domainLookupEnd":609.0999994277954,"domainLookupStart":609.0999994277954,"fetchStart":609.0999994277954,"redirectEnd":0,"redirectStart":0,"requestStart":609.0999994277954,"responseEnd":981.1999998092651,"responseStart":981.1999998092651,"secureConnectionStart":609.0999994277954}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":17,"responseStart":190,"responseEnd":197,"domLoading":193,"domInteractive":979,"domContentLoadedEventStart":979,"domContentLoadedEventEnd":1036,"domComplete":1318,"loadEventStart":1318,"loadEventEnd":1320,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":957.8999996185303},{"name":"bigPipe.sidebar-id.end","time":958.6999998092651},{"name":"bigPipe.activity-panel-pipe-id.start","time":959},{"name":"bigPipe.activity-panel-pipe-id.end","time":961.8999996185303},{"name":"activityTabFullyLoaded","time":1047.1999998092651}],"measures":[],"correlationId":"fd077f5152a219","effectiveType":"4g","downlink":9.3,"rtt":0,"serverDuration":107,"dbReadsTimeInMs":11,"dbConnsTimeInMs":19,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}