SET NAMES utf8 COLLATE utf8_german2_ci;
|
DROP TABLE IF EXISTS t1;
|
CREATE TABLE t1 (a VARCHAR(10) CHARACTER SET utf8 COLLATE utf8_german2_ci);
|
INSERT INTO t1 VALUES ('ae'),('ä');
|
SELECT * FROM t1 WHERE a='ae';
|
SELECT * FROM t1 WHERE a LIKE 'ä';
|
returns these results:
+------+
|
| a |
|
+------+
|
| ae |
|
| ä |
|
+------+
|
2 rows in set (0.01 sec)
|
|
+------+
|
| a |
|
+------+
|
| ä |
|
+------+
|
1 row in set (0.00 sec)
|
This is correct. Equality works taking into account contractions and expansions and returns both rows, while LIKE is performed one-character-to-one-character, so only one record matches.
Now if I join both conditions with AND in a single WHERE, I expect one row with 'ä' to be returned, as it matches both conditions:
SELECT * FROM t1 WHERE a='ae' AND a LIKE 'ä';
|
But in fact I get an empty set.
EXPLAIN EXTENDED returns "Impossible where", which is not correct:
mysql> EXPLAIN EXTENDED SELECT * FROM t1 WHERE a='ae' AND a LIKE 'ä';
|
+------+-------------+-------+------+---------------+------+---------+------+------+----------+------------------+
|
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
|
+------+-------------+-------+------+---------------+------+---------+------+------+----------+------------------+
|
| 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Impossible WHERE |
|
+------+-------------+-------+------+---------------+------+---------+------+------+----------+------------------+
|
After tracing the code, it seems that constant propagation was erroneously applied.
{"report":{"fcp":1306.8999996185303,"ttfb":220.60000038146973,"pageVisibility":"visible","entityId":49033,"key":"jira.project.issue.view-issue","isInitial":true,"threshold":1000,"elementTimings":{},"userDeviceMemory":8,"userDeviceProcessors":64,"apdex":0.5,"journeyId":"f4716cc9-c181-4c06-b3f9-f36205f2098e","navigationType":0,"readyForUser":1412.1000003814697,"redirectCount":0,"resourceLoadedEnd":2064.5,"resourceLoadedStart":226.69999980926514,"resourceTiming":[{"duration":483.30000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/2c21342762a6a02add1c328bed317ffd-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/css/_super/batch.css","startTime":226.69999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":226.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":710,"responseStart":0,"secureConnectionStart":0},{"duration":483.30000019073486,"initiatorType":"link","name":"https://jira.mariadb.org/s/7ebd35e77e471bc30ff0eba799ebc151-CDN/lu2cib/820016/12ta74/2bf333562ca6724060a9d5f1535471f6/_/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":227,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":227,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":710.3000001907349,"responseStart":0,"secureConnectionStart":0},{"duration":523.3000001907349,"initiatorType":"script","name":"https://jira.mariadb.org/s/0917945aaa57108d00c5076fea35e069-CDN/lu2cib/820016/12ta74/0a8bac35585be7fc6c9cc5a0464cd4cf/_/download/contextbatch/js/_super/batch.js?locale=en","startTime":227.19999980926514,"connectEnd":227.19999980926514,"connectStart":227.19999980926514,"domainLookupEnd":227.19999980926514,"domainLookupStart":227.19999980926514,"fetchStart":227.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":227.19999980926514,"responseEnd":750.5,"responseStart":750.5,"secureConnectionStart":227.19999980926514},{"duration":692.1000003814697,"initiatorType":"script","name":"https://jira.mariadb.org/s/2d8175ec2fa4c816e8023260bd8c1786-CDN/lu2cib/820016/12ta74/2bf333562ca6724060a9d5f1535471f6/_/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":227.39999961853027,"connectEnd":227.39999961853027,"connectStart":227.39999961853027,"domainLookupEnd":227.39999961853027,"domainLookupStart":227.39999961853027,"fetchStart":227.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":227.39999961853027,"responseEnd":919.5,"responseStart":919.5,"secureConnectionStart":227.39999961853027},{"duration":715.1000003814697,"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":227.69999980926514,"connectEnd":227.69999980926514,"connectStart":227.69999980926514,"domainLookupEnd":227.69999980926514,"domainLookupStart":227.69999980926514,"fetchStart":227.69999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":227.69999980926514,"responseEnd":942.8000001907349,"responseStart":942.8000001907349,"secureConnectionStart":227.69999980926514},{"duration":716.2000007629395,"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":227.89999961853027,"connectEnd":227.89999961853027,"connectStart":227.89999961853027,"domainLookupEnd":227.89999961853027,"domainLookupStart":227.89999961853027,"fetchStart":227.89999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":227.89999961853027,"responseEnd":944.1000003814697,"responseStart":944.1000003814697,"secureConnectionStart":227.89999961853027},{"duration":717,"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":228,"connectEnd":228,"connectStart":228,"domainLookupEnd":228,"domainLookupStart":228,"fetchStart":228,"redirectEnd":0,"redirectStart":0,"requestStart":228,"responseEnd":945,"responseStart":945,"secureConnectionStart":228},{"duration":726.6999998092651,"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":228.19999980926514,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":228.19999980926514,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":954.8999996185303,"responseStart":0,"secureConnectionStart":0},{"duration":717.1000003814697,"initiatorType":"script","name":"https://jira.mariadb.org/rest/api/1.0/shortcuts/820016/47140b6e0a9bc2e4913da06536125810/shortcuts.js?context=issuenavigation&context=issueaction","startTime":228.39999961853027,"connectEnd":228.39999961853027,"connectStart":228.39999961853027,"domainLookupEnd":228.39999961853027,"domainLookupStart":228.39999961853027,"fetchStart":228.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":228.39999961853027,"responseEnd":945.5,"responseStart":945.5,"secureConnectionStart":228.39999961853027},{"duration":726.6000003814697,"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":228.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":228.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":955.1000003814697,"responseStart":0,"secureConnectionStart":0},{"duration":717.5,"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":228.60000038146973,"connectEnd":228.60000038146973,"connectStart":228.60000038146973,"domainLookupEnd":228.60000038146973,"domainLookupStart":228.60000038146973,"fetchStart":228.60000038146973,"redirectEnd":0,"redirectStart":0,"requestStart":228.60000038146973,"responseEnd":946.1000003814697,"responseStart":946.1000003814697,"secureConnectionStart":228.60000038146973},{"duration":1202.6000003814697,"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":229.39999961853027,"connectEnd":229.39999961853027,"connectStart":229.39999961853027,"domainLookupEnd":229.39999961853027,"domainLookupStart":229.39999961853027,"fetchStart":229.39999961853027,"redirectEnd":0,"redirectStart":0,"requestStart":229.39999961853027,"responseEnd":1432,"responseStart":1432,"secureConnectionStart":229.39999961853027},{"duration":1792.6999998092651,"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":235.30000019073486,"connectEnd":235.30000019073486,"connectStart":235.30000019073486,"domainLookupEnd":235.30000019073486,"domainLookupStart":235.30000019073486,"fetchStart":235.30000019073486,"redirectEnd":0,"redirectStart":0,"requestStart":235.30000019073486,"responseEnd":2028,"responseStart":2028,"secureConnectionStart":235.30000019073486},{"duration":493.30000019073486,"initiatorType":"xmlhttprequest","name":"https://jira.mariadb.org/rest/webResources/1.0/resources","startTime":931.1999998092651,"connectEnd":931.1999998092651,"connectStart":931.1999998092651,"domainLookupEnd":931.1999998092651,"domainLookupStart":931.1999998092651,"fetchStart":931.1999998092651,"redirectEnd":0,"redirectStart":0,"requestStart":931.1999998092651,"responseEnd":1424.5,"responseStart":1424.5,"secureConnectionStart":931.1999998092651},{"duration":740.3999996185303,"initiatorType":"script","name":"https://www.google-analytics.com/analytics.js","startTime":1290.5,"connectEnd":0,"connectStart":0,"domainLookupEnd":0,"domainLookupStart":0,"fetchStart":1290.5,"redirectEnd":0,"redirectStart":0,"requestStart":0,"responseEnd":2030.8999996185303,"responseStart":0,"secureConnectionStart":0},{"duration":599.5,"initiatorType":"script","name":"https://jira.mariadb.org/s/d41d8cd98f00b204e9800998ecf8427e-CDN/lu2cib/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":1465,"connectEnd":1465,"connectStart":1465,"domainLookupEnd":1465,"domainLookupStart":1465,"fetchStart":1465,"redirectEnd":0,"redirectStart":0,"requestStart":1465,"responseEnd":2064.5,"responseStart":2064.5,"secureConnectionStart":1465}],"fetchStart":0,"domainLookupStart":0,"domainLookupEnd":0,"connectStart":0,"connectEnd":0,"requestStart":29,"responseStart":221,"responseEnd":233,"domLoading":224,"domInteractive":2077,"domContentLoadedEventStart":2077,"domContentLoadedEventEnd":2136,"domComplete":3436,"loadEventStart":3436,"loadEventEnd":3437,"userAgent":"Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)","marks":[{"name":"bigPipe.sidebar-id.start","time":2031.8999996185303},{"name":"bigPipe.sidebar-id.end","time":2032.8999996185303},{"name":"bigPipe.activity-panel-pipe-id.start","time":2033},{"name":"bigPipe.activity-panel-pipe-id.end","time":2039.1999998092651},{"name":"activityTabFullyLoaded","time":2162.5}],"measures":[],"correlationId":"fc3cb49520a82c","effectiveType":"4g","downlink":10,"rtt":0,"serverDuration":128,"dbReadsTimeInMs":11,"dbConnsTimeInMs":18,"applicationHash":"9d11dbea5f4be3d4cc21f03a88dd11d8c8687422","experiments":[]}}
Trying to find where exactly it happens. It's not equality propagation. Equality propagation code sees that the charset is "complex" and doesn't create an Item_equal:
#0 my_propagate_complex (cs=0x555556b94d60, str=0x0, length=0) at /home/psergey/dev-git/10.1-explain-json-r4/strings/ctype-simple.c:1683
#1 0x0000555555a50463 in check_simple_equality (left_item=0x7fffc6443898, right_item=0x7fffc64439a0, item=0x7fffc6443a38, cond_equal=0x7fffc6bb3a80) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_select.cc:12415
#2 0x0000555555a50886 in check_equality (thd=0x7fffd0366070, item=0x7fffc6443a38, cond_equal=0x7fffc6bb3a80, eq_list=0x7fffc6bb3af0) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_select.cc:12559
#3 0x0000555555a50991 in build_equal_items_for_cond (thd=0x7fffd0366070, cond=0x7fffc6443f88, inherited=0x0, link_item_fields=true) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_select.cc:12662
#4 0x0000555555a51125 in build_equal_items (join=0x7fffc6444170, cond=0x7fffc6443f88, inherited=0x0, join_list=0x7fffd036a5f0, ignore_on_conds=false, cond_equal_ref=0x7fffc64445c0, link_equal_fields=true) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_select.cc:12871
#5 0x0000555555a54535 in optimize_cond (join=0x7fffc6444170, conds=0x7fffc6443f88, join_list=0x7fffd036a5f0, ignore_on_conds=false, cond_value=0x7fffc6444498, cond_equal=0x7fffc64445c0, flags=1) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_select.cc:14418
#6 0x0000555555a3237c in JOIN::optimize_inner (this=0x7fffc6444170) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_select.cc:1199
#7 0x0000555555a31b02 in JOIN::optimize (this=0x7fffc6444170) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_select.cc:1023
#8 0x0000555555a39bff in mysql_select (thd=0x7fffd0366070, rref_pointer_array=0x7fffd036a6f0, tables=0x7fffc64432a0, wild_num=1, fields=..., conds=0x7fffc6443f88, og_num=0, order=0x0, group=0x0, having=0x0, proc_param=0x0, select_options=2147748608, result=0x7fffc6444150, unit=0x7fffd0369d90, select_lex=0x7fffd036a478) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_select.cc:3306
#9 0x0000555555a2fd0c in handle_select (thd=0x7fffd0366070, lex=0x7fffd0369cc8, result=0x7fffc6444150, setup_tables_done_option=0) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_select.cc:372
#10 0x0000555555a02328 in execute_sqlcom_select (thd=0x7fffd0366070, all_tables=0x7fffc64432a0) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_parse.cc:5675
#11 0x00005555559f89f2 in mysql_execute_command (thd=0x7fffd0366070) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_parse.cc:2806
#12 0x0000555555a0543b in mysql_parse (thd=0x7fffd0366070, rawbuf=0x7fffc6443088 "SELECT * FROM t1 WHERE a='ae' AND a LIKE 'ä'", length=45, parser_state=0x7fffc6bb5090) at /home/psergey/dev-git/10.1-explain-json-r4/sql/sql_parse.cc:6946