MDEV-34309 got stalled in 11.8 partially because there was no clear understanding when exactly foreign keys should be allowed and when not, the documentation is very vague in this regard, and implementation is even more so.
The foreign key columns and the referenced columns must be of the same type, or similar types
which does not help, as it doesn't say what "similar types" means.
The MySQL manual is similarly obscure.
The implementation sometimes demonstrates an odd approach to this, when for example TIME and INET6 data types are considered similar enough (MDEV-35908). Another, less exotic, uncertainty is about varchar(M) <=> char(N) and so on.
There is also a question of other field/table options, e.g. character sets etc.
All in all, for MDEV-34309 functional testing, we need to know when CHECK TABLE .. EXTENDED should alert about a problem and when it should return success. It was decided that it doesn't make sense to follow the current implementation blindly, but instead we should try to make CHECK TABLE ... EXTENDED return really correct diagnostics regarding foreign keys, and fix (possibly in earlier versions) legacy inconsistencies.
I'd say, the definition is — one can do mariadb-dump of everything and then load it back.
That is, "correct" is whatever InnoDB accepts as correct. And "wrong" is whatever InnoDB doesn't accept.
Sergei Golubchik
added a comment - I'd say, the definition is — one can do mariadb-dump of everything and then load it back.
That is, "correct" is whatever InnoDB accepts as correct. And "wrong" is whatever InnoDB doesn't accept.
I'm closing it as "won't do" as i've run out of arguments, the specification for MDEV-34309 testing will be as above,
"correct" is whatever InnoDB accepts as correct
and PASS/FAIL criteria will be chosen accordingly (interpolating it to "whatever InnoDB doesn't accept as correct is incorrect").
As discussed elsewhere, the meaning of "InnoDB acceptance" is that the table can be re-created with the given structure.
mariadb-dump is irrelevant and cannot be used for verification, as it runs with FOREIGN_KEY_CHECKS=0 because it otherwise it might not be able to create even valid structures.
Elena Stepanova
added a comment - I'm closing it as "won't do" as i've run out of arguments, the specification for MDEV-34309 testing will be as above,
"correct" is whatever InnoDB accepts as correct
and PASS/FAIL criteria will be chosen accordingly (interpolating it to "whatever InnoDB doesn't accept as correct is incorrect").
As discussed elsewhere, the meaning of "InnoDB acceptance" is that the table can be re-created with the given structure.
mariadb-dump is irrelevant and cannot be used for verification, as it runs with FOREIGN_KEY_CHECKS=0 because it otherwise it might not be able to create even valid structures.
People
Sergei Golubchik
Elena Stepanova
Votes:
0Vote for this issue
Watchers:
2Start watching this issue
Dates
Created:
Updated:
Resolved:
Git Integration
Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.
{"report":{"fcp":1098.9000000953674,"ttfb":283.59999990463257,"pageVisibility":"visible","entityId":133007,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"b1b230e5-6695-4a4a-b253-02b39e600718","navigationType":0,"readyForUser":1157.5,"redirectCount":0,"resourceLoadedEnd":862.6999998092651,"resourceLoadedStart":289.59999990463257,"resourceTiming":[{"duration":267.7000002861023,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":289.59999990463257,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":289.59999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":557.3000001907349,"responseStart":0,"secureConnectionStart":0},{"duration":267.80000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/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&whisper-enabled=true","startTime":290,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":290,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":557.8000001907349,"responseStart":0,"secureConnectionStart":0},{"duration":355.2000002861023,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":290.19999980926514,"connectEnd":290.19999980926514,"connectStart":290.19999980926514,"domainLookupEnd":290.19999980926514,"domainLookupStart":290.19999980926514,"fetchStart":290.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":562.0999999046326,"responseEnd":645.4000000953674,"responseStart":583.5999999046326,"secureConnectionStart":290.19999980926514},{"duration":363.90000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/2d8175ec2fa4c816e8023260bd8c1786-CDN/lu2cib/820016/12ta74/494e4c556ecbb29f90a3d3b4f09cb99c/_/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&whisper-enabled=true","startTime":290.40000009536743,"connectEnd":290.40000009536743,"connectStart":290.40000009536743,"domainLookupEnd":290.40000009536743,"domainLookupStart":290.40000009536743,"fetchStart":290.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":562,"responseEnd":654.3000001907349,"responseStart":576.9000000953674,"secureConnectionStart":290.40000009536743},{"duration":285.09999990463257,"initiatorType":"script","name":"https://jira.mariadb.org/s/a9324d6758d385eb45c462685ad88f1d-CDN/lu2cib/820016/12ta74/c92c0caa9a024ae85b0ebdbed7fb4bd7/_/download/contextbatch/js/atl.global,-_super/batch.js?locale=en","startTime":290.80000019073486,"connectEnd":290.80000019073486,"connectStart":290.80000019073486,"domainLookupEnd":290.80000019073486,"domainLookupStart":290.80000019073486,"fetchStart":290.80000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":562.5,"responseEnd":575.9000000953674,"responseStart":575.3000001907349,"secureConnectionStart":290.80000019073486},{"duration":331.40000009536743,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-en/jira.webresources:calendar-en.js","startTime":291.09999990463257,"connectEnd":291.09999990463257,"connectStart":291.09999990463257,"domainLookupEnd":291.09999990463257,"domainLookupStart":291.09999990463257,"fetchStart":291.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":570.5,"responseEnd":622.5,"responseStart":621.5999999046326,"secureConnectionStart":291.09999990463257},{"duration":332.30000019073486,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:calendar-localisation-moment/jira.webresources:calendar-localisation-moment.js","startTime":291.19999980926514,"connectEnd":291.19999980926514,"connectStart":291.19999980926514,"domainLookupEnd":291.19999980926514,"domainLookupStart":291.19999980926514,"fetchStart":291.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":570.5999999046326,"responseEnd":623.5,"responseStart":622.8000001907349,"secureConnectionStart":291.19999980926514},{"duration":278.09999990463257,"initiatorType":"link","name":"https://jira.mariadb.org/s/b04b06a02d1959df322d9cded3aeecc1-CDN/lu2cib/820016/12ta74/a2ff6aa845ffc9a1d22fe23d9ee791fc/_/download/contextbatch/css/jira.global.look-and-feel,-_super/batch.css","startTime":291.40000009536743,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":291.40000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":569.5,"responseStart":0,"secureConnectionStart":0},{"duration":333.09999990463257,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":291.5,"connectEnd":291.5,"connectStart":291.5,"domainLookupEnd":291.5,"domainLookupStart":291.5,"fetchStart":291.5,"redirectEnd":0,"redirectStart":0,"requestStart":572.1999998092651,"responseEnd":624.5999999046326,"responseStart":623.6999998092651,"secureConnectionStart":291.5},{"duration":280,"initiatorType":"link","name":"https://jira.mariadb.org/s/3ac36323ba5e4eb0af2aa7ac7211b4bb-CDN/lu2cib/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":291.69999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":291.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":571.6999998092651,"responseStart":0,"secureConnectionStart":0},{"duration":319,"initiatorType":"script","name":"https://jira.mariadb.org/s/5d5e8fe91fbc506585e83ea3b62ccc4b-CDN/lu2cib/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":292,"connectEnd":576.1999998092651,"connectStart":576.1999998092651,"domainLookupEnd":576.1999998092651,"domainLookupStart":576.1999998092651,"fetchStart":292,"redirectEnd":0,"redirectStart":0,"requestStart":577.6999998092651,"responseEnd":611,"responseStart":600.5999999046326,"secureConnectionStart":576.1999998092651},{"duration":518.4000000953674,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-js/jira.webresources:bigpipe-js.js","startTime":314.90000009536743,"connectEnd":314.90000009536743,"connectStart":314.90000009536743,"domainLookupEnd":314.90000009536743,"domainLookupStart":314.90000009536743,"fetchStart":314.90000009536743,"redirectEnd":0,"redirectStart":0,"requestStart":686.9000000953674,"responseEnd":833.3000001907349,"responseStart":831.4000000953674,"secureConnectionStart":314.90000009536743},{"duration":546.5999999046326,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/820016/12ta74/1.0/_/download/batch/jira.webresources:bigpipe-init/jira.webresources:bigpipe-init.js","startTime":316.09999990463257,"connectEnd":316.09999990463257,"connectStart":316.09999990463257,"domainLookupEnd":316.09999990463257,"domainLookupStart":316.09999990463257,"fetchStart":316.09999990463257,"redirectEnd":0,"redirectStart":0,"requestStart":849.8000001907349,"responseEnd":862.6999998092651,"responseStart":861.9000000953674,"secureConnectionStart":316.09999990463257},{"duration":231.60000038146973,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":846.1999998092651,"connectEnd":846.1999998092651,"connectStart":846.1999998092651,"domainLookupEnd":846.1999998092651,"domainLookupStart":846.1999998092651,"fetchStart":846.1999998092651,"redirectEnd":0,"redirectStart":0,"requestStart":1042.4000000953674,"responseEnd":1077.8000001907349,"responseStart":1076.3000001907349,"secureConnectionStart":846.1999998092651}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":124,"responseStart":284,"responseEnd":316,"domLoading":288,"domInteractive":1210,"domContentLoadedEventStart":1210,"domContentLoadedEventEnd":1253,"domComplete":2195,"loadEventStart":2195,"loadEventEnd":2196,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":1186.5},{"name":"bigPipe.sidebar-id.end","time":1187.3000001907349},{"name":"bigPipe.activity-panel-pipe-id.start","time":1187.5},{"name":"bigPipe.activity-panel-pipe-id.end","time":1188.9000000953674},{"name":"activityTabFullyLoaded","time":1265.8000001907349}],"measures":[],"correlationId":"a18a5e02041929","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":99,"dbReadsTimeInMs":16,"dbConnsTimeInMs":25,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
I'd say, the definition is — one can do mariadb-dump of everything and then load it back.
That is, "correct" is whatever InnoDB accepts as correct. And "wrong" is whatever InnoDB doesn't accept.