Type:
Task
Priority:
Major
Resolution:
Fixed
Item_sum_num has features of DOUBLE data type by default and implements DOUBLE-applicable methods:
val_int()
val_str()
val_decimal()
These methods then are overriden to INT-applicable and hybrid-applicable as follows:
Item_sum_int overrides these methods to INT-applicable.
Item_sum_window_with_row_count derives DOUBLE-applicable implementations from Item_sum_num.
Item_sum_ntile derives DOUBLE-applicable implementations from Item_sum_window_with_row_count and overrides val_real() to INT-based implementation. Note, Item_sum_ntile does not override val_decimal() and val_str(), which looks wrong because they work through val_real() by default and therefore may return truncated results on a huge data sets.
Item_sum_cume_dist derives from Item_sum_window_with_row_count.
Item_sum_percentile_disc derives from Item_sum_cume_dist and Type_handler_hybrid_field_type and overrides value methods to hybrid-applicable, except get_date().
Item_sum_percentile_cont derives from Item_sum_cume_dist and Type_handler_hybrid_field_type, but in fact it can olny have the DOUBLE data type.
This multiple overriding is hard to follow. Let's introduce a new abstract class Item_sum_double and change the Item_sum_num hierarchy as follows:
Item_sum_num
Item_sum_percentile_disc -- hybrid type
Item_sum_sum -- hybrid type
Item_sum_avg
Item_sum_double -- DOUBLE
Item_sum_percent_rank
Item_sum_cume_dist
Item_sum_percentile_cont
Item_sum_variance
Item_sum_std
Item_sum_udf_float
Item_sum_udf_int
Item_sum_udf_decimal
Item_sum_udf_str
Item_sum_int -- INT
Item_sum_row_number
Item_sum_rank
Item_sum_dense_rank
Item_sum_ntile
Item_sum_count
Item_sum_bit
Item_sum_or
Item_sum_and
Item_sum_xor
so that the method type_handler() and value methods like val_int(), val_real(), val_decimal(), get_date() are implemented inside the same class, without multiple nested overriding.
{"report":{"fcp":1057.6000000014901,"ttfb":278.8999999985099,"pageVisibility":"visible","entityId":81963,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"26724b25-d9a2-4b60-b4b9-3af3fc5f5a68","navigationType":0,"readyForUser":1138.6000000014901,"redirectCount":0,"resourceLoadedEnd":890.2999999970198,"resourceLoadedStart":284.29999999701977,"resourceTiming":[{"duration":251.80000000447035,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":284.29999999701977,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":284.29999999701977,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":536.1000000014901,"responseStart":0,"secureConnectionStart":0},{"duration":251.89999999850988,"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":284.6000000014901,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":284.6000000014901,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":536.5,"responseStart":0,"secureConnectionStart":0},{"duration":265.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/e9b27a47da5fb0f74a35acd57e9847fb-CDN/lu2bv2/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":284.79999999701977,"connectEnd":284.79999999701977,"connectStart":284.79999999701977,"domainLookupEnd":284.79999999701977,"domainLookupStart":284.79999999701977,"fetchStart":284.79999999701977,"redirectEnd":0,"redirectStart":0,"requestStart":284.79999999701977,"responseEnd":550.2999999970198,"responseStart":550.2999999970198,"secureConnectionStart":284.79999999701977},{"duration":342.1000000014901,"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":284.8999999985099,"connectEnd":284.8999999985099,"connectStart":284.8999999985099,"domainLookupEnd":284.8999999985099,"domainLookupStart":284.8999999985099,"fetchStart":284.8999999985099,"redirectEnd":0,"redirectStart":0,"requestStart":284.8999999985099,"responseEnd":627,"responseStart":627,"secureConnectionStart":284.8999999985099},{"duration":346,"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":285.1000000014901,"connectEnd":285.1000000014901,"connectStart":285.1000000014901,"domainLookupEnd":285.1000000014901,"domainLookupStart":285.1000000014901,"fetchStart":285.1000000014901,"redirectEnd":0,"redirectStart":0,"requestStart":285.1000000014901,"responseEnd":631.1000000014901,"responseStart":631.1000000014901,"secureConnectionStart":285.1000000014901},{"duration":346.20000000298023,"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":285.3999999985099,"connectEnd":285.3999999985099,"connectStart":285.3999999985099,"domainLookupEnd":285.3999999985099,"domainLookupStart":285.3999999985099,"fetchStart":285.3999999985099,"redirectEnd":0,"redirectStart":0,"requestStart":285.3999999985099,"responseEnd":631.6000000014901,"responseStart":631.6000000014901,"secureConnectionStart":285.3999999985099},{"duration":346.29999999701977,"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":285.6000000014901,"connectEnd":285.6000000014901,"connectStart":285.6000000014901,"domainLookupEnd":285.6000000014901,"domainLookupStart":285.6000000014901,"fetchStart":285.6000000014901,"redirectEnd":0,"redirectStart":0,"requestStart":285.6000000014901,"responseEnd":631.8999999985099,"responseStart":631.8999999985099,"secureConnectionStart":285.6000000014901},{"duration":418.1000000014901,"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":285.69999999552965,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":285.69999999552965,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":703.7999999970198,"responseStart":0,"secureConnectionStart":0},{"duration":346.5,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":285.8999999985099,"connectEnd":285.8999999985099,"connectStart":285.8999999985099,"domainLookupEnd":285.8999999985099,"domainLookupStart":285.8999999985099,"fetchStart":285.8999999985099,"redirectEnd":0,"redirectStart":0,"requestStart":285.8999999985099,"responseEnd":632.3999999985099,"responseStart":632.3999999985099,"secureConnectionStart":285.8999999985099},{"duration":417.8999999985099,"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":286.1000000014901,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":286.1000000014901,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":704,"responseStart":0,"secureConnectionStart":0},{"duration":346.80000000447035,"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":286.19999999552965,"connectEnd":286.19999999552965,"connectStart":286.19999999552965,"domainLookupEnd":286.19999999552965,"domainLookupStart":286.19999999552965,"fetchStart":286.19999999552965,"redirectEnd":0,"redirectStart":0,"requestStart":286.19999999552965,"responseEnd":633,"responseStart":633,"secureConnectionStart":286.19999999552965},{"duration":492.70000000298023,"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":291.69999999552965,"connectEnd":291.69999999552965,"connectStart":291.69999999552965,"domainLookupEnd":291.69999999552965,"domainLookupStart":291.69999999552965,"fetchStart":291.69999999552965,"redirectEnd":0,"redirectStart":0,"requestStart":291.69999999552965,"responseEnd":784.3999999985099,"responseStart":784.2999999970198,"secureConnectionStart":291.69999999552965},{"duration":598.6000000014901,"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":291.69999999552965,"connectEnd":291.69999999552965,"connectStart":291.69999999552965,"domainLookupEnd":291.69999999552965,"domainLookupStart":291.69999999552965,"fetchStart":291.69999999552965,"redirectEnd":0,"redirectStart":0,"requestStart":291.69999999552965,"responseEnd":890.2999999970198,"responseStart":890.2999999970198,"secureConnectionStart":291.69999999552965},{"duration":105.10000000149012,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":741.8999999985099,"connectEnd":741.8999999985099,"connectStart":741.8999999985099,"domainLookupEnd":741.8999999985099,"domainLookupStart":741.8999999985099,"fetchStart":741.8999999985099,"redirectEnd":0,"redirectStart":0,"requestStart":741.8999999985099,"responseEnd":847,"responseStart":847,"secureConnectionStart":741.8999999985099}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":120,"responseStart":278,"responseEnd":284,"domLoading":282,"domInteractive":1211,"domContentLoadedEventStart":1211,"domContentLoadedEventEnd":1259,"domComplete":2617,"loadEventStart":2617,"loadEventEnd":2620,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1191.5},{"name":"bigPipe.sidebar-id.end","time":1192.2999999970198},{"name":"bigPipe.activity-panel-pipe-id.start","time":1192.3999999985099},{"name":"bigPipe.activity-panel-pipe-id.end","time":1195},{"name":"activityTabFullyLoaded","time":1272.6000000014901}],"measures":[],"correlationId":"387e712616fe01","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":97,"dbReadsTimeInMs":15,"dbConnsTimeInMs":24,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}