diff --git a/CMakeLists.txt b/CMakeLists.txt index 939086628c5..aca1bff9f8f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -192,13 +192,20 @@ ELSE() SET (SKIP_COMPONENTS "N-O-N-E") ENDIF() -OPTION(NOT_FOR_DISTRIBUTION "Allow linking with GPLv2-incompatible system libraries. Only set it you never plan to distribute the resulting binaries" OFF) + +IF("${MYSQL_NO_DASH_VERSION}" VERSION_LESS 11.2) + SET(MEMPROTECT_DEFAULT ON) +ELSE() + SET(MEMPROTECT_DEFAULT OFF) +ENDIF() + +OPTION(WITH_PROTECT_STATEMENT_MEMROOT "Enable protection of statement's memory root after first SP/PS execution. Turned into account only for debug build" +${MEMPROTECT_DEFAULT}) # # Enable protection of statement's memory root after first SP/PS execution. # Can be switched on only for debug build. # -OPTION(WITH_PROTECT_STATEMENT_MEMROOT "Enable protection of statement's memory root after first SP/PS execution. Turned into account only for debug build" OFF) IF (WITH_PROTECT_STATEMENT_MEMROOT) SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DPROTECT_STATEMENT_MEMROOT") SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DPROTECT_STATEMENT_MEMROOT") diff --git a/cmake/wsrep.cmake b/cmake/wsrep.cmake index 368ae61d1d3..a01a1d68f64 100644 --- a/cmake/wsrep.cmake +++ b/cmake/wsrep.cmake @@ -17,7 +17,9 @@ # # Galera library does not compile with windows # -IF (NOT WITHOUT_SERVER) +IF(WITHOUT_SERVER) + OPTION(WITH_WSREP "Galera server compatibility in build client utilities" ON) +ELSE() IF(UNIX) SET(with_wsrep_default ON) ELSE() @@ -67,4 +69,4 @@ ENDIF() IF (NOT WIN32) ADD_FEATURE_INFO(WSREP WITH_WSREP "WSREP replication API (to use, e.g. Galera Replication library)") ENDIF() -ENDIF(NOT WITHOUT_SERVER) +ENDIF(WITHOUT_SERVER) diff --git a/mysql-test/include/ctype_myanmar.inc b/mysql-test/include/ctype_myanmar.inc index a305430835f..75de5f07a5d 100644 --- a/mysql-test/include/ctype_myanmar.inc +++ b/mysql-test/include/ctype_myanmar.inc @@ -1293,11 +1293,9 @@ INSERT INTO t1 (s1) VALUES (_ucs2 0x101C1000103A10181000103A), (_ucs2 0x101C103910181000103A /* tea */); -# enable view-protocol after fix MDEV-27871 ---disable_view_protocol - -SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) FROM t1 ORDER BY id; ---enable_view_protocol +--disable_service_connection +SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) as exp FROM t1 ORDER BY id; +--enable_service_connection DROP TABLE t1; diff --git a/mysql-test/include/ctype_numconv.inc b/mysql-test/include/ctype_numconv.inc index a4eaf72c403..ced818f00b9 100644 --- a/mysql-test/include/ctype_numconv.inc +++ b/mysql-test/include/ctype_numconv.inc @@ -1,7 +1,3 @@ -#remove this include after fix MDEV-27871 -# maybe some tests need to be excluded separately after fix ---source include/no_view_protocol.inc - SET TIME_ZONE = _latin1 '+03:00'; --echo # @@ -464,6 +460,7 @@ show create table t1; drop table t1; --disable_ps2_protocol +--disable_view_protocol # Ensure that row_count() value is reset after drop table. select 1; select hex(concat(row_count())); @@ -475,6 +472,7 @@ select hex(concat(found_rows())); create table t1 as select concat(found_rows()) as c1; show create table t1; drop table t1; +--enable_view_protocol --enable_ps2_protocol create table t1 as select concat(uuid_short()) as c1; @@ -664,71 +662,71 @@ create table t1 as select concat(Dimension(GeomFromText('LINSTRING(0 0,10 10)')) show create table t1; drop table t1; -select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); +select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; create table t1 as select concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; drop table t1; -select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))); +select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) as exp; create table t1 as select concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)'))) as c1; show create table t1; drop table t1; -select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); +select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; create table t1 as select concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; drop table t1; -select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))); +select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) as exp; create table t1 as select concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))'))) as c1; show create table t1; drop table t1; -select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))); +select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) as exp; create table t1 as select concat(IsEmpty(GeomFromText('Point(1 1)'))) as c1; show create table t1; drop table t1; -select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))); +select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) as exp; create table t1 as select concat(IsSimple(GeomFromText('Point(1 1)'))) as c1; show create table t1; drop table t1; -select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))); +select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) as exp; create table t1 as select concat(IsClosed(GeomFromText('LineString(1 1,2 2)'))) as c1; show create table t1; drop table t1; -select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))); +select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) as exp; create table t1 as select concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)'))) as c1; drop table t1; -select hex(concat(x(GeomFromText('Point(1 2)')))); +select hex(concat(x(GeomFromText('Point(1 2)')))) as exp; create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; drop table t1; -select hex(concat(y(GeomFromText('Point(1 2)')))); +select hex(concat(y(GeomFromText('Point(1 2)')))) as exp; create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; drop table t1; -select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))); +select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) as exp; create table t1 as select concat(GLength(GeomFromText('LineString(1 2, 2 2)'))) as c1; show create table t1; drop table t1; -select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))); +select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) as exp; create table t1 as select concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))'))) as c1; show create table t1; drop table t1; -select hex(concat(GeometryType(GeomFromText('Point(1 2)')))); +select hex(concat(GeometryType(GeomFromText('Point(1 2)')))) as exp; create table t1 as select concat(GeometryType(GeomFromText('Point(1 2)'))) as c1; show create table t1; drop table t1; -select hex(concat(AsText(GeomFromText('Point(1 2)')))); +select hex(concat(AsText(GeomFromText('Point(1 2)')))) as exp; create table t1 as select concat(AsText(GeomFromText('Point(1 2)'))) as c1; show create table t1; drop table t1; @@ -874,7 +872,7 @@ create table t1 as select concat(sec_to_time(2378)) as c1; show create table t1; drop table t1; -select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))); +select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) as exp; create table t1 as select concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00')) as c1; show create table t1; drop table t1; @@ -894,12 +892,12 @@ create table t1 as select concat(from_unixtime(1111885200)) as c1; show create table t1; drop table t1; -select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))); +select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) as exp; create table t1 as select concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00')) as c1; show create table t1; drop table t1; -select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))); +select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) as exp; create table t1 as select concat(date_add('2004-01-01 12:00:00', interval 1 day)) as c1; show create table t1; select * from t1; @@ -1646,9 +1644,11 @@ INSERT INTO t1 VALUES (1234567); SELECT GROUP_CONCAT(IFNULL(a,'')) FROM t1; SELECT GROUP_CONCAT(IF(a,a,'')) FROM t1; SELECT GROUP_CONCAT(CASE WHEN a THEN a ELSE '' END) FROM t1; +--disable_view_protocol --enable_metadata SELECT COALESCE(a,'') FROM t1 GROUP BY 1; --disable_metadata +--enable_view_protocol --echo # All columns must be VARCHAR(9) with the same length: --disable_warnings CREATE TABLE t2 AS @@ -1764,15 +1764,17 @@ SELECT DATE_SUB(CAST('2007-08-03 17:33:00' AS DATETIME), INTERVAL 1 MINUTE) AS field_datetime; SHOW CREATE TABLE t1; DROP TABLE t1; ---enable_metadata # PS protocol gives different "Max length" value for DATETIME. --disable_ps_protocol +--disable_view_protocol +--enable_metadata SELECT DATE_SUB('2007-08-03', INTERVAL 1 DAY) AS field_str1, DATE_SUB('2007-08-03 17:33:00', INTERVAL 1 MINUTE) AS field1_str2, DATE_SUB(DATE('2007-08-03'), INTERVAL 1 DAY) AS field_date, DATE_SUB(CAST('2007-08-03 17:33:00' AS DATETIME), INTERVAL 1 MINUTE) AS field_datetime; --disable_metadata +--enable_view_protocol --enable_ps_protocol SELECT HEX(DATE_SUB('2007-08-03', INTERVAL 1 MINUTE)) AS field_str1, diff --git a/mysql-test/include/ctype_pad.inc b/mysql-test/include/ctype_pad.inc index a18876145df..8790525701c 100644 --- a/mysql-test/include/ctype_pad.inc +++ b/mysql-test/include/ctype_pad.inc @@ -52,14 +52,13 @@ DROP TABLE t1; --echo # --echo # IF, CASE, LEAST --echo # -#enable after fix MDEV-27871 ---disable_view_protocol -eval SELECT IF('abc' COLLATE $coll = 'abc ', 'pad', 'nopad'); -eval SELECT CASE 'abc' COLLATE $coll WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -eval SELECT CASE WHEN 'abc' COLLATE $coll = 'abc ' THEN 'pad' ELSE 'nopad' END; -eval SELECT HEX(LEAST('abc ' COLLATE $coll, 'abc ')); -eval SELECT HEX(GREATEST('abc ' COLLATE $coll, 'abc ')); ---enable_view_protocol + +eval SELECT IF('abc' COLLATE $coll = 'abc ', 'pad', 'nopad') as exp; +eval SELECT CASE 'abc' COLLATE $coll WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +eval SELECT CASE WHEN 'abc' COLLATE $coll = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +eval SELECT HEX(LEAST('abc ' COLLATE $coll, 'abc ')) as exp; +eval SELECT HEX(GREATEST('abc ' COLLATE $coll, 'abc ')) as exp; + --echo # --echo # Collation mix --echo # diff --git a/mysql-test/include/ctype_str_to_date.inc b/mysql-test/include/ctype_str_to_date.inc index fc7d6801adf..03a3b699497 100644 --- a/mysql-test/include/ctype_str_to_date.inc +++ b/mysql-test/include/ctype_str_to_date.inc @@ -3,10 +3,7 @@ --echo # SELECT @@character_set_connection, HEX(CAST(_utf8'÷' AS CHAR)); -# enable view-protocol after fix MDEV-27871 ---disable_view_protocol -SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)); ---enable_view_protocol +SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)) as exp; CREATE TABLE t1 AS SELECT REPEAT(' ', 64) AS subject, REPEAT(' ',64) AS pattern LIMIT 0; SHOW COLUMNS FROM t1; INSERT INTO t1 VALUES (_utf8'2001÷01÷01',_utf8'%Y÷%m÷%d'); diff --git a/mysql-test/include/ctype_utf8mb4.inc b/mysql-test/include/ctype_utf8mb4.inc index 436b0f2782f..fffe1d719c8 100644 --- a/mysql-test/include/ctype_utf8mb4.inc +++ b/mysql-test/include/ctype_utf8mb4.inc @@ -2,11 +2,6 @@ # Tests with the utf8mb4 character set # -# Tests will be skipped for the view protocol because the view protocol uses -# an additional util connection and don't use for this nessesary configurations -# Also need to resolve MDEV-27871 --- source include/no_view_protocol.inc - --source include/default_optimizer_switch.inc --disable_warnings drop table if exists t1,t2; @@ -31,26 +26,26 @@ select locate('HE','hello' collate utf8mb4_bin); select locate('HE','hello' collate utf8mb4_bin,2); select locate('LO','hello' collate utf8mb4_bin,2); -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2); -select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2); -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2); -select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin); -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin); +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2) as exp; +select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2) as exp; +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2) as exp; +select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin) as exp; +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin) as exp; -select length(_utf8mb4 0xD0B1), bit_length(_utf8mb4 0xD0B1), char_length(_utf8mb4 0xD0B1); +select length(_utf8mb4 0xD0B1), bit_length(_utf8mb4 0xD0B1), char_length(_utf8mb4 0xD0B1) as exp; select 'a' like 'a'; select 'A' like 'a'; select 'A' like 'a' collate utf8mb4_bin; -select _utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%'); +select _utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%') as exp; # Bug #6040: can't retrieve records with umlaut # characters in case insensitive manner. # Case insensitive search LIKE comparison # was broken for multibyte characters: -select convert(_latin1'Gnter Andr' using utf8mb4) like CONVERT(_latin1'GNTER%' USING utf8mb4); -select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4); -select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4); +select convert(_latin1'Gnter Andr' using utf8mb4) like CONVERT(_latin1'GNTER%' USING utf8mb4) as exp; +select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4) as exp; +select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4) as exp; # # Check the following: @@ -666,6 +661,7 @@ DROP TABLE t1; # # Bug #6043 erratic searching for diacriticals in indexed MyISAM UTF-8 table # +--disable_service_connection SET NAMES latin1; eval CREATE TABLE t1 ( id int unsigned NOT NULL auto_increment, @@ -682,6 +678,7 @@ SELECT id, term FROM t1 where (list_id = 1) AND (term = "testetest"); SELECT id, term FROM t1 where (list_id = 1) AND (term = "testtest"); DROP TABLE t1; } +--enable_service_connection # # Bug #6019 SELECT tries to use too short prefix index on utf8mb4 data @@ -747,10 +744,10 @@ drop table t1; # # Bug#22638 SOUNDEX broken for international characters # -select soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB); -select hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)); -select soundex(_utf8mb4 0xD091D092D093); -select hex(soundex(_utf8mb4 0xD091D092D093)); +select soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) as exp; +select hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) as exp; +select soundex(_utf8mb4 0xD091D092D093) as exp; +select hex(soundex(_utf8mb4 0xD091D092D093)) as exp; SET collation_connection='utf8mb4_general_ci'; @@ -786,7 +783,7 @@ drop table t1; # # Bug#8385: utf8mb4_general_ci treats Cyrillic letters I and SHORT I as the same # -select convert(_koi8r'' using utf8mb4) < convert(_koi8r'' using utf8mb4); +select convert(_koi8r'' using utf8mb4) < convert(_koi8r'' using utf8mb4) as exp; # # Bugs#5980: NULL requires a characterset in a union @@ -1191,6 +1188,7 @@ DROP TABLE t1; # (see bug #16674 as well) # +--disable_service_connection SET NAMES latin2; if (!$is_heap) @@ -1220,6 +1218,7 @@ SELECT * FROM t1 WHERE tid=72 and val LIKE 'VOLN DROP TABLE t1; } +--enable_service_connection # # Bug 20709: problem with utf8mb4 fields in temporary tables @@ -1420,8 +1419,11 @@ set names utf8mb4; eval create table t1 (a varchar(10) character set latin1, b int) engine $engine; insert into t1 values ('a',1); select concat(a, if(b>10, N'x', N'y')) from t1; +#Incorrect collation in error message with view protocol +--disable_view_protocol --error 1267 select concat(a, if(b>10, N'æ', N'ß')) from t1; +--enable_view_protocol drop table t1; # Conversion tests for character set introducers diff --git a/mysql-test/include/empty_string_literal.inc b/mysql-test/include/empty_string_literal.inc index 5857c26d4ee..86ddee5db76 100644 --- a/mysql-test/include/empty_string_literal.inc +++ b/mysql-test/include/empty_string_literal.inc @@ -1,17 +1,15 @@ SET SESSION character_set_connection=latin2; SET SESSION character_set_client=cp1250; ---disable_service_connection - --echo # --echo # Test litteral --echo # -#enable view protocol after fix MDEV-27871 and -# it is necessary that the view protocol uses the same connection, -# not util connection +# For "--view-protocol" NULLIF('','') converts to nullif(NULL,NULL) +# in view definition and CHARSET(nullif(NULL,NULL)) returns 'binary'. +# Also view does not allow columns with the same name, +# so it uses generated names --disable_view_protocol - SET sql_mode=@mode; select @@sql_mode; SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST(null as char(10))), 'x', CHARSET('x'); @@ -21,7 +19,6 @@ SELECT '',CHARSET(''), null, CHARSET(null), CAST(null as char(10)), CHARSET(CAST SELECT CHARSET(NULLIF('','')),NULLIF('',''); - --echo # --echo # Test NCHAR litteral --echo # @@ -33,7 +30,6 @@ SELECT N'',CHARSET(N''), N'x', CHARSET(N'x'); SELECT CHARSET(NULLIF(N'',N'')),NULLIF(N'',N''); - --echo # --echo # Test CHARSET prefix litteral --echo # @@ -63,12 +59,12 @@ SELECT '' '' ''; SELECT '' '' '',CHARSET('' '' ''); SELECT _latin1'' '' '',CHARSET(_latin1'' '' ''); SELECT N'' '' '',CHARSET(N'' '' ''); - --enable_view_protocol --echo # --echo # UNION - implicit group by --echo # +--disable_service_connection SELECT 1, null UNION SELECT 1 , '' @@ -84,16 +80,10 @@ UNION SELECT 1 , _cp1250 '' ORDER BY 1; -# it is necessary that the view protocol uses the same connection, -# not util connection ---disable_view_protocol - SELECT NULLIF(_cp1250 '',_cp1250 '') UNION SELECT NULLIF(N'',N''); ---enable_view_protocol - --error ER_CANT_AGGREGATE_2COLLATIONS SELECT 1 , _latin2 '' UNION @@ -131,5 +121,4 @@ EXPLAIN EXTENDED SELECT ''; EXPLAIN EXTENDED SELECT _latin1''; EXPLAIN EXTENDED SELECT N''; EXPLAIN EXTENDED SELECT '' ''; - --enable_service_connection diff --git a/mysql-test/include/gis_debug.inc b/mysql-test/include/gis_debug.inc index 813ae252070..993ed9a4a1a 100644 --- a/mysql-test/include/gis_debug.inc +++ b/mysql-test/include/gis_debug.inc @@ -119,28 +119,25 @@ CALL p1(-1, 'GeometryCollection(Point(9 9),LineString(1 5,0 0),Polygon((2 2,2 8, --enable_query_log -#enable after fix MDEV-27871 ---disable_view_protocol SELECT ST_CONTAINS( GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), - GeomFromText('POINT(5 10)')); + GeomFromText('POINT(5 10)')) as geom; SELECT AsText(ST_UNION( GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), - GeomFromText('POINT(5 10)'))); + GeomFromText('POINT(5 10)'))) as geom; DROP PROCEDURE p1; --echo # --echo # Bug #13833019 ASSERTION `T1->RESULT_RANGE' FAILED IN GCALC_OPERATION_REDUCER::END_COUPLE --echo # -SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)); +SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)) as geom; --echo # --echo # Bug #13832749 HANDLE_FATAL_SIGNAL IN GCALC_FUNCTION::COUNT_INTERNAL --echo # -SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)); +SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)) as geom; ---enable_view_protocol --echo # --echo # Bug#13358363 - ASSERTION: N > 0 && N < SINUSES_CALCULATED*2+1 | GET_N_SINCOS/ADD_EDGE_BUFFER @@ -148,22 +145,19 @@ SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 DO ST_BUFFER(ST_GEOMCOLLFROMTEXT('linestring(1 1,2 2)'),''); -#enable after fix MDEV-27871 ---disable_view_protocol SELECT ST_WITHIN( LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '), ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) '), - ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) ')))); + ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) ')))) as st; SELECT ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '), - ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))); + ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))) as st; SELECT ST_NUMINTERIORRINGS( ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '), - SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))); + SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))) as st; SELECT ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'), - SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))); + SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))) as st; ---enable_view_protocol diff --git a/mysql-test/include/index_merge1.inc b/mysql-test/include/index_merge1.inc index 91609f628ca..db51df6963b 100644 --- a/mysql-test/include/index_merge1.inc +++ b/mysql-test/include/index_merge1.inc @@ -301,31 +301,28 @@ select count(*) from t0; # Test for BUG#4177 -# enable view-protocol after fix MDEV-27871 ---disable_view_protocol - drop table t4; create table t4 (a int); insert into t4 values (1),(4),(3); set @save_join_buffer_size=@@join_buffer_size; set join_buffer_size= 4096; -explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A force index(i1,i2), t0 as B force index (i1,i2) where (A.key1 < 500000 or A.key2 < 3) and (B.key1 < 500000 or B.key2 < 3); -select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A force index(i1,i2), t0 as B force index (i1,i2) where (A.key1 < 500000 or A.key2 < 3) and (B.key1 < 500000 or B.key2 < 3); update t0 set key1=1; -explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A force index(i1,i2), t0 as B force index (i1,i2) where (A.key1 = 1 or A.key2 = 1) and (B.key1 = 1 or B.key2 = 1); -select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A force index(i1,i2), t0 as B force index (i1,i2) where (A.key1 = 1 or A.key2 = 1) and (B.key1 = 1 or B.key2 = 1); @@ -338,12 +335,12 @@ update t0 set key2=1, key3=1, key4=1, key5=1,key6=1,key7=1 where key7 < 500; # scan cost estimates depend on ha_myisam::ref_length) --replace_column 9 # --replace_result "4,4,4,4,4,4,4" X "4,4,4,4,4,4" X "i6,i7" "i6,i7?" "i6" "i6,i7?" -explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A straight_join t0 as B where (A.key1 = 1 and A.key2 = 1 and A.key3 = 1 and A.key4=1 and A.key5=1 and A.key6=1 and A.key7 = 1 or A.key8=1) and (B.key1 = 1 and B.key2 = 1 and B.key3 = 1 and B.key4=1 and B.key5=1 and B.key6=1 and B.key7 = 1 or B.key8=1); -select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A straight_join t0 as B where (A.key1 = 1 and A.key2 = 1 and A.key3 = 1 and A.key4=1 and A.key5=1 and A.key6=1 and A.key7 = 1 or A.key8=1) and (B.key1 = 1 and B.key2 = 1 and B.key3 = 1 and B.key4=1 and B.key5=1 and B.key6=1 and B.key7 = 1 or B.key8=1); @@ -353,8 +350,6 @@ set join_buffer_size= @save_join_buffer_size; drop table t0, t1, t2, t3, t4; ---enable_view_protocol - # BUG#16166 CREATE TABLE t1 ( cola char(3) not null, colb char(3) not null, filler char(200), diff --git a/mysql-test/main/cset_narrowing.test b/mysql-test/main/cset_narrowing.test index 4d0947f6376..957bdef3357 100644 --- a/mysql-test/main/cset_narrowing.test +++ b/mysql-test/main/cset_narrowing.test @@ -88,10 +88,13 @@ set optimizer_trace=1; explain select * from t10, t1 where t10.mb4=t1.mb3 and t10.pk=3; +#Enable after fix MDEV-32034 +--disable_view_protocol select json_detailed(json_extract(trace, '$**.range_scan_alternatives')) as JS from information_schema.optimizer_trace; +--enable_view_protocol select * from t10, t1 where t10.mb4=t1.mb3 and t10.pk=3; @@ -121,12 +124,15 @@ select * from t10, t2 where t2.mb4>t10.mb4 and t10.pk=3; --echo # - ref acccess lookup keys do use equality substitution, --echo # - concat() arguments don't +#Enable after fix MDEV-32034 +--disable_view_protocol explain format=json select straight_join * from t10,t1 force index(mb3),t2 where t1.mb3=t2.mb4 and t2.mb4=t10.mb4 and concat(t1.mb3, t2.mb4, t10.mb4)<>'Bebebe'; select json_detailed(json_extract(trace, '$**.condition_processing')) as JS from information_schema.optimizer_trace; +--enable_view_protocol select straight_join * from t10,t1 force index(mb3),t2 where @@ -140,8 +146,11 @@ where t1.mb3=t2.mb4 and t2.mb4=t10.mb4 and t10.mb4='hello' and concat(t1.mb3, t2.mb4, t10.mb4)<>'Bebebe'; +#Enable after fix MDEV-32034 +--disable_view_protocol select json_detailed(json_extract(trace, '$**.condition_processing')) as JS from information_schema.optimizer_trace; +--enable_view_protocol drop table t2; drop table t1, t10; diff --git a/mysql-test/main/ctype_big5.result b/mysql-test/main/ctype_big5.result index 234897b08fe..cde970373eb 100644 --- a/mysql-test/main/ctype_big5.result +++ b/mysql-test/main/ctype_big5.result @@ -5115,20 +5115,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5253,20 +5253,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5392,20 +5392,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5530,20 +5530,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_binary.result b/mysql-test/main/ctype_binary.result index 03c7d902013..d91faf4c3d6 100644 --- a/mysql-test/main/ctype_binary.result +++ b/mysql-test/main/ctype_binary.result @@ -1131,8 +1131,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 32 create table t1 as select concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -1141,8 +1141,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))); -hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) +select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) as exp; +exp 32 create table t1 as select concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)'))) as c1; show create table t1; @@ -1151,8 +1151,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 30 create table t1 as select concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -1161,8 +1161,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))); -hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) +select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) as exp; +exp 31 create table t1 as select concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))'))) as c1; show create table t1; @@ -1171,8 +1171,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))); -hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) +select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) as exp; +exp 30 create table t1 as select concat(IsEmpty(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -1181,8 +1181,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(21) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))); -hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) +select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) as exp; +exp 31 create table t1 as select concat(IsSimple(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -1191,8 +1191,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(2) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))); -hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) +select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) as exp; +exp 30 create table t1 as select concat(IsClosed(GeomFromText('LineString(1 1,2 2)'))) as c1; show create table t1; @@ -1201,13 +1201,13 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(2) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))); -hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) +select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) as exp; +exp 31 create table t1 as select concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)'))) as c1; drop table t1; -select hex(concat(x(GeomFromText('Point(1 2)')))); -hex(concat(x(GeomFromText('Point(1 2)')))) +select hex(concat(x(GeomFromText('Point(1 2)')))) as exp; +exp 31 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1216,8 +1216,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(23) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(y(GeomFromText('Point(1 2)')))); -hex(concat(y(GeomFromText('Point(1 2)')))) +select hex(concat(y(GeomFromText('Point(1 2)')))) as exp; +exp 32 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1226,8 +1226,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(23) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))); -hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) +select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) as exp; +exp 31 create table t1 as select concat(GLength(GeomFromText('LineString(1 2, 2 2)'))) as c1; show create table t1; @@ -1236,8 +1236,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(23) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))); -hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) +select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) as exp; +exp 31 create table t1 as select concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))'))) as c1; show create table t1; @@ -1246,8 +1246,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(23) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GeometryType(GeomFromText('Point(1 2)')))); -hex(concat(GeometryType(GeomFromText('Point(1 2)')))) +select hex(concat(GeometryType(GeomFromText('Point(1 2)')))) as exp; +exp 504F494E54 create table t1 as select concat(GeometryType(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1256,8 +1256,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(20) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(AsText(GeomFromText('Point(1 2)')))); -hex(concat(AsText(GeomFromText('Point(1 2)')))) +select hex(concat(AsText(GeomFromText('Point(1 2)')))) as exp; +exp 504F494E542831203229 create table t1 as select concat(AsText(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1526,8 +1526,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))); -hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) +select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) as exp; +exp 32343A30303A3030 create table t1 as select concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00')) as c1; show create table t1; @@ -1566,8 +1566,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(19) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))); -hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) +select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) as exp; +exp 323030332D31322D33312032303A30303A3030 create table t1 as select concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00')) as c1; show create table t1; @@ -1576,8 +1576,8 @@ t1 CREATE TABLE `t1` ( `c1` varbinary(19) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))); -hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) +select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) as exp; +exp 323030342D30312D30322031323A30303A3030 create table t1 as select concat(date_add('2004-01-01 12:00:00', interval 1 day)) as c1; show create table t1; diff --git a/mysql-test/main/ctype_binary.test b/mysql-test/main/ctype_binary.test index b7a0c3deb4e..26618ec235b 100644 --- a/mysql-test/main/ctype_binary.test +++ b/mysql-test/main/ctype_binary.test @@ -1,7 +1,3 @@ - -#remove this include after fix MDEV-27871 ---source include/no_view_protocol.inc - set names binary; --source include/ctype_numconv.inc @@ -234,22 +230,30 @@ SET NAMES latin1,character_set_connection=binary; --echo # Binary format, binary result SELECT DATE_FORMAT('2004-02-02','%W'); SELECT HEX(DATE_FORMAT('2004-02-02','%W')); +#Enable after fix MDEV-33936 +--disable_view_protocol SELECT DATE_FORMAT(TIME'-01:01:01','%h'); SELECT HEX(DATE_FORMAT(TIME'-01:01:01','%h')); +--enable_view_protocol --echo # latin1 format, binary result SELECT DATE_FORMAT('2004-02-02',_latin1'%W'); SELECT HEX(DATE_FORMAT('2004-02-02',_latin1'%W')); +#Enable after fix MDEV-33936 +--disable_view_protocol SELECT DATE_FORMAT(TIME'-01:01:01',_latin1'%h'); SELECT HEX(DATE_FORMAT(TIME'-01:01:01',_latin1'%h')); +--enable_view_protocol --echo # Binary format, latin1 result SET NAMES latin1; SELECT DATE_FORMAT('2004-02-02',_binary'%W'); SELECT HEX(DATE_FORMAT('2004-02-02',_binary'%W')); +#Enable after fix MDEV-33936 +--disable_view_protocol SELECT DATE_FORMAT(TIME'-01:01:01',_binary'%h'); SELECT HEX(DATE_FORMAT(TIME'-01:01:01',_binary'%h')); - +--enable_view_protocol --echo # --echo # End of 10.4 tests --echo # diff --git a/mysql-test/main/ctype_cp1251.result b/mysql-test/main/ctype_cp1251.result index a341d9ce471..c43a393761b 100644 --- a/mysql-test/main/ctype_cp1251.result +++ b/mysql-test/main/ctype_cp1251.result @@ -1543,8 +1543,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 32 create table t1 as select concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -1553,8 +1553,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))); -hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) +select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) as exp; +exp 32 create table t1 as select concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)'))) as c1; show create table t1; @@ -1563,8 +1563,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 30 create table t1 as select concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -1573,8 +1573,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))); -hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) +select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) as exp; +exp 31 create table t1 as select concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))'))) as c1; show create table t1; @@ -1583,8 +1583,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))); -hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) +select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) as exp; +exp 30 create table t1 as select concat(IsEmpty(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -1593,8 +1593,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(21) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))); -hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) +select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) as exp; +exp 31 create table t1 as select concat(IsSimple(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -1603,8 +1603,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(2) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))); -hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) +select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) as exp; +exp 30 create table t1 as select concat(IsClosed(GeomFromText('LineString(1 1,2 2)'))) as c1; show create table t1; @@ -1613,13 +1613,13 @@ t1 CREATE TABLE `t1` ( `c1` varchar(2) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))); -hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) +select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) as exp; +exp 31 create table t1 as select concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)'))) as c1; drop table t1; -select hex(concat(x(GeomFromText('Point(1 2)')))); -hex(concat(x(GeomFromText('Point(1 2)')))) +select hex(concat(x(GeomFromText('Point(1 2)')))) as exp; +exp 31 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1628,8 +1628,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(y(GeomFromText('Point(1 2)')))); -hex(concat(y(GeomFromText('Point(1 2)')))) +select hex(concat(y(GeomFromText('Point(1 2)')))) as exp; +exp 32 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1638,8 +1638,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))); -hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) +select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) as exp; +exp 31 create table t1 as select concat(GLength(GeomFromText('LineString(1 2, 2 2)'))) as c1; show create table t1; @@ -1648,8 +1648,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))); -hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) +select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) as exp; +exp 31 create table t1 as select concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))'))) as c1; show create table t1; @@ -1658,8 +1658,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GeometryType(GeomFromText('Point(1 2)')))); -hex(concat(GeometryType(GeomFromText('Point(1 2)')))) +select hex(concat(GeometryType(GeomFromText('Point(1 2)')))) as exp; +exp 504F494E54 create table t1 as select concat(GeometryType(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1668,8 +1668,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(20) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(AsText(GeomFromText('Point(1 2)')))); -hex(concat(AsText(GeomFromText('Point(1 2)')))) +select hex(concat(AsText(GeomFromText('Point(1 2)')))) as exp; +exp 504F494E542831203229 create table t1 as select concat(AsText(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1938,8 +1938,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))); -hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) +select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) as exp; +exp 32343A30303A3030 create table t1 as select concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00')) as c1; show create table t1; @@ -1978,8 +1978,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(19) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))); -hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) +select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) as exp; +exp 323030332D31322D33312032303A30303A3030 create table t1 as select concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00')) as c1; show create table t1; @@ -1988,8 +1988,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(19) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))); -hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) +select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) as exp; +exp 323030342D30312D30322031323A30303A3030 create table t1 as select concat(date_add('2004-01-01 12:00:00', interval 1 day)) as c1; show create table t1; diff --git a/mysql-test/main/ctype_cp932.result b/mysql-test/main/ctype_cp932.result index a66bf1da027..f8d83463f26 100644 --- a/mysql-test/main/ctype_cp932.result +++ b/mysql-test/main/ctype_cp932.result @@ -135,20 +135,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -273,20 +273,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp932_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp932_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp932_japanese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -412,20 +412,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -550,20 +550,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp932_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp932_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp932_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp932_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_cp932.test b/mysql-test/main/ctype_cp932.test index 3d0306884df..2ccbe8f1582 100644 --- a/mysql-test/main/ctype_cp932.test +++ b/mysql-test/main/ctype_cp932.test @@ -4,9 +4,6 @@ --echo # USED. --echo # -#remove this include in 10.6 version ---source include/no_view_protocol.inc - SET @old_character_set_client= @@character_set_client; SET @old_character_set_connection= @@character_set_connection; SET @old_character_set_results= @@character_set_results; diff --git a/mysql-test/main/ctype_eucjpms.result b/mysql-test/main/ctype_eucjpms.result index ea8824584d8..4cd17378e2a 100644 --- a/mysql-test/main/ctype_eucjpms.result +++ b/mysql-test/main/ctype_eucjpms.result @@ -34304,20 +34304,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -34442,20 +34442,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'eucjpms_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'eucjpms_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_japanese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -34581,20 +34581,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -34719,20 +34719,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'eucjpms_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'eucjpms_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'eucjpms_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'eucjpms_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_euckr.result b/mysql-test/main/ctype_euckr.result index 9e030f9cc6d..8807b4cfb4d 100644 --- a/mysql-test/main/ctype_euckr.result +++ b/mysql-test/main/ctype_euckr.result @@ -25817,20 +25817,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -25955,20 +25955,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'euckr_korean_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'euckr_korean_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'euckr_korean_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -26094,20 +26094,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -26232,20 +26232,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'euckr_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'euckr_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'euckr_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'euckr_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_gb2312.result b/mysql-test/main/ctype_gb2312.result index 163364d4bc4..432b38a4752 100644 --- a/mysql-test/main/ctype_gb2312.result +++ b/mysql-test/main/ctype_gb2312.result @@ -4805,20 +4805,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4943,20 +4943,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'gb2312_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'gb2312_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_chinese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5082,20 +5082,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5220,20 +5220,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'gb2312_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'gb2312_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'gb2312_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'gb2312_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_gbk.result b/mysql-test/main/ctype_gbk.result index 5218dbfd7a4..f44cbbed7d3 100644 --- a/mysql-test/main/ctype_gbk.result +++ b/mysql-test/main/ctype_gbk.result @@ -6273,20 +6273,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6411,20 +6411,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'gbk_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'gbk_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'gbk_chinese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6550,20 +6550,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6688,20 +6688,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'gbk_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'gbk_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'gbk_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'gbk_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_gbk.test b/mysql-test/main/ctype_gbk.test index 355638340f6..5ef4d349687 100644 --- a/mysql-test/main/ctype_gbk.test +++ b/mysql-test/main/ctype_gbk.test @@ -449,13 +449,10 @@ DROP TABLE t1; --echo # --echo # MDEV-7661 Unexpected result for: CAST(0xHHHH AS CHAR CHARACTER SET xxx) for incorrect byte sequences --echo # -#enable after fix MDEV-27871 ---disable_view_protocol set sql_mode=''; SELECT HEX(CAST(0xA341 AS CHAR CHARACTER SET gb2312)) as exp; SELECT HEX(CONVERT(CAST(0xA341 AS CHAR CHARACTER SET gb2312) USING utf8)) as exp; set sql_mode=default; ---enable_view_protocol --echo # --echo # End of 10.1 tests diff --git a/mysql-test/main/ctype_latin1.result b/mysql-test/main/ctype_latin1.result index 5556a9cf668..9f93f07c054 100644 --- a/mysql-test/main/ctype_latin1.result +++ b/mysql-test/main/ctype_latin1.result @@ -518,8 +518,8 @@ SELECT '\%b' LIKE '%\%'; SELECT @@character_set_connection, HEX(CAST(_utf8'÷' AS CHAR)); @@character_set_connection HEX(CAST(_utf8'÷' AS CHAR)) latin1 F7 -SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)); -STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)) +SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)) as exp; +exp 2001-01-01 CREATE TABLE t1 AS SELECT REPEAT(' ', 64) AS subject, REPEAT(' ',64) AS pattern LIMIT 0; SHOW COLUMNS FROM t1; @@ -1852,8 +1852,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 32 create table t1 as select concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -1862,8 +1862,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))); -hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) +select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) as exp; +exp 32 create table t1 as select concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)'))) as c1; show create table t1; @@ -1872,8 +1872,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 30 create table t1 as select concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -1882,8 +1882,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))); -hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) +select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) as exp; +exp 31 create table t1 as select concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))'))) as c1; show create table t1; @@ -1892,8 +1892,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))); -hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) +select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) as exp; +exp 30 create table t1 as select concat(IsEmpty(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -1902,8 +1902,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(21) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))); -hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) +select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) as exp; +exp 31 create table t1 as select concat(IsSimple(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -1912,8 +1912,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(2) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))); -hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) +select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) as exp; +exp 30 create table t1 as select concat(IsClosed(GeomFromText('LineString(1 1,2 2)'))) as c1; show create table t1; @@ -1922,13 +1922,13 @@ t1 CREATE TABLE `t1` ( `c1` varchar(2) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))); -hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) +select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) as exp; +exp 31 create table t1 as select concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)'))) as c1; drop table t1; -select hex(concat(x(GeomFromText('Point(1 2)')))); -hex(concat(x(GeomFromText('Point(1 2)')))) +select hex(concat(x(GeomFromText('Point(1 2)')))) as exp; +exp 31 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1937,8 +1937,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(y(GeomFromText('Point(1 2)')))); -hex(concat(y(GeomFromText('Point(1 2)')))) +select hex(concat(y(GeomFromText('Point(1 2)')))) as exp; +exp 32 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1947,8 +1947,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))); -hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) +select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) as exp; +exp 31 create table t1 as select concat(GLength(GeomFromText('LineString(1 2, 2 2)'))) as c1; show create table t1; @@ -1957,8 +1957,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))); -hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) +select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) as exp; +exp 31 create table t1 as select concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))'))) as c1; show create table t1; @@ -1967,8 +1967,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GeometryType(GeomFromText('Point(1 2)')))); -hex(concat(GeometryType(GeomFromText('Point(1 2)')))) +select hex(concat(GeometryType(GeomFromText('Point(1 2)')))) as exp; +exp 504F494E54 create table t1 as select concat(GeometryType(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -1977,8 +1977,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(20) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(AsText(GeomFromText('Point(1 2)')))); -hex(concat(AsText(GeomFromText('Point(1 2)')))) +select hex(concat(AsText(GeomFromText('Point(1 2)')))) as exp; +exp 504F494E542831203229 create table t1 as select concat(AsText(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -2247,8 +2247,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))); -hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) +select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) as exp; +exp 32343A30303A3030 create table t1 as select concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00')) as c1; show create table t1; @@ -2287,8 +2287,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(19) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))); -hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) +select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) as exp; +exp 323030332D31322D33312032303A30303A3030 create table t1 as select concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00')) as c1; show create table t1; @@ -2297,8 +2297,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(19) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))); -hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) +select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) as exp; +exp 323030342D30312D30322031323A30303A3030 create table t1 as select concat(date_add('2004-01-01 12:00:00', interval 1 day)) as c1; show create table t1; @@ -8404,20 +8404,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8542,20 +8542,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8681,20 +8681,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8819,20 +8819,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_latin1.test b/mysql-test/main/ctype_latin1.test index 56463890f70..290eec2edc4 100644 --- a/mysql-test/main/ctype_latin1.test +++ b/mysql-test/main/ctype_latin1.test @@ -139,8 +139,10 @@ select hex(cast(_ascii 0x7f as char(1) character set latin1)); --echo # --echo # Bug#58022 ... like ... escape export_set ( ... ) crashes when export_set returns warnings --echo # +#view-protocol doubles warning message +--disable_view_protocol SELECT '' LIKE '' ESCAPE EXPORT_SET(1, 1, 1, 1, ''); - +--enable_view_protocol --echo End of 5.1 tests @@ -223,6 +225,8 @@ SET NAMES latin1 COLLATE latin1_bin; --echo # MDEV-6752 Trailing incomplete characters are not replaced to question marks on conversion --echo # SET NAMES utf8, character_set_connection=latin1; + +--disable_service_connection SELECT ''; SELECT HEX(''); SELECT HEX(CAST('' AS CHAR CHARACTER SET utf8)); @@ -241,6 +245,7 @@ INSERT IGNORE INTO t1 VALUES (' SHOW WARNINGS; SELECT HEX(a),a FROM t1; DROP TABLE t1; +--enable_service_connection --echo # --echo # MDEV-7629 Regression: Bit and hex string literals changed column names in 10.0.14 diff --git a/mysql-test/main/ctype_ldml.result b/mysql-test/main/ctype_ldml.result index 31508fcd1b1..c5024a66d0b 100644 --- a/mysql-test/main/ctype_ldml.result +++ b/mysql-test/main/ctype_ldml.result @@ -83,50 +83,50 @@ select * from t1 where c1='b'; c1 a drop table t1; -SELECT hex(weight_string(_utf8mb4'a' collate utf8mb4_test_ci)); -hex(weight_string(_utf8mb4'a' collate utf8mb4_test_ci)) +SELECT hex(weight_string(_utf8mb4'a' collate utf8mb4_test_ci)) as exp; +exp 120F -SELECT hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_ci)); -hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_ci)) +SELECT hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_ci)) as exp; +exp 314A -SELECT hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a)); -hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci) hex(lower(@a)) +SELECT hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a)) as exp; +hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci) exp F0909080 F09090A8 -SELECT hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a)); -hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_ci) hex(upper(@a)) +SELECT hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a)) as exp; +hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_ci) exp F09090A8 F0909080 -SELECT hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a)); -hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_ci) hex(lower(@a)) +SELECT hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a)) as exp; +hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_ci) exp E2B080 E2B0B0 -SELECT hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a)); -hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_ci) hex(upper(@a)) +SELECT hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a)) as exp; +hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_ci) exp E2B0B0 E2B080 -SELECT hex(weight_string(convert(_utf32 0x61 using utf8mb4) collate utf8mb4_test_ci)); -hex(weight_string(convert(_utf32 0x61 using utf8mb4) collate utf8mb4_test_ci)) +SELECT hex(weight_string(convert(_utf32 0x61 using utf8mb4) collate utf8mb4_test_ci)) as exp; +exp 120F -SELECT hex(weight_string(convert(_utf32 0x62 using utf8mb4) collate utf8mb4_test_ci)); -hex(weight_string(convert(_utf32 0x62 using utf8mb4) collate utf8mb4_test_ci)) +SELECT hex(weight_string(convert(_utf32 0x62 using utf8mb4) collate utf8mb4_test_ci)) as exp; +exp 120F -SELECT hex(weight_string(convert(_utf32 0x10062 using utf8mb4) collate utf8mb4_test_ci)); -hex(weight_string(convert(_utf32 0x10062 using utf8mb4) collate utf8mb4_test_ci)) +SELECT hex(weight_string(convert(_utf32 0x10062 using utf8mb4) collate utf8mb4_test_ci)) as exp; +exp 120F -SELECT hex(weight_string(convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci)); -hex(weight_string(convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci)) +SELECT hex(weight_string(convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci)) as exp; +exp 30D2 -SELECT hex(weight_string(convert(_utf32 0x100400 using utf8mb4) collate utf8mb4_test_ci)); -hex(weight_string(convert(_utf32 0x100400 using utf8mb4) collate utf8mb4_test_ci)) +SELECT hex(weight_string(convert(_utf32 0x100400 using utf8mb4) collate utf8mb4_test_ci)) as exp; +exp 30D2 -SELECT hex(weight_string(_utf8mb4 0x64 collate utf8mb4_test_ci)); -hex(weight_string(_utf8mb4 0x64 collate utf8mb4_test_ci)) +SELECT hex(weight_string(_utf8mb4 0x64 collate utf8mb4_test_ci)) as exp; +exp 1250 -SELECT hex(weight_string(convert(_ucs2 0x0064017e using utf8mb4) collate utf8mb4_test_ci)); -hex(weight_string(convert(_ucs2 0x0064017e using utf8mb4) collate utf8mb4_test_ci)) +SELECT hex(weight_string(convert(_ucs2 0x0064017e using utf8mb4) collate utf8mb4_test_ci)) as exp; +exp 1251 -SELECT hex(weight_string(convert(_ucs2 0x0044017e using utf8mb4) collate utf8mb4_test_ci)); -hex(weight_string(convert(_ucs2 0x0044017e using utf8mb4) collate utf8mb4_test_ci)) +SELECT hex(weight_string(convert(_ucs2 0x0044017e using utf8mb4) collate utf8mb4_test_ci)) as exp; +exp 1251 -SELECT hex(weight_string(convert(_ucs2 0x0044017d using utf8mb4) collate utf8mb4_test_ci)); -hex(weight_string(convert(_ucs2 0x0044017d using utf8mb4) collate utf8mb4_test_ci)) +SELECT hex(weight_string(convert(_ucs2 0x0044017d using utf8mb4) collate utf8mb4_test_ci)) as exp; +exp 1251 CREATE TABLE t1 ( col1 varchar(100) character set utf8 collate utf8_test_ci @@ -533,23 +533,23 @@ show collation like 'utf8mb3_phone_ci'; Collation Charset Id Default Compiled Sortlen utf8mb3_phone_ci utf8mb3 352 8 SET NAMES utf8; -SELECT hex(weight_string(_utf8mb4'a' collate utf8mb4_test_400_ci)); -hex(weight_string(_utf8mb4'a' collate utf8mb4_test_400_ci)) +SELECT hex(weight_string(_utf8mb4'a' collate utf8mb4_test_400_ci)) as exp; +exp 0E33 -SELECT hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_400_ci)); -hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_400_ci)) +SELECT hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_400_ci)) as exp; +exp FFFD -SELECT hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_400_ci), hex(lower(@a)); -hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_400_ci) hex(lower(@a)) +SELECT hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_400_ci), hex(lower(@a)) as exp; +hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_400_ci) exp F0909080 F0909080 -SELECT hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_400_ci), hex(upper(@a)); -hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_400_ci) hex(upper(@a)) +SELECT hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_400_ci), hex(upper(@a)) as exp; +hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_400_ci) exp F09090A8 F09090A8 -SELECT hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_400_ci), hex(lower(@a)); -hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_400_ci) hex(lower(@a)) +SELECT hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_400_ci), hex(lower(@a)) as exp; +hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_400_ci) exp E2B080 E2B080 -SELECT hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_400_ci), hex(upper(@a)); -hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_400_ci) hex(upper(@a)) +SELECT hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_400_ci), hex(upper(@a)) as exp; +hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_400_ci) exp E2B0B0 E2B0B0 # # WL#5624 Collation customization improvements @@ -1019,9 +1019,9 @@ HEX(WEIGHT_STRING(a)) HEX(CONVERT(a USING ucs2)) HEX(a) 15D3 09B809CD E0A6B8E0A78D 15D4 09B909CD E0A6B9E0A78D SELECT HEX(WEIGHT_STRING(a)) as wa, -GROUP_CONCAT(HEX(CONVERT(a USING ucs2)) ORDER BY LENGTH(a), BINARY a) +GROUP_CONCAT(HEX(CONVERT(a USING ucs2)) ORDER BY LENGTH(a), BINARY a) as ha FROM t1 GROUP BY a ORDER BY a; -wa GROUP_CONCAT(HEX(CONVERT(a USING ucs2)) ORDER BY LENGTH(a), BINARY a) +wa ha 15A2 0985 15A3 0986 15A4 0987 diff --git a/mysql-test/main/ctype_ldml.test b/mysql-test/main/ctype_ldml.test index 9189630e5a3..ed0846c0dd2 100644 --- a/mysql-test/main/ctype_ldml.test +++ b/mysql-test/main/ctype_ldml.test @@ -3,9 +3,6 @@ --source include/have_utf16.inc --source include/have_utf32.inc -#remove this include after fix MDEV-27871 ---source include/no_view_protocol.inc - --disable_query_log call mtr.add_suppression("Charset id.*trying to replace"); --enable_query_log @@ -70,25 +67,25 @@ select * from t1 where c1='b'; drop table t1; # make sure utf8_test_ci is Unicode-5.0.0 -SELECT hex(weight_string(_utf8mb4'a' collate utf8mb4_test_ci)); -SELECT hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_ci)); -SELECT hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a)); -SELECT hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a)); -SELECT hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a)); -SELECT hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a)); +SELECT hex(weight_string(_utf8mb4'a' collate utf8mb4_test_ci)) as exp; +SELECT hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_ci)) as exp; +SELECT hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a)) as exp; +SELECT hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a)) as exp; +SELECT hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_ci), hex(lower(@a)) as exp; +SELECT hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_ci), hex(upper(@a)) as exp; # check that it works with supplementary characters -SELECT hex(weight_string(convert(_utf32 0x61 using utf8mb4) collate utf8mb4_test_ci)); -SELECT hex(weight_string(convert(_utf32 0x62 using utf8mb4) collate utf8mb4_test_ci)); -SELECT hex(weight_string(convert(_utf32 0x10062 using utf8mb4) collate utf8mb4_test_ci)); -SELECT hex(weight_string(convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci)); -SELECT hex(weight_string(convert(_utf32 0x100400 using utf8mb4) collate utf8mb4_test_ci)); +SELECT hex(weight_string(convert(_utf32 0x61 using utf8mb4) collate utf8mb4_test_ci)) as exp; +SELECT hex(weight_string(convert(_utf32 0x62 using utf8mb4) collate utf8mb4_test_ci)) as exp; +SELECT hex(weight_string(convert(_utf32 0x10062 using utf8mb4) collate utf8mb4_test_ci)) as exp; +SELECT hex(weight_string(convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_ci)) as exp; +SELECT hex(weight_string(convert(_utf32 0x100400 using utf8mb4) collate utf8mb4_test_ci)) as exp; # check contractions with non-ascii characters -SELECT hex(weight_string(_utf8mb4 0x64 collate utf8mb4_test_ci)); -SELECT hex(weight_string(convert(_ucs2 0x0064017e using utf8mb4) collate utf8mb4_test_ci)); -SELECT hex(weight_string(convert(_ucs2 0x0044017e using utf8mb4) collate utf8mb4_test_ci)); -SELECT hex(weight_string(convert(_ucs2 0x0044017d using utf8mb4) collate utf8mb4_test_ci)); +SELECT hex(weight_string(_utf8mb4 0x64 collate utf8mb4_test_ci)) as exp; +SELECT hex(weight_string(convert(_ucs2 0x0064017e using utf8mb4) collate utf8mb4_test_ci)) as exp; +SELECT hex(weight_string(convert(_ucs2 0x0044017e using utf8mb4) collate utf8mb4_test_ci)) as exp; +SELECT hex(weight_string(convert(_ucs2 0x0044017d using utf8mb4) collate utf8mb4_test_ci)) as exp; # @@ -189,10 +186,12 @@ show collation like '%test%'; show collation like 'ucs2_vn_ci'; create table t1 (c1 char(1) character set ucs2 collate ucs2_vn_ci); insert into t1 values (0x0061); +--disable_view_protocol --enable_metadata set @@character_set_results=NULL; select * from t1; --disable_metadata +--enable_view_protocol drop table t1; # @@ -212,12 +211,12 @@ show collation like 'utf8mb3_phone_ci'; SET NAMES utf8; # make sure utf8mb4_test_400_ci is Unicode-4.0.0 based -SELECT hex(weight_string(_utf8mb4'a' collate utf8mb4_test_400_ci)); -SELECT hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_400_ci)); -SELECT hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_400_ci), hex(lower(@a)); -SELECT hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_400_ci), hex(upper(@a)); -SELECT hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_400_ci), hex(lower(@a)); -SELECT hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_400_ci), hex(upper(@a)); +SELECT hex(weight_string(_utf8mb4'a' collate utf8mb4_test_400_ci)) as exp; +SELECT hex(weight_string(convert(_utf32 0x10002 using utf8mb4) collate utf8mb4_test_400_ci)) as exp; +SELECT hex(@a:=convert(_utf32 0x10400 using utf8mb4) collate utf8mb4_test_400_ci), hex(lower(@a)) as exp; +SELECT hex(@a:=convert(_utf32 0x10428 using utf8mb4) collate utf8mb4_test_400_ci), hex(upper(@a)) as exp; +SELECT hex(@a:=convert(_utf32 0x2C00 using utf8mb4) collate utf8mb4_test_400_ci), hex(lower(@a)) as exp; +SELECT hex(@a:=convert(_utf32 0x2C30 using utf8mb4) collate utf8mb4_test_400_ci), hex(upper(@a)) as exp; --echo # --echo # WL#5624 Collation customization improvements @@ -281,9 +280,14 @@ DROP TABLE t1; SET NAMES utf8 COLLATE utf8_5624_2; SHOW WARNINGS; +# "--view-protocol" generates a dublicate error message in ctype_ldml_log.err +# In one of the following cases, the number of similar error messages is counted, +# so doubling the error causes the case to fail +--disable_view_protocol --error ER_UNKNOWN_COLLATION SELECT _utf8'test' COLLATE utf8_5624_2; SHOW WARNINGS; +--enable_view_protocol --echo # --echo # WL#5624, reset before primary ignorable @@ -354,7 +358,7 @@ INSERT INTO t1 VALUES SELECT HEX(WEIGHT_STRING(a)), HEX(CONVERT(a USING ucs2)), HEX(a) FROM t1 ORDER BY a, BINARY(a); SELECT HEX(WEIGHT_STRING(a)) as wa, -GROUP_CONCAT(HEX(CONVERT(a USING ucs2)) ORDER BY LENGTH(a), BINARY a) +GROUP_CONCAT(HEX(CONVERT(a USING ucs2)) ORDER BY LENGTH(a), BINARY a) as ha FROM t1 GROUP BY a ORDER BY a; DROP TABLE t1; @@ -406,7 +410,6 @@ perl; close(FILE); EOF - --echo # --echo # MDEV-8686 A user defined collation utf8_confusables doesn't work --echo # @@ -509,6 +512,7 @@ SELECT HEX(a), REPLACE(a,' ','') FROM t1 ORDER BY a DESC; DROP TABLE t1; +--disable_service_connection SET NAMES utf8 COLLATE utf8_czech_test_w2; CREATE TABLE t1 AS SELECT SPACE(10) AS c1 LIMIT 0; --source include/ctype_unicode_latin.inc @@ -610,6 +614,7 @@ SELECT 'chž'< 'i'; --error ER_UNKNOWN_COLLATION SELECT 'a' COLLATE utf8_czech_test_bad_w2; +--enable_service_connection --echo # --echo # End of 10.2 tests diff --git a/mysql-test/main/ctype_nopad_8bit.result b/mysql-test/main/ctype_nopad_8bit.result index ddd1f3186c9..8720e8c992a 100644 --- a/mysql-test/main/ctype_nopad_8bit.result +++ b/mysql-test/main/ctype_nopad_8bit.result @@ -97,20 +97,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'dec8_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'dec8_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'dec8_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -235,20 +235,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'dec8_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'dec8_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'dec8_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'dec8_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'dec8_swedish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -374,20 +374,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'dec8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'dec8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'dec8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'dec8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'dec8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'dec8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'dec8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'dec8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'dec8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -512,20 +512,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'dec8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'dec8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'dec8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'dec8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'dec8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'dec8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'dec8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'dec8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'dec8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'dec8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -652,20 +652,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp850_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp850_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp850_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp850_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp850_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp850_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp850_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp850_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp850_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -790,20 +790,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp850_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp850_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp850_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp850_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp850_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp850_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp850_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp850_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp850_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp850_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -929,20 +929,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp850_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp850_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp850_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp850_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp850_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp850_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp850_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp850_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp850_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -1067,20 +1067,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp850_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp850_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp850_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp850_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp850_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp850_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp850_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp850_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp850_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp850_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -1207,20 +1207,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'hp8_english_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'hp8_english_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'hp8_english_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'hp8_english_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'hp8_english_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'hp8_english_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'hp8_english_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'hp8_english_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'hp8_english_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -1345,20 +1345,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'hp8_english_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'hp8_english_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'hp8_english_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'hp8_english_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'hp8_english_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'hp8_english_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'hp8_english_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'hp8_english_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'hp8_english_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'hp8_english_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -1484,20 +1484,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'hp8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'hp8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'hp8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'hp8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'hp8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'hp8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'hp8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'hp8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'hp8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -1622,20 +1622,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'hp8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'hp8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'hp8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'hp8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'hp8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'hp8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'hp8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'hp8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'hp8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'hp8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -1762,20 +1762,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'koi8r_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'koi8r_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'koi8r_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -1900,20 +1900,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'koi8r_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'koi8r_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'koi8r_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'koi8r_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'koi8r_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -2039,20 +2039,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'koi8r_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'koi8r_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'koi8r_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'koi8r_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'koi8r_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'koi8r_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'koi8r_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'koi8r_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'koi8r_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -2177,20 +2177,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'koi8r_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'koi8r_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'koi8r_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'koi8r_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'koi8r_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'koi8r_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'koi8r_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'koi8r_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'koi8r_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'koi8r_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -2317,20 +2317,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin2_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin2_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin2_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -2455,20 +2455,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin2_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin2_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin2_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin2_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -2594,20 +2594,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin2_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin2_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin2_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -2732,20 +2732,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin2_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin2_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin2_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin2_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -2872,20 +2872,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3010,20 +3010,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3149,20 +3149,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3287,20 +3287,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3427,20 +3427,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ascii_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ascii_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ascii_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ascii_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ascii_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ascii_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ascii_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ascii_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ascii_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3565,20 +3565,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ascii_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ascii_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ascii_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ascii_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ascii_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ascii_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ascii_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ascii_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ascii_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ascii_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3704,20 +3704,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ascii_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ascii_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ascii_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ascii_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ascii_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ascii_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ascii_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ascii_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ascii_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3842,20 +3842,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ascii_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ascii_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ascii_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ascii_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ascii_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ascii_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ascii_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ascii_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ascii_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ascii_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3982,20 +3982,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'hebrew_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'hebrew_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'hebrew_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4120,20 +4120,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'hebrew_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'hebrew_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'hebrew_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'hebrew_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'hebrew_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4259,20 +4259,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'hebrew_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'hebrew_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'hebrew_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'hebrew_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'hebrew_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'hebrew_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'hebrew_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'hebrew_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'hebrew_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4397,20 +4397,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'hebrew_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'hebrew_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'hebrew_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'hebrew_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'hebrew_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'hebrew_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'hebrew_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'hebrew_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'hebrew_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'hebrew_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4537,20 +4537,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'koi8u_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'koi8u_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'koi8u_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4675,20 +4675,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'koi8u_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'koi8u_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'koi8u_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'koi8u_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'koi8u_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4814,20 +4814,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'koi8u_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'koi8u_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'koi8u_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'koi8u_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'koi8u_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'koi8u_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'koi8u_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'koi8u_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'koi8u_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4952,20 +4952,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'koi8u_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'koi8u_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'koi8u_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'koi8u_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'koi8u_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'koi8u_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'koi8u_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'koi8u_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'koi8u_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'koi8u_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5092,20 +5092,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'greek_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'greek_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'greek_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'greek_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'greek_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'greek_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'greek_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'greek_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'greek_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5230,20 +5230,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'greek_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'greek_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'greek_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'greek_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'greek_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'greek_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'greek_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'greek_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'greek_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'greek_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5369,20 +5369,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'greek_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'greek_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'greek_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'greek_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'greek_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'greek_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'greek_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'greek_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'greek_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'greek_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'greek_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'greek_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'greek_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'greek_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'greek_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5507,20 +5507,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'greek_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'greek_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'greek_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'greek_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'greek_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'greek_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'greek_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'greek_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'greek_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'greek_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'greek_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'greek_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'greek_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'greek_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'greek_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5647,20 +5647,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1250_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1250_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1250_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5785,20 +5785,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1250_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1250_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1250_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1250_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1250_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -5924,20 +5924,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1250_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1250_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1250_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1250_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1250_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1250_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1250_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1250_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1250_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6062,20 +6062,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1250_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1250_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1250_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1250_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1250_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1250_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1250_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1250_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1250_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1250_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6202,20 +6202,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1257_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1257_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1257_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6340,20 +6340,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1257_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1257_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1257_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1257_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1257_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6479,20 +6479,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1257_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1257_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1257_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1257_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1257_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1257_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1257_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1257_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1257_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6617,20 +6617,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1257_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1257_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1257_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1257_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1257_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1257_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1257_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1257_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1257_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1257_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6757,20 +6757,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin5_turkish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin5_turkish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin5_turkish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6895,20 +6895,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin5_turkish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin5_turkish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin5_turkish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin5_turkish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin5_turkish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -7034,20 +7034,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin5_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin5_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin5_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -7172,20 +7172,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin5_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin5_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin5_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin5_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -7312,20 +7312,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'armscii8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'armscii8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'armscii8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -7450,20 +7450,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'armscii8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'armscii8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'armscii8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'armscii8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'armscii8_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -7589,20 +7589,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'armscii8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'armscii8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'armscii8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'armscii8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'armscii8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'armscii8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'armscii8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'armscii8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'armscii8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -7727,20 +7727,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'armscii8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'armscii8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'armscii8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'armscii8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'armscii8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'armscii8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'armscii8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'armscii8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'armscii8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'armscii8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -7867,20 +7867,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp866_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp866_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp866_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp866_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp866_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp866_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp866_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp866_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp866_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8005,20 +8005,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp866_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp866_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp866_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp866_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp866_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp866_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp866_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp866_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp866_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp866_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8144,20 +8144,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp866_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp866_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp866_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp866_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp866_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp866_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp866_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp866_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp866_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8282,20 +8282,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp866_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp866_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp866_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp866_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp866_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp866_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp866_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp866_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp866_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp866_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8422,20 +8422,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'keybcs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'keybcs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'keybcs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8560,20 +8560,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'keybcs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'keybcs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'keybcs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'keybcs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'keybcs2_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8699,20 +8699,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'keybcs2_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'keybcs2_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'keybcs2_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'keybcs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'keybcs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'keybcs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'keybcs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'keybcs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'keybcs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8837,20 +8837,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'keybcs2_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'keybcs2_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'keybcs2_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'keybcs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'keybcs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'keybcs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'keybcs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'keybcs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'keybcs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'keybcs2_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -8977,20 +8977,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'macce_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'macce_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'macce_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'macce_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'macce_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'macce_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'macce_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'macce_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'macce_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -9115,20 +9115,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'macce_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'macce_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'macce_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'macce_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'macce_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'macce_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'macce_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'macce_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'macce_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'macce_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -9254,20 +9254,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'macce_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'macce_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'macce_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'macce_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'macce_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'macce_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'macce_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'macce_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'macce_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'macce_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'macce_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'macce_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'macce_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'macce_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'macce_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -9392,20 +9392,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'macce_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'macce_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'macce_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'macce_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'macce_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'macce_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'macce_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'macce_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'macce_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'macce_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'macce_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'macce_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'macce_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'macce_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'macce_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -9532,20 +9532,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'macroman_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'macroman_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'macroman_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'macroman_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'macroman_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'macroman_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'macroman_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'macroman_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'macroman_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -9670,20 +9670,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'macroman_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'macroman_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'macroman_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'macroman_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'macroman_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'macroman_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'macroman_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'macroman_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'macroman_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'macroman_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -9809,20 +9809,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'macroman_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'macroman_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'macroman_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'macroman_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'macroman_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'macroman_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'macroman_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'macroman_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'macroman_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -9947,20 +9947,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'macroman_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'macroman_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'macroman_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'macroman_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'macroman_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'macroman_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'macroman_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'macroman_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'macroman_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'macroman_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -10087,20 +10087,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp852_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp852_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp852_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp852_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp852_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp852_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp852_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp852_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp852_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -10225,20 +10225,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp852_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp852_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp852_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp852_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp852_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp852_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp852_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp852_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp852_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp852_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -10364,20 +10364,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp852_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp852_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp852_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp852_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp852_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp852_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp852_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp852_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp852_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -10502,20 +10502,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp852_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp852_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp852_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp852_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp852_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp852_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp852_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp852_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp852_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp852_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -10642,20 +10642,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin7_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin7_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin7_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin7_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin7_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin7_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin7_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin7_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin7_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -10780,20 +10780,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin7_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin7_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin7_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin7_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin7_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin7_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin7_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin7_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin7_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin7_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -10919,20 +10919,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin7_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin7_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin7_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -11057,20 +11057,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin7_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin7_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin7_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin7_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -11197,20 +11197,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1251_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1251_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1251_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -11335,20 +11335,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1251_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1251_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1251_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1251_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1251_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -11474,20 +11474,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1251_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1251_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1251_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1251_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1251_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1251_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1251_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1251_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1251_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -11612,20 +11612,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1251_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1251_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1251_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1251_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1251_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1251_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1251_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1251_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1251_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1251_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -11752,20 +11752,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1256_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1256_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1256_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -11890,20 +11890,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1256_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1256_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1256_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1256_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1256_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -12029,20 +12029,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1256_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1256_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1256_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1256_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1256_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1256_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1256_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1256_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1256_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -12167,20 +12167,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'cp1256_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'cp1256_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'cp1256_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'cp1256_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'cp1256_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'cp1256_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'cp1256_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'cp1256_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'cp1256_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'cp1256_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -12307,20 +12307,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'geostd8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'geostd8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'geostd8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -12445,20 +12445,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'geostd8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'geostd8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'geostd8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'geostd8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'geostd8_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -12584,20 +12584,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'geostd8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'geostd8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'geostd8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'geostd8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'geostd8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'geostd8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'geostd8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'geostd8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'geostd8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -12722,20 +12722,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'geostd8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'geostd8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'geostd8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'geostd8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'geostd8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'geostd8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'geostd8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'geostd8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'geostd8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'geostd8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_sjis.result b/mysql-test/main/ctype_sjis.result index 7a1f4cf5483..0e281d68023 100644 --- a/mysql-test/main/ctype_sjis.result +++ b/mysql-test/main/ctype_sjis.result @@ -218,8 +218,8 @@ DROP TABLE t1; SELECT @@character_set_connection, HEX(CAST(_utf8'÷' AS CHAR)); @@character_set_connection HEX(CAST(_utf8'÷' AS CHAR)) sjis 8180 -SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)); -STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)) +SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)) as exp; +exp 2001-01-01 CREATE TABLE t1 AS SELECT REPEAT(' ', 64) AS subject, REPEAT(' ',64) AS pattern LIMIT 0; SHOW COLUMNS FROM t1; @@ -19109,20 +19109,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -19247,20 +19247,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'sjis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'sjis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'sjis_japanese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -19386,20 +19386,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -19524,20 +19524,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'sjis_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'sjis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'sjis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'sjis_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_swe7.result b/mysql-test/main/ctype_swe7.result index 8397db11a38..0dbd362c3db 100644 --- a/mysql-test/main/ctype_swe7.result +++ b/mysql-test/main/ctype_swe7.result @@ -3173,20 +3173,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3311,20 +3311,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'swe7_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'swe7_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'swe7_swedish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3450,20 +3450,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3588,20 +3588,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'swe7_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'swe7_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'swe7_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'swe7_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_tis620.result b/mysql-test/main/ctype_tis620.result index 10b7042f709..459492a16e0 100644 --- a/mysql-test/main/ctype_tis620.result +++ b/mysql-test/main/ctype_tis620.result @@ -4001,20 +4001,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4139,20 +4139,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'tis620_thai_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'tis620_thai_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'tis620_thai_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4278,20 +4278,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4416,20 +4416,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'tis620_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'tis620_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'tis620_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'tis620_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_uca.result b/mysql-test/main/ctype_uca.result index 959a68172b2..53201e4cbeb 100644 --- a/mysql-test/main/ctype_uca.result +++ b/mysql-test/main/ctype_uca.result @@ -10021,8 +10021,8 @@ INSERT INTO t1 (s1) VALUES (_ucs2 0x1011103910191004103A1038 /* cooked rice */), (_ucs2 0x101C1000103A10181000103A), (_ucs2 0x101C103910181000103A /* tea */); -SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) FROM t1 ORDER BY id; -id IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) +SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) as exp FROM t1 ORDER BY id; +id exp 1 2259 108C 2 22593ACB 1037 3 22593ACC 1038 @@ -12597,8 +12597,8 @@ INSERT INTO t1 (s1) VALUES (_ucs2 0x1011103910191004103A1038 /* cooked rice */), (_ucs2 0x101C1000103A10181000103A), (_ucs2 0x101C103910181000103A /* tea */); -SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) FROM t1 ORDER BY id; -id IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) +SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) as exp FROM t1 ORDER BY id; +id exp 1 2259 108C 2 22593ACB 1037 3 22593ACC 1038 diff --git a/mysql-test/main/ctype_ucs.result b/mysql-test/main/ctype_ucs.result index cab41febef2..c4b7229d1fa 100644 --- a/mysql-test/main/ctype_ucs.result +++ b/mysql-test/main/ctype_ucs.result @@ -989,8 +989,8 @@ DROP TABLE t1; SELECT @@character_set_connection, HEX(CAST(_utf8'÷' AS CHAR)); @@character_set_connection HEX(CAST(_utf8'÷' AS CHAR)) ucs2 00F7 -SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)); -STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)) +SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)) as exp; +exp 2001-01-01 CREATE TABLE t1 AS SELECT REPEAT(' ', 64) AS subject, REPEAT(' ',64) AS pattern LIMIT 0; SHOW COLUMNS FROM t1; @@ -2736,8 +2736,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 0032 create table t1 as select concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -2746,8 +2746,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))); -hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) +select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) as exp; +exp 0032 create table t1 as select concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)'))) as c1; show create table t1; @@ -2756,8 +2756,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 0030 create table t1 as select concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -2766,8 +2766,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))); -hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) +select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) as exp; +exp 0031 create table t1 as select concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))'))) as c1; show create table t1; @@ -2776,8 +2776,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))); -hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) +select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) as exp; +exp 0030 create table t1 as select concat(IsEmpty(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -2786,8 +2786,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(21) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))); -hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) +select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) as exp; +exp 0031 create table t1 as select concat(IsSimple(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -2796,8 +2796,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(2) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))); -hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) +select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) as exp; +exp 0030 create table t1 as select concat(IsClosed(GeomFromText('LineString(1 1,2 2)'))) as c1; show create table t1; @@ -2806,13 +2806,13 @@ t1 CREATE TABLE `t1` ( `c1` varchar(2) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))); -hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) +select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) as exp; +exp 0031 create table t1 as select concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)'))) as c1; drop table t1; -select hex(concat(x(GeomFromText('Point(1 2)')))); -hex(concat(x(GeomFromText('Point(1 2)')))) +select hex(concat(x(GeomFromText('Point(1 2)')))) as exp; +exp 0031 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -2821,8 +2821,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(y(GeomFromText('Point(1 2)')))); -hex(concat(y(GeomFromText('Point(1 2)')))) +select hex(concat(y(GeomFromText('Point(1 2)')))) as exp; +exp 0032 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -2831,8 +2831,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))); -hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) +select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) as exp; +exp 0031 create table t1 as select concat(GLength(GeomFromText('LineString(1 2, 2 2)'))) as c1; show create table t1; @@ -2841,8 +2841,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))); -hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) +select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) as exp; +exp 0031 create table t1 as select concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))'))) as c1; show create table t1; @@ -2851,8 +2851,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GeometryType(GeomFromText('Point(1 2)')))); -hex(concat(GeometryType(GeomFromText('Point(1 2)')))) +select hex(concat(GeometryType(GeomFromText('Point(1 2)')))) as exp; +exp 0050004F0049004E0054 create table t1 as select concat(GeometryType(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -2861,8 +2861,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(20) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(AsText(GeomFromText('Point(1 2)')))); -hex(concat(AsText(GeomFromText('Point(1 2)')))) +select hex(concat(AsText(GeomFromText('Point(1 2)')))) as exp; +exp 0050004F0049004E005400280031002000320029 create table t1 as select concat(AsText(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -3131,8 +3131,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))); -hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) +select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) as exp; +exp 00320034003A00300030003A00300030 create table t1 as select concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00')) as c1; show create table t1; @@ -3171,8 +3171,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(19) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))); -hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) +select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) as exp; +exp 0032003000300033002D00310032002D00330031002000320030003A00300030003A00300030 create table t1 as select concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00')) as c1; show create table t1; @@ -3181,8 +3181,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(19) CHARACTER SET ucs2 COLLATE ucs2_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))); -hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) +select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) as exp; +exp 0032003000300034002D00300031002D00300032002000310032003A00300030003A00300030 create table t1 as select concat(date_add('2004-01-01 12:00:00', interval 1 day)) as c1; show create table t1; @@ -5872,20 +5872,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -6010,20 +6010,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ucs2_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ucs2_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_general_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -6149,20 +6149,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -6287,20 +6287,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ucs2_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ucs2_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ucs2_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_nopad_bin', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix diff --git a/mysql-test/main/ctype_ucs.test b/mysql-test/main/ctype_ucs.test index 93ddcb86964..5d9e8924e23 100644 --- a/mysql-test/main/ctype_ucs.test +++ b/mysql-test/main/ctype_ucs.test @@ -613,6 +613,7 @@ deallocate prepare stmt; # # Bug#22638 SOUNDEX broken for international characters # +--disable_service_connection set names latin1; set character_set_connection=ucs2; select soundex(''),soundex('he'),soundex('hello all folks'),soundex('#3556 in bugdb'); @@ -623,6 +624,7 @@ select hex(soundex(_ucs2 0x041004110412)); # Make sure that "U+00BF INVERTED QUESTION MARK" is not considered as letter select hex(soundex(_ucs2 0x00BF00C0)); set names latin1; +--enable_service_connection # # Bug #14290: character_maximum_length for text fields @@ -794,10 +796,12 @@ DROP TABLE t1; --echo # Start of 5.5 tests --echo # +--disable_service_connection SET NAMES latin1; SET collation_connection=ucs2_general_ci; --source include/ctype_numconv.inc SET NAMES latin1; +--enable_service_connection --echo # --echo # Bug #13832953 MY_STRNXFRM_UNICODE: ASSERTION `SRC' FAILED @@ -1035,8 +1039,10 @@ DROP TABLE t1; --echo # --echo # MDEV-9178 Wrong result for CAST(CONVERT('1IJ3' USING ucs2) AS SIGNED) --echo # +--disable_service_connection SET NAMES utf8; SELECT CAST(CONVERT('1IJ3' USING ucs2) AS SIGNED); +--enable_service_connection --echo # --echo # End of 10.1 tests @@ -1070,6 +1076,7 @@ EXECUTE IMMEDIATE @stmt; --echo # --echo # MDEV-10866 Extend PREPARE and EXECUTE IMMEDIATE to understand expressions --echo # +--disable_service_connection SET NAMES utf8, collation_connection=ucs2_bin; SET @stmt='SELECT COLLATION(''a'')'; EXECUTE IMMEDIATE @stmt; @@ -1097,6 +1104,7 @@ EXECUTE IMMEDIATE @stmt; PREPARE stmt FROM @stmt; EXECUTE stmt; DEALLOCATE PREPARE stmt; +--enable_service_connection --echo # --echo # End of 10.2 tests diff --git a/mysql-test/main/ctype_ucs2_uca.result b/mysql-test/main/ctype_ucs2_uca.result index 317f86b1a4f..e1ce91a553c 100644 --- a/mysql-test/main/ctype_ucs2_uca.result +++ b/mysql-test/main/ctype_ucs2_uca.result @@ -100,20 +100,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ucs2_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ucs2_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ucs2_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -238,20 +238,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ucs2_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ucs2_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ucs2_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ucs2_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -377,20 +377,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -515,20 +515,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ucs2_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ucs2_unicode_520_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix diff --git a/mysql-test/main/ctype_ujis.result b/mysql-test/main/ctype_ujis.result index 35bfce8eb5a..435837859c6 100644 --- a/mysql-test/main/ctype_ujis.result +++ b/mysql-test/main/ctype_ujis.result @@ -322,14 +322,14 @@ locate('LO','hello' collate ujis_bin,2) select locate(_ujis 0xa1a3,_ujis 0xa1a2a1a3); locate(_ujis 0xa1a3,_ujis 0xa1a2a1a3) 2 -select 0xa1a2a1a3 like concat(_binary'%',0xa2a1,_binary'%'); -0xa1a2a1a3 like concat(_binary'%',0xa2a1,_binary'%') +select 0xa1a2a1a3 like concat(_binary'%',0xa2a1,_binary'%') as exp; +exp 1 -select _ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%'); -_ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%') +select _ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%') as exp; +exp 0 -select _ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%') collate ujis_bin; -_ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%') collate ujis_bin +select _ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%') collate ujis_bin as exp; +exp 0 select 'a' like 'a'; 'a' like 'a' @@ -2810,8 +2810,8 @@ DROP TABLE t2; # Bug#57257 Replace(ExtractValue(...)) causes MySQL crash # SET NAMES utf8; -SELECT CONVERT(REPLACE(EXPORT_SET('a','a','a','','a'),'00','') USING ujis); -CONVERT(REPLACE(EXPORT_SET('a','a','a','','a'),'00','') USING ujis) +SELECT CONVERT(REPLACE(EXPORT_SET('a','a','a','','a'),'00','') USING ujis) as exp; +exp Warnings: Warning 1292 Truncated incorrect INTEGER value: 'a' @@ -26624,20 +26624,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -26762,20 +26762,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ujis_japanese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ujis_japanese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ujis_japanese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -26901,20 +26901,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -27039,20 +27039,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'ujis_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'ujis_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'ujis_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'ujis_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_ujis.test b/mysql-test/main/ctype_ujis.test index 320231a9762..249c523ebec 100644 --- a/mysql-test/main/ctype_ujis.test +++ b/mysql-test/main/ctype_ujis.test @@ -45,13 +45,10 @@ select locate('HE','hello' collate ujis_bin,2); select locate('LO','hello' collate ujis_bin,2); select locate(_ujis 0xa1a3,_ujis 0xa1a2a1a3); -select 0xa1a2a1a3 like concat(_binary'%',0xa2a1,_binary'%'); -select _ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%'); +select 0xa1a2a1a3 like concat(_binary'%',0xa2a1,_binary'%') as exp; +select _ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%') as exp; -# enable view-protocol after fix MDEV-27871 ---disable_view_protocol -select _ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%') collate ujis_bin; ---disable_view_protocol +select _ujis 0xa1a2a1a3 like concat(_ujis'%',_ujis 0xa2a1, _ujis'%') collate ujis_bin as exp; select 'a' like 'a'; select 'A' like 'a'; @@ -1231,11 +1228,8 @@ DROP TABLE t2; --echo # --echo # Bug#57257 Replace(ExtractValue(...)) causes MySQL crash --echo # -#enable after fix MDEV-27871 ---disable_view_protocol SET NAMES utf8; -SELECT CONVERT(REPLACE(EXPORT_SET('a','a','a','','a'),'00','') USING ujis); ---enable_view_protocol +SELECT CONVERT(REPLACE(EXPORT_SET('a','a','a','','a'),'00','') USING ujis) as exp; set names default; set character_set_database=@save_character_set_server; @@ -1357,8 +1351,6 @@ DROP TABLE t1; --echo # WL#3664 WEIGHT_STRING --echo # -# enable view-protocol after fix MDEV-27871 ---disable_view_protocol set names ujis; --source include/weight_string.inc --source include/weight_string_l1.inc @@ -1372,7 +1364,6 @@ set collation_connection=ujis_bin; --source include/weight_string_A1A1.inc --source include/weight_string_8EA1.inc --source include/weight_string_8FA2C3.inc ---enable_view_protocol --echo # --echo # End of 5.6 tests diff --git a/mysql-test/main/ctype_utf16.result b/mysql-test/main/ctype_utf16.result index 64de622be51..71c7ee77a1d 100644 --- a/mysql-test/main/ctype_utf16.result +++ b/mysql-test/main/ctype_utf16.result @@ -2354,20 +2354,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -2492,20 +2492,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16_general_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -2631,20 +2631,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -2769,20 +2769,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16_nopad_bin', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix diff --git a/mysql-test/main/ctype_utf16_uca.result b/mysql-test/main/ctype_utf16_uca.result index 69ebfc4de54..2b8c965b9f1 100644 --- a/mysql-test/main/ctype_utf16_uca.result +++ b/mysql-test/main/ctype_utf16_uca.result @@ -5327,8 +5327,8 @@ INSERT INTO t1 (s1) VALUES (_ucs2 0x1011103910191004103A1038 /* cooked rice */), (_ucs2 0x101C1000103A10181000103A), (_ucs2 0x101C103910181000103A /* tea */); -SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) FROM t1 ORDER BY id; -id IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) +SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) as exp FROM t1 ORDER BY id; +id exp 1 2259 108C 2 22593ACB 1037 3 22593ACC 1038 @@ -7413,20 +7413,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -7551,20 +7551,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16_unicode_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -7690,20 +7690,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix @@ -7828,20 +7828,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')) as exp; +exp 0061006200630020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16_unicode_520_nopad_ci', 'abc ')) as exp; +exp 00610062006300200020 # # Collation mix diff --git a/mysql-test/main/ctype_utf16le.result b/mysql-test/main/ctype_utf16le.result index 9bc53a1041d..efacc2ebbf0 100644 --- a/mysql-test/main/ctype_utf16le.result +++ b/mysql-test/main/ctype_utf16le.result @@ -2540,20 +2540,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')) as exp; +exp 6100620063002000 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')) as exp; +exp 61006200630020002000 # # Collation mix @@ -2678,20 +2678,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16le_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16le_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')) as exp; +exp 6100620063002000 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_general_nopad_ci', 'abc ')) as exp; +exp 61006200630020002000 # # Collation mix @@ -2817,20 +2817,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')) as exp; +exp 6100620063002000 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')) as exp; +exp 61006200630020002000 # # Collation mix @@ -2955,20 +2955,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf16le_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf16le_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf16le_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')) as exp; +exp 6100620063002000 -SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf16le_nopad_bin', 'abc ')) as exp; +exp 61006200630020002000 # # Collation mix diff --git a/mysql-test/main/ctype_utf32.result b/mysql-test/main/ctype_utf32.result index 75ec9019da7..e9972a076c4 100644 --- a/mysql-test/main/ctype_utf32.result +++ b/mysql-test/main/ctype_utf32.result @@ -70,29 +70,29 @@ hex(word2) 00000420 00002004 DROP TABLE t1; -SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0421')); -hex(LPAD(_utf32 X'0420',10,_utf32 X'0421')) +SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0421')) as exp; +exp 00000421000004210000042100000421000004210000042100000421000004210000042100000420 -SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')); -hex(LPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')) +SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')) as exp; +exp 00000421000004220000042100000422000004210000042200000421000004220000042100000420 -SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')); -hex(LPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')) +SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')) as exp; +exp 00000421000004220000042300000421000004220000042300000421000004220000042300000420 -SELECT hex(LPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')); -hex(LPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')) +SELECT hex(LPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')) as exp; +exp 00000420000004210000042200000423000004240000042500000426000004270000042800000429 -SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0421')); -hex(RPAD(_utf32 X'0420',10,_utf32 X'0421')) +SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0421')) as exp; +exp 00000420000004210000042100000421000004210000042100000421000004210000042100000421 -SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')); -hex(RPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')) +SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')) as exp; +exp 00000420000004210000042200000421000004220000042100000422000004210000042200000421 -SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')); -hex(RPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')) +SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')) as exp; +exp 00000420000004210000042200000423000004210000042200000423000004210000042200000423 -SELECT hex(RPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')); -hex(RPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')) +SELECT hex(RPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')) as exp; +exp 00000420000004210000042200000423000004240000042500000426000004270000042800000429 CREATE TABLE t1 SELECT LPAD(_utf32 X'0420',10,_utf32 X'0421') l, @@ -329,11 +329,11 @@ SELECT * FROM t1 WHERE word LIKE _utf32 x'00000063000000610000005F'; word cat DROP TABLE t1; -select insert(_utf32 0x000000610000006200000063,10,2,_utf32 0x000000640000006500000066); -insert(_utf32 0x000000610000006200000063,10,2,_utf32 0x000000640000006500000066) +select insert(_utf32 0x000000610000006200000063,10,2,_utf32 0x000000640000006500000066) as exp; +exp abc -select insert(_utf32 0x000000610000006200000063,1,2,_utf32 0x000000640000006500000066); -insert(_utf32 0x000000610000006200000063,1,2,_utf32 0x000000640000006500000066) +select insert(_utf32 0x000000610000006200000063,1,2,_utf32 0x000000640000006500000066) as exp; +exp defc SET NAMES latin1; CREATE TABLE t1 ( @@ -1642,8 +1642,8 @@ Warning 1260 Row 1 was cut by GROUP_CONCAT() # # incorrect charset for val_str_ascii # -SELECT '2010-10-10 10:10:10' + INTERVAL GeometryType(GeomFromText('POINT(1 1)')) hour_second; -'2010-10-10 10:10:10' + INTERVAL GeometryType(GeomFromText('POINT(1 1)')) hour_second +SELECT '2010-10-10 10:10:10' + INTERVAL GeometryType(GeomFromText('POINT(1 1)')) hour_second as exp; +exp 2010-10-10 10:10:10 # # MDEV-5745 analyze MySQL fix for bug#12368495 @@ -2410,20 +2410,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) as exp; +exp 00000061000000620000006300000020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) as exp; +exp 0000006100000062000000630000002000000020 # # Collation mix @@ -2548,20 +2548,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf32_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf32_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf32_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) as exp; +exp 00000061000000620000006300000020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf32_general_nopad_ci', 'abc ')) as exp; +exp 0000006100000062000000630000002000000020 # # Collation mix @@ -2687,20 +2687,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) as exp; +exp 00000061000000620000006300000020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) as exp; +exp 0000006100000062000000630000002000000020 # # Collation mix @@ -2825,20 +2825,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf32_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf32_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf32_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) as exp; +exp 00000061000000620000006300000020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf32_nopad_bin', 'abc ')) as exp; +exp 0000006100000062000000630000002000000020 # # Collation mix diff --git a/mysql-test/main/ctype_utf32.test b/mysql-test/main/ctype_utf32.test index e5310dd5c7f..23a4070fc69 100644 --- a/mysql-test/main/ctype_utf32.test +++ b/mysql-test/main/ctype_utf32.test @@ -60,21 +60,15 @@ DROP TABLE t1; # # Check LPAD/RPAD # -SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0421')); -SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')); -SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT hex(LPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')); ---enable_view_protocol +SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0421')) as exp; +SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')) as exp; +SELECT hex(LPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')) as exp; +SELECT hex(LPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')) as exp; -SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0421')); -SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')); -SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT hex(RPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')); ---enable_view_protocol +SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0421')) as exp; +SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'0000042100000422')) as exp; +SELECT hex(RPAD(_utf32 X'0420',10,_utf32 X'000004210000042200000423')) as exp; +SELECT hex(RPAD(_utf32 X'000004200000042100000422000004230000042400000425000004260000042700000428000004290000042A0000042B',10,_utf32 X'000004210000042200000423')) as exp; CREATE TABLE t1 SELECT LPAD(_utf32 X'0420',10,_utf32 X'0421') l, @@ -124,11 +118,8 @@ DROP TABLE t1; # # Check that INSERT() works fine. # This invokes charpos() function. -#enable after fix MDEV-27871 ---disable_view_protocol -select insert(_utf32 0x000000610000006200000063,10,2,_utf32 0x000000640000006500000066); -select insert(_utf32 0x000000610000006200000063,1,2,_utf32 0x000000640000006500000066); ---enable_view_protocol +select insert(_utf32 0x000000610000006200000063,10,2,_utf32 0x000000640000006500000066) as exp; +select insert(_utf32 0x000000610000006200000063,1,2,_utf32 0x000000640000006500000066) as exp; ####################################################### @@ -884,10 +875,7 @@ ORDER BY l DESC; --echo # --echo # incorrect charset for val_str_ascii --echo # -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT '2010-10-10 10:10:10' + INTERVAL GeometryType(GeomFromText('POINT(1 1)')) hour_second; ---enable_view_protocol +SELECT '2010-10-10 10:10:10' + INTERVAL GeometryType(GeomFromText('POINT(1 1)')) hour_second as exp; --echo # --echo # MDEV-5745 analyze MySQL fix for bug#12368495 diff --git a/mysql-test/main/ctype_utf32_uca.result b/mysql-test/main/ctype_utf32_uca.result index 5468beafd32..084bbd8c570 100644 --- a/mysql-test/main/ctype_utf32_uca.result +++ b/mysql-test/main/ctype_utf32_uca.result @@ -5347,8 +5347,8 @@ INSERT INTO t1 (s1) VALUES (_ucs2 0x1011103910191004103A1038 /* cooked rice */), (_ucs2 0x101C1000103A10181000103A), (_ucs2 0x101C103910181000103A /* tea */); -SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) FROM t1 ORDER BY id; -id IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) +SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) as exp FROM t1 ORDER BY id; +id exp 1 2259 108C 2 22593ACB 1037 3 22593ACC 1038 @@ -7433,20 +7433,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf32_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf32_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf32_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')) as exp; +exp 00000061000000620000006300000020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')) as exp; +exp 0000006100000062000000630000002000000020 # # Collation mix @@ -7571,20 +7571,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf32_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf32_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf32_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf32_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')) as exp; +exp 00000061000000620000006300000020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf32_unicode_nopad_ci', 'abc ')) as exp; +exp 0000006100000062000000630000002000000020 # # Collation mix @@ -7710,20 +7710,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf32_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf32_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf32_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')) as exp; +exp 00000061000000620000006300000020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')) as exp; +exp 0000006100000062000000630000002000000020 # # Collation mix @@ -7848,20 +7848,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf32_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf32_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf32_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf32_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')) as exp; +exp 00000061000000620000006300000020 -SELECT HEX(GREATEST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf32_unicode_520_nopad_ci', 'abc ')) as exp; +exp 0000006100000062000000630000002000000020 # # Collation mix diff --git a/mysql-test/main/ctype_utf8.result b/mysql-test/main/ctype_utf8.result index 42ab1decc4e..a0b5a262927 100644 --- a/mysql-test/main/ctype_utf8.result +++ b/mysql-test/main/ctype_utf8.result @@ -63,17 +63,17 @@ select 'A' like 'a'; select 'A' like 'a' collate utf8_bin; 'A' like 'a' collate utf8_bin 0 -select _utf8 0xD0B0D0B1D0B2 like concat(_utf8'%',_utf8 0xD0B1,_utf8 '%'); -_utf8 0xD0B0D0B1D0B2 like concat(_utf8'%',_utf8 0xD0B1,_utf8 '%') +select _utf8 0xD0B0D0B1D0B2 like concat(_utf8'%',_utf8 0xD0B1,_utf8 '%') as exp; +exp 1 -select convert(_latin1'Gnter Andr' using utf8) like CONVERT(_latin1'GNTER%' USING utf8); -convert(_latin1'G\xFCnter Andr\xE9' using utf8) like CONVERT(_latin1'G\xDCNTER%' USING utf8) +select convert(_latin1'Gnter Andr' using utf8) like CONVERT(_latin1'GNTER%' USING utf8) as exp; +exp 1 -select CONVERT(_koi8r'' USING utf8) LIKE CONVERT(_koi8r'' USING utf8); -CONVERT(_koi8r'\xD7\xC1\xD3\xD1' USING utf8) LIKE CONVERT(_koi8r'\xF7\xE1\xF3\xF1' USING utf8) +select CONVERT(_koi8r'' USING utf8) LIKE CONVERT(_koi8r'' USING utf8) as exp; +exp 1 -select CONVERT(_koi8r'' USING utf8) LIKE CONVERT(_koi8r'' USING utf8); -CONVERT(_koi8r'\xF7\xE1\xF3\xF1' USING utf8) LIKE CONVERT(_koi8r'\xD7\xC1\xD3\xD1' USING utf8) +select CONVERT(_koi8r'' USING utf8) LIKE CONVERT(_koi8r'' USING utf8) as exp; +exp 1 SELECT 'a' = 'a '; 'a' = 'a ' @@ -924,17 +924,17 @@ select * from t1 where soundex(a) = soundex('test'); id a 1 Test drop table t1; -select soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB); -soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) +select soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) as exp; +exp 阅000 -select hex(soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)); -hex(soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) +select hex(soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) as exp; +exp E99885303030 -select soundex(_utf8 0xD091D092D093); -soundex(_utf8 0xD091D092D093) +select soundex(_utf8 0xD091D092D093) as exp; +exp Б000 -select hex(soundex(_utf8 0xD091D092D093)); -hex(soundex(_utf8 0xD091D092D093)) +select hex(soundex(_utf8 0xD091D092D093)) as exp; +exp D091303030 SET collation_connection='utf8_general_ci'; create table t1 select repeat('a',4000) a; @@ -1160,8 +1160,8 @@ DROP TABLE t1; SELECT @@character_set_connection, HEX(CAST(_utf8'÷' AS CHAR)); @@character_set_connection HEX(CAST(_utf8'÷' AS CHAR)) utf8mb3 C3B7 -SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)); -STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)) +SELECT STR_TO_DATE(CAST(_utf8'2001÷01÷01' AS CHAR),CAST(_utf8'%Y÷%m÷%d' AS CHAR)) as exp; +exp 2001-01-01 CREATE TABLE t1 AS SELECT REPEAT(' ', 64) AS subject, REPEAT(' ',64) AS pattern LIMIT 0; SHOW COLUMNS FROM t1; @@ -1294,8 +1294,8 @@ concat(concat(_latin1'->',f1),_latin1'<-') -><- -><- drop table t1; -select convert(_koi8r'' using utf8) < convert(_koi8r'' using utf8); -convert(_koi8r'\xC9' using utf8) < convert(_koi8r'\xCA' using utf8) +select convert(_koi8r'' using utf8) < convert(_koi8r'' using utf8) as exp; +exp 1 set names latin1; create table t1 (a varchar(10)) character set utf8; @@ -3603,8 +3603,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 32 create table t1 as select concat(NumGeometries(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -3613,8 +3613,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))); -hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) +select hex(concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)')))) as exp; +exp 32 create table t1 as select concat(NumPoints(MultiPointFromText('LINESTRING(0 0,10 10)'))) as c1; show create table t1; @@ -3623,8 +3623,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))); -hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) +select hex(concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)')))) as exp; +exp 30 create table t1 as select concat(SRID(MultiPointFromText('MULTIPOINT(0 0,10 10)'))) as c1; show create table t1; @@ -3633,8 +3633,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))); -hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) +select hex(concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')))) as exp; +exp 31 create table t1 as select concat(NumInteriorRings(PolygonFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))'))) as c1; show create table t1; @@ -3643,8 +3643,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))); -hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) +select hex(concat(IsEmpty(GeomFromText('POINT(1 1)')))) as exp; +exp 30 create table t1 as select concat(IsEmpty(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -3653,8 +3653,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(21) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))); -hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) +select hex(concat(IsSimple(GeomFromText('POINT(1 1)')))) as exp; +exp 31 create table t1 as select concat(IsSimple(GeomFromText('Point(1 1)'))) as c1; show create table t1; @@ -3663,8 +3663,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))); -hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) +select hex(concat(IsClosed(GeomFromText('LineString(1 1,2 2)')))) as exp; +exp 30 create table t1 as select concat(IsClosed(GeomFromText('LineString(1 1,2 2)'))) as c1; show create table t1; @@ -3673,13 +3673,13 @@ t1 CREATE TABLE `t1` ( `c1` varchar(2) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))); -hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) +select hex(concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)')))) as exp; +exp 31 create table t1 as select concat(Equals(GeomFromText('Point(1 1)'),GeomFromText('Point(1 1)'))) as c1; drop table t1; -select hex(concat(x(GeomFromText('Point(1 2)')))); -hex(concat(x(GeomFromText('Point(1 2)')))) +select hex(concat(x(GeomFromText('Point(1 2)')))) as exp; +exp 31 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -3688,8 +3688,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(y(GeomFromText('Point(1 2)')))); -hex(concat(y(GeomFromText('Point(1 2)')))) +select hex(concat(y(GeomFromText('Point(1 2)')))) as exp; +exp 32 create table t1 as select concat(x(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -3698,8 +3698,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))); -hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) +select hex(concat(GLength(GeomFromText('LineString(1 2,2 2)')))) as exp; +exp 31 create table t1 as select concat(GLength(GeomFromText('LineString(1 2, 2 2)'))) as c1; show create table t1; @@ -3708,8 +3708,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))); -hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) +select hex(concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))')))) as exp; +exp 31 create table t1 as select concat(Area(GeomFromText('Polygon((0 0,1 0,1 1,0 1,0 0))'))) as c1; show create table t1; @@ -3718,8 +3718,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(23) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(GeometryType(GeomFromText('Point(1 2)')))); -hex(concat(GeometryType(GeomFromText('Point(1 2)')))) +select hex(concat(GeometryType(GeomFromText('Point(1 2)')))) as exp; +exp 504F494E54 create table t1 as select concat(GeometryType(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -3728,8 +3728,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(20) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(AsText(GeomFromText('Point(1 2)')))); -hex(concat(AsText(GeomFromText('Point(1 2)')))) +select hex(concat(AsText(GeomFromText('Point(1 2)')))) as exp; +exp 504F494E542831203229 create table t1 as select concat(AsText(GeomFromText('Point(1 2)'))) as c1; show create table t1; @@ -3998,8 +3998,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(10) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))); -hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) +select hex(concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00'))) as exp; +exp 32343A30303A3030 create table t1 as select concat(timediff('2001-01-02 00:00:00', '2001-01-01 00:00:00')) as c1; show create table t1; @@ -4038,8 +4038,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(19) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))); -hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) +select hex(concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00'))) as exp; +exp 323030332D31322D33312032303A30303A3030 create table t1 as select concat(convert_tz('2004-01-01 12:00:00','+10:00','-6:00')) as c1; show create table t1; @@ -4048,8 +4048,8 @@ t1 CREATE TABLE `t1` ( `c1` varchar(19) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci drop table t1; -select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))); -hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) +select hex(concat(date_add('2004-01-01 12:00:00', interval 1 day))) as exp; +exp 323030342D30312D30322031323A30303A3030 create table t1 as select concat(date_add('2004-01-01 12:00:00', interval 1 day)) as c1; show create table t1; @@ -10784,20 +10784,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -10922,20 +10922,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -11061,20 +11061,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -11199,20 +11199,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_utf8.test b/mysql-test/main/ctype_utf8.test index a875fe51f3a..0a41f9fb67c 100644 --- a/mysql-test/main/ctype_utf8.test +++ b/mysql-test/main/ctype_utf8.test @@ -3,9 +3,6 @@ # Tests with the utf8 character set # -# Enable after fix MDEV-27904 --- source include/no_view_protocol.inc - let $MYSQLD_DATADIR= `select @@datadir`; let collation=utf8mb3_unicode_ci; @@ -50,15 +47,15 @@ select length(_utf8 0xD0B1), bit_length(_utf8 0xD0B1), char_length(_utf8 0xD0B1) select 'a' like 'a'; select 'A' like 'a'; select 'A' like 'a' collate utf8_bin; -select _utf8 0xD0B0D0B1D0B2 like concat(_utf8'%',_utf8 0xD0B1,_utf8 '%'); +select _utf8 0xD0B0D0B1D0B2 like concat(_utf8'%',_utf8 0xD0B1,_utf8 '%') as exp; # Bug #6040: can't retrieve records with umlaut # characters in case insensitive manner. # Case insensitive search LIKE comparison # was broken for multibyte characters: -select convert(_latin1'Gnter Andr' using utf8) like CONVERT(_latin1'GNTER%' USING utf8); -select CONVERT(_koi8r'' USING utf8) LIKE CONVERT(_koi8r'' USING utf8); -select CONVERT(_koi8r'' USING utf8) LIKE CONVERT(_koi8r'' USING utf8); +select convert(_latin1'Gnter Andr' using utf8) like CONVERT(_latin1'GNTER%' USING utf8) as exp; +select CONVERT(_koi8r'' USING utf8) LIKE CONVERT(_koi8r'' USING utf8) as exp; +select CONVERT(_koi8r'' USING utf8) LIKE CONVERT(_koi8r'' USING utf8) as exp; # # Check the following: @@ -629,6 +626,7 @@ DROP TABLE t1; # # Bug #6043 erratic searching for diacriticals in indexed MyISAM UTF-8 table # +--disable_service_connection SET NAMES latin1; CREATE TABLE t1 ( id int unsigned NOT NULL auto_increment, @@ -644,6 +642,7 @@ SELECT id, term FROM t1 where (list_id = 1) AND (term = "test SELECT id, term FROM t1 where (list_id = 1) AND (term = "testetest"); SELECT id, term FROM t1 where (list_id = 1) AND (term = "testtest"); DROP TABLE t1; +--enable_service_connection # # Bug #6019 SELECT tries to use too short prefix index on utf8 data @@ -696,10 +695,10 @@ drop table t1; # # Bug#22638 SOUNDEX broken for international characters # -select soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB); -select hex(soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)); -select soundex(_utf8 0xD091D092D093); -select hex(soundex(_utf8 0xD091D092D093)); +select soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) as exp; +select hex(soundex(_utf8 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) as exp; +select soundex(_utf8 0xD091D092D093) as exp; +select hex(soundex(_utf8 0xD091D092D093)) as exp; SET collation_connection='utf8_general_ci'; @@ -735,7 +734,7 @@ drop table t1; # # Bug#8385: utf8_general_ci treats Cyrillic letters I and SHORT I as the same # -select convert(_koi8r'' using utf8) < convert(_koi8r'' using utf8); +select convert(_koi8r'' using utf8) < convert(_koi8r'' using utf8) as exp; # # Bugs#5980: NULL requires a characterset in a union @@ -1113,6 +1112,7 @@ DROP TABLE t1; # (see bug #16674 as well) # +--disable_service_connection SET NAMES latin2; CREATE TABLE t1 ( @@ -1139,6 +1139,7 @@ ALTER TABLE t1 ADD KEY idx (tid,val(11)); SELECT * FROM t1 WHERE tid=72 and val LIKE 'VOLN ADSL'; DROP TABLE t1; +--enable_service_connection # # Bug 20709: problem with utf8 fields in temporary tables @@ -1346,6 +1347,7 @@ drop table t1; # Conversion is possible if string repertoire is ASCII. # Conversion is not possible if the string have extended characters # +--disable_service_connection set names utf8; create table t1 (a varchar(10) character set latin1, b int); insert into t1 values ('a',1); @@ -1380,6 +1382,7 @@ select concat(a, if(b>10, 'x' 'x', 'y' 'y')) from t1; --error 1267 select concat(a, if(b>10, 'x' 'æ', 'y' 'ß')) from t1; drop table t1; +--enable_service_connection # # Bug#19960: Inconsistent results when joining @@ -1496,7 +1499,10 @@ SELECT HEX(RPAD(_utf8 0xD18F, 3, 0x20)); SELECT HEX(LPAD(_utf8 0xD18F, 3, 0x20)); SELECT HEX(INSERT(_utf8 0xD18F, 2, 1, 0x20)); +#Enable view-protocol after fix MDEV-33942 +--disable_view_protocol SELECT HEX(INSERT(_utf8 0xD18FD18E, 2, 1, 0x20)); +--enable_view_protocol --echo # --echo # Bug#11752408 - 43593: DUMP/BACKUP/RESTORE/UPGRADE TOOLS FAILS BECAUSE OF UTF8_GENERAL_CI @@ -1573,6 +1579,7 @@ CREATE TABLE t1 ( s3 MEDIUMTEXT CHARACTER SET utf8, s4 LONGTEXT CHARACTER SET utf8 ); +--disable_view_protocol --enable_metadata SET NAMES utf8, @@character_set_results=NULL; SELECT *, HEX(s1) FROM t1; @@ -1581,6 +1588,7 @@ SELECT *, HEX(s1) FROM t1; SET NAMES utf8; SELECT *, HEX(s1) FROM t1; --disable_metadata +--enable_view_protocol CREATE TABLE t2 AS SELECT CONCAT(s1) FROM t1; SHOW CREATE TABLE t2; DROP TABLE t1, t2; diff --git a/mysql-test/main/ctype_utf8_uca.result b/mysql-test/main/ctype_utf8_uca.result index 49e1dc65b8f..9506b231431 100644 --- a/mysql-test/main/ctype_utf8_uca.result +++ b/mysql-test/main/ctype_utf8_uca.result @@ -100,20 +100,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -238,20 +238,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_unicode_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -377,20 +377,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -515,20 +515,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_unicode_520_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_utf8mb4.result b/mysql-test/main/ctype_utf8mb4.result index 591ddf2cd9e..c20b0d2da0a 100644 --- a/mysql-test/main/ctype_utf8mb4.result +++ b/mysql-test/main/ctype_utf8mb4.result @@ -3665,20 +3665,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3803,20 +3803,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8mb4_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -3942,20 +3942,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -4080,20 +4080,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8mb4_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/ctype_utf8mb4_heap.result b/mysql-test/main/ctype_utf8mb4_heap.result index 657f06366e3..0fe7140842e 100644 --- a/mysql-test/main/ctype_utf8mb4_heap.result +++ b/mysql-test/main/ctype_utf8mb4_heap.result @@ -36,23 +36,23 @@ locate('HE','hello' collate utf8mb4_bin,2) select locate('LO','hello' collate utf8mb4_bin,2); locate('LO','hello' collate utf8mb4_bin,2) 0 -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2); -locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2) +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2) as exp; +exp 2 -select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2); -locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2) +select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2) as exp; +exp 2 -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2); -locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2) +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2) as exp; +exp 2 -select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin); -locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin) +select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin) as exp; +exp 0 -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin); -locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin) +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin) as exp; +exp 0 -select length(_utf8mb4 0xD0B1), bit_length(_utf8mb4 0xD0B1), char_length(_utf8mb4 0xD0B1); -length(_utf8mb4 0xD0B1) bit_length(_utf8mb4 0xD0B1) char_length(_utf8mb4 0xD0B1) +select length(_utf8mb4 0xD0B1), bit_length(_utf8mb4 0xD0B1), char_length(_utf8mb4 0xD0B1) as exp; +length(_utf8mb4 0xD0B1) bit_length(_utf8mb4 0xD0B1) exp 2 16 1 select 'a' like 'a'; 'a' like 'a' @@ -63,17 +63,17 @@ select 'A' like 'a'; select 'A' like 'a' collate utf8mb4_bin; 'A' like 'a' collate utf8mb4_bin 0 -select _utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%'); -_utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%') +select _utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%') as exp; +exp 1 -select convert(_latin1'Gnter Andr' using utf8mb4) like CONVERT(_latin1'GNTER%' USING utf8mb4); -convert(_latin1'G\xFCnter Andr\xE9' using utf8mb4) like CONVERT(_latin1'G\xDCNTER%' USING utf8mb4) +select convert(_latin1'Gnter Andr' using utf8mb4) like CONVERT(_latin1'GNTER%' USING utf8mb4) as exp; +exp 1 -select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4); -CONVERT(_koi8r'\xD7\xC1\xD3\xD1' USING utf8mb4) LIKE CONVERT(_koi8r'\xF7\xE1\xF3\xF1' USING utf8mb4) +select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4) as exp; +exp 1 -select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4); -CONVERT(_koi8r'\xF7\xE1\xF3\xF1' USING utf8mb4) LIKE CONVERT(_koi8r'\xD7\xC1\xD3\xD1' USING utf8mb4) +select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4) as exp; +exp 1 SELECT 'a' = 'a '; 'a' = 'a ' @@ -863,17 +863,17 @@ select * from t1 where soundex(a) = soundex('test'); id a 1 Test drop table t1; -select soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB); -soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) +select soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) as exp; +exp 阅000 -select hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)); -hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) +select hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) as exp; +exp E99885303030 -select soundex(_utf8mb4 0xD091D092D093); -soundex(_utf8mb4 0xD091D092D093) +select soundex(_utf8mb4 0xD091D092D093) as exp; +exp Б000 -select hex(soundex(_utf8mb4 0xD091D092D093)); -hex(soundex(_utf8mb4 0xD091D092D093)) +select hex(soundex(_utf8mb4 0xD091D092D093)) as exp; +exp D091303030 SET collation_connection='utf8mb4_general_ci'; create table t1 select repeat('a',4000) a; @@ -1214,8 +1214,8 @@ concat(concat(_latin1'->',f1),_latin1'<-') -><- -><- drop table t1; -select convert(_koi8r'' using utf8mb4) < convert(_koi8r'' using utf8mb4); -convert(_koi8r'\xC9' using utf8mb4) < convert(_koi8r'\xCA' using utf8mb4) +select convert(_koi8r'' using utf8mb4) < convert(_koi8r'' using utf8mb4) as exp; +exp 1 set names latin1; create table t1 (a varchar(10)) character set utf8mb4 engine heap; diff --git a/mysql-test/main/ctype_utf8mb4_innodb.result b/mysql-test/main/ctype_utf8mb4_innodb.result index da6a465647e..d3788e525e0 100644 --- a/mysql-test/main/ctype_utf8mb4_innodb.result +++ b/mysql-test/main/ctype_utf8mb4_innodb.result @@ -36,23 +36,23 @@ locate('HE','hello' collate utf8mb4_bin,2) select locate('LO','hello' collate utf8mb4_bin,2); locate('LO','hello' collate utf8mb4_bin,2) 0 -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2); -locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2) +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2) as exp; +exp 2 -select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2); -locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2) +select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2) as exp; +exp 2 -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2); -locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2) +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2) as exp; +exp 2 -select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin); -locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin) +select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin) as exp; +exp 0 -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin); -locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin) +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin) as exp; +exp 0 -select length(_utf8mb4 0xD0B1), bit_length(_utf8mb4 0xD0B1), char_length(_utf8mb4 0xD0B1); -length(_utf8mb4 0xD0B1) bit_length(_utf8mb4 0xD0B1) char_length(_utf8mb4 0xD0B1) +select length(_utf8mb4 0xD0B1), bit_length(_utf8mb4 0xD0B1), char_length(_utf8mb4 0xD0B1) as exp; +length(_utf8mb4 0xD0B1) bit_length(_utf8mb4 0xD0B1) exp 2 16 1 select 'a' like 'a'; 'a' like 'a' @@ -63,17 +63,17 @@ select 'A' like 'a'; select 'A' like 'a' collate utf8mb4_bin; 'A' like 'a' collate utf8mb4_bin 0 -select _utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%'); -_utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%') +select _utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%') as exp; +exp 1 -select convert(_latin1'Gnter Andr' using utf8mb4) like CONVERT(_latin1'GNTER%' USING utf8mb4); -convert(_latin1'G\xFCnter Andr\xE9' using utf8mb4) like CONVERT(_latin1'G\xDCNTER%' USING utf8mb4) +select convert(_latin1'Gnter Andr' using utf8mb4) like CONVERT(_latin1'GNTER%' USING utf8mb4) as exp; +exp 1 -select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4); -CONVERT(_koi8r'\xD7\xC1\xD3\xD1' USING utf8mb4) LIKE CONVERT(_koi8r'\xF7\xE1\xF3\xF1' USING utf8mb4) +select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4) as exp; +exp 1 -select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4); -CONVERT(_koi8r'\xF7\xE1\xF3\xF1' USING utf8mb4) LIKE CONVERT(_koi8r'\xD7\xC1\xD3\xD1' USING utf8mb4) +select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4) as exp; +exp 1 SELECT 'a' = 'a '; 'a' = 'a ' @@ -926,17 +926,17 @@ select * from t1 where soundex(a) = soundex('test'); id a 1 Test drop table t1; -select soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB); -soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) +select soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) as exp; +exp 阅000 -select hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)); -hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) +select hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) as exp; +exp E99885303030 -select soundex(_utf8mb4 0xD091D092D093); -soundex(_utf8mb4 0xD091D092D093) +select soundex(_utf8mb4 0xD091D092D093) as exp; +exp Б000 -select hex(soundex(_utf8mb4 0xD091D092D093)); -hex(soundex(_utf8mb4 0xD091D092D093)) +select hex(soundex(_utf8mb4 0xD091D092D093)) as exp; +exp D091303030 SET collation_connection='utf8mb4_general_ci'; create table t1 select repeat('a',4000) a; @@ -1277,8 +1277,8 @@ concat(concat(_latin1'->',f1),_latin1'<-') -><- -><- drop table t1; -select convert(_koi8r'' using utf8mb4) < convert(_koi8r'' using utf8mb4); -convert(_koi8r'\xC9' using utf8mb4) < convert(_koi8r'\xCA' using utf8mb4) +select convert(_koi8r'' using utf8mb4) < convert(_koi8r'' using utf8mb4) as exp; +exp 1 set names latin1; create table t1 (a varchar(10)) character set utf8mb4 engine InnoDB; diff --git a/mysql-test/main/ctype_utf8mb4_innodb.test b/mysql-test/main/ctype_utf8mb4_innodb.test index 75667e04d5f..3bf0612a1ab 100644 --- a/mysql-test/main/ctype_utf8mb4_innodb.test +++ b/mysql-test/main/ctype_utf8mb4_innodb.test @@ -1,6 +1,3 @@ -# Enable after fix MDEV-27904 --- source include/no_view_protocol.inc - --source include/have_utf8mb4.inc --source include/have_innodb.inc diff --git a/mysql-test/main/ctype_utf8mb4_myisam.result b/mysql-test/main/ctype_utf8mb4_myisam.result index 7e579e609b0..10d65feb200 100644 --- a/mysql-test/main/ctype_utf8mb4_myisam.result +++ b/mysql-test/main/ctype_utf8mb4_myisam.result @@ -36,23 +36,23 @@ locate('HE','hello' collate utf8mb4_bin,2) select locate('LO','hello' collate utf8mb4_bin,2); locate('LO','hello' collate utf8mb4_bin,2) 0 -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2); -locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2) +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D0B1D0B2) as exp; +exp 2 -select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2); -locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2) +select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2) as exp; +exp 2 -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2); -locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2) +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2) as exp; +exp 2 -select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin); -locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin) +select locate(_utf8mb4 0xD091, _utf8mb4 0xD0B0D0B1D0B2 collate utf8mb4_bin) as exp; +exp 0 -select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin); -locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin) +select locate(_utf8mb4 0xD0B1, _utf8mb4 0xD0B0D091D0B2 collate utf8mb4_bin) as exp; +exp 0 -select length(_utf8mb4 0xD0B1), bit_length(_utf8mb4 0xD0B1), char_length(_utf8mb4 0xD0B1); -length(_utf8mb4 0xD0B1) bit_length(_utf8mb4 0xD0B1) char_length(_utf8mb4 0xD0B1) +select length(_utf8mb4 0xD0B1), bit_length(_utf8mb4 0xD0B1), char_length(_utf8mb4 0xD0B1) as exp; +length(_utf8mb4 0xD0B1) bit_length(_utf8mb4 0xD0B1) exp 2 16 1 select 'a' like 'a'; 'a' like 'a' @@ -63,17 +63,17 @@ select 'A' like 'a'; select 'A' like 'a' collate utf8mb4_bin; 'A' like 'a' collate utf8mb4_bin 0 -select _utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%'); -_utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%') +select _utf8mb4 0xD0B0D0B1D0B2 like concat(_utf8mb4'%',_utf8mb4 0xD0B1,_utf8mb4 '%') as exp; +exp 1 -select convert(_latin1'Gnter Andr' using utf8mb4) like CONVERT(_latin1'GNTER%' USING utf8mb4); -convert(_latin1'G\xFCnter Andr\xE9' using utf8mb4) like CONVERT(_latin1'G\xDCNTER%' USING utf8mb4) +select convert(_latin1'Gnter Andr' using utf8mb4) like CONVERT(_latin1'GNTER%' USING utf8mb4) as exp; +exp 1 -select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4); -CONVERT(_koi8r'\xD7\xC1\xD3\xD1' USING utf8mb4) LIKE CONVERT(_koi8r'\xF7\xE1\xF3\xF1' USING utf8mb4) +select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4) as exp; +exp 1 -select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4); -CONVERT(_koi8r'\xF7\xE1\xF3\xF1' USING utf8mb4) LIKE CONVERT(_koi8r'\xD7\xC1\xD3\xD1' USING utf8mb4) +select CONVERT(_koi8r'' USING utf8mb4) LIKE CONVERT(_koi8r'' USING utf8mb4) as exp; +exp 1 SELECT 'a' = 'a '; 'a' = 'a ' @@ -929,17 +929,17 @@ select * from t1 where soundex(a) = soundex('test'); id a 1 Test drop table t1; -select soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB); -soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) +select soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB) as exp; +exp 阅000 -select hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)); -hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) +select hex(soundex(_utf8mb4 0xE99885E8A788E99A8FE697B6E69BB4E696B0E79A84E696B0E997BB)) as exp; +exp E99885303030 -select soundex(_utf8mb4 0xD091D092D093); -soundex(_utf8mb4 0xD091D092D093) +select soundex(_utf8mb4 0xD091D092D093) as exp; +exp Б000 -select hex(soundex(_utf8mb4 0xD091D092D093)); -hex(soundex(_utf8mb4 0xD091D092D093)) +select hex(soundex(_utf8mb4 0xD091D092D093)) as exp; +exp D091303030 SET collation_connection='utf8mb4_general_ci'; create table t1 select repeat('a',4000) a; @@ -1280,8 +1280,8 @@ concat(concat(_latin1'->',f1),_latin1'<-') -><- -><- drop table t1; -select convert(_koi8r'' using utf8mb4) < convert(_koi8r'' using utf8mb4); -convert(_koi8r'\xC9' using utf8mb4) < convert(_koi8r'\xCA' using utf8mb4) +select convert(_koi8r'' using utf8mb4) < convert(_koi8r'' using utf8mb4) as exp; +exp 1 set names latin1; create table t1 (a varchar(10)) character set utf8mb4 engine MyISAM; diff --git a/mysql-test/main/ctype_utf8mb4_uca.result b/mysql-test/main/ctype_utf8mb4_uca.result index 3cd25891119..20a041ba9c0 100644 --- a/mysql-test/main/ctype_utf8mb4_uca.result +++ b/mysql-test/main/ctype_utf8mb4_uca.result @@ -4031,8 +4031,8 @@ INSERT INTO t1 (s1) VALUES (_ucs2 0x1011103910191004103A1038 /* cooked rice */), (_ucs2 0x101C1000103A10181000103A), (_ucs2 0x101C103910181000103A /* tea */); -SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) FROM t1 ORDER BY id; -id IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) +SELECT id, IF(LEFT(s1,1)='-',s1,CONCAT(HEX(WEIGHT_STRING(s1)),'\t', HEX(CONVERT(s1 USING ucs2)))) as exp FROM t1 ORDER BY id; +id exp 1 2259 108C 2 22593ACB 1037 3 22593ACC 1038 @@ -6117,20 +6117,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6255,20 +6255,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6394,20 +6394,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -6532,20 +6532,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8mb4_unicode_520_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8mb4_unicode_520_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/main/date_formats.result b/mysql-test/main/date_formats.result index 463cce39520..b3c0664fd6f 100644 --- a/mysql-test/main/date_formats.result +++ b/mysql-test/main/date_formats.result @@ -16,12 +16,11 @@ DATETIME_FORMAT %Y-%m-%d %H:%i:%s DATE_FORMAT %d.%m.%Y TIME_FORMAT %H.%i.%s select str_to_date(concat('15-01-2001',' 2:59:58.999'), -concat('%d-%m-%Y',' ','%H:%i:%s.%f')); -str_to_date(concat('15-01-2001',' 2:59:58.999'), -concat('%d-%m-%Y',' ','%H:%i:%s.%f')) +concat('%d-%m-%Y',' ','%H:%i:%s.%f')) as exp; +exp 2001-01-15 02:59:58.999000 -select STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T'); -STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T') +select STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T') as exp; +exp NULL Warnings: Warning 1411 Incorrect time value: '22.30.61' for function str_to_date @@ -256,8 +255,8 @@ Tuesday 52 2001 %W %V %X 00:00:00.000000 15-01-2001 %d-%m-%Y %H:%i:%S 00:00:00.000000 15-01-20 %d-%m-%y 00:00:00.000000 15-2001-1 %d-%Y-%c 00:00:00.000000 -select concat('',str_to_date('8:11:2.123456 03-01-02','%H:%i:%S.%f %y-%m-%d')); -concat('',str_to_date('8:11:2.123456 03-01-02','%H:%i:%S.%f %y-%m-%d')) +select concat('',str_to_date('8:11:2.123456 03-01-02','%H:%i:%S.%f %y-%m-%d')) as exp; +exp 2003-01-02 08:11:02.123456 truncate table t1; insert into t1 values @@ -551,8 +550,8 @@ Thursday 01 January 2009 # Bug#58005 utf8 + get_format causes failed assertion: !str || str != Ptr' # SET NAMES utf8; -SELECT LEAST('%', GET_FORMAT(datetime, 'eur'), CAST(GET_FORMAT(datetime, 'eur') AS CHAR(65535))); -LEAST('%', GET_FORMAT(datetime, 'eur'), CAST(GET_FORMAT(datetime, 'eur') AS CHAR(65535))) +SELECT LEAST('%', GET_FORMAT(datetime, 'eur'), CAST(GET_FORMAT(datetime, 'eur') AS CHAR(65535))) as exp; +exp % SET NAMES latin1; # diff --git a/mysql-test/main/date_formats.test b/mysql-test/main/date_formats.test index 4f252f29a69..998fd42bbd9 100644 --- a/mysql-test/main/date_formats.test +++ b/mysql-test/main/date_formats.test @@ -2,9 +2,6 @@ # Test of date format functions # -#remove this include after fix MDEV-27871 --- source include/no_view_protocol.inc - --disable_warnings drop table if exists t1; --enable_warnings @@ -129,8 +126,8 @@ ORDER BY variable_name; # select str_to_date(concat('15-01-2001',' 2:59:58.999'), - concat('%d-%m-%Y',' ','%H:%i:%s.%f')); -select STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T'); + concat('%d-%m-%Y',' ','%H:%i:%s.%f')) as exp; +select STR_TO_DATE('2004.12.12 22.30.61','%Y.%m.%d %T') as exp; create table t1 (date char(30), format char(30) not null); insert into t1 values @@ -175,7 +172,7 @@ select date,format,DATE(str_to_date(date, format)) as date2 from t1; select date,format,TIME(str_to_date(date, format)) as time from t1; select date,format,concat(TIME(str_to_date(date, format))) as time2 from t1; # Test small bug in %f handling -select concat('',str_to_date('8:11:2.123456 03-01-02','%H:%i:%S.%f %y-%m-%d')); +select concat('',str_to_date('8:11:2.123456 03-01-02','%H:%i:%S.%f %y-%m-%d')) as exp; # Test wrong dates or converion specifiers @@ -363,7 +360,7 @@ SELECT DATE_FORMAT("2009-01-01",'%W %d %M %Y') as valid_date; --echo # Bug#58005 utf8 + get_format causes failed assertion: !str || str != Ptr' --echo # SET NAMES utf8; -SELECT LEAST('%', GET_FORMAT(datetime, 'eur'), CAST(GET_FORMAT(datetime, 'eur') AS CHAR(65535))); +SELECT LEAST('%', GET_FORMAT(datetime, 'eur'), CAST(GET_FORMAT(datetime, 'eur') AS CHAR(65535))) as exp; SET NAMES latin1; --echo # diff --git a/mysql-test/main/desc_index_range.result b/mysql-test/main/desc_index_range.result index 6b1f2e31c31..533276b555c 100644 --- a/mysql-test/main/desc_index_range.result +++ b/mysql-test/main/desc_index_range.result @@ -7,9 +7,9 @@ set optimizer_trace=1; explain select * from t1 force index(a) where a in (2, 4, 6); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range a a 5 NULL 3 Using where; Using index -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +jd [ [ "(6) <= (a DESC) <= (6)", @@ -38,18 +38,18 @@ set optimizer_trace=1; explain select * from t1 force index(ab) where a>=8 and b>=50; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range ab ab 4 NULL 51 Using where; Using index -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +jd [ ["(8) <= (a)"] ] explain select * from t1 force index(ab) where a>=8 and b<=50; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range ab ab 8 NULL 46 Using where; Using index -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +jd [ ["(8,50) <= (a,b DESC)"] ] @@ -91,9 +91,9 @@ explain select * from t1 where a between 2 and 4 and b between 50 and 80; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 range ab ab 8 NULL 17 Using where; Using index -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +jd [ ["(2,80) <= (a,b DESC) <= (4,50)"] ] @@ -122,9 +122,9 @@ explain select * from t2 where a between 2 and 4; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range ab ab 4 NULL 40 Using where; Using index -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +jd [ ["(4) <= (a DESC) <= (2)"] ] @@ -132,9 +132,9 @@ explain select * from t2 where a between 2 and 4 and b between 50 and 80; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t2 range ab ab 8 NULL 31 Using where; Using index -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +jd [ ["(4,80) <= (a DESC,b DESC) <= (2,50)"] ] @@ -147,9 +147,9 @@ insert into t1 select 2,seq from seq_0_to_1000; EXPLAIN select MIN(a) from t1 where p = 2 group by p; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t1 ref PRIMARY PRIMARY 4 const 1000 Using index -select json_detailed(json_extract(trace, '$**.potential_group_range_indexes')) +select json_detailed(json_extract(trace, '$**.potential_group_range_indexes')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.potential_group_range_indexes')) +jd [ [ { diff --git a/mysql-test/main/desc_index_range.test b/mysql-test/main/desc_index_range.test index ec52e254fe7..f3ad4495f35 100644 --- a/mysql-test/main/desc_index_range.test +++ b/mysql-test/main/desc_index_range.test @@ -16,12 +16,12 @@ insert into t1 select seq from seq_1_to_1000; set optimizer_trace=1; explain select * from t1 force index(a) where a in (2, 4, 6); -#enable after fix MDEV-27871 +#Enable after fix MDEV-32034 --disable_view_protocol -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; ---enable_view_protocol set optimizer_trace=default; +--enable_view_protocol --echo # These should go in reverse order: select * from t1 force index(a) where a in (2, 4, 6); @@ -38,26 +38,29 @@ create table t1 ( insert into t1 select A.seq, B.seq*10 from seq_1_to_10 A, seq_1_to_10 B; -#enable after fix MDEV-27871 ---disable_view_protocol set optimizer_trace=1; explain select * from t1 force index(ab) where a>=8 and b>=50; -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +#Enable after fix MDEV-32034 +--disable_view_protocol +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; +--enable_view_protocol explain select * from t1 force index(ab) where a>=8 and b<=50; -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +#Enable after fix MDEV-32034 +--disable_view_protocol +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; --enable_view_protocol select * from t1 force index(ab) where a>=8 and b<=50; select * from t1 ignore index(ab) where a>=8 and b<=50 order by a, b desc; -#enable after fix MDEV-27871 ---disable_view_protocol explain select * from t1 where a between 2 and 4 and b between 50 and 80; -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +#Enable after fix MDEV-32034 +--disable_view_protocol +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; --enable_view_protocol @@ -72,16 +75,19 @@ create table t2 ( ); insert into t2 select A.seq, B.seq*10 from seq_1_to_10 A, seq_1_to_10 B; -#enable after fix MDEV-27871 ---disable_view_protocol explain select * from t2 where a between 2 and 4; -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +#Enable after fix MDEV-32034 +--disable_view_protocol +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; +--enable_view_protocol explain select * from t2 where a between 2 and 4 and b between 50 and 80; -select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) +#Enable after fix MDEV-32034 +--disable_view_protocol +select json_detailed(json_extract(trace, '$**.range_access_plan.ranges')) as jd from information_schema.optimizer_trace; --enable_view_protocol @@ -93,9 +99,9 @@ drop table t2; CREATE TABLE t1 (p int NOT NULL, a int NOT NULL, PRIMARY KEY (p,a desc)); insert into t1 select 2,seq from seq_0_to_1000; EXPLAIN select MIN(a) from t1 where p = 2 group by p; -#enable after fix MDEV-27871 +#Enable after fix MDEV-32034 --disable_view_protocol -select json_detailed(json_extract(trace, '$**.potential_group_range_indexes')) +select json_detailed(json_extract(trace, '$**.potential_group_range_indexes')) as jd from information_schema.optimizer_trace; --enable_view_protocol drop table t1; diff --git a/mysql-test/main/distinct_notembedded.test b/mysql-test/main/distinct_notembedded.test index 9ef2f45913c..84d39f975a6 100644 --- a/mysql-test/main/distinct_notembedded.test +++ b/mysql-test/main/distinct_notembedded.test @@ -6,6 +6,8 @@ --echo # MDEV-30660 COUNT DISTINCT seems unnecessarily slow when run on a PK --echo # +#Enable after fix MDEV-32034 +--disable_view_protocol set @save_optimizer_trace = @@optimizer_trace; SET optimizer_trace='enabled=on'; let $trace= @@ -104,6 +106,8 @@ eval $trace; DROP TABLE t1, t2, t3; DROP VIEW v1; SET optimizer_trace = @save_optimizer_trace; +--enable_view_protocol + --echo # --echo # end of 10.5 tests --echo # diff --git a/mysql-test/main/fulltext_left_join.result b/mysql-test/main/fulltext_left_join.result index d5373037538..230ab39150d 100644 --- a/mysql-test/main/fulltext_left_join.result +++ b/mysql-test/main/fulltext_left_join.result @@ -16,16 +16,16 @@ author VARCHAR(255) NOT NULL INSERT INTO t2 VALUES('123', 'moi'); INSERT INTO t2 VALUES('123', 'lui'); INSERT INTO t2 VALUES('456', 'lui'); -select round(match(t1.texte,t1.sujet,t1.motsclefs) against('droit'),5) +select round(match(t1.texte,t1.sujet,t1.motsclefs) against('droit'),5) as exp from t1 left join t2 on t2.id=t1.id; -round(match(t1.texte,t1.sujet,t1.motsclefs) against('droit'),5) +exp 0.00000 0.00000 0.67003 0.00000 -select match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE) +select match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE) as exp from t1 left join t2 on t2.id=t1.id; -match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE) +exp 0 0 1 diff --git a/mysql-test/main/fulltext_left_join.test b/mysql-test/main/fulltext_left_join.test index 8d08fba4301..1763c1802b1 100644 --- a/mysql-test/main/fulltext_left_join.test +++ b/mysql-test/main/fulltext_left_join.test @@ -24,13 +24,10 @@ INSERT INTO t2 VALUES('123', 'moi'); INSERT INTO t2 VALUES('123', 'lui'); INSERT INTO t2 VALUES('456', 'lui'); -select round(match(t1.texte,t1.sujet,t1.motsclefs) against('droit'),5) +select round(match(t1.texte,t1.sujet,t1.motsclefs) against('droit'),5) as exp from t1 left join t2 on t2.id=t1.id; -#enable after fix MDEV-27871 ---disable_view_protocol -select match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE) +select match(t1.texte,t1.sujet,t1.motsclefs) against('droit' IN BOOLEAN MODE) as exp from t1 left join t2 on t2.id=t1.id; ---enable_view_protocol drop table t1, t2; diff --git a/mysql-test/main/func_gconcat.result b/mysql-test/main/func_gconcat.result index f817a1176ea..6226f95df23 100644 --- a/mysql-test/main/func_gconcat.result +++ b/mysql-test/main/func_gconcat.result @@ -1269,8 +1269,8 @@ SELECT * FROM v1; a GROUP_CONCAT(a ORDER BY a) NULL 10,20,30 DROP VIEW v1; -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP HAVING GROUP_CONCAT(a ORDER BY a)='10,20,30'); -(SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP HAVING GROUP_CONCAT(a ORDER BY a)='10,20,30') +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP HAVING GROUP_CONCAT(a ORDER BY a)='10,20,30') as exp; +exp 10,20,30 CREATE VIEW v1 AS SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP HAVING GROUP_CONCAT(a ORDER BY a)='10,20,30'); diff --git a/mysql-test/main/func_gconcat.test b/mysql-test/main/func_gconcat.test index c9787ce4471..09703db334a 100644 --- a/mysql-test/main/func_gconcat.test +++ b/mysql-test/main/func_gconcat.test @@ -950,10 +950,7 @@ SELECT * FROM (SELECT a,GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLU SELECT * FROM v1; DROP VIEW v1; -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP HAVING GROUP_CONCAT(a ORDER BY a)='10,20,30'); ---enable_view_protocol +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP HAVING GROUP_CONCAT(a ORDER BY a)='10,20,30') as exp; CREATE VIEW v1 AS SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP HAVING GROUP_CONCAT(a ORDER BY a)='10,20,30'); SELECT * FROM v1; diff --git a/mysql-test/main/func_group_innodb.result b/mysql-test/main/func_group_innodb.result index f5a823e4638..8fafa8704fc 100644 --- a/mysql-test/main/func_group_innodb.result +++ b/mysql-test/main/func_group_innodb.result @@ -5,8 +5,8 @@ set global innodb_stats_persistent= 1; set global innodb_stats_persistent_sample_pages=100; create table t1 (USR_ID integer not null, MAX_REQ integer not null, constraint PK_SEA_USER primary key (USR_ID)) engine=InnoDB; insert into t1 values (1, 3); -select count(*) + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ from t1 group by MAX_REQ; -count(*) + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ +select count(*) + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ as exp from t1 group by MAX_REQ; +exp 1 select Case When Count(*) < MAX_REQ Then 1 Else 0 End from t1 where t1.USR_ID = 1 group by MAX_REQ; Case When Count(*) < MAX_REQ Then 1 Else 0 End diff --git a/mysql-test/main/func_group_innodb.test b/mysql-test/main/func_group_innodb.test index b1f9a28b190..6db7fdc2ad7 100644 --- a/mysql-test/main/func_group_innodb.test +++ b/mysql-test/main/func_group_innodb.test @@ -15,10 +15,7 @@ set global innodb_stats_persistent_sample_pages=100; create table t1 (USR_ID integer not null, MAX_REQ integer not null, constraint PK_SEA_USER primary key (USR_ID)) engine=InnoDB; --enable_warnings insert into t1 values (1, 3); -#enable after fix MDEV-27871 ---disable_view_protocol -select count(*) + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ from t1 group by MAX_REQ; ---enable_view_protocol +select count(*) + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ + MAX_REQ - MAX_REQ as exp from t1 group by MAX_REQ; select Case When Count(*) < MAX_REQ Then 1 Else 0 End from t1 where t1.USR_ID = 1 group by MAX_REQ; drop table t1; diff --git a/mysql-test/main/func_in.result b/mysql-test/main/func_in.result index 1ddb5257314..d6f21fade49 100644 --- a/mysql-test/main/func_in.result +++ b/mysql-test/main/func_in.result @@ -863,15 +863,15 @@ DROP TABLE t1; # # MDEV-11514 IN with a mixture of TIME and DATETIME returns a wrong result # -SELECT TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32'); -TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32') +SELECT TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32') as exp; +exp 1 -PREPARE stmt FROM "SELECT TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32')"; +PREPARE stmt FROM "SELECT TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32') as exp"; EXECUTE stmt; -TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32') +exp 1 EXECUTE stmt; -TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32') +exp 1 DEALLOCATE PREPARE stmt; # diff --git a/mysql-test/main/func_in.test b/mysql-test/main/func_in.test index b88b68f2724..f78d691487f 100644 --- a/mysql-test/main/func_in.test +++ b/mysql-test/main/func_in.test @@ -652,14 +652,11 @@ DROP TABLE t1; --echo # --echo # MDEV-11514 IN with a mixture of TIME and DATETIME returns a wrong result --echo # -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32'); -PREPARE stmt FROM "SELECT TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32')"; +SELECT TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32') as exp; +PREPARE stmt FROM "SELECT TIME'10:20:30' IN (102030,TIME'10:20:31',TIMESTAMP'2001-01-01 10:20:32') as exp"; EXECUTE stmt; EXECUTE stmt; DEALLOCATE PREPARE stmt; ---enable_view_protocol --echo # --echo # MDEV-11497 Wrong result for (int_expr IN (mixture of signed and unsigned expressions)) diff --git a/mysql-test/main/func_regexp_pcre.result b/mysql-test/main/func_regexp_pcre.result index 36f2fced1db..e7d8adc7be6 100644 --- a/mysql-test/main/func_regexp_pcre.result +++ b/mysql-test/main/func_regexp_pcre.result @@ -720,17 +720,17 @@ REGEXP_INSTR('вася','с') SELECT REGEXP_INSTR('вася','я'); REGEXP_INSTR('вася','я') 4 -SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('в' USING koi8r)); -REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('в' USING koi8r)) +SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('в' USING koi8r)) as exp; +exp 1 -SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('а' USING koi8r)); -REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('а' USING koi8r)) +SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('а' USING koi8r)) as exp; +exp 2 -SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('с' USING koi8r)); -REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('с' USING koi8r)) +SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('с' USING koi8r)) as exp; +exp 3 -SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('я' USING koi8r)); -REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('я' USING koi8r)) +SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('я' USING koi8r)) as exp; +exp 4 # # Checking REGEXP_SUBSTR @@ -757,8 +757,8 @@ t1 CREATE TABLE `t1` ( `REGEXP_SUBSTR('abc','b')+0` double NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci DROP TABLE t1; -SELECT REGEXP_SUBSTR('See https://mariadb.org/en/foundation/ for details', 'https?://[^/]*'); -REGEXP_SUBSTR('See https://mariadb.org/en/foundation/ for details', 'https?://[^/]*') +SELECT REGEXP_SUBSTR('See https://mariadb.org/en/foundation/ for details', 'https?://[^/]*') as exp; +exp https://mariadb.org # # MDEV-6027 RLIKE: "." no longer matching new line @@ -792,14 +792,14 @@ SELECT 'a\nb' RLIKE '(?-s)a.b'; 'a\nb' RLIKE '(?-s)a.b' 0 SET default_regex_flags=DEFAULT; -SELECT REGEXP_SUBSTR('Monday Mon','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$'); +SELECT REGEXP_SUBSTR('Monday Mon','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$') as exp; ERROR 42000: Regex error 'two named subpatterns have the same name (PCRE2_DUPNAMES not set) at offset 30' SET default_regex_flags='DUPNAMES'; -SELECT REGEXP_SUBSTR('Monday Mon','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$'); -REGEXP_SUBSTR('Monday Mon','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$') +SELECT REGEXP_SUBSTR('Monday Mon','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$') as exp; +exp Monday Mon -SELECT REGEXP_SUBSTR('Tuesday Tue','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$'); -REGEXP_SUBSTR('Tuesday Tue','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$') +SELECT REGEXP_SUBSTR('Tuesday Tue','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$') as exp; +exp Tuesday Tue SET default_regex_flags=DEFAULT; SELECT 'AB' RLIKE 'A B'; @@ -850,8 +850,8 @@ SET default_regex_flags=DEFAULT; # # MDEV-6965 non-captured group \2 in regexp_replace # -SELECT REGEXP_REPLACE('1 foo and bar', '(\\d+) foo and (\\d+ )?bar', '\\1 this and \\2that'); -REGEXP_REPLACE('1 foo and bar', '(\\d+) foo and (\\d+ )?bar', '\\1 this and \\2that') +SELECT REGEXP_REPLACE('1 foo and bar', '(\\d+) foo and (\\d+ )?bar', '\\1 this and \\2that') as exp; +exp 1 this and that # # MDEV-8102 REGEXP function fails to match hex values when expression is stored as a variable diff --git a/mysql-test/main/func_regexp_pcre.test b/mysql-test/main/func_regexp_pcre.test index 8c2408f5763..3dad14f2e67 100644 --- a/mysql-test/main/func_regexp_pcre.test +++ b/mysql-test/main/func_regexp_pcre.test @@ -325,13 +325,10 @@ SELECT REGEXP_INSTR('вася','в'); SELECT REGEXP_INSTR('вася','а'); SELECT REGEXP_INSTR('вася','с'); SELECT REGEXP_INSTR('вася','я'); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('в' USING koi8r)); -SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('а' USING koi8r)); -SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('с' USING koi8r)); -SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('я' USING koi8r)); ---enable_view_protocol +SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('в' USING koi8r)) as exp; +SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('а' USING koi8r)) as exp; +SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('с' USING koi8r)) as exp; +SELECT REGEXP_INSTR(CONVERT('вася' USING koi8r), CONVERT('я' USING koi8r)) as exp; --echo # --echo # Checking REGEXP_SUBSTR @@ -351,10 +348,7 @@ CREATE TABLE t1 AS SELECT REGEXP_SUBSTR('abc','b')+0; SHOW CREATE TABLE t1; DROP TABLE t1; -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT REGEXP_SUBSTR('See https://mariadb.org/en/foundation/ for details', 'https?://[^/]*'); ---enable_view_protocol +SELECT REGEXP_SUBSTR('See https://mariadb.org/en/foundation/ for details', 'https?://[^/]*') as exp; --echo # --echo # MDEV-6027 RLIKE: "." no longer matching new line @@ -371,16 +365,13 @@ SELECT 'a\nb' RLIKE 'a.b'; SELECT 'a\nb' RLIKE '(?-s)a.b'; SET default_regex_flags=DEFAULT; -#enable after fix MDEV-27871 ---disable_view_protocol # note that old pcre2 reports a different offset --replace_result 29 30 --error ER_REGEXP_ERROR -SELECT REGEXP_SUBSTR('Monday Mon','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$'); +SELECT REGEXP_SUBSTR('Monday Mon','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$') as exp; SET default_regex_flags='DUPNAMES'; -SELECT REGEXP_SUBSTR('Monday Mon','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$'); -SELECT REGEXP_SUBSTR('Tuesday Tue','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$'); ---enable_view_protocol +SELECT REGEXP_SUBSTR('Monday Mon','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$') as exp; +SELECT REGEXP_SUBSTR('Tuesday Tue','^((?Mon|Fri|Sun)day|(?Tue)sday).*(?P=DN)$') as exp; SET default_regex_flags=DEFAULT; SELECT 'AB' RLIKE 'A B'; @@ -416,10 +407,7 @@ SET default_regex_flags=DEFAULT; --echo # --echo # MDEV-6965 non-captured group \2 in regexp_replace --echo # -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT REGEXP_REPLACE('1 foo and bar', '(\\d+) foo and (\\d+ )?bar', '\\1 this and \\2that'); ---enable_view_protocol +SELECT REGEXP_REPLACE('1 foo and bar', '(\\d+) foo and (\\d+ )?bar', '\\1 this and \\2that') as exp; --echo # --echo # MDEV-8102 REGEXP function fails to match hex values when expression is stored as a variable @@ -454,9 +442,6 @@ SELECT CAST(0xE001 AS BINARY) REGEXP @regCheck; SELECT 1 FROM dual WHERE ('Alpha,Bravo,Charlie,Delta,Echo,Foxtrot,StrataCentral,Golf,Hotel,India,Juliet,Kilo,Lima,Mike,StrataL3,November,Oscar,StrataL2,Sand,P3,P4SwitchTest,Arsys,Poppa,ExtensionMgr,Arp,Quebec,Romeo,StrataApiV2,PtReyes,Sierra,SandAcl,Arrow,Artools,BridgeTest,Tango,SandT,PAlaska,Namespace,Agent,Qos,PatchPanel,ProjectReport,Ark,Gimp,Agent,SliceAgent,Arnet,Bgp,Ale,Tommy,Central,AsicPktTestLib,Hsc,SandL3,Abuild,Pca9555,Standby,ControllerDut,CalSys,SandLib,Sb820,PointV2,BfnLib,Evpn,BfnSdk,Sflow,ManagementActive,AutoTest,GatedTest,Bgp,Sand,xinetd,BfnAgentLib,bf-utils,Hello,BfnState,Eos,Artest,Qos,Scd,ThermoMgr,Uniform,EosUtils,Eb,FanController,Central,BfnL3,BfnL2,tcp_wrappers,Victor,Environment,Route,Failover,Whiskey,Xray,Gimp,BfnFixed,Strata,SoCal,XApi,Msrp,XpProfile,tcpdump,PatchPanel,ArosTest,FhTest,Arbus,XpAcl,MacConc,XpApi,telnet,QosTest,Alpha2,BfnVlan,Stp,VxlanControllerTest,MplsAgent,Bravo2,Lanz,BfnMbb,Intf,XCtrl,Unicast,SandTunnel,L3Unicast,Ipsec,MplsTest,Rsvp,EthIntf,StageMgr,Sol,MplsUtils,Nat,Ira,P4NamespaceDut,Counters,Charlie2,Aqlc,Mlag,Power,OpenFlow,Lag,RestApi,BfdTest,strongs,Sfa,CEosUtils,Adt746,MaintenanceMode,MlagDut,EosImage,IpEth,MultiProtocol,Launcher,Max3179,Snmp,Acl,IpEthTest,PhyEee,bf-syslibs,tacc,XpL2,p4-ar-switch,p4-bf-switch,LdpTest,BfnPhy,Mirroring,Phy6,Ptp' REGEXP '^((?!\b(Strata|StrataApi|StrataApiV2)\b).)*$'); --enable_result_log --enable_warnings -#enable after fix MDEV-27871 ---disable_view_protocol ---enable_view_protocol # # MDEV-12942 REGEXP_INSTR returns 1 when using brackets diff --git a/mysql-test/main/func_str.result b/mysql-test/main/func_str.result index 5bff1a1e427..ba246b8787b 100644 --- a/mysql-test/main/func_str.result +++ b/mysql-test/main/func_str.result @@ -39,11 +39,11 @@ position(binary 'll' in 'hello') position('a' in binary 'hello') select left('hello',null), right('hello',null); left('hello',null) right('hello',null) NULL NULL -select left('hello',2),right('hello',2),substring('hello',2,2),mid('hello',1,5) ; +select left('hello',2),right('hello',2),substring('hello',2,2),mid('hello',1,5); left('hello',2) right('hello',2) substring('hello',2,2) mid('hello',1,5) he lo el hello -select concat('',left(right(concat('what ',concat('is ','happening')),9),4),'',substring('monty',5,1)) ; -concat('',left(right(concat('what ',concat('is ','happening')),9),4),'',substring('monty',5,1)) +select concat('',left(right(concat('what ',concat('is ','happening')),9),4),'',substring('monty',5,1)) as exp; +exp happy select substring_index('www.tcx.se','.',-2),substring_index('www.tcx.se','.',1); substring_index('www.tcx.se','.',-2) substring_index('www.tcx.se','.',1) @@ -171,23 +171,23 @@ the king of select substring_index('the king of the the hill','the',3); substring_index('the king of the the hill','the',3) the king of the -select concat(':',ltrim(' left '),':',rtrim(' right '),':'); -concat(':',ltrim(' left '),':',rtrim(' right '),':') +select concat(':',ltrim(' left '),':',rtrim(' right '),':') as exp; +exp :left : right: -select concat(':',trim(leading from ' left '),':',trim(trailing from ' right '),':'); -concat(':',trim(leading from ' left '),':',trim(trailing from ' right '),':') +select concat(':',trim(leading from ' left '),':',trim(trailing from ' right '),':') as exp; +exp :left : right: -select concat(':',trim(LEADING FROM ' left'),':',trim(TRAILING FROM ' right '),':'); -concat(':',trim(LEADING FROM ' left'),':',trim(TRAILING FROM ' right '),':') +select concat(':',trim(LEADING FROM ' left'),':',trim(TRAILING FROM ' right '),':') as exp; +exp :left: right: -select concat(':',trim(' m '),':',trim(BOTH FROM ' y '),':',trim('*' FROM '*s*'),':'); -concat(':',trim(' m '),':',trim(BOTH FROM ' y '),':',trim('*' FROM '*s*'),':') +select concat(':',trim(' m '),':',trim(BOTH FROM ' y '),':',trim('*' FROM '*s*'),':') as exp; +exp :m:y:s: -select concat(':',trim(BOTH 'ab' FROM 'ababmyabab'),':',trim(BOTH '*' FROM '***sql'),':'); -concat(':',trim(BOTH 'ab' FROM 'ababmyabab'),':',trim(BOTH '*' FROM '***sql'),':') +select concat(':',trim(BOTH 'ab' FROM 'ababmyabab'),':',trim(BOTH '*' FROM '***sql'),':') as exp; +exp :my:sql: -select concat(':',trim(LEADING '.*' FROM '.*my'),':',trim(TRAILING '.*' FROM 'sql.*.*'),':'); -concat(':',trim(LEADING '.*' FROM '.*my'),':',trim(TRAILING '.*' FROM 'sql.*.*'),':') +select concat(':',trim(LEADING '.*' FROM '.*my'),':',trim(TRAILING '.*' FROM 'sql.*.*'),':') as exp; +exp :my:sql: select TRIM("foo" FROM "foo"), TRIM("foo" FROM "foook"), TRIM("foo" FROM "okfoo"); TRIM("foo" FROM "foo") TRIM("foo" FROM "foook") TRIM("foo" FROM "okfoo") @@ -201,8 +201,8 @@ NULL select concat_ws(',','',NULL,'a'); concat_ws(',','',NULL,'a') ,a -SELECT CONCAT('"',CONCAT_WS('";"',repeat('a',60),repeat('b',60),repeat('c',60),repeat('d',100)), '"'); -CONCAT('"',CONCAT_WS('";"',repeat('a',60),repeat('b',60),repeat('c',60),repeat('d',100)), '"') +SELECT CONCAT('"',CONCAT_WS('";"',repeat('a',60),repeat('b',60),repeat('c',60),repeat('d',100)), '"') as exp; +exp "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";"bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb";"cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc";"dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd" select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es'); insert('txs',2,1,'hi') insert('is ',4,0,'a') insert('txxxxt',2,4,'es') @@ -215,8 +215,8 @@ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is def replace('aaaa','a','bbbb') 253 16 16 Y 0 39 8 replace('aaaa','a','bbbb') bbbbbbbbbbbbbbbb -select replace(concat(lcase(concat('THIS',' ','IS',' ','A',' ')),ucase('false'),' ','test'),'FALSE','REAL') ; -replace(concat(lcase(concat('THIS',' ','IS',' ','A',' ')),ucase('false'),' ','test'),'FALSE','REAL') +select replace(concat(lcase(concat('THIS',' ','IS',' ','A',' ')),ucase('false'),' ','test'),'FALSE','REAL') as exp; +exp this is a REAL test select soundex(''),soundex('he'),soundex('hello all folks'),soundex('#3556 in bugdb'); soundex('') soundex('he') soundex('hello all folks') soundex('#3556 in bugdb') @@ -311,11 +311,11 @@ NULL NULL select least(1,2,3) | greatest(16,32,8), least(5,4)*1,greatest(-1.0,1.0)*1,least(3,2,1)*1.0,greatest(1,1.1,1.0),least("10",9),greatest("A","B","0"); least(1,2,3) | greatest(16,32,8) least(5,4)*1 greatest(-1.0,1.0)*1 least(3,2,1)*1.0 greatest(1,1.1,1.0) least("10",9) greatest("A","B","0") 33 4 1.0 1.0 1.1 9 B -select decode(encode(repeat("a",100000),"monty"),"monty")=repeat("a",100000); -decode(encode(repeat("a",100000),"monty"),"monty")=repeat("a",100000) +select decode(encode(repeat("a",100000),"monty"),"monty")=repeat("a",100000) as exp; +exp 1 -select decode(encode("abcdef","monty"),"monty")="abcdef"; -decode(encode("abcdef","monty"),"monty")="abcdef" +select decode(encode("abcdef","monty"),"monty")="abcdef" as exp; +exp 1 select quote('\'\"\\test'); quote('\'\"\\test') @@ -331,11 +331,11 @@ Warning 1365 Division by 0 select length(quote(concat(char(0),"test"))); length(quote(concat(char(0),"test"))) 8 -select hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235)))); -hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235)))) +select hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235)))) as exp; +exp 27E0E3E6E7E8EAEB27 -select unhex(hex("foobar")), hex(unhex("1234567890ABCDEF")), unhex("345678"), unhex(NULL); -unhex(hex("foobar")) hex(unhex("1234567890ABCDEF")) unhex("345678") unhex(NULL) +select unhex(hex("foobar")), hex(unhex("1234567890ABCDEF")), unhex("345678"), unhex(NULL) as exp; +unhex(hex("foobar")) hex(unhex("1234567890ABCDEF")) unhex("345678") exp foobar 1234567890ABCDEF 4Vx NULL select hex(unhex("1")), hex(unhex("12")), hex(unhex("123")), hex(unhex("1234")), hex(unhex("12345")), hex(unhex("123456")); hex(unhex("1")) hex(unhex("12")) hex(unhex("123")) hex(unhex("1234")) hex(unhex("12345")) hex(unhex("123456")) @@ -408,17 +408,17 @@ bugstatus int(10) unsigned default NULL, submitter int(10) unsigned default NULL ) ENGINE=MyISAM; INSERT INTO t1 VALUES (1,'Link',1,1,1,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','2001-02-28 08:40:16',20010228084016,0,4); -SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter), '"') FROM t1; -CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter), '"') +SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter), '"') as exp FROM t1; +exp "Link";"1";"1";"1";"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";"2001-02-28 08:40:16";"20010228084016";"0";"4" -SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugstatus,submitter), '"') FROM t1; -CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugstatus,submitter), '"') +SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugstatus,submitter), '"') as exp FROM t1; +exp "Link";"1";"1";"1";"0";"4" -SELECT CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter) FROM t1; -CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter) +SELECT CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter) as exp FROM t1; +exp Link";"1";"1";"1";"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";"2001-02-28 08:40:16";"20010228084016";"0";"4 -SELECT bugdesc, REPLACE(bugdesc, 'xxxxxxxxxxxxxxxxxxxx', 'bbbbbbbbbbbbbbbbbbbb') from t1 group by bugdesc; -bugdesc REPLACE(bugdesc, 'xxxxxxxxxxxxxxxxxxxx', 'bbbbbbbbbbbbbbbbbbbb') +SELECT bugdesc, REPLACE(bugdesc, 'xxxxxxxxxxxxxxxxxxxx', 'bbbbbbbbbbbbbbbbbbbb') as exp from t1 group by bugdesc; +bugdesc exp aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa drop table t1; CREATE TABLE t1 (id int(11) NOT NULL auto_increment, tmp text NOT NULL, KEY id (id)) ENGINE=MyISAM; @@ -747,7 +747,7 @@ t1 CREATE TABLE `t1` ( `bin(130)` varchar(64) DEFAULT NULL, `oct(130)` varchar(64) DEFAULT NULL, `conv(130,16,10)` varchar(64) DEFAULT NULL, - `hex(130)` varchar(6) DEFAULT NULL, + `hex(130)` varchar(16) DEFAULT NULL, `char(130)` varbinary(4) DEFAULT NULL, `format(130,10)` varchar(25) DEFAULT NULL, `left(_latin2'a',1)` varchar(1) CHARACTER SET latin2 COLLATE latin2_general_ci DEFAULT NULL, @@ -2016,35 +2016,35 @@ hello select insert('hello', 4294967297, 4294967297, 'hi'); insert('hello', 4294967297, 4294967297, 'hi') hello -select insert('hello', -18446744073709551615, -18446744073709551615, 'hi'); -insert('hello', -18446744073709551615, -18446744073709551615, 'hi') +select insert('hello', -18446744073709551615, -18446744073709551615, 'hi') as exp; +exp hello Warnings: Warning 1916 Got overflow when converting '-18446744073709551615' to INT. Value truncated Warning 1916 Got overflow when converting '-18446744073709551615' to INT. Value truncated -select insert('hello', 18446744073709551615, 18446744073709551615, 'hi'); -insert('hello', 18446744073709551615, 18446744073709551615, 'hi') +select insert('hello', 18446744073709551615, 18446744073709551615, 'hi') as exp; +exp hello -select insert('hello', -18446744073709551616, -18446744073709551616, 'hi'); -insert('hello', -18446744073709551616, -18446744073709551616, 'hi') +select insert('hello', -18446744073709551616, -18446744073709551616, 'hi') as exp; +exp hello Warnings: Warning 1916 Got overflow when converting '-18446744073709551616' to INT. Value truncated Warning 1916 Got overflow when converting '-18446744073709551616' to INT. Value truncated -select insert('hello', 18446744073709551616, 18446744073709551616, 'hi'); -insert('hello', 18446744073709551616, 18446744073709551616, 'hi') +select insert('hello', 18446744073709551616, 18446744073709551616, 'hi') as exp; +exp hello Warnings: Warning 1916 Got overflow when converting '18446744073709551616' to INT. Value truncated Warning 1916 Got overflow when converting '18446744073709551616' to INT. Value truncated -select insert('hello', -18446744073709551617, -18446744073709551617, 'hi'); -insert('hello', -18446744073709551617, -18446744073709551617, 'hi') +select insert('hello', -18446744073709551617, -18446744073709551617, 'hi') as exp; +exp hello Warnings: Warning 1916 Got overflow when converting '-18446744073709551617' to INT. Value truncated Warning 1916 Got overflow when converting '-18446744073709551617' to INT. Value truncated -select insert('hello', 18446744073709551617, 18446744073709551617, 'hi'); -insert('hello', 18446744073709551617, 18446744073709551617, 'hi') +select insert('hello', 18446744073709551617, 18446744073709551617, 'hi') as exp; +exp hello Warnings: Warning 1916 Got overflow when converting '18446744073709551617' to INT. Value truncated @@ -2766,25 +2766,25 @@ CREATE TABLE t1 (a VARCHAR(20), b INT); CREATE TABLE t2 (a VARCHAR(20), b INT); INSERT INTO t1 VALUES ('ABC', 1); INSERT INTO t2 VALUES ('ABC', 1); -SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) +SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) as exp FROM t1,t2 WHERE t1.b = t1.b > 0 GROUP BY t2.b; -DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) +exp secret -SELECT DECODE((SELECT ENCODE('secret', 'ABC') FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) +SELECT DECODE((SELECT ENCODE('secret', 'ABC') FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) as exp FROM t1,t2 WHERE t1.b = t1.b > 0 GROUP BY t2.b; -DECODE((SELECT ENCODE('secret', 'ABC') FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) +exp secret -SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), 'ABC') +SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), 'ABC') as exp FROM t1,t2 WHERE t1.b = t1.b > 0 GROUP BY t2.b; -DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), 'ABC') +exp secret TRUNCATE TABLE t1; TRUNCATE TABLE t2; INSERT INTO t1 VALUES ('EDF', 3), ('BCD', 2), ('ABC', 1); INSERT INTO t2 VALUES ('EDF', 3), ('BCD', 2), ('ABC', 1); -SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b LIMIT 1), t2.a) +SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b LIMIT 1), t2.a) as exp FROM t2 WHERE t2.b = 1 GROUP BY t2.b; -DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b LIMIT 1), t2.a) +exp secret DROP TABLE t1, t2; # @@ -3066,10 +3066,8 @@ SELECT (rpad(1.0,2048,1)) IS NOT FALSE; 1 SELECT ((+0) IN ((0b111111111111111111111111111111111111111111111111111),(rpad(1.0,2048,1)), -(32767.1))); -((+0) IN -((0b111111111111111111111111111111111111111111111111111),(rpad(1.0,2048,1)), -(32767.1))) +(32767.1))) as exp; +exp 0 SELECT ((rpad(1.0,2048,1)) = ('4(') ^ (0.1)); ((rpad(1.0,2048,1)) = ('4(') ^ (0.1)) @@ -5023,8 +5021,8 @@ DROP TABLE t1; # # MDEV-24742 Server crashes in Charset::numchars / String::numchars # -SELECT NULL IN (RIGHT(AES_ENCRYPT('foo','bar'), LAST_INSERT_ID()), 'qux'); -NULL IN (RIGHT(AES_ENCRYPT('foo','bar'), LAST_INSERT_ID()), 'qux') +SELECT NULL IN (RIGHT(AES_ENCRYPT('foo','bar'), LAST_INSERT_ID()), 'qux') as exp; +exp NULL # # Bug#31374305 - FORMAT() NOT DISPLAYING WHOLE NUMBER SIDE CORRECTLY diff --git a/mysql-test/main/func_str.test b/mysql-test/main/func_str.test index 36af647fd6e..df259edf61f 100644 --- a/mysql-test/main/func_str.test +++ b/mysql-test/main/func_str.test @@ -28,14 +28,11 @@ select position(binary 'll' in 'hello'),position('a' in binary 'hello'); # strange undocumented behaviour, strict mode # select left('hello',null), right('hello',null); -select left('hello',2),right('hello',2),substring('hello',2,2),mid('hello',1,5) ; -#enable after fix MDEV-27871 ---disable_view_protocol -select concat('',left(right(concat('what ',concat('is ','happening')),9),4),'',substring('monty',5,1)) ; +select left('hello',2),right('hello',2),substring('hello',2,2),mid('hello',1,5); +select concat('',left(right(concat('what ',concat('is ','happening')),9),4),'',substring('monty',5,1)) as exp; select substring_index('www.tcx.se','.',-2),substring_index('www.tcx.se','.',1); select substring_index('www.tcx.se','tcx',1),substring_index('www.tcx.se','tcx',-1); select substring_index('.tcx.se','.',-2),substring_index('.tcx.se','.tcx',-1); ---enable_view_protocol select substring_index('aaaaaaaaa1','a',1); select substring_index('aaaaaaaaa1','aa',1); select substring_index('aaaaaaaaa1','aa',2); @@ -79,32 +76,28 @@ select substring_index('the king of the the hill','the',1); select substring_index('the king of the the hill','the',2); select substring_index('the king of the the hill','the',3); -select concat(':',ltrim(' left '),':',rtrim(' right '),':'); -#enable after fix MDEV-27871 ---disable_view_protocol -select concat(':',trim(leading from ' left '),':',trim(trailing from ' right '),':'); -select concat(':',trim(LEADING FROM ' left'),':',trim(TRAILING FROM ' right '),':'); -select concat(':',trim(' m '),':',trim(BOTH FROM ' y '),':',trim('*' FROM '*s*'),':'); -select concat(':',trim(BOTH 'ab' FROM 'ababmyabab'),':',trim(BOTH '*' FROM '***sql'),':'); -select concat(':',trim(LEADING '.*' FROM '.*my'),':',trim(TRAILING '.*' FROM 'sql.*.*'),':'); +select concat(':',ltrim(' left '),':',rtrim(' right '),':') as exp; +select concat(':',trim(leading from ' left '),':',trim(trailing from ' right '),':') as exp; +select concat(':',trim(LEADING FROM ' left'),':',trim(TRAILING FROM ' right '),':') as exp; +select concat(':',trim(' m '),':',trim(BOTH FROM ' y '),':',trim('*' FROM '*s*'),':') as exp; +select concat(':',trim(BOTH 'ab' FROM 'ababmyabab'),':',trim(BOTH '*' FROM '***sql'),':') as exp; +select concat(':',trim(LEADING '.*' FROM '.*my'),':',trim(TRAILING '.*' FROM 'sql.*.*'),':') as exp; select TRIM("foo" FROM "foo"), TRIM("foo" FROM "foook"), TRIM("foo" FROM "okfoo"); ---enable_view_protocol select concat_ws(', ','monty','was here','again'); select concat_ws(NULL,'a'),concat_ws(',',NULL,''); select concat_ws(',','',NULL,'a'); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT CONCAT('"',CONCAT_WS('";"',repeat('a',60),repeat('b',60),repeat('c',60),repeat('d',100)), '"'); +SELECT CONCAT('"',CONCAT_WS('";"',repeat('a',60),repeat('b',60),repeat('c',60),repeat('d',100)), '"') as exp; select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es'); select replace('aaaa','a','b'),replace('aaaa','aa','b'),replace('aaaa','a','bb'),replace('aaaa','','b'),replace('bbbb','a','c'); +--disable_view_protocol --enable_metadata select replace('aaaa','a','bbbb'); --disable_metadata -select replace(concat(lcase(concat('THIS',' ','IS',' ','A',' ')),ucase('false'),' ','test'),'FALSE','REAL') ; -select soundex(''),soundex('he'),soundex('hello all folks'),soundex('#3556 in bugdb'); --enable_view_protocol +select replace(concat(lcase(concat('THIS',' ','IS',' ','A',' ')),ucase('false'),' ','test'),'FALSE','REAL') as exp; +select soundex(''),soundex('he'),soundex('hello all folks'),soundex('#3556 in bugdb'); select 'mood' sounds like 'mud'; select 'Glazgo' sounds like 'Liverpool'; select null sounds like 'null'; @@ -137,32 +130,22 @@ select rpad('abcd',7),lpad('abcd',7); select LEAST(NULL,'HARRY','HARRIOT',NULL,'HAROLD'),GREATEST(NULL,'HARRY','HARRIOT',NULL,'HAROLD'); select least(1,2,3) | greatest(16,32,8), least(5,4)*1,greatest(-1.0,1.0)*1,least(3,2,1)*1.0,greatest(1,1.1,1.0),least("10",9),greatest("A","B","0"); -#enable after fix MDEV-27871 ---disable_view_protocol -select decode(encode(repeat("a",100000),"monty"),"monty")=repeat("a",100000); ---enable_view_protocol -select decode(encode("abcdef","monty"),"monty")="abcdef"; +select decode(encode(repeat("a",100000),"monty"),"monty")=repeat("a",100000) as exp; +select decode(encode("abcdef","monty"),"monty")="abcdef" as exp; select quote('\'\"\\test'); select quote(concat('abc\'', '\\cba')); select quote(1/0), quote('\0\Z'); select length(quote(concat(char(0),"test"))); -#enable after fix MDEV-27871 ---disable_view_protocol -select hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235)))); -select unhex(hex("foobar")), hex(unhex("1234567890ABCDEF")), unhex("345678"), unhex(NULL); ---enable_view_protocol +select hex(quote(concat(char(224),char(227),char(230),char(231),char(232),char(234),char(235)))) as exp; +select unhex(hex("foobar")), hex(unhex("1234567890ABCDEF")), unhex("345678"), unhex(NULL) as exp; select hex(unhex("1")), hex(unhex("12")), hex(unhex("123")), hex(unhex("1234")), hex(unhex("12345")), hex(unhex("123456")); select length(unhex(md5("abrakadabra"))); # # Bug #6564: QUOTE(NULL # - -#enable after fix MDEV-28651 ---disable_view_protocol select concat('a', quote(NULL)); ---enable_view_protocol # # Wrong usage of functions @@ -211,14 +194,11 @@ CREATE TABLE t1 ( submitter int(10) unsigned default NULL ) ENGINE=MyISAM; -#enable after fix MDEV-27871 ---disable_view_protocol INSERT INTO t1 VALUES (1,'Link',1,1,1,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa','2001-02-28 08:40:16',20010228084016,0,4); -SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter), '"') FROM t1; -SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugstatus,submitter), '"') FROM t1; -SELECT CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter) FROM t1; -SELECT bugdesc, REPLACE(bugdesc, 'xxxxxxxxxxxxxxxxxxxx', 'bbbbbbbbbbbbbbbbbbbb') from t1 group by bugdesc; ---enable_view_protocol +SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter), '"') as exp FROM t1; +SELECT CONCAT('"',CONCAT_WS('";"',title,prio,category,program,bugstatus,submitter), '"') as exp FROM t1; +SELECT CONCAT_WS('";"',title,prio,category,program,bugdesc,created,modified+0,bugstatus,submitter) as exp FROM t1; +SELECT bugdesc, REPLACE(bugdesc, 'xxxxxxxxxxxxxxxxxxxx', 'bbbbbbbbbbbbbbbbbbbb') as exp from t1 group by bugdesc; drop table t1; # @@ -1138,15 +1118,12 @@ select insert('hello', -4294967296, -4294967296, 'hi'); select insert('hello', 4294967296, 4294967296, 'hi'); select insert('hello', -4294967297, -4294967297, 'hi'); select insert('hello', 4294967297, 4294967297, 'hi'); -#enable after fix MDEV-27871 ---disable_view_protocol -select insert('hello', -18446744073709551615, -18446744073709551615, 'hi'); -select insert('hello', 18446744073709551615, 18446744073709551615, 'hi'); -select insert('hello', -18446744073709551616, -18446744073709551616, 'hi'); -select insert('hello', 18446744073709551616, 18446744073709551616, 'hi'); -select insert('hello', -18446744073709551617, -18446744073709551617, 'hi'); -select insert('hello', 18446744073709551617, 18446744073709551617, 'hi'); ---enable_view_protocol +select insert('hello', -18446744073709551615, -18446744073709551615, 'hi') as exp; +select insert('hello', 18446744073709551615, 18446744073709551615, 'hi') as exp; +select insert('hello', -18446744073709551616, -18446744073709551616, 'hi') as exp; +select insert('hello', 18446744073709551616, 18446744073709551616, 'hi') as exp; +select insert('hello', -18446744073709551617, -18446744073709551617, 'hi') as exp; +select insert('hello', 18446744073709551617, 18446744073709551617, 'hi') as exp; select repeat('hello', -1); select repeat('hello', -4294967295); @@ -1491,17 +1468,14 @@ CREATE TABLE t2 (a VARCHAR(20), b INT); INSERT INTO t1 VALUES ('ABC', 1); INSERT INTO t2 VALUES ('ABC', 1); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) +SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) as exp FROM t1,t2 WHERE t1.b = t1.b > 0 GROUP BY t2.b; -SELECT DECODE((SELECT ENCODE('secret', 'ABC') FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) +SELECT DECODE((SELECT ENCODE('secret', 'ABC') FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), t2.a) as exp FROM t1,t2 WHERE t1.b = t1.b > 0 GROUP BY t2.b; -SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), 'ABC') +SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b), 'ABC') as exp FROM t1,t2 WHERE t1.b = t1.b > 0 GROUP BY t2.b; ---enable_view_protocol TRUNCATE TABLE t1; TRUNCATE TABLE t2; @@ -1509,11 +1483,8 @@ TRUNCATE TABLE t2; INSERT INTO t1 VALUES ('EDF', 3), ('BCD', 2), ('ABC', 1); INSERT INTO t2 VALUES ('EDF', 3), ('BCD', 2), ('ABC', 1); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b LIMIT 1), t2.a) +SELECT DECODE((SELECT ENCODE('secret', t1.a) FROM t1,t2 WHERE t1.a = t2.a GROUP BY t1.b LIMIT 1), t2.a) as exp FROM t2 WHERE t2.b = 1 GROUP BY t2.b; ---enable_view_protocol DROP TABLE t1, t2; @@ -1679,14 +1650,11 @@ SELECT CONV(1,-2147483648,-2147483648); --echo # Bug#12985030 SIMPLE QUERY WITH DECIMAL NUMBERS LEAKS MEMORY --echo # -#enable after fix MDEV-27871 ---disable_view_protocol SELECT (rpad(1.0,2048,1)) IS NOT FALSE; SELECT ((+0) IN ((0b111111111111111111111111111111111111111111111111111),(rpad(1.0,2048,1)), -(32767.1))); +(32767.1))) as exp; SELECT ((rpad(1.0,2048,1)) = ('4(') ^ (0.1)); ---enable_view_protocol --error 1690 SELECT @@ -2114,10 +2082,7 @@ DROP TABLE t1; --echo # MDEV-24742 Server crashes in Charset::numchars / String::numchars --echo # -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT NULL IN (RIGHT(AES_ENCRYPT('foo','bar'), LAST_INSERT_ID()), 'qux'); ---enable_view_protocol +SELECT NULL IN (RIGHT(AES_ENCRYPT('foo','bar'), LAST_INSERT_ID()), 'qux') as exp; --echo # --echo # Bug#31374305 - FORMAT() NOT DISPLAYING WHOLE NUMBER SIDE CORRECTLY diff --git a/mysql-test/main/func_time_hires.result b/mysql-test/main/func_time_hires.result index 24221eeed16..7bbf557a5ed 100644 --- a/mysql-test/main/func_time_hires.result +++ b/mysql-test/main/func_time_hires.result @@ -162,17 +162,17 @@ cast(cast(@a as time(2)) as time(6)) 12:13:14.120000 select CAST(@a AS DATETIME(7)); ERROR 42000: Too big precision specified for '@`a`'. Maximum is 6 -SELECT CONVERT_TZ('2011-01-02 12:00:00', '+00:00', '+03:00'); -CONVERT_TZ('2011-01-02 12:00:00', '+00:00', '+03:00') +SELECT CONVERT_TZ('2011-01-02 12:00:00', '+00:00', '+03:00') as exp; +exp 2011-01-02 15:00:00 -SELECT CONVERT_TZ('2011-01-02 12:00:00.123', '+00:00', '+03:00'); -CONVERT_TZ('2011-01-02 12:00:00.123', '+00:00', '+03:00') +SELECT CONVERT_TZ('2011-01-02 12:00:00.123', '+00:00', '+03:00') as exp; +exp 2011-01-02 15:00:00.123 -SELECT CONVERT_TZ('2011-01-02 12:00:00.123456', '+00:00', '+03:00'); -CONVERT_TZ('2011-01-02 12:00:00.123456', '+00:00', '+03:00') +SELECT CONVERT_TZ('2011-01-02 12:00:00.123456', '+00:00', '+03:00') as exp; +exp 2011-01-02 15:00:00.123456 -SELECT CONVERT_TZ(CAST('2010-10-10 10:10:10.123456' AS DATETIME(4)), '+00:00', '+03:00'); -CONVERT_TZ(CAST('2010-10-10 10:10:10.123456' AS DATETIME(4)), '+00:00', '+03:00') +SELECT CONVERT_TZ(CAST('2010-10-10 10:10:10.123456' AS DATETIME(4)), '+00:00', '+03:00') as exp; +exp 2010-10-10 13:10:10.1234 create table t1 (a varchar(200)); insert t1 values (now(6)); diff --git a/mysql-test/main/func_time_hires.test b/mysql-test/main/func_time_hires.test index dca8d458f8a..507c7ac240f 100644 --- a/mysql-test/main/func_time_hires.test +++ b/mysql-test/main/func_time_hires.test @@ -80,13 +80,10 @@ select CAST(@a AS DATETIME(7)); # # CONVERT_TZ # -SELECT CONVERT_TZ('2011-01-02 12:00:00', '+00:00', '+03:00'); -SELECT CONVERT_TZ('2011-01-02 12:00:00.123', '+00:00', '+03:00'); -SELECT CONVERT_TZ('2011-01-02 12:00:00.123456', '+00:00', '+03:00'); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT CONVERT_TZ(CAST('2010-10-10 10:10:10.123456' AS DATETIME(4)), '+00:00', '+03:00'); ---enable_view_protocol +SELECT CONVERT_TZ('2011-01-02 12:00:00', '+00:00', '+03:00') as exp; +SELECT CONVERT_TZ('2011-01-02 12:00:00.123', '+00:00', '+03:00') as exp; +SELECT CONVERT_TZ('2011-01-02 12:00:00.123456', '+00:00', '+03:00') as exp; +SELECT CONVERT_TZ(CAST('2010-10-10 10:10:10.123456' AS DATETIME(4)), '+00:00', '+03:00') as exp; # # Field::store_time() diff --git a/mysql-test/main/gis-debug.result b/mysql-test/main/gis-debug.result index 7d143ad3f45..7c217c16393 100644 --- a/mysql-test/main/gis-debug.result +++ b/mysql-test/main/gis-debug.result @@ -238,30 +238,26 @@ dist buffer buf_area -1 POLYGON 16.00 SELECT ST_CONTAINS( GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)')); -ST_CONTAINS( -GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)')) +GeomFromText('POINT(5 10)')) as geom; +geom 0 SELECT AsText(ST_UNION( GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)'))); -AsText(ST_UNION( -GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)'))) +GeomFromText('POINT(5 10)'))) as geom; +geom GEOMETRYCOLLECTION(POLYGON((0 0,0 5,5 5,5 0,0 0)),POLYGON((6 6,6 11,11 11,11 6,6 6)),POINT(5 10)) DROP PROCEDURE p1; # # Bug #13833019 ASSERTION `T1->RESULT_RANGE' FAILED IN GCALC_OPERATION_REDUCER::END_COUPLE # -SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)); -GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)) +SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)) as geom; +geom POLYGON # # Bug #13832749 HANDLE_FATAL_SIGNAL IN GCALC_FUNCTION::COUNT_INTERNAL # -SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)); -GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)) +SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)) as geom; +geom POLYGON # # Bug#13358363 - ASSERTION: N > 0 && N < SINUSES_CALCULATED*2+1 | GET_N_SINCOS/ADD_EDGE_BUFFER @@ -272,27 +268,21 @@ Warning 1292 Truncated incorrect DOUBLE value: '' SELECT ST_WITHIN( LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '), ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) '), -ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) ')))); -ST_WITHIN( -LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '), -ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) ') +ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) ')))) as st; +st 0 SELECT ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '), -ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))); -ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '), -ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))) +ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))) as st; +st 2 SELECT ST_NUMINTERIORRINGS( ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '), -SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))); -ST_NUMINTERIORRINGS( -ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '), -SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))) +SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))) as st; +st 0 SELECT ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'), -SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))); -ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'), -SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))) +SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))) as st; +st POLYGON((9 9,5 2,4 5,9 9)) # # Start of 10.2 tests diff --git a/mysql-test/main/gis-precise.result b/mysql-test/main/gis-precise.result index 513d8b6e8c2..a75b71f4c8b 100644 --- a/mysql-test/main/gis-precise.result +++ b/mysql-test/main/gis-precise.result @@ -1,21 +1,21 @@ DROP TABLE IF EXISTS t1; -select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 0,20 20,0 20,0 0))'), GeomFromText('POLYGON((10 10,30 10,30 30,10 30,10 10))')); -1 ST_Intersects(GeomFromText('POLYGON((0 0,20 0,20 20,0 20,0 0))'), GeomFromText('POLYGON((10 10,30 10,30 30,10 30,10 10))')) +select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 0,20 20,0 20,0 0))'), GeomFromText('POLYGON((10 10,30 10,30 30,10 30,10 10))')) as result; +1 result 1 1 -select 0, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 40, 40 50, 20 70, 10 40))')); -0 ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 40, 40 50, 20 70, 10 40))')) +select 0, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 40, 40 50, 20 70, 10 40))')) as result; +0 result 0 0 -select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POINT(10 10)')); -1 ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POINT(10 10)')) +select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POINT(10 10)')) as result; +1 result 1 1 -select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')); -1 ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) +select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) as result; +1 result 1 1 -select 0, ST_Within(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')); -0 ST_Within(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) +select 0, ST_Within(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) as result; +0 result 0 0 -select 1, ST_Within(GeomFromText('POLYGON((1 1,20 10,10 30, 1 1))'), GeomFromText('POLYGON((0 0,30 5,10 40, 0 0))')); -1 ST_Within(GeomFromText('POLYGON((1 1,20 10,10 30, 1 1))'), GeomFromText('POLYGON((0 0,30 5,10 40, 0 0))')) +select 1, ST_Within(GeomFromText('POLYGON((1 1,20 10,10 30, 1 1))'), GeomFromText('POLYGON((0 0,30 5,10 40, 0 0))')) as result; +1 result 1 1 create table t1 (g point); insert into t1 values @@ -66,89 +66,89 @@ POINT(6 2) POINT(6 6) POINT(8 4) DROP TABLE t1; -select 0, ST_Within(GeomFromText('LINESTRING(15 15, 50 50, 60 60)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')); -0 ST_Within(GeomFromText('LINESTRING(15 15, 50 50, 60 60)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) +select 0, ST_Within(GeomFromText('LINESTRING(15 15, 50 50, 60 60)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) as result; +0 result 0 0 -select 1, ST_Within(GeomFromText('LINESTRING(15 15, 16 16)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')); -1 ST_Within(GeomFromText('LINESTRING(15 15, 16 16)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) +select 1, ST_Within(GeomFromText('LINESTRING(15 15, 16 16)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) as result; +1 result 1 1 -select 1, ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(50 15, 15 50)')); -1 ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(50 15, 15 50)')) +select 1, ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(50 15, 15 50)')) as result; +1 result 1 1 -select 0, ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(16 16, 51 51)')); -0 ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(16 16, 51 51)')) +select 0, ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(16 16, 51 51)')) as result; +0 result 0 1 -select 1, ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')); -1 ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')) +select 1, ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')) as result; +1 result 1 1 -select astext(ST_Union(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))); -astext(ST_Union(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))) +select astext(ST_Union(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))) as result; +result POLYGON((0 0,1 2,2 0,0 0)) -select astext(ST_Intersection(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))); -astext(ST_Intersection(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))) +select astext(ST_Intersection(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))) as result; +result POINT(1 1) -select ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')); -ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')) +select ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')) as result; +result 1 -select ST_contains(GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)), ((6 6, 6 11, 11 11, 11 6, 6 6)))'), GeomFromText('POINT(5 10)')); -ST_contains(GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)), ((6 6, 6 11, 11 11, 11 6, 6 6)))'), GeomFromText('POINT(5 10)')) +select ST_contains(GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)), ((6 6, 6 11, 11 11, 11 6, 6 6)))'), GeomFromText('POINT(5 10)')) as result; +result 0 -select ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')); -ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')) +select ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')) as result; +result 1 -select ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')); -ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')) +select ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')) as result; +result 0 -select ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')); -ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')) +select ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')) as result; +result 1 -select ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((1 1, 1 4, 4 4, 4 1, 1 1))')); -ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((1 1, 1 4, 4 4, 4 1, 1 1))')) +select ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((1 1, 1 4, 4 4, 4 1, 1 1))')) as result; +result 0 -select ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')); -ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')) +select ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')) as result; +result 0.7071067811865475 -select ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('linestring(0 1, 1 0)')); -ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('linestring(0 1, 1 0)')) +select ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('linestring(0 1, 1 0)')) as result; +result 0 -select ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')); -ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')) +select ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')) as result; +result 0 -select ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0),(2 2, 3 4, 4 3, 2 2))'), geomfromtext('point(3 3)')); -ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0),(2 2, 3 4, 4 3, 2 2))'), geomfromtext('point(3 3)')) +select ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0),(2 2, 3 4, 4 3, 2 2))'), geomfromtext('point(3 3)')) as result; +result 0.4472135954999579 -select ST_DISTANCE(geomfromtext('linestring(0 0, 3 6, 6 3, 0 0)'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')); -ST_DISTANCE(geomfromtext('linestring(0 0, 3 6, 6 3, 0 0)'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')) +select ST_DISTANCE(geomfromtext('linestring(0 0, 3 6, 6 3, 0 0)'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')) as result; +result 0.8944271909999159 -select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))'))); -astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))'))) +select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))'))) as result; +result POLYGON((26.47058823529412 23.823529411764707,21.951219512195124 27.439024390243905,23.855421686746986 29.819277108433734,29.289940828402365 26.36094674556213,26.47058823529412 23.823529411764707)) -select astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50, 0 0)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45, 50 5)'))); -astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50, 0 0)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45, 50 5)'))) +select astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50, 0 0)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45, 50 5)'))) as result; +result MULTIPOINT(26.47058823529412 23.823529411764707,29.289940828402365 26.36094674556213,21.951219512195124 27.439024390243905,23.855421686746986 29.819277108433734) -select astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45)'))); -astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45)'))) +select astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45)'))) as result; +result POINT(29.289940828402365 26.36094674556213) -select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POINT(20 20)'))); -astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POINT(20 20)'))) +select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POINT(20 20)'))) as result; +result POINT(20 20) -select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200)'))); -astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200)'))) +select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200)'))) as result; +result LINESTRING(0 0,46.666666666666664 46.666666666666664) -select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))); -astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))) +select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))) as result; +result MULTILINESTRING((0 0,46.666666666666664 46.666666666666664),(8 10,45.33333333333333 47.33333333333333)) -select astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))); -astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))) +select astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))) as result; +result GEOMETRYCOLLECTION(LINESTRING(-10 -10,0 0),LINESTRING(-11 -9,8 10),POLYGON((0 0,40 50,50 45,0 0)),LINESTRING(46.666666666666664 46.666666666666664,200 200,199 201,45.33333333333333 47.33333333333333)) -select astext(ST_intersection(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))); -astext(ST_intersection(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))) +select astext(ST_intersection(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))) as result; +result POLYGON((0 0,0 1,0.5 0.5,0 0)) -select astext(ST_symdifference(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))); -astext(ST_symdifference(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))) +select astext(ST_symdifference(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))) as result; +result MULTIPOLYGON(((0 0,0.5 0.5,1 0,0 0)),((0.5 0.5,0 1,0 2,1 1,0.5 0.5))) -select astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))); -astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))) +select astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))) as result; +result GEOMETRYCOLLECTION(LINESTRING(-10 -10,0 0),LINESTRING(-11 -9,8 10),POLYGON((0 0,40 50,50 45,0 0)),LINESTRING(46.666666666666664 46.666666666666664,200 200,199 201,45.33333333333333 47.33333333333333)) select astext(ST_buffer(geometryfromtext('point(1 1)'), 1)); astext(ST_buffer(geometryfromtext('point(1 1)'), 1)) @@ -170,26 +170,26 @@ select ST_NUMPOINTS(ST_EXTERIORRING(@buff)); ST_NUMPOINTS(ST_EXTERIORRING(@buff)) 202 DROP TABLE t1; -select st_touches(geomfromtext('point(0 0)'), geomfromtext('point(1 1)')); -st_touches(geomfromtext('point(0 0)'), geomfromtext('point(1 1)')) +select st_touches(geomfromtext('point(0 0)'), geomfromtext('point(1 1)')) as result; +result 0 -select st_touches(geomfromtext('point(1 1)'), geomfromtext('point(1 1)')); -st_touches(geomfromtext('point(1 1)'), geomfromtext('point(1 1)')) +select st_touches(geomfromtext('point(1 1)'), geomfromtext('point(1 1)')) as result; +result 0 -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 1)')); -st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 1)')) +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 1)')) as result; +result 1 -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 0)')); -st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 0)')) +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 0)')) as result; +result 0 -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 2)')); -st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 2)')) +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 2)')) as result; +result 0 -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1.2, 1 0, 2 0, 1 1.2))')); -st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1.2, 1 0, 2 0, 1 1.2))')) +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1.2, 1 0, 2 0, 1 1.2))')) as result; +result 0 -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1, 1 0, 2 0, 1 1))')); -st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1, 1 0, 2 0, 1 1))')) +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1, 1 0, 2 0, 1 1))')) as result; +result 1 SELECT ST_Equals(PolyFromText('POLYGON((67 13, 67 18, 67 18, 59 18, 59 13, 67 13) )'),PolyFromText('POLYGON((67 13, 67 18, 59 19, 59 13, 59 13, 67 13) )')) as result; result @@ -226,16 +226,14 @@ SELECT ASTEXT(TOUCHES(@a, GEOMFROMTEXT('point(0 0)'))) t; ERROR HY000: Illegal parameter data type boolean for operation 'st_astext' SELECT astext(ST_UNION ( PolyFromText('POLYGON(( 2 2 ,3 2,2 7,2 2),( 0 0,8 2,1 9,0 0))'), -ExteriorRing( Envelope( MultiLineStringFromText('MULTILINESTRING((3 4,5 3),(3 0,0 5))'))))); -astext(ST_UNION ( -PolyFromText('POLYGON(( 2 2 ,3 2,2 7,2 2),( 0 0,8 2,1 9,0 0))'), -ExteriorRing( Envelope( MultiLineStringFromText('MULTILINESTRING((3 4,5 3),(3 0,0 5))'))))) +ExteriorRing( Envelope( MultiLineStringFromText('MULTILINESTRING((3 4,5 3),(3 0,0 5))'))))) as result; +result GEOMETRYCOLLECTION(POLYGON((0 0,1 9,8 2,0 0),(2 2,2 7,3 2,2 2)),LINESTRING(0.5555555555555556 5,0 5,0 0,5 0,5 1.25),LINESTRING(2 5,2.4 5)) SELECT astext(ST_BUFFER(LineStringFromText('LINESTRING(0 0,1 1)'),0)); astext(ST_BUFFER(LineStringFromText('LINESTRING(0 0,1 1)'),0)) LINESTRING(0 0,1 1) -SELECT Round(ST_Area(ST_BUFFER(MultipointFromText('MULTIPOINT(7 7,3 7,7 2,7 4 ,7 7)'), 3)), 5); -Round(ST_Area(ST_BUFFER(MultipointFromText('MULTIPOINT(7 7,3 7,7 2,7 4 ,7 7)'), 3)), 5) +SELECT Round(ST_Area(ST_BUFFER(MultipointFromText('MULTIPOINT(7 7,3 7,7 2,7 4 ,7 7)'), 3)), 5) as result; +result 78.68426 SELECT ST_INTERSECTION(NULL, NULL); ST_INTERSECTION(NULL, NULL) @@ -247,21 +245,14 @@ MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)) MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 4,2 5,3 5)), ((2 2,9 2,0 2,2 6,2 2)), ((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), - ((9 9,6 8,7 0,9 9)))'))); -ASTEXT(ST_INTERSECTION( -MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)), - ((0 5,3 5,3 0,0 0,0 1,2 1,2 2,0 2,0 5), (1 3,2 3,2 4,1 4,1 3)), - ((2 2,5 2,4 4,2 8,2 2)))'), -MULTIPOLY + ((9 9,6 8,7 0,9 9)))'))) as result; +result POLYGON((0 2,1 4,1 3,2 3,2 4,1 4,1.5 5,2 5,2 8,8 8,8 2,0 2),(4 4,4 6,6 6,6 4,4 4)) SELECT ROUND(ST_LENGTH(ST_UNION( MULTILINESTRINGFROMTEXT('MULTILINESTRING((6 2,4 0,3 5,3 6,4 3,6 4,3 9,0 7,3 7,8 4,2 9,5 0), (8 2,1 3,9 0,4 4))'), -MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 5,6 7,9 7,5 2,1 6,3 6))'))), 7); -ROUND(ST_LENGTH(ST_UNION( -MULTILINESTRINGFROMTEXT('MULTILINESTRING((6 2,4 0,3 5,3 6,4 3,6 4,3 9,0 7,3 7,8 4,2 9,5 0), - (8 2,1 3,9 0,4 4))'), -MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 5,6 7,9 7,5 2,1 6,3 6) +MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 5,6 7,9 7,5 2,1 6,3 6))'))), 7) as result; +result 90.2783626 SELECT ST_NUMGEOMETRIES((ST_UNION(ST_UNION( MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 0,4 2,0 2,1 5,0 3,7 0,8 5,5 8), @@ -274,18 +265,13 @@ MULTILINESTRINGFROMTEXT('MULTILINESTRING((6 0,9 3,2 5,3 6,3 2), MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((7 7,3 7,3 1,7 8,7 7)), ((3 5,2 4,2 5,3 5)), ((7 7,8 7,3 7,7 7,7 7)), - ((0 5,3 5,3 4,1 4,1 3,3 3,3 0,0 0,0 5), (1 1,2 1,2 2,1 2,1 1)))')))); -ST_NUMGEOMETRIES((ST_UNION(ST_UNION( -MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 0,4 2,0 2,1 5,0 3,7 0,8 5,5 8), - (6 2,4 0,3 5,3 6,4 3,6 4,3 9,0 7,3 7,8 4,2 9,5 0), - + ((0 5,3 5,3 4,1 4,1 3,3 3,3 0,0 0,0 5), (1 1,2 1,2 2,1 2,1 1)))')))) as result; +result 192 SELECT Round(ST_AREA(ST_BUFFER( ST_UNION( POLYGONFROMTEXT('POLYGON((7 7, 7 7, 7 4, 7 7, 7 7))'), -POLYGONFROMTEXT('POLYGON((7 7, 4 7, 2 9, 7 6, 7 7))')), 1)), 6); -Round(ST_AREA(ST_BUFFER( ST_UNION( -POLYGONFROMTEXT('POLYGON((7 7, 7 7, 7 4, 7 7, 7 7))'), -POLYGONFROMTEXT('POLYGON((7 7, 4 7, 2 9, 7 6, 7 7))')), 1)), 6) +POLYGONFROMTEXT('POLYGON((7 7, 4 7, 2 9, 7 6, 7 7))')), 1)), 6) as result; +result 21.901344 SELECT AsText(ST_UNION(MultiPolygonFromText(' MULTIPOLYGON(((2 2, 2 8, 8 8, 8 2, 2 2), (4 4, 4 6, 6 6, 6 4, 4 4)), @@ -294,21 +280,14 @@ SELECT AsText(ST_UNION(MultiPolygonFromText(' MultiPolygonFromText(' MULTIPOLYGON(((0 0, 1 9, 4 6, 0 0)), ((0 5, 3 5, 3 4, 1 4, 1 3, 3 3, 3 0, 0 0, 0 5), (1 1, 2 1, 2 2, 1 2, 1 1)), ((7 7, 4 7, 6 3, 7 2, 7 7)), - ((0 5, 3 5, 3 4, 1 4, 1 3, 3 3, 3 0, 0 0, 0 5), (1 1, 2 1, 2 2, 1 2, 1 1))) '))); -AsText(ST_UNION(MultiPolygonFromText(' - MULTIPOLYGON(((2 2, 2 8, 8 8, 8 2, 2 2), (4 4, 4 6, 6 6, 6 4, 4 4)), - ((0 0, 8 3, 7 4, 0 0)), - ((2 2, 2 8, 8 8, 8 2, 2 2), (4 4, 4 6, 6 6, 6 4, 4 4)))'), -MultiPolygonFr + ((0 5, 3 5, 3 4, 1 4, 1 3, 3 3, 3 0, 0 0, 0 5), (1 1, 2 1, 2 2, 1 2, 1 1))) '))) as result; +result POLYGON((0 0,0 5,0.5555555555555556 5,1 9,2 8,8 8,8 2,5.333333333333334 2,3 1.125,3 0,0 0),(1 1,1 1.5,1.3333333333333333 2,2 2,2 1.1428571428571428,1.75 1,1 1),(3 1.7142857142857142,3 2,3.5 2,3 1.7142857142857142),(4 4,4 6,4.5 6,5.5 4,4 4)) SELECT AsText(ST_SYMDIFFERENCE( MultiLineStringFromText('MULTILINESTRING((7 7, 1 7, 8 5, 7 8, 7 7), (6 3, 3 4, 1 1, 9 9, 9 0, 8 4, 9 9))'), -Envelope(GeometryFromText('MULTIPOINT(7 9, 0 0, 3 7, 1 6, 0 0)')))); -AsText(ST_SYMDIFFERENCE( -MultiLineStringFromText('MULTILINESTRING((7 7, 1 7, 8 5, 7 8, 7 7), - (6 3, 3 4, 1 1, 9 9, 9 0, 8 4, 9 9))'), -Envelope(GeometryFromText('MULTIPOINT(7 9, 0 0, 3 7, 1 6, 0 0)')))) +Envelope(GeometryFromText('MULTIPOINT(7 9, 0 0, 3 7, 1 6, 0 0)')))) as result; +result GEOMETRYCOLLECTION(POLYGON((0 0,0 9,7 9,7 0,0 0)),LINESTRING(9 9,8 4,9 0,9 9),LINESTRING(7 5.285714285714286,8 5,7.25 7.25),LINESTRING(7 7,7.25 7.25),LINESTRING(7.25 7.25,7 8),LINESTRING(7.25 7.25,9 9)) SELECT AsText(ST_UNION( MultiPolygonFromText('MULTIPOLYGON(((9 9, 7 9, 1 1, 9 9)), @@ -316,50 +295,38 @@ MultiPolygonFromText('MULTIPOLYGON(((9 9, 7 9, 1 1, 9 9)), ((0 0, 7 5, 9 6, 0 0)), ((7 7, 5 7, 1 5, 7 1, 7 7)))'), MultiPolygonFromText('MULTIPOLYGON(((2 2, 2 2, 1 5, 2 7, 2 2)), - ((0 5, 3 5, 3 0, 0 0, 0 5), (1 1, 2 1, 2 4, 1 4, 1 1)))'))); -AsText(ST_UNION( -MultiPolygonFromText('MULTIPOLYGON(((9 9, 7 9, 1 1, 9 9)), - ((2 2, 1 2, 3 3, 2 2, 2 2)), - ((0 0, 7 5, 9 6, 0 0)), - + ((0 5, 3 5, 3 0, 0 0, 0 5), (1 1, 2 1, 2 4, 1 4, 1 1)))'))) as result; +result POLYGON((0 0,0 5,1 5,2 7,2 5.5,5 7,5.5 7,7 9,9 9,7 7,7 5,9 6,7 4.666666666666667,7 1,4.25 2.833333333333333,3 2,3 0,0 0),(1 1,1 4,1.3333333333333333 4,1.8571428571428572 2.4285714285714284,1 2,1.75 2,1 1,2 2,2 1.4285714285714284,1.4 1,1 1),(1.5 1,2 1.3333333333333333,2 1,1.5 1),(3 2.142857142857143,3 3,3.4 3.4,4.1034482758620685 2.9310344827586206,3 2.142857142857143)) SELECT AsText( ST_INTERSECTION( LinestringFromText('LINESTRING( 3 5, 2 5, 2 4, 3 4, 3 5 ) ') , LinestringFromText('LINESTRING( 3 5, 2 4, 2 5, 3 5 ) ') -)); -AsText( ST_INTERSECTION( -LinestringFromText('LINESTRING( 3 5, 2 5, 2 4, 3 4, 3 5 ) ') , -LinestringFromText('LINESTRING( 3 5, 2 4, 2 5, 3 5 ) ') -)) +)) as result; +result LINESTRING(2 4,2 5,3 5) SELECT AsText( ST_UNION( PolygonFromText(' POLYGON( ( 2 2 , 3 2 , 7 5 , 2 0 , 2 2 ) ) ') , -PolygonFromText(' POLYGON( ( 2 2 , 3 2 , 3 3 , 2 5 , 2 2 ) ) ') ) ); -AsText( ST_UNION( -PolygonFromText(' POLYGON( ( 2 2 , 3 2 , 7 5 , 2 0 , 2 2 ) ) ') , -PolygonFromText(' POLYGON( ( 2 2 , 3 2 , 3 3 , 2 5 , 2 2 ) ) ') ) ) +PolygonFromText(' POLYGON( ( 2 2 , 3 2 , 3 3 , 2 5 , 2 2 ) ) ') ) ) as result; +result POLYGON((2 0,2 5,3 3,3 2,7 5,2 0)) -SELECT AsText(ST_INTERSECTION(LinestringFromText('LINESTRING(1 1, 2 2)'), GeometryFromText('LINESTRING(3 3, 4 4)'))); -AsText(ST_INTERSECTION(LinestringFromText('LINESTRING(1 1, 2 2)'), GeometryFromText('LINESTRING(3 3, 4 4)'))) +SELECT AsText(ST_INTERSECTION(LinestringFromText('LINESTRING(1 1, 2 2)'), GeometryFromText('LINESTRING(3 3, 4 4)'))) as result; +result GEOMETRYCOLLECTION EMPTY -SELECT AsText(ST_UNION(GEOMETRYFROMTEXT('POINT(8 1)') ,MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 5, 2 5, 2 4, 3 4, 3 5))'))); -AsText(ST_UNION(GEOMETRYFROMTEXT('POINT(8 1)') ,MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 5, 2 5, 2 4, 3 4, 3 5))'))) +SELECT AsText(ST_UNION(GEOMETRYFROMTEXT('POINT(8 1)') ,MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 5, 2 5, 2 4, 3 4, 3 5))'))) as result; +result GEOMETRYCOLLECTION(POINT(8 1),LINESTRING(2 4,2 5,3 5,3 4,2 4)) SELECT ST_DISTANCE(POINTFROMTEXT('POINT(7 1)'),MULTILINESTRINGFROMTEXT('MULTILINESTRING( - (4 7,9 7,6 1,3 4,1 1), (3 5, 2 5, 2 4, 3 4, 3 5))')); -ST_DISTANCE(POINTFROMTEXT('POINT(7 1)'),MULTILINESTRINGFROMTEXT('MULTILINESTRING( - (4 7,9 7,6 1,3 4,1 1), (3 5, 2 5, 2 4, 3 4, 3 5))')) + (4 7,9 7,6 1,3 4,1 1), (3 5, 2 5, 2 4, 3 4, 3 5))')) as result; +result 1 -SELECT AsText(ST_UNION(POLYGONFROMTEXT('POLYGON((12 9, 3 6, 3 0, 12 9))'), POLYGONFROMTEXT('POLYGON((2 2, 7 2, 4 2, 2 0, 2 2))'))); -AsText(ST_UNION(POLYGONFROMTEXT('POLYGON((12 9, 3 6, 3 0, 12 9))'), POLYGONFROMTEXT('POLYGON((2 2, 7 2, 4 2, 2 0, 2 2))'))) +SELECT AsText(ST_UNION(POLYGONFROMTEXT('POLYGON((12 9, 3 6, 3 0, 12 9))'), POLYGONFROMTEXT('POLYGON((2 2, 7 2, 4 2, 2 0, 2 2))'))) as result; +result GEOMETRYCOLLECTION(POLYGON((2 0,2 2,3 2,3 6,12 9,3 0,3 1,2 0)),LINESTRING(5 2,7 2)) SELECT ST_NUMPOINTS(ST_EXTERIORRING(ST_BUFFER(ST_UNION( MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 4, 2 5, 7 6, 1 8),(0 0 ,1 6 ,0 1, 8 9, 2 4, 6 1, 3 5, 4 8), (9 3, 5 4, 1 8, 4 2, 5 8, 3 0))' ) , MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 4, 3 1, 2 7, 4 2, 6 2, 1 5))') -), 16))); -ST_NUMPOINTS(ST_EXTERIORRING(ST_BUFFER(ST_UNION( -MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 4, 2 5, 7 6, 1 8),(0 0 ,1 6 ,0 1, 8 9, 2 4, 6 1, 3 5, 4 8), (9 3, 5 4, 1 8, 4 2, 5 8, 3 0))' ) , -MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 4, 3 1, 2 7, 4 2, 6 2 +), 16))) as result; +result 278 SELECT ST_NUMGEOMETRIES(ST_DIFFERENCE ( ST_UNION ( @@ -372,10 +339,8 @@ MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 5, 2 4, 3 4, 3 5) ) ) ' ) ) ), MULTILINESTRINGFROMTEXT( ' MULTILINESTRING( ( 2 9 , 1 3 , 7 3 , 8 5 ) , ( 5 0 , 8 1 , 2 0 , 7 4 , 1 0 ) , ( 9 2 , 5 2 , 6 5 , 8 8 , 0 2 ) , ( 0 8 , 3 9 , 4 0 , 1 0 ) , ( 0 0 , 7 6 , 8 3 , 0 0 ) ) ' ) -)); -ST_NUMGEOMETRIES(ST_DIFFERENCE ( -ST_UNION ( -MULTILINESTRINGFROMTEXT( ' MULTILINESTRING( ( 2 4 , 5 0 , 2 9 , 6 2 , 0 2 ) , ( 4 3 , 5 6 , 9 4 , 0 7 , 7 2 , 2 0 , 8 2 ) , ( 5 0 , 1 5 , 3 7 , 7 7 ) , ( 2 3 , 9 5 , 2 0 , 8 1 ) , ( 0 9 , 9 3 , 2 8 , 8 1 , 9 4 ) +)) as result; +result 125 SELECT ASTEXT(ST_DIFFERENCE ( POLYGONFROMTEXT( ' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ' ) , @@ -389,21 +354,14 @@ GEOMETRYFROMTEXT( ' MULTILINESTRING( ( 3 7 , 7 3 , 5 8 , 4 8 ) , ( 3 2 , 5 0 , 9 ) ) ) -)); -ASTEXT(ST_DIFFERENCE ( -POLYGONFROMTEXT( ' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ' ) , -ST_UNION ( -MULTILINESTRINGFROMTEXT( ' MULTILINESTRING( (3 5, 2 5, 2 4, 3 4, 3 5) ) ' ) , -ST_SYMDIFFERENCE ( -MULTILINESTRINGFROMTEX +)) as result; +result POLYGON((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)) SELECT ST_NUMGEOMETRIES(ST_UNION ( MULTILINESTRINGFROMTEXT( ' MULTILINESTRING( ( 0 8 , 1 9 , 5 7 , 2 8 , 5 8 , 6 7 ) , ( 4 5 , 8 4 , 0 3 , 5 1 ) , ( 6 8 , 2 7 , 1 6 , 9 9 , 7 2 ) , ( 9 5 , 2 8 , 1 2 , 9 6 , 2 0 ) ) ' ) , MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( 7 7 , 2 7, 6 8, 7 1 , 7 7 ) ) ) ' ) -)); -ST_NUMGEOMETRIES(ST_UNION ( -MULTILINESTRINGFROMTEXT( ' MULTILINESTRING( ( 0 8 , 1 9 , 5 7 , 2 8 , 5 8 , 6 7 ) , ( 4 5 , 8 4 , 0 3 , 5 1 ) , ( 6 8 , 2 7 , 1 6 , 9 9 , 7 2 ) , ( 9 5 , 2 8 , 1 2 , 9 6 , 2 0 ) ) ' ) , -MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( +)) as result; +result 50 SELECT ST_BUFFER ( LINESTRINGFROMTEXT( ' LINESTRING( 5 4 , 3 8 , 2 6 , 5 5 , 7 9 ) ' ) , @@ -414,49 +372,50 @@ MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 5, 2 4, 3 4, 3 5) ) ) ' ) , MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) , ( ( 0 0 , 3 8 , 9 4 , 0 0 ) ) ) ' ) ) ) -) ; -ST_BUFFER ( -LINESTRINGFROMTEXT( ' LINESTRING( 5 4 , 3 8 , 2 6 , 5 5 , 7 9 ) ' ) , -ST_DISTANCE ( -MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 4, 2 5, 3 5) ) , ( (3 5, 2 5, 2 4, 3 4, 3 5) ) , ( ( 0 0 , 8 3 , 9 5 , 0 0 ) ) ) ' ) , +) as result; +result +NULL +SELECT ST_DISTANCE ( ST_DIFFERENCE ( -MULTIPOL +MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 5, 2 4, 3 4, 3 5) ) ) ' ) , +MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) , ( ( 0 0 , 3 8 , 9 4 , 0 0 ) ) ) ' ) +), +MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 4, 2 5, 3 5) ) , ( (3 5, 2 5, 2 4, 3 4, 3 5) ) , ( ( 0 0 , 8 3 , 9 5 , 0 0 ) ) ) ' ) +) as result; +result NULL -SELECT ST_DISTANCE ( ST_DIFFERENCE ( MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 5, 2 4, 3 4, 3 5) ) ) ' ) , MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) , ( ( 0 0 , 3 8 , 9 4 , 0 0 ) ) ) ' ) ), MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 4, 2 5, 3 5) ) , ( (3 5, 2 5, 2 4, 3 4, 3 5) ) , ( ( 0 0 , 8 3 , 9 5 , 0 0 ) ) ) ' ) ) ; -ST_DISTANCE ( ST_DIFFERENCE ( MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 5, 2 4, 3 4, 3 5) ) ) ' ) , MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , -NULL -SELECT ASTEXT(ST_INTERSECTION( GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(7 7,5.33333333333333 7),LINESTRING(5.33333333333333 7,0 7,5 8,5.33333333333333 7),LINESTRING(5.33333333333333 7,7 2,7 7),POLYGON((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5)))'), geomETRYFROMTEXT(' MULTILINESTRING( ( 5 1 , 3 7 , 6 1 , 7 0 ) , ( 1 6 , 8 5 , 7 5 , 5 6 ) )') )); -ASTEXT(ST_INTERSECTION( GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(7 7,5.33333333333333 7),LINESTRING(5.33333333333333 7,0 7,5 8,5.33333333333333 7),LINESTRING(5.33333333333333 7,7 2,7 7),POLYGON((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5)) +SELECT ASTEXT(ST_INTERSECTION( GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(7 7,5.33333333333333 7),LINESTRING(5.33333333333333 7,0 7,5 8,5.33333333333333 7),LINESTRING(5.33333333333333 7,7 2,7 7),POLYGON((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5)))'), geomETRYFROMTEXT(' MULTILINESTRING( ( 5 1 , 3 7 , 6 1 , 7 0 ) , ( 1 6 , 8 5 , 7 5 , 5 6 ) )') )) as result; +result MULTIPOINT(7 5,7 5.142857142857142,5.899999999999998 5.300000000000001,5.799999999999997 5.600000000000001,3 7) -SELECT ST_CROSSES( GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 4, 2 5, 3 5) ) ') , POLYGONFROMTEXT(' POLYGON((2 4,3 4,3 5,2 5,2 4)) ')); -ST_CROSSES( GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 4, 2 5, 3 5) ) ') , POLYGONFROMTEXT(' POLYGON((2 4,3 4,3 5,2 5,2 4)) ')) +SELECT ST_CROSSES( GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 4, 2 5, 3 5) ) ') , POLYGONFROMTEXT(' POLYGON((2 4,3 4,3 5,2 5,2 4)) ')) as result; +result 0 -SELECT ST_WITHIN( POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 2 0 , 1 0, 2 4 , 0 4, 0 5) ) ') , POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 1 4 , 1 3 , 3 3 , 3 0 , 0 0 , 0 5), ( 1 1 , 2 1 , 2 2 , 1 2 , 1 1 ) ) ') ); -ST_WITHIN( POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 2 0 , 1 0, 2 4 , 0 4, 0 5) ) ') , POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 1 4 , 1 3 , 3 3 , 3 0 , 0 0 , 0 5), ( 1 1 , 2 1 , 2 2 , 1 2 , 1 1 ) ) ') ) +SELECT ST_WITHIN( POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 2 0 , 1 0, 2 4 , 0 4, 0 5) ) ') , POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 1 4 , 1 3 , 3 3 , 3 0 , 0 0 , 0 5), ( 1 1 , 2 1 , 2 2 , 1 2 , 1 1 ) ) ') ) as result; +result 0 -SELECT ST_WITHIN( POINTFROMTEXT(' POINT(1 2 ) ') , MULTIPOLYGONFROMTEXT(' MULTIPOLYGON( ( (0 5, 3 5, 3 0, 0 0, 0 5), ( 1 1 , 2 1 , 2 4, 1 4, 1 1 ) ) ) ')); -ST_WITHIN( POINTFROMTEXT(' POINT(1 2 ) ') , MULTIPOLYGONFROMTEXT(' MULTIPOLYGON( ( (0 5, 3 5, 3 0, 0 0, 0 5), ( 1 1 , 2 1 , 2 4, 1 4, 1 1 ) ) ) ')) +SELECT ST_WITHIN( POINTFROMTEXT(' POINT(1 2 ) ') , MULTIPOLYGONFROMTEXT(' MULTIPOLYGON( ( (0 5, 3 5, 3 0, 0 0, 0 5), ( 1 1 , 2 1 , 2 4, 1 4, 1 1 ) ) ) ')) as result; +result 1 -select ST_ASTEXT(envelope(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION EMPTY'))); -ST_ASTEXT(envelope(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION EMPTY'))) +select ST_ASTEXT(envelope(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION EMPTY'))) as result; +result GEOMETRYCOLLECTION EMPTY -SELECT ST_EQUALS( GEOMETRYFROMTEXT(' MULTILINESTRING( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') , GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') ); -ST_EQUALS( GEOMETRYFROMTEXT(' MULTILINESTRING( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') , GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') ) +SELECT ST_EQUALS( GEOMETRYFROMTEXT(' MULTILINESTRING( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') , GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') ) as result; +result 0 -SELECT ST_TOUCHES( GEOMETRYFROMTEXT(' LINESTRING( 1 1 , 1 4 , 5 0 , 8 3 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ') ); -ST_TOUCHES( GEOMETRYFROMTEXT(' LINESTRING( 1 1 , 1 4 , 5 0 , 8 3 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ') ) +SELECT ST_TOUCHES( GEOMETRYFROMTEXT(' LINESTRING( 1 1 , 1 4 , 5 0 , 8 3 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ') ) as result; +result 0 -SELECT ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT(' MULTIPOINT( 5 8 , 5 2 , 1 8 , 3 0 , 3 0 , 7 8 ) ') ); -ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT(' MULTIPOINT( 5 8 , 5 2 , 1 8 , 3 0 , 3 0 , 7 8 ) ') ) +SELECT ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT(' MULTIPOINT( 5 8 , 5 2 , 1 8 , 3 0 , 3 0 , 7 8 ) ') ) as result; +result 0 -SELECT ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT('MULTIPOINT( 4 0 , 6 9 , 5 1, 1 4 )') ); -ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT('MULTIPOINT( 4 0 , 6 9 , 5 1, 1 4 )') ) +SELECT ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT('MULTIPOINT( 4 0 , 6 9 , 5 1, 1 4 )') ) as result; +result 1 -SELECT ST_WITHIN( MULTIPOINTFROMTEXT(' MULTIPOINT( 2 9 , 2 9 , 4 9 , 9 1 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ')); -ST_WITHIN( MULTIPOINTFROMTEXT(' MULTIPOINT( 2 9 , 2 9 , 4 9 , 9 1 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ')) +SELECT ST_WITHIN( MULTIPOINTFROMTEXT(' MULTIPOINT( 2 9 , 2 9 , 4 9 , 9 1 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ')) as result; +result 0 -SELECT ST_INTERSECTS( GeomFromText('MULTILINESTRING( ( 4030 3045 , 3149 2461 , 3004 3831 , 3775 2976 ) )') , GeomFromText('LINESTRING(3058.41 3187.91,3081.52 3153.19,3042.99 3127.57,3019.89 3162.29,3039.07 3175.05,3039.07 3175.05,3058.41 3187.91,3081.52 3153.19,3042.99 3127.57,3019.89 3162.29)') ); -ST_INTERSECTS( GeomFromText('MULTILINESTRING( ( 4030 3045 , 3149 2461 , 3004 3831 , 3775 2976 ) )') , GeomFromText('LINESTRING(3058.41 3187.91,3081.52 3153.19,3042.99 3127.57,3019.89 3162.29,3039.07 3175.05,3039.07 3175.05,3058.41 3187.91,3081.52 3153.19, +SELECT ST_INTERSECTS( GeomFromText('MULTILINESTRING( ( 4030 3045 , 3149 2461 , 3004 3831 , 3775 2976 ) )') , GeomFromText('LINESTRING(3058.41 3187.91,3081.52 3153.19,3042.99 3127.57,3019.89 3162.29,3039.07 3175.05,3039.07 3175.05,3058.41 3187.91,3081.52 3153.19,3042.99 3127.57,3019.89 3162.29)') ) as result; +result 1 SELECT ST_NUMPOINTS(ST_EXTERIORRING(ST_BUFFER( POLYGONFROMTEXT( 'POLYGON( ( 0.0 -3.0, -2.910427500435995 0.727606875108998, @@ -464,26 +423,20 @@ SELECT ST_NUMPOINTS(ST_EXTERIORRING(ST_BUFFER( POLYGONFROMTEXT( 'POLYGON( ( 0.0 7.664100588675687 1.503849116986468, 1.664100588675687 -2.496150883013531, 0.0 -3.0 -))' ), 3 ))); -ST_NUMPOINTS(ST_EXTERIORRING(ST_BUFFER( POLYGONFROMTEXT( 'POLYGON( ( 0.0 -3.0, - -2.910427500435995 0.727606875108998, - -0.910427500435995 8.727606875108998, - 7.664100588675687 1.503849116986468, - 1.664100588675687 -2.496150883013531, - 0.0 -3.0 -))' ), +))' ), 3 ))) as result; +result 136 -select astext(buffer(st_linestringfromwkb(linestring(point(-1,1), point(-1,-2))),-1)); -astext(buffer(st_linestringfromwkb(linestring(point(-1,1), point(-1,-2))),-1)) +select astext(buffer(st_linestringfromwkb(linestring(point(-1,1), point(-1,-2))),-1)) as result; +result GEOMETRYCOLLECTION EMPTY -select ST_Touches(ST_LineFromText('LINESTRING(0 0,5 5)'),ST_PointFromText('POINT(0 0)')); -ST_Touches(ST_LineFromText('LINESTRING(0 0,5 5)'),ST_PointFromText('POINT(0 0)')) +select ST_Touches(ST_LineFromText('LINESTRING(0 0,5 5)'),ST_PointFromText('POINT(0 0)')) as result; +result 1 -select ST_Touches(ST_PolygonFromText('POLYGON((0 0,0 5,5 5,5 0,0 0))'),ST_PointFromText('POINT(0 0)')); -ST_Touches(ST_PolygonFromText('POLYGON((0 0,0 5,5 5,5 0,0 0))'),ST_PointFromText('POINT(0 0)')) +select ST_Touches(ST_PolygonFromText('POLYGON((0 0,0 5,5 5,5 0,0 0))'),ST_PointFromText('POINT(0 0)')) as result; +result 1 -select ST_Touches(ST_PointFromText('POINT(0 0)'),ST_PointFromText('POINT(0 0)')); -ST_Touches(ST_PointFromText('POINT(0 0)'),ST_PointFromText('POINT(0 0)')) +select ST_Touches(ST_PointFromText('POINT(0 0)'),ST_PointFromText('POINT(0 0)')) as result; +result 0 SELECT ST_RELATE( ST_DIFFERENCE( @@ -750,30 +703,26 @@ dist buffer buf_area -1 POLYGON 16.00 SELECT ST_CONTAINS( GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)')); -ST_CONTAINS( -GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)')) +GeomFromText('POINT(5 10)')) as geom; +geom 0 SELECT AsText(ST_UNION( GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)'))); -AsText(ST_UNION( -GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)'))) +GeomFromText('POINT(5 10)'))) as geom; +geom GEOMETRYCOLLECTION(POLYGON((0 0,0 5,5 5,5 0,0 0)),POLYGON((6 6,6 11,11 11,11 6,6 6)),POINT(5 10)) DROP PROCEDURE p1; # # Bug #13833019 ASSERTION `T1->RESULT_RANGE' FAILED IN GCALC_OPERATION_REDUCER::END_COUPLE # -SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)); -GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)) +SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)) as geom; +geom POLYGON # # Bug #13832749 HANDLE_FATAL_SIGNAL IN GCALC_FUNCTION::COUNT_INTERNAL # -SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)); -GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)) +SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)) as geom; +geom POLYGON # # Bug#13358363 - ASSERTION: N > 0 && N < SINUSES_CALCULATED*2+1 | GET_N_SINCOS/ADD_EDGE_BUFFER @@ -784,27 +733,21 @@ Warning 1292 Truncated incorrect DOUBLE value: '' SELECT ST_WITHIN( LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '), ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) '), -ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) ')))); -ST_WITHIN( -LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '), -ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) ') +ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) ')))) as st; +st 0 SELECT ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '), -ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))); -ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '), -ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))) +ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))) as st; +st 2 SELECT ST_NUMINTERIORRINGS( ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '), -SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))); -ST_NUMINTERIORRINGS( -ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '), -SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))) +SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))) as st; +st 0 SELECT ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'), -SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))); -ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'), -SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))) +SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))) as st; +st POLYGON((9 9,5 2,4 5,9 9)) # # MDEV-13467 Feature request: Support for ST_Distance_Sphere() @@ -832,74 +775,74 @@ ERROR 22023: Invalid GIS data provided to function ST_Distance_Sphere. SELECT ST_DISTANCE_SPHERE(1, 1, NULL); ST_DISTANCE_SPHERE(1, 1, NULL) NULL -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('LINESTRING(0 0, 1 1)')); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('LINESTRING(0 0, 1 1)')) as result; ERROR HY000: Internal error: st_distance_sphere # Test Points and radius -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)')); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)')) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)')) as result; +result 157249.0357231545 -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(-1 -1)'), ST_GEOMFROMTEXT('POINT(-2 -2)')), 10); -TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(-1 -1)'), ST_GEOMFROMTEXT('POINT(-2 -2)')), 10) +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(-1 -1)'), ST_GEOMFROMTEXT('POINT(-2 -2)')), 10) as result; +result 157225.0865419108 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), 1); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), 1) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), 1) as result; +result 0.024682056391766436 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), 0); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), 0) as result; ERROR HY000: Internal error: Radius must be greater than zero. -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), -1); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), -1) as result; ERROR HY000: Internal error: Radius must be greater than zero. # Test longitude/lattitude -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10); -TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10) +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10) as result; +result 157225.0865419108 -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(2 1)')), 10); -TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(2 1)')), 10) +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(2 1)')), 10) as result; +result 222355.4901806686 -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10); -TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10) +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10) as result; +result 222389.3645969269 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(2 1)')); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(2 1)')) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(2 1)')) as result; +result 157249.0357231545 # Test Points - Multipoints -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1)')); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1)')) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1)')) as result; +result 157249.0357231545 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 1)'), ST_GEOMFROMTEXT('POINT(0 0)')); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 1)'), ST_GEOMFROMTEXT('POINT(0 0)')) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 1)'), ST_GEOMFROMTEXT('POINT(0 0)')) as result; +result 157249.0357231545 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)')); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)')) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)')) as result; +result 157249.0357231545 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)')); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)')) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)')) as result; +result 157249.0357231545 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)'), 1); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)'), 1) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)'), 1) as result; +result 0.024682056391766436 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)'), 1); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)'), 1) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)'), 1) as result; +result 0.024682056391766436 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1, 3 4)'), 1); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1, 3 4)'), 1) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1, 3 4)'), 1) as result; +result 0.024682056391766436 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1,5 6)'), 1); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1,5 6)'), 1) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1,5 6)'), 1) as result; +result 0.024682056391766436 # Test Multipoints - Multipoints -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')); -ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')) +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')) as result; +result 0 -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')), 10); -TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')), 10) +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')), 10) as result; +result 314282.5644496733 -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )')), 10); -TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )')), 10) +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )')), 10) as result; +result 314282.5644496733 -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )'),1), 17); -TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )'),1), 17) +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )'),1), 17) as result; +result 0.04933028646581131 -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )'),0); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )'),0) as result; ERROR HY000: Internal error: Radius must be greater than zero. set @pt1 = ST_GeomFromText('POINT(190 -30)'); set @pt2 = ST_GeomFromText('POINT(-30 50)'); diff --git a/mysql-test/main/gis-precise.test b/mysql-test/main/gis-precise.test index ceaf1f1b89a..666c443e5fe 100644 --- a/mysql-test/main/gis-precise.test +++ b/mysql-test/main/gis-precise.test @@ -9,15 +9,12 @@ DROP TABLE IF EXISTS t1; --enable_warnings -#enable after fix MDEV-27871 ---disable_view_protocol -select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 0,20 20,0 20,0 0))'), GeomFromText('POLYGON((10 10,30 10,30 30,10 30,10 10))')); -select 0, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 40, 40 50, 20 70, 10 40))')); -select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POINT(10 10)')); -select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')); -select 0, ST_Within(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')); -select 1, ST_Within(GeomFromText('POLYGON((1 1,20 10,10 30, 1 1))'), GeomFromText('POLYGON((0 0,30 5,10 40, 0 0))')); ---enable_view_protocol +select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 0,20 20,0 20,0 0))'), GeomFromText('POLYGON((10 10,30 10,30 30,10 30,10 10))')) as result; +select 0, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 40, 40 50, 20 70, 10 40))')) as result; +select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POINT(10 10)')) as result; +select 1, ST_Intersects(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) as result; +select 0, ST_Within(GeomFromText('POLYGON((0 0,20 10,10 30, 0 0))'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) as result; +select 1, ST_Within(GeomFromText('POLYGON((1 1,20 10,10 30, 1 1))'), GeomFromText('POLYGON((0 0,30 5,10 40, 0 0))')) as result; create table t1 (g point); insert into t1 values @@ -38,53 +35,49 @@ select astext(g) from t1 where ST_Contains(GeomFromText('POLYGON((5 1, 7 1, 7 7, DROP TABLE t1; -#enable after fix MDEV-27871 ---disable_view_protocol -select 0, ST_Within(GeomFromText('LINESTRING(15 15, 50 50, 60 60)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')); -select 1, ST_Within(GeomFromText('LINESTRING(15 15, 16 16)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')); +select 0, ST_Within(GeomFromText('LINESTRING(15 15, 50 50, 60 60)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) as result; +select 1, ST_Within(GeomFromText('LINESTRING(15 15, 16 16)'), GeomFromText('POLYGON((10 10,30 20,20 40, 10 10))')) as result; -select 1, ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(50 15, 15 50)')); -select 0, ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(16 16, 51 51)')); +select 1, ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(50 15, 15 50)')) as result; +select 0, ST_Intersects(GeomFromText('LINESTRING(15 15, 50 50)'), GeomFromText('LINESTRING(16 16, 51 51)')) as result; -select 1, ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')); +select 1, ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')) as result; -select astext(ST_Union(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))); -select astext(ST_Intersection(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))); +select astext(ST_Union(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))) as result; +select astext(ST_Intersection(geometryfromtext('point(1 1)'), geometryfromtext('polygon((0 0, 2 0, 1 2, 0 0))'))) as result; -select ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')); -select ST_contains(GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)), ((6 6, 6 11, 11 11, 11 6, 6 6)))'), GeomFromText('POINT(5 10)')); -select ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')); -select ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')); -select ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')); -select ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((1 1, 1 4, 4 4, 4 1, 1 1))')); +select ST_Intersects(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))')) as result; +select ST_contains(GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)), ((6 6, 6 11, 11 11, 11 6, 6 6)))'), GeomFromText('POINT(5 10)')) as result; +select ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 15, 15 15, 15 10, 10 10))')) as result; +select ST_Disjoint(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')) as result; +select ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((10 10, 10 4, 4 4, 4 10, 10 10))')) as result; +select ST_Overlaps(GeomFromText('POLYGON((0 0, 0 5, 5 5, 5 0, 0 0))'), GeomFromText('POLYGON((1 1, 1 4, 4 4, 4 1, 1 1))')) as result; # Distance tests -select ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')); -select ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('linestring(0 1, 1 0)')); -select ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')); -select ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0),(2 2, 3 4, 4 3, 2 2))'), geomfromtext('point(3 3)')); -select ST_DISTANCE(geomfromtext('linestring(0 0, 3 6, 6 3, 0 0)'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')); +select ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')) as result; +select ST_DISTANCE(geomfromtext('polygon((0 0, 1 2, 2 1, 0 0))'), geomfromtext('linestring(0 1, 1 0)')) as result; +select ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0))'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')) as result; +select ST_DISTANCE(geomfromtext('polygon((0 0, 3 6, 6 3, 0 0),(2 2, 3 4, 4 3, 2 2))'), geomfromtext('point(3 3)')) as result; +select ST_DISTANCE(geomfromtext('linestring(0 0, 3 6, 6 3, 0 0)'), geomfromtext('polygon((2 2, 3 4, 4 3, 2 2))')) as result; # Operations tests -select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))'))); -select astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50, 0 0)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45, 50 5)'))); -select astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45)'))); -select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POINT(20 20)'))); -select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200)'))); +select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POLYGON((50 5, 55 10, 0 45, 50 5))'))) as result; +select astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50, 0 0)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45, 50 5)'))) as result; +select astext(ST_Intersection(GeomFromText('LINESTRING(0 0, 50 45, 40 50)'), GeomFromText('LINESTRING(50 5, 55 10, 0 45)'))) as result; +select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('POINT(20 20)'))) as result; +select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200)'))) as result; --replace_result 7.999999999999999 8 -select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))); +select astext(ST_Intersection(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))) as result; --replace_result 7.999999999999999 8 -select astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))); +select astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))) as result; -select astext(ST_intersection(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))); +select astext(ST_intersection(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))) as result; -select astext(ST_symdifference(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))); +select astext(ST_symdifference(geomfromtext('polygon((0 0, 1 0, 0 1, 0 0))'), geomfromtext('polygon((0 0, 1 1, 0 2, 0 0))'))) as result; --replace_result 7.999999999999999 8 -select astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))); - ---enable_view_protocol +select astext(ST_UNION(GeomFromText('POLYGON((0 0, 50 45, 40 50, 0 0))'), GeomFromText('LINESTRING(-10 -10, 200 200, 199 201, -11 -9)'))) as result; # Buffer() tests --replace_result 0012045437948276 00120454379482759 @@ -103,25 +96,20 @@ select ST_NUMPOINTS(ST_EXTERIORRING(@buff)); # cleanup DROP TABLE t1; -#enable after fix MDEV-27871 ---disable_view_protocol - #Touches tests -select st_touches(geomfromtext('point(0 0)'), geomfromtext('point(1 1)')); -select st_touches(geomfromtext('point(1 1)'), geomfromtext('point(1 1)')); -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 1)')); -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 0)')); -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 2)')); -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1.2, 1 0, 2 0, 1 1.2))')); -select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1, 1 0, 2 0, 1 1))')); +select st_touches(geomfromtext('point(0 0)'), geomfromtext('point(1 1)')) as result; +select st_touches(geomfromtext('point(1 1)'), geomfromtext('point(1 1)')) as result; +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 1)')) as result; +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 0)')) as result; +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('point(1 2)')) as result; +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1.2, 1 0, 2 0, 1 1.2))')) as result; +select st_touches(geomfromtext('polygon((0 0, 2 2, 0 4, 0 0))'), geomfromtext('polygon((1 1, 1 0, 2 0, 1 1))')) as result; #Equals test SELECT ST_Equals(PolyFromText('POLYGON((67 13, 67 18, 67 18, 59 18, 59 13, 67 13) )'),PolyFromText('POLYGON((67 13, 67 18, 59 19, 59 13, 59 13, 67 13) )')) as result; SELECT ST_Equals(PolyFromText('POLYGON((67 13, 67 18, 67 18, 59 18, 59 13, 67 13) )'),PolyFromText('POLYGON((67 13, 67 18, 59 18, 59 13, 59 13, 67 13) )')) as result; SELECT ST_Equals(PointFromText('POINT (12 13)'),PointFromText('POINT (12 13)')) as result; ---enable_view_protocol - --echo # --echo # BUG#11755628/47429: INTERSECTION FUNCTION CRASHED MYSQLD --echo # BUG#11759650/51979: UNION/INTERSECTION OF POLYGONS CRASHES MYSQL @@ -150,30 +138,19 @@ SELECT ASTEXT(TOUCHES(@a, GEOMFROMTEXT('point(0 0)'))) t; # bug #801243 Assertion `(0)' failed in Gis_geometry_collection::init_from_opresult on ST_UNION -#enable after fix MDEV-27871 ---disable_view_protocol - SELECT astext(ST_UNION ( PolyFromText('POLYGON(( 2 2 ,3 2,2 7,2 2),( 0 0,8 2,1 9,0 0))'), - ExteriorRing( Envelope( MultiLineStringFromText('MULTILINESTRING((3 4,5 3),(3 0,0 5))'))))); - ---enable_view_protocol + ExteriorRing( Envelope( MultiLineStringFromText('MULTILINESTRING((3 4,5 3),(3 0,0 5))'))))) as result; #bug 801189 ST_BUFFER asserts if radius = 0 SELECT astext(ST_BUFFER(LineStringFromText('LINESTRING(0 0,1 1)'),0)); -#enable after fix MDEV-27871 ---disable_view_protocol #bug 801199 Infinite recursion in Gcalc_function::count_internal with ST_BUFFER over MULTIPOINT -SELECT Round(ST_Area(ST_BUFFER(MultipointFromText('MULTIPOINT(7 7,3 7,7 2,7 4 ,7 7)'), 3)), 5); ---enable_view_protocol +SELECT Round(ST_Area(ST_BUFFER(MultipointFromText('MULTIPOINT(7 7,3 7,7 2,7 4 ,7 7)'), 3)), 5) as result; #bug 801212 Assertion with ST_INTERSECTION on NULL values SELECT ST_INTERSECTION(NULL, NULL); -#enable after fix MDEV-27871 ---disable_view_protocol - #bug 804305 Crash in wkb_get_double with ST_INTERSECTION SELECT ASTEXT(ST_INTERSECTION( MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)), @@ -182,14 +159,14 @@ SELECT ASTEXT(ST_INTERSECTION( MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 4,2 5,3 5)), ((2 2,9 2,0 2,2 6,2 2)), ((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), - ((9 9,6 8,7 0,9 9)))'))); + ((9 9,6 8,7 0,9 9)))'))) as result; #bug 804324 Assertion 0 in Gcalc_scan_iterator::pop_suitable_intersection SELECT ROUND(ST_LENGTH(ST_UNION( MULTILINESTRINGFROMTEXT('MULTILINESTRING((6 2,4 0,3 5,3 6,4 3,6 4,3 9,0 7,3 7,8 4,2 9,5 0), (8 2,1 3,9 0,4 4))'), - MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 5,6 7,9 7,5 2,1 6,3 6))'))), 7); + MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 5,6 7,9 7,5 2,1 6,3 6))'))), 7) as result; SELECT ST_NUMGEOMETRIES((ST_UNION(ST_UNION( MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 0,4 2,0 2,1 5,0 3,7 0,8 5,5 8), @@ -202,13 +179,13 @@ SELECT ST_NUMGEOMETRIES((ST_UNION(ST_UNION( MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((7 7,3 7,3 1,7 8,7 7)), ((3 5,2 4,2 5,3 5)), ((7 7,8 7,3 7,7 7,7 7)), - ((0 5,3 5,3 4,1 4,1 3,3 3,3 0,0 0,0 5), (1 1,2 1,2 2,1 2,1 1)))')))); + ((0 5,3 5,3 4,1 4,1 3,3 3,3 0,0 0,0 5), (1 1,2 1,2 2,1 2,1 1)))')))) as result; #bug #805860 Second assertion Assertion `n > 0 && n < SINUSES_CALCULATED*2+1' in get_n_sinco SELECT Round(ST_AREA(ST_BUFFER( ST_UNION( POLYGONFROMTEXT('POLYGON((7 7, 7 7, 7 4, 7 7, 7 7))'), - POLYGONFROMTEXT('POLYGON((7 7, 4 7, 2 9, 7 6, 7 7))')), 1)), 6); + POLYGONFROMTEXT('POLYGON((7 7, 4 7, 2 9, 7 6, 7 7))')), 1)), 6) as result; #bug #804259 Second assertion in Gis_geometry_collection::init_from_opresult @@ -220,7 +197,7 @@ SELECT AsText(ST_UNION(MultiPolygonFromText(' MultiPolygonFromText(' MULTIPOLYGON(((0 0, 1 9, 4 6, 0 0)), ((0 5, 3 5, 3 4, 1 4, 1 3, 3 3, 3 0, 0 0, 0 5), (1 1, 2 1, 2 2, 1 2, 1 1)), ((7 7, 4 7, 6 3, 7 2, 7 7)), - ((0 5, 3 5, 3 4, 1 4, 1 3, 3 3, 3 0, 0 0, 0 5), (1 1, 2 1, 2 2, 1 2, 1 1))) '))); + ((0 5, 3 5, 3 4, 1 4, 1 3, 3 3, 3 0, 0 0, 0 5), (1 1, 2 1, 2 2, 1 2, 1 1))) '))) as result; #bug 801217 Assertion `t1->result_range' in Gcalc_operation_reducer::end_couple @@ -228,7 +205,7 @@ MultiPolygonFromText(' MULTIPOLYGON(((0 0, 1 9, 4 6, 0 0)), SELECT AsText(ST_SYMDIFFERENCE( MultiLineStringFromText('MULTILINESTRING((7 7, 1 7, 8 5, 7 8, 7 7), (6 3, 3 4, 1 1, 9 9, 9 0, 8 4, 9 9))'), - Envelope(GeometryFromText('MULTIPOINT(7 9, 0 0, 3 7, 1 6, 0 0)')))); + Envelope(GeometryFromText('MULTIPOINT(7 9, 0 0, 3 7, 1 6, 0 0)')))) as result; #bug 804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION @@ -238,34 +215,34 @@ SELECT AsText(ST_UNION( ((0 0, 7 5, 9 6, 0 0)), ((7 7, 5 7, 1 5, 7 1, 7 7)))'), MultiPolygonFromText('MULTIPOLYGON(((2 2, 2 2, 1 5, 2 7, 2 2)), - ((0 5, 3 5, 3 0, 0 0, 0 5), (1 1, 2 1, 2 4, 1 4, 1 1)))'))); + ((0 5, 3 5, 3 0, 0 0, 0 5), (1 1, 2 1, 2 4, 1 4, 1 1)))'))) as result; #bug 802376 ST_INTERSECTION returns wrong result on two overlapping linestrings in maria-5.3-gis SELECT AsText( ST_INTERSECTION( LinestringFromText('LINESTRING( 3 5, 2 5, 2 4, 3 4, 3 5 ) ') , LinestringFromText('LINESTRING( 3 5, 2 4, 2 5, 3 5 ) ') -)); +)) as result; #bug 801560 ST_UNION of adjacent polygons includes extra line in maria-5.3-gis SELECT AsText( ST_UNION( PolygonFromText(' POLYGON( ( 2 2 , 3 2 , 7 5 , 2 0 , 2 2 ) ) ') , - PolygonFromText(' POLYGON( ( 2 2 , 3 2 , 3 3 , 2 5 , 2 2 ) ) ') ) ); + PolygonFromText(' POLYGON( ( 2 2 , 3 2 , 3 3 , 2 5 , 2 2 ) ) ') ) ) as result; #bug 801466 ST_INTERSECTION() returns invalid value on empty intersection in maria-5.3-gis -SELECT AsText(ST_INTERSECTION(LinestringFromText('LINESTRING(1 1, 2 2)'), GeometryFromText('LINESTRING(3 3, 4 4)'))); +SELECT AsText(ST_INTERSECTION(LinestringFromText('LINESTRING(1 1, 2 2)'), GeometryFromText('LINESTRING(3 3, 4 4)'))) as result; #bug 839341 100% CPU usage with ST_UNION in maria-5.3-gis -SELECT AsText(ST_UNION(GEOMETRYFROMTEXT('POINT(8 1)') ,MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 5, 2 5, 2 4, 3 4, 3 5))'))); +SELECT AsText(ST_UNION(GEOMETRYFROMTEXT('POINT(8 1)') ,MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 5, 2 5, 2 4, 3 4, 3 5))'))) as result; #bug 839318 Crash in Gcalc_scan_iterator::point::get_shape with ST_DISTANCE and MULTILINESTRING in maria-5.3-gis SELECT ST_DISTANCE(POINTFROMTEXT('POINT(7 1)'),MULTILINESTRINGFROMTEXT('MULTILINESTRING( - (4 7,9 7,6 1,3 4,1 1), (3 5, 2 5, 2 4, 3 4, 3 5))')); + (4 7,9 7,6 1,3 4,1 1), (3 5, 2 5, 2 4, 3 4, 3 5))')) as result; #bug 839327 Crash in Gcalc_operation_reducer::end_couple with ST_UNION and MULTIPOLYGONs in 5.3-gis -SELECT AsText(ST_UNION(POLYGONFROMTEXT('POLYGON((12 9, 3 6, 3 0, 12 9))'), POLYGONFROMTEXT('POLYGON((2 2, 7 2, 4 2, 2 0, 2 2))'))); +SELECT AsText(ST_UNION(POLYGONFROMTEXT('POLYGON((12 9, 3 6, 3 0, 12 9))'), POLYGONFROMTEXT('POLYGON((2 2, 7 2, 4 2, 2 0, 2 2))'))) as result; #bug 841622 Assertion `t->rp->type == Gcalc_function::shape_line' failed in Gcalc_operation_reducer::end_line in maria-5.3-gis @@ -273,7 +250,7 @@ SELECT AsText(ST_UNION(POLYGONFROMTEXT('POLYGON((12 9, 3 6, 3 0, 12 9))'), POLYG SELECT ST_NUMPOINTS(ST_EXTERIORRING(ST_BUFFER(ST_UNION( MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 4, 2 5, 7 6, 1 8),(0 0 ,1 6 ,0 1, 8 9, 2 4, 6 1, 3 5, 4 8), (9 3, 5 4, 1 8, 4 2, 5 8, 3 0))' ) , MULTILINESTRINGFROMTEXT('MULTILINESTRING((3 4, 3 1, 2 7, 4 2, 6 2, 1 5))') - ), 16))); + ), 16))) as result; #bug 841625 Assertion `m_poly_borders->next' failed in Gcalc_operation_reducer::count_slice in maria-5.3-gis @@ -288,7 +265,7 @@ SELECT ST_NUMGEOMETRIES(ST_DIFFERENCE ( ) ), MULTILINESTRINGFROMTEXT( ' MULTILINESTRING( ( 2 9 , 1 3 , 7 3 , 8 5 ) , ( 5 0 , 8 1 , 2 0 , 7 4 , 1 0 ) , ( 9 2 , 5 2 , 6 5 , 8 8 , 0 2 ) , ( 0 8 , 3 9 , 4 0 , 1 0 ) , ( 0 0 , 7 6 , 8 3 , 0 0 ) ) ' ) -)); +)) as result; #bug 841745 ssertion `!sp0->is_bottom()' failed in Gcalc_scan_iterator::find_intersections in maria-5.3-gis @@ -304,13 +281,13 @@ SELECT ASTEXT(ST_DIFFERENCE ( ) ) ) -)); +)) as result; #bug 841773 Assertion `t0->rp->type == t1->rp->type' failed in Gcalc_operation_reducer::end_couple in maria-5.3-gis SELECT ST_NUMGEOMETRIES(ST_UNION ( MULTILINESTRINGFROMTEXT( ' MULTILINESTRING( ( 0 8 , 1 9 , 5 7 , 2 8 , 5 8 , 6 7 ) , ( 4 5 , 8 4 , 0 3 , 5 1 ) , ( 6 8 , 2 7 , 1 6 , 9 9 , 7 2 ) , ( 9 5 , 2 8 , 1 2 , 9 6 , 2 0 ) ) ' ) , MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( 7 7 , 2 7, 6 8, 7 1 , 7 7 ) ) ) ' ) -)); +)) as result; #bug 841662 Third assertion `n > 0 && n < SINUSES_CALCULATED*2+1' in get_n_sincos SELECT ST_BUFFER ( @@ -322,47 +299,53 @@ SELECT ST_BUFFER ( MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) , ( ( 0 0 , 3 8 , 9 4 , 0 0 ) ) ) ' ) ) ) - ) ; -SELECT ST_DISTANCE ( ST_DIFFERENCE ( MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 5, 2 4, 3 4, 3 5) ) ) ' ) , MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) , ( ( 0 0 , 3 8 , 9 4 , 0 0 ) ) ) ' ) ), MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 4, 2 5, 3 5) ) , ( (3 5, 2 5, 2 4, 3 4, 3 5) ) , ( ( 0 0 , 8 3 , 9 5 , 0 0 ) ) ) ' ) ) ; + ) as result; +SELECT ST_DISTANCE ( + ST_DIFFERENCE ( + MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 5, 2 4, 3 4, 3 5) ) ) ' ) , + MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) , ( ( 0 0 , 3 8 , 9 4 , 0 0 ) ) ) ' ) + ), + MULTIPOLYGONFROMTEXT( ' MULTIPOLYGON( ( (3 5, 2 4, 2 5, 3 5) ) , ( (3 5, 2 5, 2 4, 3 4, 3 5) ) , ( ( 0 0 , 8 3 , 9 5 , 0 0 ) ) ) ' ) +) as result; #bug 848939 Wrong result with ST_INTERSECTION between linestrings and a polygon in 5.3-gis -SELECT ASTEXT(ST_INTERSECTION( GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(7 7,5.33333333333333 7),LINESTRING(5.33333333333333 7,0 7,5 8,5.33333333333333 7),LINESTRING(5.33333333333333 7,7 2,7 7),POLYGON((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5)))'), geomETRYFROMTEXT(' MULTILINESTRING( ( 5 1 , 3 7 , 6 1 , 7 0 ) , ( 1 6 , 8 5 , 7 5 , 5 6 ) )') )); +SELECT ASTEXT(ST_INTERSECTION( GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(7 7,5.33333333333333 7),LINESTRING(5.33333333333333 7,0 7,5 8,5.33333333333333 7),LINESTRING(5.33333333333333 7,7 2,7 7),POLYGON((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5)))'), geomETRYFROMTEXT(' MULTILINESTRING( ( 5 1 , 3 7 , 6 1 , 7 0 ) , ( 1 6 , 8 5 , 7 5 , 5 6 ) )') )) as result; #bug 855485 ST_CROSSES returns different result than PostGIS for overlapping polygons -SELECT ST_CROSSES( GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 4, 2 5, 3 5) ) ') , POLYGONFROMTEXT(' POLYGON((2 4,3 4,3 5,2 5,2 4)) ')); +SELECT ST_CROSSES( GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 4, 2 5, 3 5) ) ') , POLYGONFROMTEXT(' POLYGON((2 4,3 4,3 5,2 5,2 4)) ')) as result; #bug 855487 ST_WITHIN returns wrong result for partially overlapping polygons -SELECT ST_WITHIN( POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 2 0 , 1 0, 2 4 , 0 4, 0 5) ) ') , POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 1 4 , 1 3 , 3 3 , 3 0 , 0 0 , 0 5), ( 1 1 , 2 1 , 2 2 , 1 2 , 1 1 ) ) ') ); +SELECT ST_WITHIN( POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 2 0 , 1 0, 2 4 , 0 4, 0 5) ) ') , POLYGONFROMTEXT(' POLYGON( (0 5, 3 5, 3 4, 1 4 , 1 3 , 3 3 , 3 0 , 0 0 , 0 5), ( 1 1 , 2 1 , 2 2 , 1 2 , 1 1 ) ) ') ) as result; #bug 855492 ST_WITHIN returns TRUE on point on the edge of a polygon -SELECT ST_WITHIN( POINTFROMTEXT(' POINT(1 2 ) ') , MULTIPOLYGONFROMTEXT(' MULTIPOLYGON( ( (0 5, 3 5, 3 0, 0 0, 0 5), ( 1 1 , 2 1 , 2 4, 1 4, 1 1 ) ) ) ')); +SELECT ST_WITHIN( POINTFROMTEXT(' POINT(1 2 ) ') , MULTIPOLYGONFROMTEXT(' MULTIPOLYGON( ( (0 5, 3 5, 3 0, 0 0, 0 5), ( 1 1 , 2 1 , 2 4, 1 4, 1 1 ) ) ) ')) as result; #bug 855497 ST_ENVELOPE of GEOMETRYCOLLECTION EMPTY returns NULL and not GEOMETRYCOLLECTION EMPTY -select ST_ASTEXT(envelope(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION EMPTY'))); +select ST_ASTEXT(envelope(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION EMPTY'))) as result; #bug 855503 ST_EQUALS reports TRUE between a POLYGON and a MULTILINESTRING -SELECT ST_EQUALS( GEOMETRYFROMTEXT(' MULTILINESTRING( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') , GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') ); +SELECT ST_EQUALS( GEOMETRYFROMTEXT(' MULTILINESTRING( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') , GEOMETRYFROMTEXT(' POLYGON( (3 5, 2 5, 2 4, 3 4, 3 5) ) ') ) as result; #bug 855505 ST_TOUCHES reports TRUE for intersecting polygon and linestring -SELECT ST_TOUCHES( GEOMETRYFROMTEXT(' LINESTRING( 1 1 , 1 4 , 5 0 , 8 3 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ') ); +SELECT ST_TOUCHES( GEOMETRYFROMTEXT(' LINESTRING( 1 1 , 1 4 , 5 0 , 8 3 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ') ) as result; #bug 857051 ST_EQUALS returns TRUE on two nonidentical MULTIPOINTs -SELECT ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT(' MULTIPOINT( 5 8 , 5 2 , 1 8 , 3 0 , 3 0 , 7 8 ) ') ); -SELECT ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT('MULTIPOINT( 4 0 , 6 9 , 5 1, 1 4 )') ); +SELECT ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT(' MULTIPOINT( 5 8 , 5 2 , 1 8 , 3 0 , 3 0 , 7 8 ) ') ) as result; +SELECT ST_EQUALS( MULTIPOINTFROMTEXT(' MULTIPOINT( 5 1 , 6 9 , 1 4 , 4 0 ) ') , MULTIPOINTFROMTEXT('MULTIPOINT( 4 0 , 6 9 , 5 1, 1 4 )') ) as result; #bug 857050 ST_WITHIN returns wrong result with MULTIPOINT and POLYGON -SELECT ST_WITHIN( MULTIPOINTFROMTEXT(' MULTIPOINT( 2 9 , 2 9 , 4 9 , 9 1 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ')); +SELECT ST_WITHIN( MULTIPOINTFROMTEXT(' MULTIPOINT( 2 9 , 2 9 , 4 9 , 9 1 ) ') , POLYGONFROMTEXT(' POLYGON( ( 2 2 , 2 8 , 8 8 , 8 2 , 2 2 ) , ( 4 4 , 4 6 , 6 6 , 6 4 , 4 4 ) ) ')) as result; #bug 857087 Wrong result with ST_INTERSECTS and LINESTRINGs -SELECT ST_INTERSECTS( GeomFromText('MULTILINESTRING( ( 4030 3045 , 3149 2461 , 3004 3831 , 3775 2976 ) )') , GeomFromText('LINESTRING(3058.41 3187.91,3081.52 3153.19,3042.99 3127.57,3019.89 3162.29,3039.07 3175.05,3039.07 3175.05,3058.41 3187.91,3081.52 3153.19,3042.99 3127.57,3019.89 3162.29)') ); +SELECT ST_INTERSECTS( GeomFromText('MULTILINESTRING( ( 4030 3045 , 3149 2461 , 3004 3831 , 3775 2976 ) )') , GeomFromText('LINESTRING(3058.41 3187.91,3081.52 3153.19,3042.99 3127.57,3019.89 3162.29,3039.07 3175.05,3039.07 3175.05,3058.41 3187.91,3081.52 3153.19,3042.99 3127.57,3019.89 3162.29)') ) as result; #bug 977201 ST_BUFFER fails with the negative D. TODO - check the result deeper. # select ASTEXT(ST_BUFFER(ST_GEOMCOLLFROMTEXT(' GEOMETRYCOLLECTION(LINESTRING(100 100, 31 10, 77 80), POLYGON((0 0,4 7,1 1,0 0)), POINT(20 20))'), -3)); @@ -374,15 +357,15 @@ SELECT ST_NUMPOINTS(ST_EXTERIORRING(ST_BUFFER( POLYGONFROMTEXT( 'POLYGON( ( 0.0 7.664100588675687 1.503849116986468, 1.664100588675687 -2.496150883013531, 0.0 -3.0 -))' ), 3 ))); +))' ), 3 ))) as result; # MDEV-5615 crash in Gcalc_function::add_operation -select astext(buffer(st_linestringfromwkb(linestring(point(-1,1), point(-1,-2))),-1)); +select astext(buffer(st_linestringfromwkb(linestring(point(-1,1), point(-1,-2))),-1)) as result; # MDEV-7925 Inconsistent behavior of ST_Touches with a POINT as one of arguments -select ST_Touches(ST_LineFromText('LINESTRING(0 0,5 5)'),ST_PointFromText('POINT(0 0)')); -select ST_Touches(ST_PolygonFromText('POLYGON((0 0,0 5,5 5,5 0,0 0))'),ST_PointFromText('POINT(0 0)')); -select ST_Touches(ST_PointFromText('POINT(0 0)'),ST_PointFromText('POINT(0 0)')); +select ST_Touches(ST_LineFromText('LINESTRING(0 0,5 5)'),ST_PointFromText('POINT(0 0)')) as result; +select ST_Touches(ST_PolygonFromText('POLYGON((0 0,0 5,5 5,5 0,0 0))'),ST_PointFromText('POINT(0 0)')) as result; +select ST_Touches(ST_PointFromText('POINT(0 0)'),ST_PointFromText('POINT(0 0)')) as result; # MDEV-12705 10.1.18-MariaDB-1~jessie - mysqld got signal 11. SELECT ST_RELATE( @@ -403,8 +386,6 @@ SELECT ST_RELATE( 'F*FFFF**F' ) as relate_res; ---enable_view_protocol - # MDEV-18920 Prepared statements with st_convexhull hang and eat 100% cpu. prepare s from 'do st_convexhull(st_aswkb(multipoint(point(-11702,15179),point(-5031,27960),point(-30557,11158),point(-27804,30314))))'; execute s; @@ -442,45 +423,41 @@ SELECT ST_DISTANCE_SPHERE(1, 1, 3); SELECT ST_DISTANCE_SPHERE(1, 1, NULL); # Wrong geometry --error ER_INTERNAL_ERROR -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('LINESTRING(0 0, 1 1)')); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('LINESTRING(0 0, 1 1)')) as result; -#enable after fix MDEV-27871 ---disable_view_protocol --echo # Test Points and radius -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)')); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)')) as result; # make bb x86 happy -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(-1 -1)'), ST_GEOMFROMTEXT('POINT(-2 -2)')), 10); -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), 1); +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(-1 -1)'), ST_GEOMFROMTEXT('POINT(-2 -2)')), 10) as result; +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), 1) as result; --error ER_INTERNAL_ERROR -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), 0); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), 0) as result; --error ER_INTERNAL_ERROR -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), -1); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('POINT(1 1)'), -1) as result; --echo # Test longitude/lattitude # make bb x86 happy -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10); -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(2 1)')), 10); -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10); -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(2 1)')); +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10) as result; +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 1)'), ST_GEOMFROMTEXT('POINT(2 1)')), 10) as result; +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(1 2)')), 10) as result; +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(1 0)'), ST_GEOMFROMTEXT('POINT(2 1)')) as result; --echo # Test Points - Multipoints -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1)')); -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 1)'), ST_GEOMFROMTEXT('POINT(0 0)')); -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)')); -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)')); -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)'), 1); -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)'), 1); -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1, 3 4)'), 1); -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1,5 6)'), 1); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1)')) as result; +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 1)'), ST_GEOMFROMTEXT('POINT(0 0)')) as result; +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)')) as result; +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)')) as result; +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(1 1,2 2)'), 1) as result; +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2,1 1)'), 1) as result; +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1, 3 4)'), 1) as result; +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('POINT(0 0)'), ST_GEOMFROMTEXT('MULTIPOINT(2 2, 1 1,5 6)'), 1) as result; --echo # Test Multipoints - Multipoints -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')); +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')) as result; # make bb x86 happy -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')), 10); -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )')), 10); +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(3 4,8 9 )')), 10) as result; +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )')), 10) as result; # make bb x86 happy -SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )'),1), 17); +SELECT TRUNCATE(ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )'),1), 17) as result; --error ER_INTERNAL_ERROR -SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )'),0); - ---enable_view_protocol +SELECT ST_DISTANCE_SPHERE(ST_GEOMFROMTEXT('MULTIPOINT(1 2,1 1 )'), ST_GEOMFROMTEXT('MULTIPOINT(8 9,3 4 )'),0) as result; # Longitude out of range [-180,180] set @pt1 = ST_GeomFromText('POINT(190 -30)'); diff --git a/mysql-test/main/group_min_max_notembedded.test b/mysql-test/main/group_min_max_notembedded.test index 930ee8464f8..611cac02460 100644 --- a/mysql-test/main/group_min_max_notembedded.test +++ b/mysql-test/main/group_min_max_notembedded.test @@ -23,10 +23,13 @@ SET SELECT DISTINCT * FROM t1 WHERE a IN (1, 2); +#Enable after fix MDEV-32034 +--disable_view_protocol select CAST(json_value(json_extract(trace, '$**.chosen_access_method.cost'), '$[0]') as DOUBLE) < 1.0e100 as ACCESS_METHOD_COST_IS_FINITE from information_schema.optimizer_trace; +--enable_view_protocol set optimizer_use_condition_selectivity = @tmp, optimizer_trace=@tmp2; drop table t1; diff --git a/mysql-test/main/having.test b/mysql-test/main/having.test index 7b8e72cfe1d..d05b35978af 100644 --- a/mysql-test/main/having.test +++ b/mysql-test/main/having.test @@ -258,6 +258,8 @@ where t1.col2 in # the having column is resolved in the FROM clause of the outer query - # works in ANSI +#Enable after fix MDEV-31937 +--disable_ps2_protocol select t1.col1 from t1 where t1.col2 in (select t2.col2 from t2 @@ -284,6 +286,7 @@ where t1.col2 in group by t2.col1, t2.col2 having col_t1 <= 10) group by col_t1 having col_t1 <= 20; +--enable_ps2_protocol # # nested HAVING clauses @@ -412,11 +415,14 @@ INSERT INTO PROJ VALUES ('P4','SDP','Design',20000,'Deale'); INSERT INTO PROJ VALUES ('P5','IRM','Test',10000,'Vienna'); INSERT INTO PROJ VALUES ('P6','PAYR','Design',50000,'Deale'); +#Enable after fix MDEV-31937 +--disable_ps2_protocol SELECT EMPNUM, GRADE*1000 FROM HU.STAFF WHERE GRADE * 1000 > ANY (SELECT SUM(BUDGET) FROM HU.PROJ GROUP BY CITY, PTYPE HAVING HU.PROJ.CITY = HU.STAFF.CITY); +--enable_ps2_protocol DROP SCHEMA HU; USE test; @@ -956,6 +962,8 @@ DROP TABLE t; --echo # MDEV-29731 Crash when HAVING in a correlated subquery references --echo # columns in the outer query --echo # +#Enable after fix MDEV-29731 +--disable_view_protocol CREATE TABLE t (a INT, b INT); SELECT 1 FROM t WHERE b = (SELECT 1 FROM t GROUP BY a HAVING b = a+1); @@ -998,6 +1006,7 @@ UPDATE t SET a = '' WHERE (0, a) IN ((0,-1),(+1,0)) ORDER BY 1+AVG(a) OVER (ORDER BY a)) ORDER BY a; DROP TABLE t; +--enable_view_protocol --echo # --echo # End of 10.4 tests diff --git a/mysql-test/main/index_merge_myisam.result b/mysql-test/main/index_merge_myisam.result index 1ecc1ded83a..7bca3b4d252 100644 --- a/mysql-test/main/index_merge_myisam.result +++ b/mysql-test/main/index_merge_myisam.result @@ -371,47 +371,47 @@ create table t4 (a int); insert into t4 values (1),(4),(3); set @save_join_buffer_size=@@join_buffer_size; set join_buffer_size= 4096; -explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A force index(i1,i2), t0 as B force index (i1,i2) where (A.key1 < 500000 or A.key2 < 3) and (B.key1 < 500000 or B.key2 < 3); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE A index_merge i1,i2 i1,i2 4,4 NULL 1010 Using sort_union(i1,i2); Using where 1 SIMPLE B index_merge i1,i2 i1,i2 4,4 NULL 1010 Using sort_union(i1,i2); Using where; Using join buffer (flat, BNL join) -select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A force index(i1,i2), t0 as B force index (i1,i2) where (A.key1 < 500000 or A.key2 < 3) and (B.key1 < 500000 or B.key2 < 3); -max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +exp 10240 update t0 set key1=1; -explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A force index(i1,i2), t0 as B force index (i1,i2) where (A.key1 = 1 or A.key2 = 1) and (B.key1 = 1 or B.key2 = 1); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE A index_merge i1,i2 i1,i2 4,4 NULL 1021 Using union(i1,i2); Using where 1 SIMPLE B index_merge i1,i2 i1,i2 4,4 NULL 1021 Using union(i1,i2); Using where; Using join buffer (flat, BNL join) -select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A force index(i1,i2), t0 as B force index (i1,i2) where (A.key1 = 1 or A.key2 = 1) and (B.key1 = 1 or B.key2 = 1); -max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +exp 8194 alter table t0 add filler1 char(200), add filler2 char(200), add filler3 char(200); update t0 set key2=1, key3=1, key4=1, key5=1,key6=1,key7=1 where key7 < 500; -explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +explain select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A straight_join t0 as B where (A.key1 = 1 and A.key2 = 1 and A.key3 = 1 and A.key4=1 and A.key5=1 and A.key6=1 and A.key7 = 1 or A.key8=1) and (B.key1 = 1 and B.key2 = 1 and B.key3 = 1 and B.key4=1 and B.key5=1 and B.key6=1 and B.key7 = 1 or B.key8=1); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE A index_merge i1,i2,i3,i4,i5,i6,i7?,i8 i2,i3,i4,i5,i6,i7?,i8 X NULL # Using union(intersect(i2,i3,i4,i5,i6,i7?),i8); Using where 1 SIMPLE B index_merge i1,i2,i3,i4,i5,i6,i7?,i8 i2,i3,i4,i5,i6,i7?,i8 X NULL # Using union(intersect(i2,i3,i4,i5,i6,i7?),i8); Using where; Using join buffer (flat, BNL join) -select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +select max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) as exp from t0 as A straight_join t0 as B where (A.key1 = 1 and A.key2 = 1 and A.key3 = 1 and A.key4=1 and A.key5=1 and A.key6=1 and A.key7 = 1 or A.key8=1) and (B.key1 = 1 and B.key2 = 1 and B.key3 = 1 and B.key4=1 and B.key5=1 and B.key6=1 and B.key7 = 1 or B.key8=1); -max(A.key1 + B.key1 + A.key2 + B.key2 + A.key3 + B.key3 + A.key4 + B.key4 + A.key5 + B.key5) +exp 8186 set join_buffer_size= @save_join_buffer_size; drop table t0, t1, t2, t3, t4; diff --git a/mysql-test/main/join_cache.result b/mysql-test/main/join_cache.result index 323c4a73e20..9ff0b86a6f6 100644 --- a/mysql-test/main/join_cache.result +++ b/mysql-test/main/join_cache.result @@ -917,7 +917,7 @@ Klaipeda ?iauliai Panevezys EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE @@ -925,12 +925,12 @@ Country.Population > 10000000; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where 1 SIMPLE CountryLanguage hash_ALL PRIMARY #hash#PRIMARY 33 world.Country.Code,const 984 Using where; Using join buffer (flat, BNLH join) -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -Name IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +Name epx Australia 81.2 United Kingdom 97.3 Canada 60.4 @@ -1117,7 +1117,7 @@ Klaipeda ?iauliai Panevezys EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE @@ -1125,12 +1125,12 @@ Country.Population > 10000000; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where 1 SIMPLE CountryLanguage hash_ALL PRIMARY #hash#PRIMARY 33 world.Country.Code,const 984 Using where; Using join buffer (flat, BNLH join) -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -Name IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +Name epx Australia 81.2 United Kingdom 97.3 Canada 60.4 @@ -1376,7 +1376,7 @@ Klaipeda ?iauliai Panevezys EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE @@ -1384,12 +1384,12 @@ Country.Population > 10000000; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where 1 SIMPLE CountryLanguage eq_ref PRIMARY PRIMARY 33 world.Country.Code,const 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -Name IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +Name epx Australia 81.2 United Kingdom 97.3 Canada 60.4 @@ -1573,7 +1573,7 @@ Klaipeda ?iauliai Panevezys EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE @@ -1581,12 +1581,12 @@ Country.Population > 10000000; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where 1 SIMPLE CountryLanguage eq_ref PRIMARY PRIMARY 33 world.Country.Code,const 1 Using where; Using join buffer (flat, BKA join); Key-ordered Rowid-ordered scan -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -Name IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +Name epx Australia 81.2 United Kingdom 97.3 Canada 60.4 @@ -1770,7 +1770,7 @@ Klaipeda ?iauliai Panevezys EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE @@ -1778,12 +1778,12 @@ Country.Population > 10000000; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where 1 SIMPLE CountryLanguage eq_ref PRIMARY PRIMARY 33 world.Country.Code,const 1 Using where; Using join buffer (flat, BKAH join); Key-ordered Rowid-ordered scan -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -Name IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +Name epx Australia 81.2 United Kingdom 97.3 Canada 60.4 @@ -1967,7 +1967,7 @@ Klaipeda ?iauliai Panevezys EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE @@ -1975,12 +1975,12 @@ Country.Population > 10000000; id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE Country ALL NULL NULL NULL NULL 239 Using where 1 SIMPLE CountryLanguage eq_ref PRIMARY PRIMARY 33 world.Country.Code,const 1 Using where; Using join buffer (flat, BKAH join); Key-ordered Rowid-ordered scan -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -Name IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +Name epx Australia 81.2 United Kingdom 97.3 Canada 60.4 diff --git a/mysql-test/main/join_cache.test b/mysql-test/main/join_cache.test index 4d13a96cb54..d4083801e80 100644 --- a/mysql-test/main/join_cache.test +++ b/mysql-test/main/join_cache.test @@ -411,24 +411,19 @@ SELECT Name FROM City WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND City.Population > 100000; -#enable after fix MDEV-27871 ---disable_view_protocol - EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; ---enable_view_protocol - show variables like 'join_buffer_size'; set join_cache_level=4; show variables like 'join_cache_level'; @@ -470,24 +465,19 @@ SELECT Name FROM City WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND City.Population > 100000; -#enable after fix MDEV-27871 ---disable_view_protocol - EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; ---enable_view_protocol - --replace_column 9 # EXPLAIN SELECT Country.Name, Country.Population, City.Name, City.Population @@ -558,24 +548,19 @@ SELECT Name FROM City WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND City.Population > 100000; -#enable after fix MDEV-27871 ---disable_view_protocol - EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; ---enable_view_protocol - set join_cache_level=6; show variables like 'join_cache_level'; @@ -616,24 +601,19 @@ SELECT Name FROM City WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND City.Population > 100000; -#enable after fix MDEV-27871 ---disable_view_protocol - EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; ---enable_view_protocol - set join_cache_level=7; show variables like 'join_cache_level'; @@ -674,24 +654,19 @@ SELECT Name FROM City WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND City.Population > 100000; -#enable after fix MDEV-27871 ---disable_view_protocol - EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; ---enable_view_protocol - set join_cache_level=8; show variables like 'join_cache_level'; @@ -732,23 +707,19 @@ SELECT Name FROM City WHERE City.Country IN (SELECT Code FROM Country WHERE Country.Name LIKE 'L%') AND City.Population > 100000; -#enable after fix MDEV-27871 ---disable_view_protocol - EXPLAIN -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; -SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) +SELECT Country.Name, IF(ISNULL(CountryLanguage.Country), NULL, CountryLanguage.Percentage) as epx FROM Country LEFT JOIN CountryLanguage ON (CountryLanguage.Country=Country.Code AND Language='English') WHERE Country.Population > 10000000; ---enable_view_protocol set join_buffer_size=256; show variables like 'join_buffer_size'; diff --git a/mysql-test/main/json_equals.result b/mysql-test/main/json_equals.result index 1fa13ec2cf8..a9a828af8cf 100644 --- a/mysql-test/main/json_equals.result +++ b/mysql-test/main/json_equals.result @@ -23,14 +23,12 @@ select json_equals('{"a":[1, 2, 3]}', '{"a":[1, 2, 3]}'); json_equals('{"a":[1, 2, 3]}', '{"a":[1, 2, 3]}') 1 select json_equals('{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}', -'{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}'); -json_equals('{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}', -'{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}') +'{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}') as je; +je 1 select json_equals('{"a" : [0.123456789123456789], "b" : [1, 2, 3]}', -'{"b" : [1, 2, 3], "a" : [0.123456789123456789]}'); -json_equals('{"a" : [0.123456789123456789], "b" : [1, 2, 3]}', -'{"b" : [1, 2, 3], "a" : [0.123456789123456789]}') +'{"b" : [1, 2, 3], "a" : [0.123456789123456789]}') as je; +je 1 # # Test max json depth for json_equals. diff --git a/mysql-test/main/json_equals.test b/mysql-test/main/json_equals.test index 943906e6f01..2ed97e3e625 100644 --- a/mysql-test/main/json_equals.test +++ b/mysql-test/main/json_equals.test @@ -15,14 +15,11 @@ select json_equals('{"a":[1, 2, 3]}', '{"a":[1, 2, 3, 4]}'); select json_equals('{"a":[1, 2, 3]}', '{"a":[1, 2, 3]}'); -#enable after fix MDEV-27871 ---disable_view_protocol select json_equals('{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}', - '{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}'); + '{"țanțoș":[1, 2, "ț", {"some uâ߀":"uâßr"}]}') as je; select json_equals('{"a" : [0.123456789123456789], "b" : [1, 2, 3]}', - '{"b" : [1, 2, 3], "a" : [0.123456789123456789]}'); ---enable_view_protocol + '{"b" : [1, 2, 3], "a" : [0.123456789123456789]}') as je; --echo # --echo # Test max json depth for json_equals. diff --git a/mysql-test/main/log_slow_filter.opt b/mysql-test/main/log_slow_filter.opt new file mode 100644 index 00000000000..3cadc343ed8 --- /dev/null +++ b/mysql-test/main/log_slow_filter.opt @@ -0,0 +1,4 @@ +--log-slow-filter= --log_queries_not_using_indexes=0 + + + diff --git a/mysql-test/main/log_slow_filter.result b/mysql-test/main/log_slow_filter.result new file mode 100644 index 00000000000..0d785ec7e98 --- /dev/null +++ b/mysql-test/main/log_slow_filter.result @@ -0,0 +1,8 @@ +call mtr.add_suppression("log_slow_filter=\"\" changed to log_slow_filter=ALL"); +show variables like "log_slow_filter"; +Variable_name Value +log_slow_filter admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk +set @@log_slow_filter="all"; +show variables like "log_slow_filter"; +Variable_name Value +log_slow_filter admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,not_using_index,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk diff --git a/mysql-test/main/log_slow_filter.test b/mysql-test/main/log_slow_filter.test new file mode 100644 index 00000000000..d677e37fece --- /dev/null +++ b/mysql-test/main/log_slow_filter.test @@ -0,0 +1,7 @@ +# Test setting log_slow_filter to empty in config files + +call mtr.add_suppression("log_slow_filter=\"\" changed to log_slow_filter=ALL"); + +show variables like "log_slow_filter"; +set @@log_slow_filter="all"; +show variables like "log_slow_filter"; diff --git a/mysql-test/main/mysqld--help.test b/mysql-test/main/mysqld--help.test index ad2307f43c6..05739197331 100644 --- a/mysql-test/main/mysqld--help.test +++ b/mysql-test/main/mysqld--help.test @@ -28,7 +28,7 @@ perl; large-files-support lower-case-file-system system-time-zone collation-server character-set-server log-tc-size table-cache table-open-cache table-open-cache-instances max-connections - tls-version version.* password-reuse-check + server-uid tls-version version.* password-reuse-check provider-bzip2 provider-lzma provider-lzo password-reuse-check-interval/; diff --git a/mysql-test/main/opt_trace.result b/mysql-test/main/opt_trace.result index 3c90e97cf66..b0923f5409e 100644 --- a/mysql-test/main/opt_trace.result +++ b/mysql-test/main/opt_trace.result @@ -10689,9 +10689,9 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t3 const PRIMARY NULL NULL NULL 1 Impossible ON condition 1 SIMPLE t2 const PRIMARY NULL NULL NULL 1 Impossible ON condition 1 SIMPLE t1 ALL NULL NULL NULL NULL 10 -select JSON_DETAILED(JSON_EXTRACT(trace, '$**.mark_join_nest_as_const')) +select JSON_DETAILED(JSON_EXTRACT(trace, '$**.mark_join_nest_as_const')) as jd from information_schema.optimizer_trace; -JSON_DETAILED(JSON_EXTRACT(trace, '$**.mark_join_nest_as_const')) +jd [ { "members": @@ -10714,9 +10714,9 @@ id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t0 ALL NULL NULL NULL NULL 10 Using where 1 PRIMARY ref key0 key0 4 test.t0.a 2 FirstMatch(t0) 3 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used -select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) +select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) +jd [ { "item": "t0.a in (1,2,3,4,5,6)", @@ -10757,9 +10757,9 @@ json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) explain select * from t0 where a in (1,2,3,4,5,a+1); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using where -select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) +select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) +jd [ { "item": "t0.a in (1,2,3,4,5,t0.a + 1)", @@ -10770,9 +10770,9 @@ json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) explain select * from t0 where a in ('1','2','3','4','5','6'); id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE t0 ALL NULL NULL NULL NULL 10 Using where -select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) +select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) as jd from information_schema.optimizer_trace; -json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) +jd [ { "item": "t0.a in ('1','2','3','4','5','6')", diff --git a/mysql-test/main/opt_trace.test b/mysql-test/main/opt_trace.test index 58a6b23d1bb..adb4ed61f35 100644 --- a/mysql-test/main/opt_trace.test +++ b/mysql-test/main/opt_trace.test @@ -1,7 +1,5 @@ --source include/not_embedded.inc --source include/have_sequence.inc -# View protocol changes some plans ---source include/no_view_protocol.inc SELECT table_name, column_name FROM information_schema.columns where table_name="OPTIMIZER_TRACE"; set optimizer_trace="enabled=on"; @@ -83,7 +81,9 @@ analyze table t1; analyze table t2; explain select * from t1,t2 where t1.a=t2.b+2 and t2.a= t1.b; +--disable_view_protocol select * from information_schema.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1,t2,t0; --echo # @@ -110,7 +110,9 @@ INSERT INTO t1(a) SELECT a FROM t1; analyze table t1; EXPLAIN SELECT DISTINCT a FROM t1; +--disable_view_protocol select * from information_schema.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1; --echo # @@ -120,7 +122,9 @@ CREATE TABLE t1 (a INT, b INT, c int, d int, KEY(a,b,c,d)); INSERT INTO t1 VALUES (1,1,1,1), (2,2,2,2), (3,3,3,3), (4,4,4,4), (1,0,1,1), (3,2,3,3), (4,5,4,4); ANALYZE TABLE t1; EXPLAIN SELECT MIN(d) FROM t1 where b=2 and c=3 group by a; +--disable_view_protocol select * from information_schema.OPTIMIZER_TRACE; +--enable_view_protocol DROP TABLE t1; CREATE TABLE t1 (id INT NOT NULL, a DATE, KEY(id,a)); @@ -134,9 +138,13 @@ INSERT INTO t1 values (1,'2001-01-01'),(1,'2001-01-02'), (4,'2001-01-03'),(4,'2001-01-04'); set optimizer_trace='enabled=on'; EXPLAIN SELECT id,MIN(a),MAX(a) FROM t1 WHERE a>=20010104e0 GROUP BY id; +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol EXPLAIN SELECT * FROM t1 WHERE a = 20010104e0 GROUP BY id; +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1; --echo # @@ -165,7 +173,9 @@ update t1 set b=2 where pk between 0 and 20; analyze table t1; set optimizer_trace='enabled=on'; explain select * from t1 where a=1 and b=2 order by c limit 1; +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1,ten,one_k; --echo # @@ -191,15 +201,21 @@ analyze table t3; --echo # table t2 should be eliminated explain select t1.a from t1 left join t2 on t1.a=t2.a; +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol --echo # no tables should be eliminated explain select * from t1 left join t2 on t2.a=t1.a; +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol --echo # multiple tables are eliminated explain select t1.a from t1 left join (t2 join t3 on t2.b=t3.b) on t2.a=t1.a and t3.a=t1.a; +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t0, t1, t2, t3; --echo # @@ -224,7 +240,9 @@ analyze table t1,t10; set optimizer_trace='enabled=on'; explain extended select * from t1 where a in (select pk from t10); +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t0,t1,t11,t10,t12,t2; --echo # @@ -250,7 +268,9 @@ set @@optimizer_use_condition_selectivity=4; set @@use_stat_tables= PREFERABLY; set optimizer_trace='enabled=on'; explain select * from t1 where pk = 2 and a=5 and b=1; +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol set @@optimizer_use_condition_selectivity=@save_optimizer_use_condition_selectivity; set @@use_stat_tables= @save_use_stat_tables; drop table t0,t1; @@ -329,7 +349,9 @@ alter table t0 add key(a); set optimizer_trace=1; explain delete from t0 where t0.a<3; +--disable_view_protocol select * from information_schema.optimizer_trace; +--enable_view_protocol drop table ten,t0; set optimizer_trace='enabled=off'; @@ -346,7 +368,9 @@ alter table t0 add key(a); create table t1 like t0; insert into t1 select * from t0; explain delete t0,t1 from t0, t1 where t0.a=t1.a and t1.a<3; +--disable_view_protocol select * from information_schema.optimizer_trace; +--enable_view_protocol drop table ten,t0,t1; set optimizer_trace='enabled=off'; @@ -358,7 +382,9 @@ set optimizer_trace=1; create table t1 (a int); insert into t1 values (1),(2),(3); explain select * from (select rand() from t1)q; +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1; set optimizer_trace='enabled=off'; @@ -373,6 +399,7 @@ create table t2(a int); insert into t2 values (1),(2),(3),(1),(2),(3),(1),(2),(3); set @save_optimizer_switch= @@optimizer_switch; explain select * from t1 where a in (select t_inner_1.a from t1 t_inner_1, t1 t_inner_2); +--disable_view_protocol select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; --echo # with Firstmatch, mostly for tracing fix_semijoin_strategies_for_picked_join_order @@ -385,6 +412,7 @@ set optimizer_switch='materialization=on'; explain select * from t1 t_outer_1,t2 t_outer_2 where t_outer_1.a in (select t_inner_1.a from t2 t_inner_2, t1 t_inner_1) and t_outer_2.a in (select t_inner_3.a from t2 t_inner_3, t1 t_inner_4); select * from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol set @@optimizer_switch= @save_optimizer_switch; drop table t1,t2; @@ -413,11 +441,14 @@ create table t1 ( a int, b int, key a_b(a,b)); insert into t1 select a,a from one_k; set optimizer_trace='enabled=on'; +#Enable after fix MDEV-32034 +--disable_view_protocol explain select * from t1 force index (a_b) where a=2 and b=4; select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; explain select * from t1 where a >= 900 and b between 10 and 20; select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t0,t1; @@ -426,7 +457,10 @@ create table t1 (start_date date, end_date date, filler char(100), key(start_dat insert into t1 select date_add(now(), interval a day), date_add(now(), interval (a+7) day), 'data' from one_k; --enable_warnings explain select * from t1 force index(start_date) where start_date >= '2019-02-10' and end_date <'2019-04-01'; +#Enable after fix MDEV-32034 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1,one_k; create table ten(a int); @@ -441,7 +475,10 @@ create table t1 ( insert into t1 select a,a, a,a from ten; explain select * from t1 force index(a_b_c) where a between 1 and 4 and b < 50; +#Enable after fix MDEV-32034 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table ten,t1; --echo # Ported test from MYSQL for ranges involving Binary column @@ -450,11 +487,14 @@ CREATE TABLE t1(i INT PRIMARY KEY, b BINARY(16), INDEX i_b(b)); INSERT INTO t1 VALUES (1, x'D95B94336A9946A39CF5B58CFE772D8C'); INSERT INTO t1 VALUES (2, NULL); +#Enable after fix MDEV-32034 +--disable_view_protocol EXPLAIN SELECT * FROM t1 WHERE b IN (0xD95B94336A9946A39CF5B58CFE772D8C); select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; EXPLAIN SELECT * FROM t1 WHERE b IS NULL; select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1; @@ -467,6 +507,8 @@ INSERT INTO t1 VALUES (1, 'ab\n'); INSERT INTO t1 VALUES (2, NULL); set optimizer_trace=1; EXPLAIN SELECT * FROM t1 WHERE b='ab\n'; +#Enable after fix MDEV-32034 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; ALTER TABLE t1 modify column b BINARY(10) AFTER i; @@ -510,6 +552,7 @@ insert into t1 select date_add(now(), interval a day), date_add(now(), interval --enable_warnings explain format=json select * from t1 force index(start_date) where start_date >= '2019-02-10' and end_date <'2019-04-01'; select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1, t0, one_k; --echo # @@ -541,13 +584,19 @@ set optimizer_trace=1; --echo # but for joins using condition selectivity it is not as trivial. So, --echo # now we are printing it) explain select * from t0 A, one_k B where A.a<5 and B.a<800; +#Enable after fix MDEV-32034 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol set join_cache_level=@tmp_jcl; --echo # This shows post-join selectivity explain select * from t0 A, one_k B where A.a=B.b and B.a<800; +#Enable after fix MDEV-32034 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t0, one_k; --echo # @@ -559,7 +608,10 @@ insert into t1 values ('foo'), ('bar'); EXPLAIN SELECT * FROM t1 WHERE a= REPEAT('a', 0); SELECT * FROM t1 WHERE a= REPEAT('a', 0); +#Enable after fix MDEV-32034 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol DROP TABLE t1; --echo # @@ -577,7 +629,10 @@ insert into t3 values (1),(2),(3),(4),(5),(6),(7),(8),(9),(10); explain select * from t3 where (a,a) in (select t1.a, t2.a from t1, t2 where t1.b=t2.b); +#Enable after fix MDEV-32034 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.semijoin_table_pullout')) from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1,t2,t3; @@ -589,7 +644,10 @@ create table t1 (kp1 int, kp2 int, key(kp1, kp2)); insert into t1 values (1,1),(1,5),(5,1),(5,5); set optimizer_trace=1; select * from t1 force index(kp1) where (kp1=2 and kp2 >=4); +#Enable after fix MDEV-32034 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.range_scan_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1; --echo # @@ -603,7 +661,10 @@ INSERT INTO t2 SELECT seq, seq from seq_1_to_100; SET OPTIMIZER_TRACE=1; EXPLAIN SELECT * FROM t1, t2 WHERE t1.a=t2.a ORDER BY t2.b; +#Enable after fix MDEV-32034 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.considered_execution_plans')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol DROP TABLE t1,t2; --echo # @@ -615,12 +676,15 @@ CREATE TABLE t1(a INT, b INT); INSERT INTO t1 SELECT seq, seq from seq_1_to_100; SET optimizer_trace=1; ANALYZE TABLE t1 PERSISTENT FOR ALL; +#Enable after fix MDEV-32034 +--disable_view_protocol EXPLAIN EXTENDED SELECT * from t1 WHERE a between 1 and 5 and b <= 5; select JSON_DETAILED(JSON_EXTRACT(trace, '$**.selectivity_for_columns')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; EXPLAIN EXTENDED SELECT * from t1 WHERE a != 5; select JSON_DETAILED(JSON_EXTRACT(trace, '$**.selectivity_for_columns')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; EXPLAIN EXTENDED SELECT * from t1 WHERE b >= 10 and b < 25; select JSON_DETAILED(JSON_EXTRACT(trace, '$**.selectivity_for_columns')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1; --echo # @@ -631,7 +695,10 @@ drop table t1; CREATE TABLE t1( a INT, b INT, PRIMARY KEY( a ) ); SELECT sum(b), row_number() OVER (order by b) FROM t1 WHERE a = 101; UPDATE t1 SET b=10 WHERE a=1; +#Enable after fix MDEV-32034 +--disable_view_protocol SELECT JSON_DETAILED(JSON_EXTRACT(trace, '$**.range_scan_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol DROP TABLE t1; set optimizer_trace='enabled=off'; @@ -692,10 +759,13 @@ where c5 in (1,2,3,4,5,6,7,8,9,10) and c6 in (1,2,3,4); +#Enable after fix MDEV-32034 +--disable_view_protocol select json_detailed(json_extract(trace, '$**.setup_range_conditions')) from information_schema.optimizer_trace; +--enable_view_protocol drop table t1; @@ -709,7 +779,9 @@ CREATE TABLE t (a int, b int); CREATE VIEW v AS SELECT 1 AS c UNION SELECT 2 AS c; INSERT INTO t VALUES (0,4),(5,6); UPDATE t, v SET t.b = t.a, t.a = v.c WHERE v.c < t.a; +--disable_view_protocol SELECT * FROM information_schema.optimizer_trace; +--enable_view_protocol SELECT * FROM t; @@ -773,11 +845,6 @@ select * from from t10 left join t11 on t11.col1=t10.col1 group by grp_id) T on T.grp_id=t1.b; -# Not sure how MDEV-27871 is related but this test uses this reason -# all over the place: -#enable after fix MDEV-27871 ---disable_view_protocol - # Enable after fix MDEV-31408 # On the first creation of the view from information_schema.optimizer_trace # everything is fine, but on the second creation of the view is @@ -807,11 +874,14 @@ set optimizer_trace=DEFAULT; --echo # MDEV-29179 Condition pushdown from HAVING into WHERE is not shown in optimizer trace --echo # +#Enable after fix MDEV-32034 +--disable_view_protocol CREATE TABLE t1 (a INT, b VARCHAR(1), KEY (a), KEY(b,a)) ENGINE=MEMORY; INSERT INTO t1 VALUES (4,'n'),(1,'h'),(NULL,'w'); SET optimizer_trace= 'enabled=on'; SELECT b, a FROM t1 WHERE b <> 'p' OR a = 4 GROUP BY b, a HAVING a <= 7; SELECT json_detailed(json_extract(trace, '$**.steps[*].join_optimization.steps[*].condition_pushdown_from_having') ) exp1, JSON_VALID(trace) exp2 FROM information_schema.optimizer_trace; DROP TABLE t1; +--enable_view_protocol --echo # --echo # End of 10.4 tests @@ -846,11 +916,11 @@ insert into t3 select a,a from t0; explain select * from t1 left join (t2 join t3 on t3.pk=1000) on t2.a=t1.a and t2.pk is null; -#enable after fix MDEV-27871 +#Enable after fix MDEV-32034 --disable_view_protocol -select JSON_DETAILED(JSON_EXTRACT(trace, '$**.mark_join_nest_as_const')) +select JSON_DETAILED(JSON_EXTRACT(trace, '$**.mark_join_nest_as_const')) as jd from information_schema.optimizer_trace; ---enable_view_protocol +--disable_view_protocol drop table t0, t1, t2, t3; @@ -858,8 +928,6 @@ drop table t0, t1, t2, t3; --echo # MDEV-23767: IN-to-subquery conversion is not visible in optimizer trace --echo # -#enable after fix MDEV-27871 ---disable_view_protocol create table t0 (a int); INSERT INTO t0 VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9); @@ -868,21 +936,30 @@ set in_predicate_conversion_threshold=3; explain select * from t0 where a in (1,2,3,4,5,6); -select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) +#Enable after fix MDEV-32034 +--disable_view_protocol +select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) as jd from information_schema.optimizer_trace; +--enable_view_protocol explain select * from t0 where a in (1,2,3,4,5,a+1); -select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) +#Enable after fix MDEV-32034 +--disable_view_protocol +select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) as jd from information_schema.optimizer_trace; +--enable_view_protocol explain select * from t0 where a in ('1','2','3','4','5','6'); -select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) + +#Enable after fix MDEV-32034 +--disable_view_protocol +select json_detailed(json_extract(trace, '$**.in_to_subquery_conversion')) as jd from information_schema.optimizer_trace; +--enable_view_protocol set in_predicate_conversion_threshold=@tmp; drop table t0; ---enable_view_protocol --echo # --echo # MDEV-29298: INSERT ... SELECT Does not produce an optimizer trace @@ -894,7 +971,9 @@ set optimizer_trace=1; insert into t2 select * from t1 where a<= b and a>4; +--disable_view_protocol select QUERY, LENGTH(trace)>1 from information_schema.optimizer_trace; +--enable_view_protocol drop table t1, t2; @@ -950,10 +1029,13 @@ where a=3 group by b,b having a+b < 10; +#Enable after fix MDEV-32034 +--disable_view_protocol select json_detailed(json_extract(trace, '$**.substitute_best_equal')) from information_schema.optimizer_trace; +--enable_view_protocol --echo # Check ON expression explain @@ -963,10 +1045,13 @@ from t1 left join t2 on t2.a=t1.a and t2.a<3 where t1.b > 5555; +#Enable after fix MDEV-32034 +--disable_view_protocol select json_detailed(json_extract(trace, '$**.substitute_best_equal')) from information_schema.optimizer_trace; +--enable_view_protocol --echo # Check nested ON expression explain @@ -976,6 +1061,7 @@ from t1 left join (t2,t3) on t2.a=t1.a and t3.a=t2.a and t3.a + t2.a <1000 where t1.b > 5555; +#Check after fix MDEV-32034 --disable_view_protocol select json_detailed(json_extract(trace, '$**.substitute_best_equal')) @@ -985,10 +1071,13 @@ from --echo # The next query is test for: --echo # MDEV-23646: Optimizer trace: optimize_cond() should show ON expression processing +#Enable after fix MDEV-32034 +--disable_view_protocol select json_detailed(json_extract(trace, '$**.condition_processing')) from information_schema.optimizer_trace; +--enable_view_protocol drop table t1,t2,t3; @@ -1028,6 +1117,7 @@ where t1.b < 3; # Just show that choose_best_splitting function has coverage in the # optimizer trace and re-optmization of child select inside it is distinct # from the rest of join optimization. +#Check after fix MDEV-32034 --disable_view_protocol select json_detailed(json_extract(trace, '$**.choose_best_splitting')) @@ -1051,8 +1141,12 @@ SELECT * FROM t1 WHERE id IN JSON_TABLE(f1, "$" COLUMNS (jf FOR ORDINALITY)) AS tbl); --enable_view_protocol +#Enable after fix MDEV-32034 +--disable_view_protocol select json_detailed(json_extract(trace, '$**.best_join_order')) from information_schema.OPTIMIZER_TRACE; +--enable_view_protocol + DROP TABLE t1; --echo # diff --git a/mysql-test/main/opt_trace_index_merge.test b/mysql-test/main/opt_trace_index_merge.test index 1181aaa3db1..3652e2cfc12 100644 --- a/mysql-test/main/opt_trace_index_merge.test +++ b/mysql-test/main/opt_trace_index_merge.test @@ -15,7 +15,9 @@ from t0 A, t0 B, t0 C; --echo This should use union: explain select * from t1 where a=1 or b=1; +--disable_view_protocol select * from information_schema.OPTIMIZER_TRACE; +--enable_view_protocol drop table t0,t1; set optimizer_trace="enabled=off"; set @@optimizer_switch= @tmp_opt_switch; diff --git a/mysql-test/main/opt_trace_index_merge_innodb.test b/mysql-test/main/opt_trace_index_merge_innodb.test index 42d8c57144c..3b8e60f687e 100644 --- a/mysql-test/main/opt_trace_index_merge_innodb.test +++ b/mysql-test/main/opt_trace_index_merge_innodb.test @@ -33,7 +33,9 @@ set optimizer_trace="enabled=on"; set @tmp_index_merge_ror_cpk=@@optimizer_switch; set optimizer_switch='extended_keys=off'; explain select * from t1 where pk1 != 0 and key1 = 1; +--disable_view_protocol select * from information_schema.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1; set @@optimizer_switch= @tmp_index_merge_ror_cpk; diff --git a/mysql-test/main/opt_trace_ucs2.test b/mysql-test/main/opt_trace_ucs2.test index eff7d960c17..599bf5ff7a7 100644 --- a/mysql-test/main/opt_trace_ucs2.test +++ b/mysql-test/main/opt_trace_ucs2.test @@ -6,5 +6,8 @@ insert into t1 values ('a', 'a'); insert into t1 values ('a', 'a'); set optimizer_trace=1; explain format=json select * from t1 force index(col1) where col1 >='a'; +# Enable after fix MDEV-31408 +--disable_view_protocol select JSON_DETAILED(JSON_EXTRACT(trace, '$**.analyzing_range_alternatives')) AS JS from INFORMATION_SCHEMA.OPTIMIZER_TRACE; +--enable_view_protocol drop table t1; diff --git a/mysql-test/main/order_by.result b/mysql-test/main/order_by.result index 9d587c06272..47a511b0d0b 100644 --- a/mysql-test/main/order_by.result +++ b/mysql-test/main/order_by.result @@ -1531,9 +1531,9 @@ INSERT INTO t1 (a) VALUES (1), (2); INSERT INTO t2 (a,b) VALUES (1,2), (2,3); INSERT INTO t3 (c) VALUES (1), (2); SELECT -(SELECT t1.a FROM t1, t2 WHERE t1.a = t2.b AND t2.a = t3.c ORDER BY t1.a) +(SELECT t1.a FROM t1, t2 WHERE t1.a = t2.b AND t2.a = t3.c ORDER BY t1.a) as exp FROM t3; -(SELECT t1.a FROM t1, t2 WHERE t1.a = t2.b AND t2.a = t3.c ORDER BY t1.a) +exp 2 NULL DROP TABLE t1, t2, t3; @@ -3638,7 +3638,7 @@ WHERE t2.key1 = t1.a and t2.key1 IS NOT NULL ORDER BY t2.key2 ASC -LIMIT 1) +LIMIT 1) as exp from t1; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 10 @@ -3650,15 +3650,9 @@ WHERE t2.key1 = t1.a and t2.key1 IS NOT NULL ORDER BY t2.key2 ASC -LIMIT 1) +LIMIT 1) as exp from t1; -(SELECT concat(id, '-', key1, '-', col1) -FROM t2 -WHERE -t2.key1 = t1.a and t2.key1 IS NOT NULL -ORDER BY -t2.key2 ASC -LIMIT 1) +exp 900-0-123456 901-1-123456 902-2-123456 diff --git a/mysql-test/main/order_by.test b/mysql-test/main/order_by.test index 14e50cb2e9a..2f85bd59cf9 100644 --- a/mysql-test/main/order_by.test +++ b/mysql-test/main/order_by.test @@ -3,11 +3,6 @@ # Testing ORDER BY # -# Tests will be skipped for the view protocol because the view protocol creates -# an additional util connection and other statistics data -# Check after fix MDEV-27871, possible this include can be removed ---source include/no_view_protocol.inc - call mtr.add_suppression("Sort aborted.*"); call mtr.add_suppression("Out of sort memory; increase server sort buffer size"); --source include/have_sequence.inc @@ -823,6 +818,7 @@ INSERT INTO t1 SELECT a +64, b +64 FROM t1; EXPLAIN SELECT a FROM t1 IGNORE INDEX FOR GROUP BY (a, ab) GROUP BY a; +--disable_view_protocol --disable_query_log --let $q = `show status like 'Created_tmp_tables';` eval set @tmp_tables_before = @@ -841,6 +837,7 @@ eval set @tmp_tables_after = --enable_query_log SELECT @tmp_tables_after = @tmp_tables_before ; +--enable_view_protocol EXPLAIN SELECT a FROM t1 IGNORE INDEX FOR ORDER BY (a, ab) ORDER BY a; @@ -887,7 +884,7 @@ INSERT INTO t2 (a,b) VALUES (1,2), (2,3); INSERT INTO t3 (c) VALUES (1), (2); SELECT - (SELECT t1.a FROM t1, t2 WHERE t1.a = t2.b AND t2.a = t3.c ORDER BY t1.a) + (SELECT t1.a FROM t1, t2 WHERE t1.a = t2.b AND t2.a = t3.c ORDER BY t1.a) as exp FROM t3; DROP TABLE t1, t2, t3; @@ -1457,6 +1454,7 @@ SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0; SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 10 OFFSET 10; SELECT * FROM t1 WHERE f1>10 ORDER BY f2, f0 LIMIT 0 OFFSET 10; +--disable_view_protocol --disable_ps2_protocol ################ ## Test with SQL_CALC_FOUND_ROWS @@ -1505,6 +1503,7 @@ WHERE t1.f2>20 ORDER BY tmp.f1, f0 LIMIT 30 OFFSET 30; SELECT FOUND_ROWS(); --enable_ps2_protocol +--enable_view_protocol ################ ## Test views @@ -1878,6 +1877,7 @@ insert into t1 analyze table t1; --enable_result_log +--disable_view_protocol --disable_ps2_protocol explain select b, count(*) num_cnt from t1 @@ -1899,6 +1899,7 @@ select b, count(*) num_cnt from t1 --enable_result_log show status like '%Handler_read%'; --enable_ps2_protocol +--enable_view_protocol drop table t0, t1; @@ -1997,9 +1998,11 @@ WHERE f1 = ANY ( SELECT f1 WHERE t3a.f3 < f1 OR t3b.f3 != f1 ) ORDER BY field; +--disable_view_protocol eval $q1; eval $q2; eval EXPLAIN EXTENDED $q2; +--enable_view_protocol DROP TABLE t1,t2,t3; @@ -2394,7 +2397,7 @@ let $query= select t2.key1 = t1.a and t2.key1 IS NOT NULL ORDER BY t2.key2 ASC - LIMIT 1) + LIMIT 1) as exp from t1; --echo # here type should show ref not index diff --git a/mysql-test/main/order_by_pack_big.result b/mysql-test/main/order_by_pack_big.result index eda697fdf99..8c3541cdc9f 100644 --- a/mysql-test/main/order_by_pack_big.result +++ b/mysql-test/main/order_by_pack_big.result @@ -84,7 +84,7 @@ select id, generate_random_string(a), generate_random_string(b) from t2; set sort_buffer_size=262144*10; analyze format=json select id DIV 100 as x, MD5(group_concat(substring(names,1,3), substring(address,1,3) -order by id)) +order by id)) as md5 FROM t3 GROUP BY x; ANALYZE @@ -129,11 +129,10 @@ ANALYZE flush status; select id DIV 100 as x, MD5(group_concat(substring(names,1,3), substring(address,1,3) -order by id)) +order by id)) as md5 FROM t3 GROUP BY x; -x MD5(group_concat(substring(names,1,3), substring(address,1,3) -order by id)) +x md5 0 3d24cb0237caf81aa74a2dddf367ac23 1 618f9b8b6cefaa268dcb5477eece5e90 2 fbfe93cc7713f852852f66e578d999aa @@ -249,7 +248,7 @@ set sort_buffer_size=default; set sort_buffer_size=32768; analyze format=json select id DIV 100 as x, MD5(group_concat(substring(names,1,3), substring(address,1,3) -order by id)) +order by id)) as md5 FROM t3 GROUP BY x; ANALYZE @@ -295,11 +294,10 @@ ANALYZE flush status; select id DIV 100 as x, MD5(group_concat(substring(names,1,3), substring(address,1,3) -order by id)) +order by id)) as md5 FROM t3 GROUP BY x; -x MD5(group_concat(substring(names,1,3), substring(address,1,3) -order by id)) +x md5 0 3d24cb0237caf81aa74a2dddf367ac23 1 618f9b8b6cefaa268dcb5477eece5e90 2 fbfe93cc7713f852852f66e578d999aa diff --git a/mysql-test/main/order_by_pack_big.test b/mysql-test/main/order_by_pack_big.test index ec8e0c12c54..b83a5416e91 100644 --- a/mysql-test/main/order_by_pack_big.test +++ b/mysql-test/main/order_by_pack_big.test @@ -100,7 +100,7 @@ select id, generate_random_string(a), generate_random_string(b) from t2; let $query= select id DIV 100 as x, MD5(group_concat(substring(names,1,3), substring(address,1,3) - order by id)) + order by id)) as md5 FROM t3 GROUP BY x; @@ -112,12 +112,9 @@ set sort_buffer_size=262144*10; --source include/analyze-format.inc eval analyze format=json $query; flush status; -# Enable view-protocol after fix MDEV-27871 ---disable_view_protocol --disable_ps2_protocol eval $query; --enable_ps2_protocol ---enable_view_protocol show status like '%sort%'; set sort_buffer_size=default; @@ -129,12 +126,9 @@ set sort_buffer_size=32768; --source include/analyze-format.inc eval analyze format=json $query; flush status; -# Enable view-protocol after fix MDEV-27871 ---disable_view_protocol --disable_ps2_protocol eval $query; --enable_ps2_protocol ---enable_view_protocol show status like '%sort%'; set sort_buffer_size=default; diff --git a/mysql-test/main/parser.result b/mysql-test/main/parser.result index bf9b8e4b137..1cdf89a2739 100644 --- a/mysql-test/main/parser.result +++ b/mysql-test/main/parser.result @@ -556,8 +556,8 @@ DROP TABLE IF EXISTS t1; SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE; STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE 22:10:00 -SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL (INTERVAL(1,2,3) + 1) MINUTE; -STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL (INTERVAL(1,2,3) + 1) MINUTE +SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL (INTERVAL(1,2,3) + 1) MINUTE as time; +time 22:01:00 SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; "1997-12-31 23:59:59" + INTERVAL 1 SECOND @@ -1087,35 +1087,35 @@ DROP TABLE t1; # Subquery, one row, ROLLUP CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (10); -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL); -(SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL) +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL) as exp; +exp NULL -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL); -(SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL) +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL) as exp; +exp 10 -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -(SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +exp 10 -SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -(SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +exp 10 -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -(SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +exp 10 -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL) FROM t1; -(SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL) +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL) as exp FROM t1; +exp NULL -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL) FROM t1; -(SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL) +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL) as exp FROM t1; +exp 10 -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -(SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +exp 10 -SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -(SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +exp 10 -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -(SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +exp 10 SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP); ERROR 21000: Subquery returns more than 1 row @@ -1145,27 +1145,27 @@ DROP TABLE t1; # Subquery, multiple rows, ROLLUP CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (10),(20),(30); -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -(SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +exp 10 -SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -(SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +exp 10 -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -(SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +exp 10 -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -(SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +exp 10 10 10 -SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -(SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +exp 10 10 10 -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -(SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +exp 10 10 10 @@ -1819,12 +1819,8 @@ SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT 1 -))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); -(SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT -(SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT -(SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT -(SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT -(SELECT +))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) as exp; +exp 1 # # MDEV-17693 Shift/reduce conflicts for NAMES,ROLE,PASSWORD in the option_value_no_option_type grammar diff --git a/mysql-test/main/parser.test b/mysql-test/main/parser.test index dcad30b36b8..09ca6e292a1 100644 --- a/mysql-test/main/parser.test +++ b/mysql-test/main/parser.test @@ -694,10 +694,7 @@ DROP TABLE IF EXISTS t1; SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL 10 MINUTE; -#enable view protocol after fix MDEV-27871 ---disable_view_protocol -SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL (INTERVAL(1,2,3) + 1) MINUTE; ---enable_view_protocol +SELECT STR_TO_DATE('10:00 PM', '%h:%i %p') + INTERVAL (INTERVAL(1,2,3) + 1) MINUTE as time; SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND; SELECT 1 + INTERVAL(1,0,1,2) + 1; @@ -1191,22 +1188,16 @@ DROP TABLE t1; CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (10); -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL); -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL); -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -#enable view protocol after fix MDEV-27871 ---disable_view_protocol -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); ---enable_view_protocol -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL) FROM t1; -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL) FROM t1; -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -#enable view protocol after fix MDEV-27871 ---disable_view_protocol -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; ---enable_view_protocol +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL) as exp; +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL) as exp; +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NULL) as exp FROM t1; +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP HAVING a IS NOT NULL) as exp FROM t1; +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; --error ER_SUBQUERY_NO_1_ROW SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP); @@ -1240,18 +1231,12 @@ DROP TABLE t1; CREATE TABLE t1 (a INT); INSERT INTO t1 VALUES (10),(20),(30); -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); -#enable view protocol after fix MDEV-27871 ---disable_view_protocol -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1); ---enable_view_protocol -SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; -#enable view protocol after fix MDEV-27871 ---disable_view_protocol -SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) FROM t1; ---enable_view_protocol +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp; +SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +SELECT (SELECT GROUP_CONCAT(a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; +SELECT (SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY a WITH ROLLUP LIMIT 1) as exp FROM t1; --error ER_SUBQUERY_NO_1_ROW SELECT (SELECT * FROM t1 GROUP BY a WITH ROLLUP); @@ -1573,8 +1558,6 @@ DROP PROCEDURE p1; --echo # MDEV-16697: Fix difference between 32bit/windows and 64bit --echo # systems in allowed select nest level --echo # -#enable view protocol after fix MDEV-27871 ---disable_view_protocol SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT @@ -1584,8 +1567,7 @@ DROP PROCEDURE p1; (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT (SELECT 1 -))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))); ---enable_view_protocol +))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) as exp; --echo # --echo # MDEV-17693 Shift/reduce conflicts for NAMES,ROLE,PASSWORD in the option_value_no_option_type grammar diff --git a/mysql-test/main/ps_missed_cmds_bin_prot.test b/mysql-test/main/ps_missed_cmds_bin_prot.test index 954ffb1bd55..4e109c6d775 100644 --- a/mysql-test/main/ps_missed_cmds_bin_prot.test +++ b/mysql-test/main/ps_missed_cmds_bin_prot.test @@ -49,7 +49,9 @@ CREATE DATABASE mdev_16708_db; USE mdev_16708_db; --echo # Check that the current database has been changed +--disable_service_connection SELECT DATABASE(); +--enable_service_connection --echo # Clean up USE test; @@ -84,6 +86,7 @@ DROP TABLE t1; --echo # Set up environmentr for the test case CREATE TABLE t1 (a INT); +--disable_view_protocol BEGIN; INSERT INTO t1 VALUES (1); @@ -101,6 +104,7 @@ ROLLBACK TO SAVEPOINT s1; SELECT * FROM t1; RELEASE SAVEPOINT s1; +--enable_view_protocol --echo # Clean up DROP TABLE t1; diff --git a/mysql-test/main/range.result b/mysql-test/main/range.result index 692eea3f594..fa1f62b0763 100644 --- a/mysql-test/main/range.result +++ b/mysql-test/main/range.result @@ -1627,13 +1627,13 @@ NULL Warnings: Warning 1411 Incorrect datetime value: '2007-20-00' for function str_to_date Warning 1411 Incorrect datetime value: '2007-20-00' for function str_to_date -SELECT str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20'; -str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20' +SELECT str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20' as exp; +exp 1 Warnings: Warning 1292 Truncated incorrect datetime value: '' -SELECT str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND ''; -str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND '' +SELECT str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND '' as exp; +exp NULL Warnings: Warning 1411 Incorrect datetime value: '2007-20-00' for function str_to_date diff --git a/mysql-test/main/range.test b/mysql-test/main/range.test index c42670c1ed1..2da200f4730 100644 --- a/mysql-test/main/range.test +++ b/mysql-test/main/range.test @@ -1265,11 +1265,8 @@ SELECT str_to_date('2007-20-00', '%Y-%m-%d') >= '2007/10/20' AND str_to_date('2007-20-00', '%Y-%m-%d') <= ''; --enable_view_protocol -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20'; -SELECT str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND ''; ---enable_view_protocol +SELECT str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20' as exp; +SELECT str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND '' as exp; SELECT str_to_date('', '%Y-%m-%d'); diff --git a/mysql-test/main/range_mrr_icp.result b/mysql-test/main/range_mrr_icp.result index 26089cc5024..a49ad31ecdf 100644 --- a/mysql-test/main/range_mrr_icp.result +++ b/mysql-test/main/range_mrr_icp.result @@ -1630,13 +1630,13 @@ NULL Warnings: Warning 1411 Incorrect datetime value: '2007-20-00' for function str_to_date Warning 1411 Incorrect datetime value: '2007-20-00' for function str_to_date -SELECT str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20'; -str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20' +SELECT str_to_date('2007-10-00', '%Y-%m-%d') BETWEEN '' AND '2007/10/20' as exp; +exp 1 Warnings: Warning 1292 Truncated incorrect datetime value: '' -SELECT str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND ''; -str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND '' +SELECT str_to_date('2007-20-00', '%Y-%m-%d') BETWEEN '2007/10/20' AND '' as exp; +exp NULL Warnings: Warning 1411 Incorrect datetime value: '2007-20-00' for function str_to_date diff --git a/mysql-test/main/range_notembedded.test b/mysql-test/main/range_notembedded.test index 00d16a5d564..df9fe0fbd40 100644 --- a/mysql-test/main/range_notembedded.test +++ b/mysql-test/main/range_notembedded.test @@ -26,8 +26,11 @@ explain select * from t2 where key1 in (1,2,3) and pk not in (1,2,3); --echo # This should show only ranges in form "(1) <= (key1) <= (1)" --echo # ranges over "pk" should not be constructed. +# Enable after fix MDEV-31408 +--disable_view_protocol select json_detailed(JSON_EXTRACT(trace, '$**.ranges')) from information_schema.optimizer_trace; +--enable_view_protocol set optimizer_trace=@tmp_21958; drop table t2; diff --git a/mysql-test/main/selectivity_notembedded.test b/mysql-test/main/selectivity_notembedded.test index 30e0b7f0d2f..323e4ca6bd6 100644 --- a/mysql-test/main/selectivity_notembedded.test +++ b/mysql-test/main/selectivity_notembedded.test @@ -98,9 +98,12 @@ set @tmp=@@optimizer_trace; set optimizer_trace=1; explain select * from t10 where a in (91303); +#Enable after fix MDEV-32034 +--disable_view_protocol --echo # Must have selectivity_from_histogram <= 1.0: select json_detailed(json_extract(trace, '$**.selectivity_for_columns')) as sel from information_schema.optimizer_trace; +--enable_view_protocol set optimizer_trace=@tmp; drop table t0,t1,t10; @@ -169,17 +172,23 @@ while ($i < $N_CONDS) { #echo $query_tbl; evalp $query_tbl; +#Enable after fix MDEV-32034 +--disable_view_protocol select json_detailed(json_extract(trace,'$**.selectivity_for_columns[0]')) as JS from information_schema.optimizer_trace; +--enable_view_protocol + evalp $query_tbl; +#Enable after fix MDEV-32034 +--disable_view_protocol eval select json_detailed(json_extract(trace,'\$**.selectivity_for_columns[$N_LAST_COND]')) as JS from information_schema.optimizer_trace; - +--enable_view_protocol --echo # --echo # Check if not being able to infer anything for the first MAX_KEY @@ -200,10 +209,13 @@ let $query_tbl= $query_tbl) and col$N_LAST_COND>1; #echo $query_tbl; evalp $query_tbl; +#Enable after fix MDEV-32034 +--disable_view_protocol select json_detailed(json_extract(trace,'$**.selectivity_for_columns')) as JS from information_schema.optimizer_trace; +--enable_view_protocol set optimizer_trace=@trace_tmp; drop table t1; diff --git a/mysql-test/main/subselect.test b/mysql-test/main/subselect.test index 002d5ced6e3..badf55ca958 100644 --- a/mysql-test/main/subselect.test +++ b/mysql-test/main/subselect.test @@ -342,7 +342,10 @@ CREATE TABLE `t1` ( SELECT (SELECT numeropost FROM t1 HAVING numreponse=a),numreponse FROM (SELECT * FROM t1) as a; -- error ER_BAD_FIELD_ERROR SELECT numreponse, (SELECT numeropost FROM t1 HAVING numreponse=a) FROM (SELECT * FROM t1) as a; +#Enable after fix MDEV-31937 +--disable_ps2_protocol SELECT numreponse, (SELECT numeropost FROM t1 HAVING numreponse=1) FROM (SELECT * FROM t1) as a; +--enable_ps2_protocol INSERT INTO t1 (numeropost,numreponse,pseudo) VALUES (1,1,'joce'),(1,2,'joce'),(1,3,'test'); -- error ER_SUBQUERY_NO_1_ROW EXPLAIN EXTENDED SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT 1 FROM t1 WHERE numeropost='1'); @@ -3008,10 +3011,13 @@ SELECT a, AVG(b), (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.b=AVG(t1.b)) AS test FROM t1 WHERE t1.d=0 GROUP BY a; +# Enable after fix MDEV-32038 +--disable_ps2_protocol SELECT tt.a, (SELECT (SELECT c FROM t1 as t WHERE t1.a=t.a AND t.d=MAX(t1.b + tt.a) LIMIT 1) FROM t1 WHERE t1.a=tt.a GROUP BY a LIMIT 1) as test FROM t1 as tt; +--enable_ps2_protocol SELECT tt.a, (SELECT (SELECT t.c FROM t1 AS t WHERE t1.a=t.a AND t.d=MAX(t1.b + tt.a) diff --git a/mysql-test/main/subselect_innodb.result b/mysql-test/main/subselect_innodb.result index 242b01f8955..ea0affd575f 100644 --- a/mysql-test/main/subselect_innodb.result +++ b/mysql-test/main/subselect_innodb.result @@ -23,8 +23,8 @@ CREATE INDEX CMFLDRPARNT_IDX ON t1 (PARENTID); INSERT INTO t1 VALUES("0c9aab05b15048c59bc35c8461507deb", "System", "System", "2003-06-05 16:30:00", "The system content repository folder.", "3", "2003-06-05 16:30:00", "System", "0", NULL, "9c9aab05b15048c59bc35c8461507deb", "1"); INSERT INTO t1 VALUES("2f6161e879db43c1a5b82c21ddc49089", "Default", "System", "2003-06-09 10:52:02", "The default content repository folder.", "3", "2003-06-05 16:30:00", "System", "0", NULL, "03eea05112b845949f3fd03278b5fe43", "1"); INSERT INTO t1 VALUES("c373e9f5ad0791724315444553544200", "AddDocumentTest", "admin", "2003-06-09 10:51:25", "Movie Reviews", "0", "2003-06-09 10:51:25", "admin", "0", "2f6161e879db43c1a5b82c21ddc49089", "03eea05112b845949f3fd03278b5fe43", NULL); -SELECT 'c373e9f5ad0791a0dab5444553544200' IN(SELECT t1.FOLDERID FROM t1 WHERE t1.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t1.FOLDERNAME = 'Level1'); -'c373e9f5ad0791a0dab5444553544200' IN(SELECT t1.FOLDERID FROM t1 WHERE t1.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t1.FOLDERNAME = 'Level1') +SELECT 'c373e9f5ad0791a0dab5444553544200' IN(SELECT t1.FOLDERID FROM t1 WHERE t1.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t1.FOLDERNAME = 'Level1') as exp; +exp 0 drop table t1; create table t1 (a int) engine=innodb; @@ -60,8 +60,8 @@ FOREIGN KEY (yod_id) REFERENCES t3(yod_id) INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t3 VALUES (1,1),(2,2),(3,3); INSERT INTO t2 VALUES (1,1),(2,2),(3,3); -SELECT distinct p1.processor_id, (SELECT y.yod_id FROM t1 p2, t2 y WHERE p2.processor_id = p1.processor_id and p2.processor_id = y.processor_id) FROM t1 p1; -processor_id (SELECT y.yod_id FROM t1 p2, t2 y WHERE p2.processor_id = p1.processor_id and p2.processor_id = y.processor_id) +SELECT distinct p1.processor_id, (SELECT y.yod_id FROM t1 p2, t2 y WHERE p2.processor_id = p1.processor_id and p2.processor_id = y.processor_id) as result FROM t1 p1; +processor_id result 1 1 2 2 3 3 @@ -201,15 +201,9 @@ WHERE rs.t1_id= (SELECT lt.t1_id FROM t1 lt WHERE lt.t3_id=a.t3_id) -ORDER BY b DESC LIMIT 1) +ORDER BY b DESC LIMIT 1) as exp from t3 AS a; -(SELECT rs.t2_id -FROM t2 rs -WHERE rs.t1_id= -(SELECT lt.t1_id -FROM t1 lt -WHERE lt.t3_id=a.t3_id) -ORDER BY b DESC LIMIT 1) +exp NULL DROP PROCEDURE IF EXISTS p1; create procedure p1() @@ -645,15 +639,8 @@ WHERE a IS NOT NULL GROUP BY (SELECT NULL from dual WHERE a = 1) -); -1 IN ( -SELECT NULL -FROM t1 -WHERE -a IS NOT NULL -GROUP BY -(SELECT NULL from dual WHERE a = 1) -) +) as exp; +exp 0 drop table t1; # Testcase from MDEV-26164 @@ -673,8 +660,8 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB; INSERT INTO t1 VALUES (1),(2); CREATE TABLE t2 (b INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (3),(4); -SELECT 1 IN (SELECT a FROM t1 LEFT JOIN t2 ON (a = b AND EXISTS (SELECT * FROM t1))); -1 IN (SELECT a FROM t1 LEFT JOIN t2 ON (a = b AND EXISTS (SELECT * FROM t1))) +SELECT 1 IN (SELECT a FROM t1 LEFT JOIN t2 ON (a = b AND EXISTS (SELECT * FROM t1))) as exp; +exp 1 drop table t1,t2; # diff --git a/mysql-test/main/subselect_innodb.test b/mysql-test/main/subselect_innodb.test index e354ddc4496..f675dda91b4 100644 --- a/mysql-test/main/subselect_innodb.test +++ b/mysql-test/main/subselect_innodb.test @@ -33,10 +33,7 @@ CREATE INDEX CMFLDRPARNT_IDX ON t1 (PARENTID); INSERT INTO t1 VALUES("0c9aab05b15048c59bc35c8461507deb", "System", "System", "2003-06-05 16:30:00", "The system content repository folder.", "3", "2003-06-05 16:30:00", "System", "0", NULL, "9c9aab05b15048c59bc35c8461507deb", "1"); INSERT INTO t1 VALUES("2f6161e879db43c1a5b82c21ddc49089", "Default", "System", "2003-06-09 10:52:02", "The default content repository folder.", "3", "2003-06-05 16:30:00", "System", "0", NULL, "03eea05112b845949f3fd03278b5fe43", "1"); INSERT INTO t1 VALUES("c373e9f5ad0791724315444553544200", "AddDocumentTest", "admin", "2003-06-09 10:51:25", "Movie Reviews", "0", "2003-06-09 10:51:25", "admin", "0", "2f6161e879db43c1a5b82c21ddc49089", "03eea05112b845949f3fd03278b5fe43", NULL); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT 'c373e9f5ad0791a0dab5444553544200' IN(SELECT t1.FOLDERID FROM t1 WHERE t1.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t1.FOLDERNAME = 'Level1'); ---enable_view_protocol +SELECT 'c373e9f5ad0791a0dab5444553544200' IN(SELECT t1.FOLDERID FROM t1 WHERE t1.PARENTID='2f6161e879db43c1a5b82c21ddc49089' AND t1.FOLDERNAME = 'Level1') as exp; drop table t1; # @@ -73,10 +70,7 @@ CREATE TABLE t2 ( INSERT INTO t1 VALUES (1),(2),(3); INSERT INTO t3 VALUES (1,1),(2,2),(3,3); INSERT INTO t2 VALUES (1,1),(2,2),(3,3); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT distinct p1.processor_id, (SELECT y.yod_id FROM t1 p2, t2 y WHERE p2.processor_id = p1.processor_id and p2.processor_id = y.processor_id) FROM t1 p1; ---enable_view_protocol +SELECT distinct p1.processor_id, (SELECT y.yod_id FROM t1 p2, t2 y WHERE p2.processor_id = p1.processor_id and p2.processor_id = y.processor_id) as result FROM t1 p1; drop table t2,t1,t3; # @@ -214,8 +208,6 @@ CREATE TABLE `t3` ( `t3_id` int NOT NULL ); INSERT INTO `t3` VALUES (3); -#enable after fix MDEV-27871 ---disable_view_protocol select (SELECT rs.t2_id FROM t2 rs @@ -223,9 +215,8 @@ select (SELECT lt.t1_id FROM t1 lt WHERE lt.t3_id=a.t3_id) - ORDER BY b DESC LIMIT 1) + ORDER BY b DESC LIMIT 1) as exp from t3 AS a; ---enable_view_protocol # repeat above query in SP --disable_warnings DROP PROCEDURE IF EXISTS p1; @@ -641,8 +632,6 @@ set character_set_connection=@save_character_set_connection; --echo # MDEV-26047: MariaDB server crash at Item_subselect::init_expr_cache_tracker --echo # CREATE TABLE t1 (a int) engine=innodb; -#enable abter fix MDEV-27871 ---disable_view_protocol SELECT 1 IN ( SELECT NULL FROM t1 @@ -650,8 +639,7 @@ SELECT 1 IN ( a IS NOT NULL GROUP BY (SELECT NULL from dual WHERE a = 1) -); ---enable_view_protocol +) as exp; drop table t1; --echo # Testcase from MDEV-26164 @@ -673,10 +661,7 @@ CREATE TABLE t1 (a INT) ENGINE=InnoDB; INSERT INTO t1 VALUES (1),(2); CREATE TABLE t2 (b INT PRIMARY KEY) ENGINE=InnoDB; INSERT INTO t1 VALUES (3),(4); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT 1 IN (SELECT a FROM t1 LEFT JOIN t2 ON (a = b AND EXISTS (SELECT * FROM t1))); ---enable_view_protocol +SELECT 1 IN (SELECT a FROM t1 LEFT JOIN t2 ON (a = b AND EXISTS (SELECT * FROM t1))) as exp; drop table t1,t2; --echo # diff --git a/mysql-test/main/subselect_mat.result b/mysql-test/main/subselect_mat.result index 1f20e1bd180..c943e90d46e 100644 --- a/mysql-test/main/subselect_mat.result +++ b/mysql-test/main/subselect_mat.result @@ -2951,16 +2951,15 @@ INSERT INTO t2 VALUES (1000,6,2); set @@optimizer_switch='materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off,in_to_exists=off'; EXPLAIN SELECT (f1, f2, f3) NOT IN -(SELECT COUNT(DISTINCT f2), f1, f3 FROM t1 GROUP BY f1, f3) +(SELECT COUNT(DISTINCT f2), f1, f3 FROM t1 GROUP BY f1, f3) as exp FROM t2; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t2 system NULL NULL NULL NULL 1 2 MATERIALIZED t1 ALL NULL NULL NULL NULL 2 Using filesort SELECT (f1, f2, f3) NOT IN -(SELECT COUNT(DISTINCT f2), f1, f3 FROM t1 GROUP BY f1, f3) +(SELECT COUNT(DISTINCT f2), f1, f3 FROM t1 GROUP BY f1, f3) as exp FROM t2; -(f1, f2, f3) NOT IN -(SELECT COUNT(DISTINCT f2), f1, f3 FROM t1 GROUP BY f1, f3) +exp 1 drop table t1, t2; # diff --git a/mysql-test/main/subselect_mat.test b/mysql-test/main/subselect_mat.test index cacafb0000f..b8d95a97050 100644 --- a/mysql-test/main/subselect_mat.test +++ b/mysql-test/main/subselect_mat.test @@ -192,19 +192,15 @@ INSERT INTO t2 VALUES (1000,6,2); set @@optimizer_switch='materialization=on,partial_match_rowid_merge=on,partial_match_table_scan=off,in_to_exists=off'; -#enable after fix MDEV-27871 ---disable_view_protocol EXPLAIN SELECT (f1, f2, f3) NOT IN - (SELECT COUNT(DISTINCT f2), f1, f3 FROM t1 GROUP BY f1, f3) + (SELECT COUNT(DISTINCT f2), f1, f3 FROM t1 GROUP BY f1, f3) as exp FROM t2; SELECT (f1, f2, f3) NOT IN - (SELECT COUNT(DISTINCT f2), f1, f3 FROM t1 GROUP BY f1, f3) + (SELECT COUNT(DISTINCT f2), f1, f3 FROM t1 GROUP BY f1, f3) as exp FROM t2; ---enable_view_protocol - drop table t1, t2; --echo # diff --git a/mysql-test/main/temp_table_symlink.test b/mysql-test/main/temp_table_symlink.test index ea5f1dfa4de..a0be38d9073 100644 --- a/mysql-test/main/temp_table_symlink.test +++ b/mysql-test/main/temp_table_symlink.test @@ -23,8 +23,10 @@ error 1,1030; create temporary table t2 (a int); error 1,1030; create temporary table t3 (a int) engine=Aria; +--disable_view_protocol error 1,1030; select * from information_schema.columns where table_schema='test'; +--enable_view_protocol flush tables; select * from d1; diff --git a/mysql-test/main/timezone2.result b/mysql-test/main/timezone2.result index 31b17fbc0d9..1cc1e562421 100644 --- a/mysql-test/main/timezone2.result +++ b/mysql-test/main/timezone2.result @@ -2,18 +2,18 @@ drop table if exists t1, t2; drop function if exists f1; create table t1 (ts timestamp); set time_zone='+00:00'; -select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()); -unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()) +select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()) as exp; +exp 0 insert into t1 (ts) values ('2003-03-30 02:30:00'); set time_zone='+10:30'; -select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()); -unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()) +select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()) as exp; +exp -37800 insert into t1 (ts) values ('2003-03-30 02:30:00'); set time_zone='-10:00'; -select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()); -unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()) +select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()) as exp; +exp 36000 insert into t1 (ts) values ('2003-03-30 02:30:00'); select * from t1; @@ -239,20 +239,20 @@ tz convert_tz('2003-12-31 00:00:00',tz,'UTC') convert_tz('2003-12-31 00:00:00',' MET 2003-12-30 23:00:00 2003-12-31 01:00:00 UTC 2003-12-31 00:00:00 2003-12-31 00:00:00 drop table t1; -select convert_tz('2003-12-31 04:00:00', NULL, 'UTC'); -convert_tz('2003-12-31 04:00:00', NULL, 'UTC') +select convert_tz('2003-12-31 04:00:00', NULL, 'UTC') as exp; +exp NULL -select convert_tz('2003-12-31 04:00:00', 'SomeNotExistingTimeZone', 'UTC'); -convert_tz('2003-12-31 04:00:00', 'SomeNotExistingTimeZone', 'UTC') +select convert_tz('2003-12-31 04:00:00', 'SomeNotExistingTimeZone', 'UTC') as exp; +exp NULL -select convert_tz('2003-12-31 04:00:00', 'MET', 'SomeNotExistingTimeZone'); -convert_tz('2003-12-31 04:00:00', 'MET', 'SomeNotExistingTimeZone') +select convert_tz('2003-12-31 04:00:00', 'MET', 'SomeNotExistingTimeZone') as exp; +exp NULL -select convert_tz('2003-12-31 04:00:00', 'MET', NULL); -convert_tz('2003-12-31 04:00:00', 'MET', NULL) +select convert_tz('2003-12-31 04:00:00', 'MET', NULL) as exp; +exp NULL -select convert_tz( NULL, 'MET', 'UTC'); -convert_tz( NULL, 'MET', 'UTC') +select convert_tz( NULL, 'MET', 'UTC') as exp; +exp NULL create table t1 (ts timestamp); set timestamp=1000000000; @@ -326,8 +326,8 @@ SET timestamp=DEFAULT; # # MDEV-5506 safe_mutex: Trying to lock unitialized mutex at safemalloc.c on server shutdown after SELECT with CONVERT_TZ # -SELECT CONVERT_TZ('2001-10-08 00:00:00', MAKE_SET(0,'+01:00'), '+00:00' ); -CONVERT_TZ('2001-10-08 00:00:00', MAKE_SET(0,'+01:00'), '+00:00' ) +SELECT CONVERT_TZ('2001-10-08 00:00:00', MAKE_SET(0,'+01:00'), '+00:00' ) as exp; +exp NULL # # End of 5.3 tests diff --git a/mysql-test/main/timezone2.test b/mysql-test/main/timezone2.test index b5045203903..0db092d8921 100644 --- a/mysql-test/main/timezone2.test +++ b/mysql-test/main/timezone2.test @@ -12,26 +12,21 @@ drop function if exists f1; # create table t1 (ts timestamp); -#enable after fix MDEV-27871 ---disable_view_protocol - set time_zone='+00:00'; -select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()); +select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()) as exp; insert into t1 (ts) values ('2003-03-30 02:30:00'); set time_zone='+10:30'; -select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()); +select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()) as exp; insert into t1 (ts) values ('2003-03-30 02:30:00'); set time_zone='-10:00'; -select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()); +select unix_timestamp(utc_timestamp())-unix_timestamp(current_timestamp()) as exp; insert into t1 (ts) values ('2003-03-30 02:30:00'); # Here we will get different results select * from t1; ---enable_view_protocol - drop table t1; @@ -192,17 +187,12 @@ insert into t1 (tz) values ('MET'), ('UTC'); select tz, convert_tz('2003-12-31 00:00:00',tz,'UTC'), convert_tz('2003-12-31 00:00:00','UTC',tz) from t1 order by tz; drop table t1; -#enable after fix MDEV-27871 ---disable_view_protocol - # Parameters to CONVERT_TZ() what should give NULL -select convert_tz('2003-12-31 04:00:00', NULL, 'UTC'); -select convert_tz('2003-12-31 04:00:00', 'SomeNotExistingTimeZone', 'UTC'); -select convert_tz('2003-12-31 04:00:00', 'MET', 'SomeNotExistingTimeZone'); -select convert_tz('2003-12-31 04:00:00', 'MET', NULL); -select convert_tz( NULL, 'MET', 'UTC'); - ---enable_view_protocol +select convert_tz('2003-12-31 04:00:00', NULL, 'UTC') as exp; +select convert_tz('2003-12-31 04:00:00', 'SomeNotExistingTimeZone', 'UTC') as exp; +select convert_tz('2003-12-31 04:00:00', 'MET', 'SomeNotExistingTimeZone') as exp; +select convert_tz('2003-12-31 04:00:00', 'MET', NULL) as exp; +select convert_tz( NULL, 'MET', 'UTC') as exp; # # Test for bug #4508 "CONVERT_TZ() function with new time zone as param @@ -315,12 +305,7 @@ SET timestamp=DEFAULT; --echo # MDEV-5506 safe_mutex: Trying to lock unitialized mutex at safemalloc.c on server shutdown after SELECT with CONVERT_TZ --echo # -#enable after fix MDEV-27871 ---disable_view_protocol - -SELECT CONVERT_TZ('2001-10-08 00:00:00', MAKE_SET(0,'+01:00'), '+00:00' ); - ---enable_view_protocol +SELECT CONVERT_TZ('2001-10-08 00:00:00', MAKE_SET(0,'+01:00'), '+00:00' ) as exp; --echo # --echo # End of 5.3 tests diff --git a/mysql-test/main/type_datetime.result b/mysql-test/main/type_datetime.result index bd937416803..ecdc99b8ab3 100644 --- a/mysql-test/main/type_datetime.result +++ b/mysql-test/main/type_datetime.result @@ -184,17 +184,17 @@ a 2006-06-06 15:55:55 DROP PREPARE s; DROP TABLE t1; -SELECT CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)); -CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)) +SELECT CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)) as exp; +exp 20060810.000000 -SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) AS DECIMAL(20,6)); -CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) AS DECIMAL(20,6)) +SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) AS DECIMAL(20,6)) as exp; +exp 20060810101112.000000 -SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)); -CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)) +SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)) as exp; +exp 20060810101112.000014 -SELECT CAST(CAST('10:11:12.098700' AS TIME(6)) AS DECIMAL(20,6)); -CAST(CAST('10:11:12.098700' AS TIME(6)) AS DECIMAL(20,6)) +SELECT CAST(CAST('10:11:12.098700' AS TIME(6)) AS DECIMAL(20,6)) as exp; +exp 101112.098700 set @org_mode=@@sql_mode; create table t1 (da date default '1962-03-03 23:33:34', dt datetime default '1962-03-03'); @@ -351,26 +351,26 @@ select f1 from t1 where ('1',f1) in (('1','01-01-01'),('1','2001-1-1 0:0:0'),('1 f1 2001-01-01 drop table t1,t2,t3; -select least(cast('01-01-01' as date), '01-01-02'); -least(cast('01-01-01' as date), '01-01-02') +select least(cast('01-01-01' as date), '01-01-02') as exp; +exp 2001-01-01 -select greatest(cast('01-01-01' as date), '01-01-02'); -greatest(cast('01-01-01' as date), '01-01-02') +select greatest(cast('01-01-01' as date), '01-01-02') as exp; +exp 2001-01-02 -select least(cast('01-01-01' as date), '01-01-02') + 0; -least(cast('01-01-01' as date), '01-01-02') + 0 +select least(cast('01-01-01' as date), '01-01-02') + 0 as exp; +exp 20010101 -select greatest(cast('01-01-01' as date), '01-01-02') + 0; -greatest(cast('01-01-01' as date), '01-01-02') + 0 +select greatest(cast('01-01-01' as date), '01-01-02') + 0 as exp; +exp 20010102 -select least(cast('01-01-01' as datetime), '01-01-02') + 0; -least(cast('01-01-01' as datetime), '01-01-02') + 0 +select least(cast('01-01-01' as datetime), '01-01-02') + 0 as exp; +exp 20010101000000 -select cast(least(cast('01-01-01' as datetime), '01-01-02') as signed); -cast(least(cast('01-01-01' as datetime), '01-01-02') as signed) +select cast(least(cast('01-01-01' as datetime), '01-01-02') as signed) as exp; +exp 20010101000000 -select cast(least(cast('01-01-01' as datetime), '01-01-02') as decimal(16,2)); -cast(least(cast('01-01-01' as datetime), '01-01-02') as decimal(16,2)) +select cast(least(cast('01-01-01' as datetime), '01-01-02') as decimal(16,2)) as exp; +exp 20010101000000.00 DROP PROCEDURE IF EXISTS test27759 ; CREATE PROCEDURE test27759() @@ -627,21 +627,21 @@ ERROR 42000: Invalid default value for 'da' create table t1 (t time default '916:00:00 a'); ERROR 42000: Invalid default value for 't' set @@sql_mode= @org_mode; -SELECT CAST(CAST('2006-08-10 10:11:12.0123450' AS DATETIME(6)) AS DECIMAL(30,7)); -CAST(CAST('2006-08-10 10:11:12.0123450' AS DATETIME(6)) AS DECIMAL(30,7)) +SELECT CAST(CAST('2006-08-10 10:11:12.0123450' AS DATETIME(6)) AS DECIMAL(30,7)) as exp; +exp 20060810101112.0123450 Warnings: Note 1292 Truncated incorrect datetime value: '2006-08-10 10:11:12.0123450' -SELECT CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.0123450' AS DATETIME(6)) AS DECIMAL(30,7)); -CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.0123450' AS DATETIME(6)) AS DECIMAL(30,7)) +SELECT CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.0123450' AS DATETIME(6)) AS DECIMAL(30,7)) as exp; +exp 20060810101112.0123450 Warnings: Note 1292 Truncated incorrect datetime value: '00000002006-000008-0000010 000010:0000011:00000012.0123450' -SELECT CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.012345' AS DATETIME(6)) AS DECIMAL(30,7)); -CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.012345' AS DATETIME(6)) AS DECIMAL(30,7)) +SELECT CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.012345' AS DATETIME(6)) AS DECIMAL(30,7)) as exp; +exp 20060810101112.0123450 -SELECT CAST(CAST('2008-07-29T10:42:51.1234567' AS DateTime(6)) AS DECIMAL(30,7)); -CAST(CAST('2008-07-29T10:42:51.1234567' AS DateTime(6)) AS DECIMAL(30,7)) +SELECT CAST(CAST('2008-07-29T10:42:51.1234567' AS DateTime(6)) AS DECIMAL(30,7)) as exp; +exp 20080729104251.1234560 Warnings: Note 1292 Truncated incorrect datetime value: '2008-07-29T10:42:51.1234567' @@ -685,8 +685,8 @@ drop table t1,t2; # # MDEV-4634 Crash in CONVERT_TZ # -SELECT CONVERT_TZ(GREATEST(TIMESTAMP('2021-00-00'),TIMESTAMP('2022-00-00')),'+00:00','+7:5'); -CONVERT_TZ(GREATEST(TIMESTAMP('2021-00-00'),TIMESTAMP('2022-00-00')),'+00:00','+7:5') +SELECT CONVERT_TZ(GREATEST(TIMESTAMP('2021-00-00'),TIMESTAMP('2022-00-00')),'+00:00','+7:5') as exp; +exp NULL Warnings: Warning 1292 Incorrect datetime value: '2022-00-00 00:00:00' @@ -951,8 +951,8 @@ CAST(CAST('00:00:00.000001' AS TIME(6)) AS DATETIME(6)) SELECT CAST(CAST(TIMESTAMP'0000-00-00 10:20:30' AS TIME) AS DATETIME); CAST(CAST(TIMESTAMP'0000-00-00 10:20:30' AS TIME) AS DATETIME) 0000-00-00 10:20:30 -SELECT CAST(CAST(TIMESTAMP'0000-00-00 00:00:00.000001' AS TIME(6)) AS DATETIME(6)); -CAST(CAST(TIMESTAMP'0000-00-00 00:00:00.000001' AS TIME(6)) AS DATETIME(6)) +SELECT CAST(CAST(TIMESTAMP'0000-00-00 00:00:00.000001' AS TIME(6)) AS DATETIME(6)) as exp; +exp 0000-00-00 00:00:00.000001 SET old_mode=DEFAULT; SET sql_mode=DEFAULT; diff --git a/mysql-test/main/type_datetime.test b/mysql-test/main/type_datetime.test index 3c46d10718f..c1d45870221 100644 --- a/mysql-test/main/type_datetime.test +++ b/mysql-test/main/type_datetime.test @@ -138,13 +138,10 @@ DROP TABLE t1; # # Bug 19491 (CAST DATE AS DECIMAL returns incorrect result # -SELECT CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) AS DECIMAL(20,6)); -SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)); -SELECT CAST(CAST('10:11:12.098700' AS TIME(6)) AS DECIMAL(20,6)); ---disable_view_protocol +SELECT CAST(CAST('2006-08-10' AS DATE) AS DECIMAL(20,6)) as exp; +SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) AS DECIMAL(20,6)) as exp; +SELECT CAST(CAST('2006-08-10 10:11:12' AS DATETIME(6)) + INTERVAL 14 MICROSECOND AS DECIMAL(20,6)) as exp; +SELECT CAST(CAST('10:11:12.098700' AS TIME(6)) AS DECIMAL(20,6)) as exp; # # Test of storing datetime into date fields @@ -246,16 +243,13 @@ drop table t1,t2,t3; # # Bug#27759: Wrong DATE/DATETIME comparison in LEAST()/GREATEST() functions. # -select least(cast('01-01-01' as date), '01-01-02'); -select greatest(cast('01-01-01' as date), '01-01-02'); -select least(cast('01-01-01' as date), '01-01-02') + 0; -select greatest(cast('01-01-01' as date), '01-01-02') + 0; -select least(cast('01-01-01' as datetime), '01-01-02') + 0; -select cast(least(cast('01-01-01' as datetime), '01-01-02') as signed); -#enable after fix MDEV-27871 ---disable_view_protocol -select cast(least(cast('01-01-01' as datetime), '01-01-02') as decimal(16,2)); ---enable_view_protocol +select least(cast('01-01-01' as date), '01-01-02') as exp; +select greatest(cast('01-01-01' as date), '01-01-02') as exp; +select least(cast('01-01-01' as date), '01-01-02') + 0 as exp; +select greatest(cast('01-01-01' as date), '01-01-02') + 0 as exp; +select least(cast('01-01-01' as datetime), '01-01-02') + 0 as exp; +select cast(least(cast('01-01-01' as datetime), '01-01-02') as signed) as exp; +select cast(least(cast('01-01-01' as datetime), '01-01-02') as decimal(16,2)) as exp; --disable_warnings DROP PROCEDURE IF EXISTS test27759 ; --enable_warnings @@ -447,27 +441,23 @@ create table t1 (da date default '1962-03-32 23:33:34', dt datetime default '196 create table t1 (t time default '916:00:00 a'); set @@sql_mode= @org_mode; -#enable after fix MDEV-27871 ---disable_view_protocol - # # Bug #42146 - DATETIME fractional seconds parse error # # show we trucate microseconds from the right -- special case: leftmost is 0 -SELECT CAST(CAST('2006-08-10 10:11:12.0123450' AS DATETIME(6)) AS DECIMAL(30,7)); +SELECT CAST(CAST('2006-08-10 10:11:12.0123450' AS DATETIME(6)) AS DECIMAL(30,7)) as exp; # show that we ignore leading zeroes for all other fields -SELECT CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.0123450' AS DATETIME(6)) AS DECIMAL(30,7)); +SELECT CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.0123450' AS DATETIME(6)) AS DECIMAL(30,7)) as exp; # once more with feeling (but no warnings) -SELECT CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.012345' AS DATETIME(6)) AS DECIMAL(30,7)); +SELECT CAST(CAST('00000002006-000008-0000010 000010:0000011:00000012.012345' AS DATETIME(6)) AS DECIMAL(30,7)) as exp; # # Bug #38435 - LONG Microseconds cause MySQL to fail a CAST to DATETIME or DATE # # show we truncate microseconds from the right -SELECT CAST(CAST('2008-07-29T10:42:51.1234567' AS DateTime(6)) AS DECIMAL(30,7)); ---enable_view_protocol +SELECT CAST(CAST('2008-07-29T10:42:51.1234567' AS DateTime(6)) AS DECIMAL(30,7)) as exp; --echo # --echo # Bug#59173: Failure to handle DATE(TIME) values where Year, Month or @@ -510,10 +500,7 @@ drop table t1,t2; --echo # --echo # MDEV-4634 Crash in CONVERT_TZ --echo # -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT CONVERT_TZ(GREATEST(TIMESTAMP('2021-00-00'),TIMESTAMP('2022-00-00')),'+00:00','+7:5'); ---enable_view_protocol +SELECT CONVERT_TZ(GREATEST(TIMESTAMP('2021-00-00'),TIMESTAMP('2022-00-00')),'+00:00','+7:5') as exp; --echo # --echo # MDEV-5041 Inserting a TIME with hour>24 into a DATETIME column produces a wrong value @@ -674,10 +661,7 @@ SELECT CAST(TIME'00:00:00.000001' AS DATETIME(6)); SELECT CAST(CAST('10:20:30' AS TIME) AS DATETIME); SELECT CAST(CAST('00:00:00.000001' AS TIME(6)) AS DATETIME(6)); SELECT CAST(CAST(TIMESTAMP'0000-00-00 10:20:30' AS TIME) AS DATETIME); -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT CAST(CAST(TIMESTAMP'0000-00-00 00:00:00.000001' AS TIME(6)) AS DATETIME(6)); ---enable_view_protocol +SELECT CAST(CAST(TIMESTAMP'0000-00-00 00:00:00.000001' AS TIME(6)) AS DATETIME(6)) as exp; SET old_mode=DEFAULT; SET sql_mode=DEFAULT; diff --git a/mysql-test/main/type_float.result b/mysql-test/main/type_float.result index 2df714aff8c..4eec85e3735 100644 --- a/mysql-test/main/type_float.result +++ b/mysql-test/main/type_float.result @@ -1213,6 +1213,85 @@ DROP VIEW v1; # End of 10.4 tests # # +# Start of 10.5 tests +# +# +# MDEV-20548 Unexpected error on CREATE..SELECT HEX(num) +# +SET sql_mode=STRICT_ALL_TABLES; +CREATE TABLE t1 AS SELECT HEX(-2e0) AS h; +SELECT * FROM t1; +h +FFFFFFFFFFFFFFFE +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 AS SELECT HEX(-1e0) AS h; +SELECT * FROM t1; +h +FFFFFFFFFFFFFFFF +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 AS SELECT HEX(1e0) AS h; +SELECT * FROM t1; +h +1 +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 AS SELECT HEX(2e0) AS h; +SELECT * FROM t1; +h +2 +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 (a FLOAT); +INSERT INTO t1 VALUES (-1e38),(-255),(-2),(-1),(+1),(+2),(255),(1e38); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2 ORDER BY a; +a h +-1e38 FFFFFFFFFFFFFFFF +-255 FFFFFFFFFFFFFF01 +-2 FFFFFFFFFFFFFFFE +-1 FFFFFFFFFFFFFFFF +1 1 +2 2 +255 FF +1e38 FFFFFFFFFFFFFFFF +SHOW COLUMNS IN t2; +Field Type Null Key Default Extra +a float YES NULL +h varchar(16) YES NULL +DROP TABLE t1, t2; +CREATE TABLE t1 (a DOUBLE); +INSERT INTO t1 VALUES (-1e308),(-255),(-2),(-1),(+1),(+2),(255),(1e308); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2 ORDER BY a; +a h +-1e308 FFFFFFFFFFFFFFFF +-255 FFFFFFFFFFFFFF01 +-2 FFFFFFFFFFFFFFFE +-1 FFFFFFFFFFFFFFFF +1 1 +2 2 +255 FF +1e308 FFFFFFFFFFFFFFFF +SHOW COLUMNS IN t2; +Field Type Null Key Default Extra +a double YES NULL +h varchar(16) YES NULL +DROP TABLE t1, t2; +SET sql_mode=DEFAULT; +# +# End of 10.5 tests +# +# # MDEV-32203 Raise notes when an index cannot be used on data type mismatch # SET note_verbosity=unusable_keys; diff --git a/mysql-test/main/type_float.test b/mysql-test/main/type_float.test index c90d8b8aa79..5fc20fb1557 100644 --- a/mysql-test/main/type_float.test +++ b/mysql-test/main/type_float.test @@ -746,6 +746,58 @@ DROP VIEW v1; --echo # End of 10.4 tests --echo # +--echo # +--echo # Start of 10.5 tests +--echo # + +--echo # +--echo # MDEV-20548 Unexpected error on CREATE..SELECT HEX(num) +--echo # + +SET sql_mode=STRICT_ALL_TABLES; + +CREATE TABLE t1 AS SELECT HEX(-2e0) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 AS SELECT HEX(-1e0) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 AS SELECT HEX(1e0) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 AS SELECT HEX(2e0) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + + +CREATE TABLE t1 (a FLOAT); +INSERT INTO t1 VALUES (-1e38),(-255),(-2),(-1),(+1),(+2),(255),(1e38); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2 ORDER BY a; +SHOW COLUMNS IN t2; +DROP TABLE t1, t2; + +CREATE TABLE t1 (a DOUBLE); +INSERT INTO t1 VALUES (-1e308),(-255),(-2),(-1),(+1),(+2),(255),(1e308); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2 ORDER BY a; +SHOW COLUMNS IN t2; +DROP TABLE t1, t2; + +SET sql_mode=DEFAULT; + +--echo # +--echo # End of 10.5 tests +--echo # + + --echo # --echo # MDEV-32203 Raise notes when an index cannot be used on data type mismatch --echo # diff --git a/mysql-test/main/type_int.result b/mysql-test/main/type_int.result index 9a54c9a5287..efa855da42e 100644 --- a/mysql-test/main/type_int.result +++ b/mysql-test/main/type_int.result @@ -1686,6 +1686,167 @@ c0 127 drop table t1; # +# MDEV-20548 Unexpected error on CREATE..SELECT HEX(num) +# +SET sql_mode=STRICT_ALL_TABLES; +CREATE TABLE t1 AS SELECT HEX(-2) AS h; +SELECT * FROM t1; +h +FFFFFFFFFFFFFFFE +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 AS SELECT HEX(-1) AS h; +SELECT * FROM t1; +h +FFFFFFFFFFFFFFFF +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 AS SELECT HEX(1) AS h; +SELECT * FROM t1; +h +1 +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 AS SELECT HEX(2) AS h; +SELECT * FROM t1; +h +2 +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 (a TINYINT); +INSERT INTO t1 VALUES (-0x80),(-2),(-1),(1),(2),(0x7f); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +a h +-128 FFFFFFFFFFFFFF80 +-2 FFFFFFFFFFFFFFFE +-1 FFFFFFFFFFFFFFFF +1 1 +2 2 +127 7F +SHOW COLUMNS IN t2; +Field Type Null Key Default Extra +a tinyint(4) YES NULL +h varchar(16) YES NULL +DROP TABLE t1, t2; +CREATE TABLE t1 (a SMALLINT); +INSERT INTO t1 VALUES (-0x8000),(-0x80),(-2),(-1),(1),(2),(0x7f),(0x7fff); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +a h +-32768 FFFFFFFFFFFF8000 +-128 FFFFFFFFFFFFFF80 +-2 FFFFFFFFFFFFFFFE +-1 FFFFFFFFFFFFFFFF +1 1 +2 2 +127 7F +32767 7FFF +SHOW COLUMNS IN t2; +Field Type Null Key Default Extra +a smallint(6) YES NULL +h varchar(16) YES NULL +DROP TABLE t1, t2; +CREATE TABLE t1 (a MEDIUMINT); +INSERT INTO t1 VALUES (-0x800000); +INSERT INTO t1 VALUES (-0x8000),(-0x80),(-2),(-1),(1),(2),(0x7f),(0x7fff); +INSERT INTO t1 VALUES (0x7fffff); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +a h +-8388608 FFFFFFFFFF800000 +-32768 FFFFFFFFFFFF8000 +-128 FFFFFFFFFFFFFF80 +-2 FFFFFFFFFFFFFFFE +-1 FFFFFFFFFFFFFFFF +1 1 +2 2 +127 7F +32767 7FFF +8388607 7FFFFF +SHOW COLUMNS IN t2; +Field Type Null Key Default Extra +a mediumint(9) YES NULL +h varchar(16) YES NULL +DROP TABLE t1, t2; +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (-0x80000000); +INSERT INTO t1 VALUES (-0x800000); +INSERT INTO t1 VALUES (-0x8000),(-0x80),(-2),(-1),(1),(2),(0x7f),(0x7fff); +INSERT INTO t1 VALUES (0x7fffff); +INSERT INTO t1 VALUES (0x7fffffff); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +a h +-2147483648 FFFFFFFF80000000 +-8388608 FFFFFFFFFF800000 +-32768 FFFFFFFFFFFF8000 +-128 FFFFFFFFFFFFFF80 +-2 FFFFFFFFFFFFFFFE +-1 FFFFFFFFFFFFFFFF +1 1 +2 2 +127 7F +32767 7FFF +8388607 7FFFFF +2147483647 7FFFFFFF +SHOW COLUMNS IN t2; +Field Type Null Key Default Extra +a int(11) YES NULL +h varchar(16) YES NULL +DROP TABLE t1, t2; +CREATE TABLE t1 (a BIGINT); +INSERT INTO t1 VALUES (-0x8000000000000000); +INSERT INTO t1 VALUES (-0x80000000000000); +INSERT INTO t1 VALUES (-0x800000000000); +INSERT INTO t1 VALUES (-0x8000000000); +INSERT INTO t1 VALUES (-0x80000000); +INSERT INTO t1 VALUES (-0x800000); +INSERT INTO t1 VALUES (-0x8000),(-0x80),(-2),(-1),(1),(2),(0x7f),(0x7fff); +INSERT INTO t1 VALUES (0x7fffff); +INSERT INTO t1 VALUES (0x7fffffff); +INSERT INTO t1 VALUES (0x7fffffffff); +INSERT INTO t1 VALUES (0x7fffffffffff); +INSERT INTO t1 VALUES (0x7fffffffffffff); +INSERT INTO t1 VALUES (0x7fffffffffffffff); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +a h +-9223372036854775808 8000000000000000 +-36028797018963968 FF80000000000000 +-140737488355328 FFFF800000000000 +-549755813888 FFFFFF8000000000 +-2147483648 FFFFFFFF80000000 +-8388608 FFFFFFFFFF800000 +-32768 FFFFFFFFFFFF8000 +-128 FFFFFFFFFFFFFF80 +-2 FFFFFFFFFFFFFFFE +-1 FFFFFFFFFFFFFFFF +1 1 +2 2 +127 7F +32767 7FFF +8388607 7FFFFF +2147483647 7FFFFFFF +549755813887 7FFFFFFFFF +140737488355327 7FFFFFFFFFFF +36028797018963967 7FFFFFFFFFFFFF +9223372036854775807 7FFFFFFFFFFFFFFF +SHOW COLUMNS IN t2; +Field Type Null Key Default Extra +a bigint(20) YES NULL +h varchar(16) YES NULL +DROP TABLE t1, t2; +SET sql_mode=DEFAULT; +# # End of 10.5 tests # # diff --git a/mysql-test/main/type_int.test b/mysql-test/main/type_int.test index c47ab501116..f15f8688907 100644 --- a/mysql-test/main/type_int.test +++ b/mysql-test/main/type_int.test @@ -564,6 +564,88 @@ insert into t1 values (-128); select * from t1 where 18446744073700599371 > c0; drop table t1; +--echo # +--echo # MDEV-20548 Unexpected error on CREATE..SELECT HEX(num) +--echo # + +SET sql_mode=STRICT_ALL_TABLES; + +CREATE TABLE t1 AS SELECT HEX(-2) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 AS SELECT HEX(-1) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 AS SELECT HEX(1) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 AS SELECT HEX(2) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 (a TINYINT); +INSERT INTO t1 VALUES (-0x80),(-2),(-1),(1),(2),(0x7f); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +SHOW COLUMNS IN t2; +DROP TABLE t1, t2; + +CREATE TABLE t1 (a SMALLINT); +INSERT INTO t1 VALUES (-0x8000),(-0x80),(-2),(-1),(1),(2),(0x7f),(0x7fff); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +SHOW COLUMNS IN t2; +DROP TABLE t1, t2; + +CREATE TABLE t1 (a MEDIUMINT); +INSERT INTO t1 VALUES (-0x800000); +INSERT INTO t1 VALUES (-0x8000),(-0x80),(-2),(-1),(1),(2),(0x7f),(0x7fff); +INSERT INTO t1 VALUES (0x7fffff); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +SHOW COLUMNS IN t2; +DROP TABLE t1, t2; + +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (-0x80000000); +INSERT INTO t1 VALUES (-0x800000); +INSERT INTO t1 VALUES (-0x8000),(-0x80),(-2),(-1),(1),(2),(0x7f),(0x7fff); +INSERT INTO t1 VALUES (0x7fffff); +INSERT INTO t1 VALUES (0x7fffffff); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +SHOW COLUMNS IN t2; +DROP TABLE t1, t2; + +CREATE TABLE t1 (a BIGINT); +INSERT INTO t1 VALUES (-0x8000000000000000); +INSERT INTO t1 VALUES (-0x80000000000000); +INSERT INTO t1 VALUES (-0x800000000000); +INSERT INTO t1 VALUES (-0x8000000000); +INSERT INTO t1 VALUES (-0x80000000); +INSERT INTO t1 VALUES (-0x800000); +INSERT INTO t1 VALUES (-0x8000),(-0x80),(-2),(-1),(1),(2),(0x7f),(0x7fff); +INSERT INTO t1 VALUES (0x7fffff); +INSERT INTO t1 VALUES (0x7fffffff); +INSERT INTO t1 VALUES (0x7fffffffff); +INSERT INTO t1 VALUES (0x7fffffffffff); +INSERT INTO t1 VALUES (0x7fffffffffffff); +INSERT INTO t1 VALUES (0x7fffffffffffffff); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2; +SHOW COLUMNS IN t2; +DROP TABLE t1, t2; + +SET sql_mode=DEFAULT; + + --echo # --echo # End of 10.5 tests --echo # diff --git a/mysql-test/main/type_newdecimal.result b/mysql-test/main/type_newdecimal.result index 08161cccb92..28b5453ba92 100644 --- a/mysql-test/main/type_newdecimal.result +++ b/mysql-test/main/type_newdecimal.result @@ -912,8 +912,8 @@ select * from t1; col1 -9223372036854775808 drop table t1; -select cast('1.00000001335143196001808973960578441619873046875E-10' as decimal(30,15)); -cast('1.00000001335143196001808973960578441619873046875E-10' as decimal(30,15)) +select cast('1.00000001335143196001808973960578441619873046875E-10' as decimal(30,15)) as exp; +exp 0.000000000100000 select ln(14000) c1, convert(ln(14000),decimal(5,3)) c2, cast(ln(14000) as decimal(5,3)) c3; c1 c2 c3 @@ -1527,9 +1527,8 @@ f1 99999999999999999999999999999.999999999999999999999999999999999999 DROP TABLE t1; select (1.20396873 * 0.89550000 * 0.68000000 * 1.08721696 * 0.99500000 * -1.01500000 * 1.01500000 * 0.99500000); -(1.20396873 * 0.89550000 * 0.68000000 * 1.08721696 * 0.99500000 * -1.01500000 * 1.01500000 * 0.99500000) +1.01500000 * 1.01500000 * 0.99500000) as exp; +exp 0.81298807395367312459230693948000000000 create table t1 as select 5.05 / 0.014; Warnings: @@ -2466,8 +2465,8 @@ drop table t1; # decimal_bin_size And Assertion `scale >= 0 && precision > 0 && scale <= precision' # failed in decimal_bin_size_inline/decimal_bin_size. # -SELECT AVG(DISTINCT 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001); -AVG(DISTINCT 0.000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 +SELECT AVG(DISTINCT 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001) as exp; +exp 0.00000000000000000000000000000000000000 CREATE TABLE t1 AS SELECT NULL AS v1; SELECT 1 FROM t1 GROUP BY v1 ORDER BY AVG ( from_unixtime ( '' ) ) ; @@ -2809,6 +2808,80 @@ DROP TABLE t2,t1; # End of 10.4 tests # # +# Start of 10.5 tests +# +# +# MDEV-20548 Unexpected error on CREATE..SELECT HEX(num) +# +SET sql_mode=STRICT_ALL_TABLES; +CREATE TABLE t1 AS SELECT HEX(-2) AS h; +SELECT * FROM t1; +h +FFFFFFFFFFFFFFFE +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 AS SELECT HEX(-1) AS h; +SELECT * FROM t1; +h +FFFFFFFFFFFFFFFF +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 AS SELECT HEX(+1) AS h; +SELECT * FROM t1; +h +1 +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 AS SELECT HEX(+2) AS h; +SELECT * FROM t1; +h +2 +SHOW COLUMNS IN t1; +Field Type Null Key Default Extra +h varchar(16) YES NULL +DROP TABLE t1; +CREATE TABLE t1 (a DECIMAL(41,1)); +INSERT INTO t1 VALUES (-1000000000000000000000000000000000000000); +INSERT INTO t1 VALUES (-0x8000000000); +INSERT INTO t1 VALUES (-0x80000000),(-0x800000),(-0x8000),(-0x80),(-2),(-1); +INSERT INTO t1 VALUES (1),(2),(128),(0x7fff),(0x7fffff),(0x7fffffff); +INSERT INTO t1 VALUES (+0x7fffffffff); +INSERT INTO t1 VALUES (+1000000000000000000000000000000000000000); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2 ORDER BY a; +a h +-1000000000000000000000000000000000000000.0 FFFFFFFFFFFFFFFF +-549755813888.0 FFFFFF8000000000 +-2147483648.0 FFFFFFFF80000000 +-8388608.0 FFFFFFFFFF800000 +-32768.0 FFFFFFFFFFFF8000 +-128.0 FFFFFFFFFFFFFF80 +-2.0 FFFFFFFFFFFFFFFE +-1.0 FFFFFFFFFFFFFFFF +1.0 1 +2.0 2 +128.0 80 +32767.0 7FFF +8388607.0 7FFFFF +2147483647.0 7FFFFFFF +549755813887.0 7FFFFFFFFF +1000000000000000000000000000000000000000.0 FFFFFFFFFFFFFFFF +SHOW COLUMNS IN t2; +Field Type Null Key Default Extra +a decimal(41,1) YES NULL +h varchar(16) YES NULL +DROP TABLE t1, t2; +SET sql_mode=DEFAULT; +# +# End of 10.5 tests +# +# # MDEV-32203 Raise notes when an index cannot be used on data type mismatch # SET note_verbosity=unusable_keys; diff --git a/mysql-test/main/type_newdecimal.test b/mysql-test/main/type_newdecimal.test index af82b7d601c..af9da5395c0 100644 --- a/mysql-test/main/type_newdecimal.test +++ b/mysql-test/main/type_newdecimal.test @@ -952,10 +952,7 @@ drop table t1; # # Bug #10891 (converting to decimal crashes server) # -#enable after fix MDEV-27871 ---disable_view_protocol -select cast('1.00000001335143196001808973960578441619873046875E-10' as decimal(30,15)); ---enable_view_protocol +select cast('1.00000001335143196001808973960578441619873046875E-10' as decimal(30,15)) as exp; # # Bug #11708 (conversion to decimal fails in decimal part) @@ -1245,15 +1242,11 @@ DROP TABLE t1; # # Bug #36270: incorrect calculation result - works in 4.1 but not in 5.0 or 5.1 # -#enable after fix MDEV-27871 ---disable_view_protocol # show that if we need to truncate the scale of an operand, we pick the # right one (that is, we discard the least significant decimal places) select (1.20396873 * 0.89550000 * 0.68000000 * 1.08721696 * 0.99500000 * - 1.01500000 * 1.01500000 * 0.99500000); - ---enable_view_protocol + 1.01500000 * 1.01500000 * 0.99500000) as exp; # # Bug #31616 div_precision_increment description looks wrong @@ -1926,10 +1919,8 @@ drop table t1; --echo # decimal_bin_size And Assertion `scale >= 0 && precision > 0 && scale <= precision' --echo # failed in decimal_bin_size_inline/decimal_bin_size. --echo # -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT AVG(DISTINCT 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001); ---enable_view_protocol +SELECT AVG(DISTINCT 0.00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001) as exp; + CREATE TABLE t1 AS SELECT NULL AS v1; SELECT 1 FROM t1 GROUP BY v1 ORDER BY AVG ( from_unixtime ( '' ) ) ; DROP TABLE t1; @@ -2012,6 +2003,54 @@ DROP TABLE t2,t1; --echo # End of 10.4 tests --echo # +--echo # +--echo # Start of 10.5 tests +--echo # + +--echo # +--echo # MDEV-20548 Unexpected error on CREATE..SELECT HEX(num) +--echo # + +SET sql_mode=STRICT_ALL_TABLES; + +CREATE TABLE t1 AS SELECT HEX(-2) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 AS SELECT HEX(-1) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 AS SELECT HEX(+1) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 AS SELECT HEX(+2) AS h; +SELECT * FROM t1; +SHOW COLUMNS IN t1; +DROP TABLE t1; + +CREATE TABLE t1 (a DECIMAL(41,1)); +INSERT INTO t1 VALUES (-1000000000000000000000000000000000000000); +INSERT INTO t1 VALUES (-0x8000000000); +INSERT INTO t1 VALUES (-0x80000000),(-0x800000),(-0x8000),(-0x80),(-2),(-1); +INSERT INTO t1 VALUES (1),(2),(128),(0x7fff),(0x7fffff),(0x7fffffff); +INSERT INTO t1 VALUES (+0x7fffffffff); +INSERT INTO t1 VALUES (+1000000000000000000000000000000000000000); +CREATE TABLE t2 AS SELECT a, HEX(a) AS h FROM t1; +SELECT * FROM t2 ORDER BY a; +SHOW COLUMNS IN t2; +DROP TABLE t1, t2; + +SET sql_mode=DEFAULT; + +--echo # +--echo # End of 10.5 tests +--echo # + --echo # --echo # MDEV-32203 Raise notes when an index cannot be used on data type mismatch --echo # diff --git a/mysql-test/main/win.result b/mysql-test/main/win.result index a504b9f4646..74453a59bee 100644 --- a/mysql-test/main/win.result +++ b/mysql-test/main/win.result @@ -1099,11 +1099,9 @@ select a, count(col1) over (order by a range between 0.1 preceding -and 0.1 following) +and 0.1 following) as count from t1; -a count(col1) over (order by a -range between 0.1 preceding -and 0.1 following) +a count 0.450 3 0.500 3 0.550 3 @@ -1249,33 +1247,33 @@ insert into t1 values (1,1,'foo'); insert into t1 values (2,2,'bar'); select count(*) over (order by a,b -range between unbounded preceding and current row) +range between unbounded preceding and current row) as count from t1; ERROR HY000: RANGE-type frame requires ORDER BY clause with single sort key select count(*) over (order by c -range between unbounded preceding and current row) +range between unbounded preceding and current row) as count from t1; ERROR HY000: Numeric datatype is required for RANGE-type frame select count(*) over (order by a -range between 'abcd' preceding and current row) +range between 'abcd' preceding and current row) as count from t1; ERROR HY000: Numeric datatype is required for RANGE-type frame select count(*) over (order by a -range between current row and 'foo' following) +range between current row and 'foo' following) as count from t1; ERROR HY000: Numeric datatype is required for RANGE-type frame # Try range frame with invalid bounds select count(*) over (order by a -rows between 0.5 preceding and current row) +rows between 0.5 preceding and current row) as count from t1; ERROR HY000: Integer is required for ROWS-type frame select count(*) over (order by a -rows between current row and 3.14 following) +rows between current row and 3.14 following) as count from t1; ERROR HY000: Integer is required for ROWS-type frame # @@ -1284,29 +1282,27 @@ ERROR HY000: Integer is required for ROWS-type frame select count(*) over (order by a rows between 1 preceding and 1 following -exclude current row) +exclude current row) as count from t1; ERROR HY000: Frame exclusion is not supported yet select count(*) over (order by a range between 1 preceding and 1 following -exclude ties) +exclude ties) as count from t1; ERROR HY000: Frame exclusion is not supported yet select count(*) over (order by a range between 1 preceding and 1 following -exclude group) +exclude group) as count from t1; ERROR HY000: Frame exclusion is not supported yet select count(*) over (order by a rows between 1 preceding and 1 following -exclude no others) +exclude no others) as count from t1; -count(*) over (order by a -rows between 1 preceding and 1 following -exclude no others) +count 2 2 drop table t1; @@ -1626,10 +1622,10 @@ insert into t1 values # Check using counters flush status; select -rank() over (partition by c order by a), -rank() over (partition by c order by b) +rank() over (partition by c order by a) as rank_a, +rank() over (partition by c order by b) as rank_b from t1; -rank() over (partition by c order by a) rank() over (partition by c order by b) +rank_a rank_b 1 3 2 2 3 1 @@ -1642,10 +1638,10 @@ Sort_rows 6 Sort_scan 2 flush status; select -rank() over (partition by c order by a), -rank() over (partition by c order by a) +rank() over (partition by c order by a) as rank_a, +rank() over (partition by c order by a) as rank_b from t1; -rank() over (partition by c order by a) rank() over (partition by c order by a) +rank_a rank_b 1 1 2 2 3 3 @@ -1658,8 +1654,8 @@ Sort_rows 3 Sort_scan 1 explain format=json select -rank() over (partition by c order by a), -rank() over (partition by c order by a) +rank() over (partition by c order by a) as rank_a, +rank() over (partition by c order by a) as rank_b from t1; EXPLAIN { @@ -1722,8 +1718,8 @@ EXPLAIN } explain format=json select -rank() over (partition by c order by a), -count(*) over (partition by c) +rank() over (partition by c order by a) as rank_a, +count(*) over (partition by c) as count_c from t1; EXPLAIN { @@ -1754,8 +1750,8 @@ EXPLAIN } explain format=json select -count(*) over (partition by c), -rank() over (partition by c order by a) +count(*) over (partition by c) as count_c, +rank() over (partition by c order by a) as rank_a from t1; EXPLAIN { @@ -1896,18 +1892,18 @@ insert into t1 values (1, 3, 4); insert into t1 values (1, 4, 8); select pk, a, -sum(a) over (order by pk rows between 0 preceding and current row) +sum(a) over (order by pk rows between 0 preceding and current row) as sum from t1; -pk a sum(a) over (order by pk rows between 0 preceding and current row) +pk a sum 1 1 1 2 2 2 3 4 4 4 8 8 select pk, a, -sum(a) over (order by pk rows between 1 preceding and 0 preceding) +sum(a) over (order by pk rows between 1 preceding and 0 preceding) as sum from t1; -pk a sum(a) over (order by pk rows between 1 preceding and 0 preceding) +pk a sum 1 1 1 2 2 3 3 4 6 @@ -1918,9 +1914,9 @@ insert into t1 values (200, 3, 4); insert into t1 values (200, 4, 8); select part_id, pk, a, -sum(a) over (partition by part_id order by pk rows between 0 preceding and current row) +sum(a) over (partition by part_id order by pk rows between 0 preceding and current row) as sum from t1; -part_id pk a sum(a) over (partition by part_id order by pk rows between 0 preceding and current row) +part_id pk a sum 1 1 1 1 1 2 2 2 1 3 4 4 @@ -1931,9 +1927,9 @@ part_id pk a sum(a) over (partition by part_id order by pk rows between 0 preced 200 4 8 8 select part_id, pk, a, -sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding) +sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding) as sum from t1; -part_id pk a sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding) +part_id pk a sum 1 1 1 1 1 2 2 3 1 3 4 6 @@ -1958,8 +1954,8 @@ insert into t1 values (2000, 3), (2000, 3), (2000, 3); -select rank() over (partition by part_id order by a) from t1; -rank() over (partition by part_id order by a) +select rank() over (partition by part_id order by a) as rank from t1; +rank 1 2 2 @@ -1969,14 +1965,14 @@ rank() over (partition by part_id order by a) 3 3 3 -select distinct rank() over (partition by part_id order by a) from t1; -rank() over (partition by part_id order by a) +select distinct rank() over (partition by part_id order by a) as rank from t1; +rank 1 2 4 3 explain format=json -select distinct rank() over (partition by part_id order by a) from t1; +select distinct rank() over (partition by part_id order by a) as rank from t1; EXPLAIN { "query_block": { @@ -2062,11 +2058,8 @@ INSERT INTO `orders` VALUES (59940,238); SELECT o_custkey, avg(o_custkey) OVER (PARTITION BY abs(o_custkey) ORDER BY o_custkey RANGE BETWEEN 15 FOLLOWING -AND 15 FOLLOWING) from orders; -o_custkey avg(o_custkey) OVER (PARTITION BY abs(o_custkey) -ORDER BY o_custkey -RANGE BETWEEN 15 FOLLOWING -AND 15 FOLLOWING) +AND 15 FOLLOWING) as avg from orders; +o_custkey avg 238 NULL 242 NULL DROP table orders; @@ -2290,15 +2283,15 @@ a NULL NULL NULL -SELECT ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) from t; -ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) +SELECT ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) as result from t; +result 0.00000000000000 0.00000000000000 0.00000000000000 SELECT sum(t.a) over (partition by t.b order by a), -sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0)) +sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0)) as sum from t; -sum(t.a) over (partition by t.b order by a) sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0)) +sum(t.a) over (partition by t.b order by a) sum 0.0000000000 0 1.0000000000 1 3.0000000000 1.7320508075688772 @@ -2473,9 +2466,9 @@ INSERT INTO t1 VALUES (1,1000), (2,1100), (3,1800), (4,1500), (5,1700), (6,1200), (7,2000), (8,2100), (9,1600); SELECT id, sum(a) OVER (PARTITION BY id -ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as sum FROM t1; -id sum(a) OVER (PARTITION BY id +id sum 1 1000 2 1100 3 1800 @@ -2485,10 +2478,9 @@ id sum(a) OVER (PARTITION BY id 7 2000 8 2100 9 1600 -ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) -SELECT id, sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +SELECT id, sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as sum FROM t1; -id sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +id sum 1 14000 2 13000 3 5900 @@ -3223,8 +3215,8 @@ DROP TABLE t1; # CREATE TABLE t1 (c CHAR(8)) ENGINE=MyISAM; INSERT IGNORE INTO t1 VALUES ('foo'); -SELECT ('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1); -('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1) +SELECT ('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1) as result; +result 0 DROP TABLE t1; # @@ -3257,8 +3249,8 @@ DROP TABLE t1; # CREATE TABLE t1 (dt DATETIME); INSERT INTO t1 VALUES ('2017-05-17'); -SELECT MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) FROM t1; -MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) +SELECT MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) as result FROM t1; +result NULL DROP TABLE t1; # diff --git a/mysql-test/main/win.test b/mysql-test/main/win.test index c9467f4564b..d599221b68e 100644 --- a/mysql-test/main/win.test +++ b/mysql-test/main/win.test @@ -2,9 +2,6 @@ # Window Functions Tests # --source include/no_valgrind_without_big.inc -#remove this include after fix MDEV-27871, MDEV-27938 ---source include/no_view_protocol.inc - --source include/have_sequence.inc --disable_warnings @@ -694,7 +691,7 @@ select a, count(col1) over (order by a range between 0.1 preceding - and 0.1 following) + and 0.1 following) as count from t1; drop table t1; @@ -787,38 +784,38 @@ insert into t1 values (2,2,'bar'); --error ER_RANGE_FRAME_NEEDS_SIMPLE_ORDERBY select count(*) over (order by a,b - range between unbounded preceding and current row) + range between unbounded preceding and current row) as count from t1; --error ER_WRONG_TYPE_FOR_RANGE_FRAME select count(*) over (order by c - range between unbounded preceding and current row) + range between unbounded preceding and current row) as count from t1; --error ER_WRONG_TYPE_FOR_RANGE_FRAME select count(*) over (order by a - range between 'abcd' preceding and current row) + range between 'abcd' preceding and current row) as count from t1; --error ER_WRONG_TYPE_FOR_RANGE_FRAME select count(*) over (order by a - range between current row and 'foo' following) + range between current row and 'foo' following) as count from t1; --echo # Try range frame with invalid bounds --error ER_WRONG_TYPE_FOR_ROWS_FRAME select count(*) over (order by a - rows between 0.5 preceding and current row) + rows between 0.5 preceding and current row) as count from t1; --error ER_WRONG_TYPE_FOR_ROWS_FRAME select count(*) over (order by a - rows between current row and 3.14 following) + rows between current row and 3.14 following) as count from t1; --echo # @@ -829,28 +826,28 @@ from t1; select count(*) over (order by a rows between 1 preceding and 1 following - exclude current row) + exclude current row) as count from t1; --error ER_FRAME_EXCLUSION_NOT_SUPPORTED select count(*) over (order by a range between 1 preceding and 1 following - exclude ties) + exclude ties) as count from t1; --error ER_FRAME_EXCLUSION_NOT_SUPPORTED select count(*) over (order by a range between 1 preceding and 1 following - exclude group) + exclude group) as count from t1; # EXCLUDE NO OTHERS means 'don't exclude anything' select count(*) over (order by a rows between 1 preceding and 1 following - exclude no others) + exclude no others) as count from t1; drop table t1; @@ -1027,24 +1024,24 @@ insert into t1 values flush status; --sorted_result select - rank() over (partition by c order by a), - rank() over (partition by c order by b) + rank() over (partition by c order by a) as rank_a, + rank() over (partition by c order by b) as rank_b from t1; show status like '%sort%'; flush status; --sorted_result select - rank() over (partition by c order by a), - rank() over (partition by c order by a) + rank() over (partition by c order by a) as rank_a, + rank() over (partition by c order by a) as rank_b from t1; show status like '%sort%'; # Check using EXPLAIN FORMAT=JSON explain format=json select - rank() over (partition by c order by a), - rank() over (partition by c order by a) + rank() over (partition by c order by a) as rank_a, + rank() over (partition by c order by a) as rank_b from t1; explain format=json @@ -1055,14 +1052,14 @@ from t1; explain format=json select - rank() over (partition by c order by a), - count(*) over (partition by c) + rank() over (partition by c order by a) as rank_a, + count(*) over (partition by c) as count_c from t1; explain format=json select - count(*) over (partition by c), - rank() over (partition by c order by a) + count(*) over (partition by c) as count_c, + rank() over (partition by c order by a) as rank_a from t1; drop table t1; @@ -1137,12 +1134,12 @@ insert into t1 values (1, 4, 8); select pk, a, - sum(a) over (order by pk rows between 0 preceding and current row) + sum(a) over (order by pk rows between 0 preceding and current row) as sum from t1; select pk, a, - sum(a) over (order by pk rows between 1 preceding and 0 preceding) + sum(a) over (order by pk rows between 1 preceding and 0 preceding) as sum from t1; insert into t1 values (200, 1, 1); @@ -1151,12 +1148,12 @@ insert into t1 values (200, 3, 4); insert into t1 values (200, 4, 8); select part_id, pk, a, - sum(a) over (partition by part_id order by pk rows between 0 preceding and current row) + sum(a) over (partition by part_id order by pk rows between 0 preceding and current row) as sum from t1; select part_id, pk, a, - sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding) + sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding) as sum from t1; drop table t1; @@ -1177,10 +1174,10 @@ insert into t1 values (2000, 3), (2000, 3); -select rank() over (partition by part_id order by a) from t1; -select distinct rank() over (partition by part_id order by a) from t1; +select rank() over (partition by part_id order by a) as rank from t1; +select distinct rank() over (partition by part_id order by a) as rank from t1; explain format=json -select distinct rank() over (partition by part_id order by a) from t1; +select distinct rank() over (partition by part_id order by a) as rank from t1; drop table t1; @@ -1237,7 +1234,7 @@ INSERT INTO `orders` VALUES (59940,238); SELECT o_custkey, avg(o_custkey) OVER (PARTITION BY abs(o_custkey) ORDER BY o_custkey RANGE BETWEEN 15 FOLLOWING - AND 15 FOLLOWING) from orders; + AND 15 FOLLOWING) as avg from orders; DROP table orders; --echo # @@ -1374,9 +1371,9 @@ insert into t(a,b) values(1,1); insert into t(a,b) values(2,1); insert into t(a,b) values(0,1); SELECT (CASE WHEN sum(t.a) over (partition by t.b)=0 THEN null ELSE null END) AS a FROM t; -SELECT ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) from t; +SELECT ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) as result from t; SELECT sum(t.a) over (partition by t.b order by a), - sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0)) + sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0)) as sum from t; drop table t; @@ -1460,11 +1457,11 @@ INSERT INTO t1 VALUES --sorted_result SELECT id, sum(a) OVER (PARTITION BY id - ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) + ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as sum FROM t1; --sorted_result -SELECT id, sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +SELECT id, sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as sum FROM t1; DROP TABLE t1; @@ -1613,9 +1610,11 @@ select b, max(i+20) over (partition by b) as f from (select i+10 as i, b from t1) as tt order by i; +--disable_view_protocol select max(i), max(i), sum(i), count(i) from t1 as tt group by b; +--enable_view_protocol select max(i), min(sum(i)) over (partition by count(i)) f from t1 as tt @@ -1629,9 +1628,11 @@ select max(i+10), min(sum(i)+10) over (partition by count(i)) f from t1 as tt group by b; +--disable_view_protocol select max(i), max(i), sum(i), count(i) from (select i+10 as i, b from t1) as tt group by b; +--enable_view_protocol select max(i), min(sum(i)) over (partition by count(i)) f from (select i+10 as i, b from t1) as tt @@ -1946,7 +1947,7 @@ DROP TABLE t1; --echo # CREATE TABLE t1 (c CHAR(8)) ENGINE=MyISAM; INSERT IGNORE INTO t1 VALUES ('foo'); -SELECT ('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1); +SELECT ('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1) as result; DROP TABLE t1; --echo # @@ -1977,7 +1978,7 @@ DROP TABLE t1; CREATE TABLE t1 (dt DATETIME); INSERT INTO t1 VALUES ('2017-05-17'); -SELECT MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) FROM t1; +SELECT MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) as result FROM t1; DROP TABLE t1; --echo # @@ -2767,6 +2768,8 @@ FROM t1 GROUP BY nullif(id, 15532); drop table t1; +#Dublicate warnings +--disable_view_protocol CREATE TABLE t1 ( a char(25), b text); INSERT INTO t1 VALUES ('foo','bar'); @@ -2778,6 +2781,7 @@ GROUP BY LEFT((SYSDATE()), 'foo') WITH ROLLUP; drop table t1; +--enable_view_protocol --echo # --echo # @@ -2981,7 +2985,9 @@ CREATE FUNCTION f() RETURNS INT READS SQL DATA BEGIN END// DELIMITER ;// +--disable_view_protocol SELECT f(),f(); +--enable_view_protocol EXECUTE IMMEDIATE "SELECT LEAD(c1) OVER (ORDER BY c1) FROM t NATURAL JOIN t AS a;"; EXECUTE IMMEDIATE "SELECT SUM(c1) OVER (ORDER BY c1) FROM t NATURAL JOIN t AS a;"; diff --git a/mysql-test/main/win_avg.result b/mysql-test/main/win_avg.result index 7e539d933d8..aa6dda24bd8 100644 --- a/mysql-test/main/win_avg.result +++ b/mysql-test/main/win_avg.result @@ -32,9 +32,9 @@ insert into t1 values (125 , 6, 1, NULL), (126 , 6, 1, NULL), (127 , 6, 1, NULL); -select pk, a, b, avg(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +select pk, a, b, avg(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) as avg from t1; -pk a b avg(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +pk a b avg 101 0 10 10.0000 102 0 10 10.0000 103 1 10 10.0000 @@ -62,9 +62,9 @@ pk a b avg(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FO 125 6 1 1.0000 126 6 1 1.0000 127 6 1 1.0000 -select pk, a, c, avg(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +select pk, a, c, avg(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) as avg from t1; -pk a c avg(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +pk a c avg 101 0 1.1 1.6 102 0 2.1 1.6 103 1 3.1 3.5999999999999996 diff --git a/mysql-test/main/win_avg.test b/mysql-test/main/win_avg.test index 86edcce5679..36e03e083b3 100644 --- a/mysql-test/main/win_avg.test +++ b/mysql-test/main/win_avg.test @@ -35,14 +35,11 @@ insert into t1 values (126 , 6, 1, NULL), (127 , 6, 1, NULL); -#enable after fix MDEV-27871 ---disable_view_protocol --sorted_result -select pk, a, b, avg(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +select pk, a, b, avg(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) as avg from t1; --sorted_result -select pk, a, c, avg(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +select pk, a, c, avg(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) as avg from t1; ---enable_view_protocol drop table t1; diff --git a/mysql-test/main/win_big.result b/mysql-test/main/win_big.result index c8b27b9a1aa..a4b83b07f0a 100644 --- a/mysql-test/main/win_big.result +++ b/mysql-test/main/win_big.result @@ -19,10 +19,10 @@ sum(b) over (order by a rows between 2 preceding and 2 following) as SUM_B from t10; select variable_name, -case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; -variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +variable_name result SORT_MERGE_PASSES NO PASSES set sort_buffer_size=1024; flush status; @@ -32,10 +32,10 @@ sum(b) over (order by a rows between 2 preceding and 2 following) as SUM_B from t10; select variable_name, -case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; -variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +variable_name result SORT_MERGE_PASSES WITH PASSES include/diff_tables.inc [t21, t22] drop table t21, t22; @@ -51,10 +51,10 @@ sum(b) over (order by a rows between 20 preceding and 20 following) as SUM_B3 from t10; select variable_name, -case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; -variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +variable_name result SORT_MERGE_PASSES NO PASSES set sort_buffer_size=1024; flush status; @@ -66,10 +66,10 @@ sum(b) over (order by a rows between 20 preceding and 20 following) as SUM_B3 from t10; select variable_name, -case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; -variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +variable_name result SORT_MERGE_PASSES WITH PASSES include/diff_tables.inc [t21, t22] drop table t21, t22; @@ -85,10 +85,10 @@ sum(b) over (order by a range between 5000 preceding and 5000 following) as SUM_ from t10; select variable_name, -case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; -variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +variable_name result SORT_MERGE_PASSES NO PASSES set sort_buffer_size=1024; flush status; @@ -99,10 +99,10 @@ sum(b) over (order by a range between 5000 preceding and 5000 following) as SUM_ from t10; select variable_name, -case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; -variable_name case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end +variable_name result SORT_MERGE_PASSES WITH PASSES include/diff_tables.inc [t21, t22] drop table t21, t22; diff --git a/mysql-test/main/win_big.test b/mysql-test/main/win_big.test index e53eaa70291..9d37b689f4d 100644 --- a/mysql-test/main/win_big.test +++ b/mysql-test/main/win_big.test @@ -28,13 +28,10 @@ select sum(b) over (order by a rows between 2 preceding and 2 following) as SUM_B from t10; -#enable after fix MDEV-27871 ---disable_view_protocol select variable_name, - case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end + case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; ---enable_view_protocol set sort_buffer_size=1024; flush status; @@ -43,13 +40,10 @@ select sum(b) over (order by a rows between 2 preceding and 2 following) as SUM_B from t10; -#enable after fix MDEV-27871 ---disable_view_protocol select variable_name, - case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end + case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; ---enable_view_protocol let $diff_tables= t21, t22; source include/diff_tables.inc; @@ -66,13 +60,10 @@ select sum(b) over (order by a rows between 20 preceding and 20 following) as SUM_B3 from t10; -#enable after fix MDEV-27871 ---disable_view_protocol select variable_name, - case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end + case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; ---enable_view_protocol set sort_buffer_size=1024; flush status; @@ -83,13 +74,10 @@ select sum(b) over (order by a rows between 20 preceding and 20 following) as SUM_B3 from t10; -#enable after fix MDEV-27871 ---disable_view_protocol select variable_name, - case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end + case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; ---enable_view_protocol let $diff_tables= t21, t22; source include/diff_tables.inc; @@ -106,13 +94,10 @@ select sum(b) over (order by a range between 5000 preceding and 5000 following) as SUM_B1 from t10; -#enable after fix MDEV-27871 ---disable_view_protocol select variable_name, - case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end + case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; ---enable_view_protocol set sort_buffer_size=1024; flush status; @@ -122,13 +107,10 @@ select sum(b) over (order by a range between 5000 preceding and 5000 following) as SUM_B1 from t10; -#enable after fix MDEV-27871 ---disable_view_protocol select variable_name, - case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end + case when variable_value > 0 then 'WITH PASSES' else 'NO PASSES' end as result from information_schema.session_status where variable_name like 'Sort_merge_passes'; ---enable_view_protocol let $diff_tables= t21, t22; source include/diff_tables.inc; diff --git a/mysql-test/main/win_nth_value.result b/mysql-test/main/win_nth_value.result index abda1a2377f..ca58ad5daac 100644 --- a/mysql-test/main/win_nth_value.result +++ b/mysql-test/main/win_nth_value.result @@ -75,9 +75,9 @@ pk a nth_value(pk, pk) over (partition by a order by pk) nth_value(pk, a + 1) ov 11 2 NULL 9 select pk, a, -nth_value(pk, 1) over (partition by a order by pk ROWS between 1 preceding and 1 following) +nth_value(pk, 1) over (partition by a order by pk ROWS between 1 preceding and 1 following) as nth from t1; -pk a nth_value(pk, 1) over (partition by a order by pk ROWS between 1 preceding and 1 following) +pk a nth 1 0 1 2 0 1 3 0 2 @@ -91,21 +91,21 @@ pk a nth_value(pk, 1) over (partition by a order by pk ROWS between 1 preceding 11 2 10 select pk, a, -nth_value(a, 1) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 2) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 3) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 4) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 5) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 6) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 7) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 8) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 9) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 10) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 11) over (order by a RANGE BETWEEN 1 preceding and 1 following), -nth_value(a, 12) over (order by a RANGE BETWEEN 1 preceding and 1 following) +nth_value(a, 1) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth1, +nth_value(a, 2) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth2, +nth_value(a, 3) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth3, +nth_value(a, 4) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth4, +nth_value(a, 5) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth5, +nth_value(a, 6) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth6, +nth_value(a, 7) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth7, +nth_value(a, 8) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth8, +nth_value(a, 9) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth9, +nth_value(a, 10) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth10, +nth_value(a, 11) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth11, +nth_value(a, 12) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth12 from t1 order by pk asc; -pk a nth_value(a, 1) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 2) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 3) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 4) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 5) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 6) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 7) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 8) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 9) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 10) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 11) over (order by a RANGE BETWEEN 1 preceding and 1 following) nth_value(a, 12) over (order by a RANGE BETWEEN 1 preceding and 1 following) +pk a nth1 nth2 nth3 nth4 nth5 nth6 nth7 nth8 nth9 nth10 nth11 nth12 1 0 0 0 0 1 1 1 NULL NULL NULL NULL NULL NULL 2 0 0 0 0 1 1 1 NULL NULL NULL NULL NULL NULL 3 0 0 0 0 1 1 1 NULL NULL NULL NULL NULL NULL diff --git a/mysql-test/main/win_nth_value.test b/mysql-test/main/win_nth_value.test index 2d47677f65c..afee755680b 100644 --- a/mysql-test/main/win_nth_value.test +++ b/mysql-test/main/win_nth_value.test @@ -42,32 +42,26 @@ select pk, from t1 order by pk asc; -#enable after fix MDEV-27871 ---disable_view_protocol select pk, a, - nth_value(pk, 1) over (partition by a order by pk ROWS between 1 preceding and 1 following) + nth_value(pk, 1) over (partition by a order by pk ROWS between 1 preceding and 1 following) as nth from t1; ---enable_view_protocol -#enable after fix MDEV-28535 ---disable_view_protocol select pk, a, - nth_value(a, 1) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 2) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 3) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 4) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 5) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 6) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 7) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 8) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 9) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 10) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 11) over (order by a RANGE BETWEEN 1 preceding and 1 following), - nth_value(a, 12) over (order by a RANGE BETWEEN 1 preceding and 1 following) + nth_value(a, 1) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth1, + nth_value(a, 2) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth2, + nth_value(a, 3) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth3, + nth_value(a, 4) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth4, + nth_value(a, 5) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth5, + nth_value(a, 6) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth6, + nth_value(a, 7) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth7, + nth_value(a, 8) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth8, + nth_value(a, 9) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth9, + nth_value(a, 10) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth10, + nth_value(a, 11) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth11, + nth_value(a, 12) over (order by a RANGE BETWEEN 1 preceding and 1 following) as nth12 from t1 order by pk asc; ---enable_view_protocol drop table t1; diff --git a/mysql-test/main/win_ntile.result b/mysql-test/main/win_ntile.result index 4d02a230e13..e0e651c5ec2 100644 --- a/mysql-test/main/win_ntile.result +++ b/mysql-test/main/win_ntile.result @@ -396,9 +396,9 @@ select t1.a from t1 where pk = 13; a 1 select pk, a, b, -ntile((select a from t1 where pk=13)) over (partition by b order by pk) +ntile((select a from t1 where pk=13)) over (partition by b order by pk) as ntile from t1; -pk a b ntile((select a from t1 where pk=13)) over (partition by b order by pk) +pk a b ntile 11 0 10 1 12 0 10 1 13 1 10 1 @@ -411,7 +411,7 @@ pk a b ntile((select a from t1 where pk=13)) over (partition by b order by pk) 20 4 20 1 explain select pk, a, b, -ntile((select a from t1 where pk=13)) over (partition by b order by pk) +ntile((select a from t1 where pk=13)) over (partition by b order by pk) as ntile from t1; id select_type table type possible_keys key key_len ref rows Extra 1 PRIMARY t1 ALL NULL NULL NULL NULL 10 Using temporary diff --git a/mysql-test/main/win_ntile.test b/mysql-test/main/win_ntile.test index c508b1627ad..7866f9586a1 100644 --- a/mysql-test/main/win_ntile.test +++ b/mysql-test/main/win_ntile.test @@ -152,17 +152,14 @@ select pk, a, b, from t1; select t1.a from t1 where pk = 13; -#enable after fix MDEV-27871 ---disable_view_protocol select pk, a, b, - ntile((select a from t1 where pk=13)) over (partition by b order by pk) + ntile((select a from t1 where pk=13)) over (partition by b order by pk) as ntile from t1; explain select pk, a, b, - ntile((select a from t1 where pk=13)) over (partition by b order by pk) + ntile((select a from t1 where pk=13)) over (partition by b order by pk) as ntile from t1; ---enable_view_protocol select a from t1; --error ER_SUBQUERY_NO_1_ROW diff --git a/mysql-test/main/win_percentile.result b/mysql-test/main/win_percentile.result index 65788c21e78..e2eea784d81 100644 --- a/mysql-test/main/win_percentile.result +++ b/mysql-test/main/win_percentile.result @@ -96,10 +96,10 @@ Kaolin Tata Tatiana #disallowed fields in order by -select score, percentile_cont(0.5) within group(order by name) over (partition by score) from t1; +select score, percentile_cont(0.5) within group(order by name) over (partition by score) as result from t1; ERROR HY000: Numeric datatype is required for percentile_cont function -select score, percentile_disc(0.5) within group(order by name) over (partition by score) from t1; -score percentile_disc(0.5) within group(order by name) over (partition by score) +select score, percentile_disc(0.5) within group(order by name) over (partition by score) as result from t1; +score result 3.0000 Chun 3.0000 Chun 4.0000 Tata diff --git a/mysql-test/main/win_percentile.test b/mysql-test/main/win_percentile.test index 9626caffc54..fb93be11ab6 100644 --- a/mysql-test/main/win_percentile.test +++ b/mysql-test/main/win_percentile.test @@ -62,12 +62,9 @@ select name from t1 a where (select percentile_disc(0.5) within group (order by --echo #disallowed fields in order by --error ER_WRONG_TYPE_FOR_PERCENTILE_FUNC -select score, percentile_cont(0.5) within group(order by name) over (partition by score) from t1; +select score, percentile_cont(0.5) within group(order by name) over (partition by score) as result from t1; -#enable after fix MDEV-27871 ---disable_view_protocol -select score, percentile_disc(0.5) within group(order by name) over (partition by score) from t1; ---enable_view_protocol +select score, percentile_disc(0.5) within group(order by name) over (partition by score) as result from t1; --echo #parameter value should be in the range of [0,1] --error ER_ARGUMENT_OUT_OF_RANGE diff --git a/mysql-test/main/win_sum.result b/mysql-test/main/win_sum.result index 71d87bd6eca..a17c17845af 100644 --- a/mysql-test/main/win_sum.result +++ b/mysql-test/main/win_sum.result @@ -32,9 +32,9 @@ insert into t1 values (125 , 6, 1, NULL), (126 , 6, 1, NULL), (127 , 6, 1, NULL); -select pk, a, b, sum(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +select pk, a, b, sum(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) as sum from t1; -pk a b sum(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +pk a b sum 101 0 10 20 102 0 10 20 103 1 10 20 @@ -62,9 +62,9 @@ pk a b sum(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FO 125 6 1 3 126 6 1 3 127 6 1 2 -select pk, a, c, sum(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +select pk, a, c, sum(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) as sum from t1; -pk a c sum(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +pk a c sum 101 0 1.1 3.2 102 0 2.1 3.2 103 1 3.1 7.199999999999999 diff --git a/mysql-test/main/win_sum.test b/mysql-test/main/win_sum.test index d76ec4d6d24..9800174f54c 100644 --- a/mysql-test/main/win_sum.test +++ b/mysql-test/main/win_sum.test @@ -35,17 +35,13 @@ insert into t1 values (126 , 6, 1, NULL), (127 , 6, 1, NULL); -#enable after fix MDEV-27871 ---disable_view_protocol - --sorted_result -select pk, a, b, sum(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +select pk, a, b, sum(b) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) as sum from t1; --sorted_result -select pk, a, c, sum(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) +select pk, a, c, sum(c) over (partition by a order by pk ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) as sum from t1; ---enable_view_protocol drop table t1; diff --git a/mysql-test/main/xml.result b/mysql-test/main/xml.result index d0acb0debf3..d0b1d1782a1 100644 --- a/mysql-test/main/xml.result +++ b/mysql-test/main/xml.result @@ -410,17 +410,17 @@ b1 b2 select extractValue('','/a/@b[2<=position()]'); extractValue('','/a/@b[2<=position()]') b2 b3 -select extractValue('','/a/@b[position()=3 or position()=2]'); -extractValue('','/a/@b[position()=3 or position()=2]') +select extractValue('','/a/@b[position()=3 or position()=2]') as xml; +xml b2 b3 -SELECT extractValue('aa1c1a2','/a/b[count(c)=0]'); -extractValue('aa1c1a2','/a/b[count(c)=0]') +SELECT extractValue('aa1c1a2','/a/b[count(c)=0]') as xml; +xml a2 -SELECT extractValue('aa1c1a2','/a/b[count(c)=1]'); -extractValue('aa1c1a2','/a/b[count(c)=1]') +SELECT extractValue('aa1c1a2','/a/b[count(c)=1]') as xml; +xml a1 -select extractValue('a1b1b24','/a/b[sum(@ba)=3]'); -extractValue('a1b1b24','/a/b[sum(@ba)=3]') +select extractValue('a1b1b24','/a/b[sum(@ba)=3]') as xml; +xml b1 select extractValue('b1b2','/a/b[1]'); extractValue('b1b2','/a/b[1]') @@ -506,14 +506,14 @@ select extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")][2]'); extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")][2]') b21 SET @xml='a1b1c1b2a2'; -select UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++'); -UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++') +select UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++') as xml; +xml a1b1+++++++++b2a2 -select UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++'); -UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++') +select UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++') as xml; +xml a1b1+++++++++b2a2 -select UpdateXML('a1b1c1b2a2','/a/b/c',''); -UpdateXML('a1b1c1b2a2','/a/b/c','') +select UpdateXML('a1b1c1b2a2','/a/b/c','') as xml; +xml a1b1b2a2 SET @xml='bb'; select UpdateXML(@xml, '/a/b', 'ccc'); @@ -586,59 +586,59 @@ B C select extractvalue('ABC','/a/self::*'); extractvalue('ABC','/a/self::*') A -select extractvalue('ABC','/a/descendant-or-self::*'); -extractvalue('ABC','/a/descendant-or-self::*') +select extractvalue('ABC','/a/descendant-or-self::*') as xml; +xml A B C select extractvalue('A','/A_B'); extractvalue('A','/A_B') A -select extractvalue('AB1B2','/a/b[position()]'); -extractvalue('AB1B2','/a/b[position()]') +select extractvalue('AB1B2','/a/b[position()]') as xml; +xml B1 B2 -select extractvalue('AB1B2','/a/b[count(.)=last()]'); -extractvalue('AB1B2','/a/b[count(.)=last()]') +select extractvalue('AB1B2','/a/b[count(.)=last()]') as xml; +xml B1 B2 -select extractvalue('AB1B2','/a/b[last()]'); -extractvalue('AB1B2','/a/b[last()]') +select extractvalue('AB1B2','/a/b[last()]') as xml; +xml B2 -select extractvalue('AB1B2','/a/b[last()-1]'); -extractvalue('AB1B2','/a/b[last()-1]') +select extractvalue('AB1B2','/a/b[last()-1]') as xml; +xml B1 -select extractvalue('AB1B2','/a/b[last()=1]'); -extractvalue('AB1B2','/a/b[last()=1]') +select extractvalue('AB1B2','/a/b[last()=1]') as xml; +xml -select extractvalue('AB1B2','/a/b[last()=2]'); -extractvalue('AB1B2','/a/b[last()=2]') +select extractvalue('AB1B2','/a/b[last()=2]') as xml; +xml B1 B2 -select extractvalue('AB1B2','/a/b[last()=position()]'); -extractvalue('AB1B2','/a/b[last()=position()]') +select extractvalue('AB1B2','/a/b[last()=position()]') as xml; +xml B2 -select extractvalue('AB1B2','/a/b[count(.)]'); -extractvalue('AB1B2','/a/b[count(.)]') +select extractvalue('AB1B2','/a/b[count(.)]') as xml; +xml B2 -select extractvalue('AB1B2','/a/b[count(.)-1]'); -extractvalue('AB1B2','/a/b[count(.)-1]') +select extractvalue('AB1B2','/a/b[count(.)-1]') as xml; +xml B1 -select extractvalue('AB1B2','/a/b[count(.)=1]'); -extractvalue('AB1B2','/a/b[count(.)=1]') +select extractvalue('AB1B2','/a/b[count(.)=1]') as xml; +xml -select extractvalue('AB1B2','/a/b[count(.)=2]'); -extractvalue('AB1B2','/a/b[count(.)=2]') +select extractvalue('AB1B2','/a/b[count(.)=2]') as xml; +xml B1 B2 -select extractvalue('AB1B2','/a/b[count(.)=position()]'); -extractvalue('AB1B2','/a/b[count(.)=position()]') +select extractvalue('AB1B2','/a/b[count(.)=position()]') as xml; +xml B2 -select extractvalue('Jack','/a[contains(../a,"J")]'); -extractvalue('Jack','/a[contains(../a,"J")]') +select extractvalue('Jack','/a[contains(../a,"J")]') as xml; +xml Jack -select extractvalue('Jack','/a[contains(../a,"j")]'); -extractvalue('Jack','/a[contains(../a,"j")]') +select extractvalue('Jack','/a[contains(../a,"j")]') as xml; +xml Jack -select extractvalue('Jack','/a[contains(../a,"j")]' collate latin1_bin); -extractvalue('Jack','/a[contains(../a,"j")]' collate latin1_bin) +select extractvalue('Jack','/a[contains(../a,"j")]' collate latin1_bin) as xml; +xml -select extractvalue('Jack' collate latin1_bin,'/a[contains(../a,"j")]'); -extractvalue('Jack' collate latin1_bin,'/a[contains(../a,"j")]') +select extractvalue('Jack' collate latin1_bin,'/a[contains(../a,"j")]') as xml; +xml select ExtractValue('','/tag1'); ExtractValue('','/tag1') @@ -702,25 +702,25 @@ CALL p2(); EXTRACTVALUE(p,'/Ñ/r') A DROP PROCEDURE p2; -select extractValue('','count(ns:element)'); -extractValue('','count(ns:element)') +select extractValue('','count(ns:element)') as xml; +xml 1 -select extractValue('a','/ns:element'); -extractValue('a','/ns:element') +select extractValue('a','/ns:element') as xml; +xml a -select extractValue('a','/ns:element/@xmlns:ns'); -extractValue('a','/ns:element/@xmlns:ns') +select extractValue('a','/ns:element/@xmlns:ns') as xml; +xml myns -select extractValue('DataOtherdata','/foo/foo.bar'); -extractValue('DataOtherdata','/foo/foo.bar') +select extractValue('DataOtherdata','/foo/foo.bar') as xml; +xml Data -select extractValue('DataOtherdata','/foo/something'); -extractValue('DataOtherdata','/foo/something') +select extractValue('DataOtherdata','/foo/something') as xml; +xml Otherdata -select extractValue('<01>10:39:15<02>140','/zot/tim0/02'); +select extractValue('<01>10:39:15<02>140','/zot/tim0/02') as xml; ERROR HY000: XPATH syntax error: '02' -select extractValue('<01>10:39:15<02>140','//*'); -extractValue('<01>10:39:15<02>140','//*') +select extractValue('<01>10:39:15<02>140','//*') as xml; +xml NULL Warnings: Warning 1525 Incorrect XML value: 'parse error at line 1 pos 13: unknown token unexpected (ident or '/' wanted)' @@ -816,17 +816,17 @@ ExtractValue(@xml, "/entry[(50test','/a/b/Text'); -ExtractValue('test','/a/b/Text') +select ExtractValue('test','/a/b/Text') as xml; +xml test -select ExtractValue('test','/a/b/comment'); -ExtractValue('test','/a/b/comment') +select ExtractValue('test','/a/b/comment') as xml; +xml test -select ExtractValue('test','/a/b/node'); -ExtractValue('test','/a/b/node') +select ExtractValue('test','/a/b/node') as xml; +xml test -select ExtractValue('test','/a/b/processing-instruction'); -ExtractValue('test','/a/b/processing-instruction') +select ExtractValue('test','/a/b/processing-instruction') as xml; +xml test select ExtractValue('test', '/a/and'); ExtractValue('test', '/a/and') @@ -852,44 +852,44 @@ test select ExtractValue('test', '/a/div:div'); ExtractValue('test', '/a/div:div') test -select ExtractValue('test', '/a/ancestor'); -ExtractValue('test', '/a/ancestor') +select ExtractValue('test', '/a/ancestor') as xml; +xml test -select ExtractValue('test', '/a/ancestor-or-self'); -ExtractValue('test', '/a/ancestor-or-self') +select ExtractValue('test', '/a/ancestor-or-self') as xml; +xml test -select ExtractValue('test', '/a/attribute'); -ExtractValue('test', '/a/attribute') +select ExtractValue('test', '/a/attribute') as xml; +xml test -select ExtractValue('test', '/a/child'); -ExtractValue('test', '/a/child') +select ExtractValue('test', '/a/child') as xml; +xml test -select ExtractValue('test', '/a/descendant'); -ExtractValue('test', '/a/descendant') +select ExtractValue('test', '/a/descendant') as xml; +xml test -select ExtractValue('test', '/a/descendant-or-self'); -ExtractValue('test', '/a/descendant-or-self') +select ExtractValue('test', '/a/descendant-or-self') as xml; +xml test -select ExtractValue('test', '/a/following'); -ExtractValue('test', '/a/following') +select ExtractValue('test', '/a/following') as xml; +xml test -select ExtractValue('test', '/a/following-sibling'); -ExtractValue('test', '/a/following-sibling') +select ExtractValue('test', '/a/following-sibling') as xml; +xml test -select ExtractValue('test', '/a/namespace'); -ExtractValue('test', '/a/namespace') +select ExtractValue('test', '/a/namespace') as xml; +xml test -select ExtractValue('test', '/a/parent'); -ExtractValue('test', '/a/parent') +select ExtractValue('test', '/a/parent') as xml; +xml test -select ExtractValue('test', '/a/preceding'); -ExtractValue('test', '/a/preceding') +select ExtractValue('test', '/a/preceding') as xml; +xml test -select ExtractValue('test', '/a/preceding-sibling'); -ExtractValue('test', '/a/preceding-sibling') +select ExtractValue('test', '/a/preceding-sibling') as xml; +xml test -select ExtractValue('test', '/a/self'); -ExtractValue('test', '/a/self') +select ExtractValue('test', '/a/self') as xml; +xml test set @i=1; select ExtractValue('b1b2','/a/b[$@i]'); @@ -1181,8 +1181,8 @@ UPDATEXML('x','(a)//a','') SELECT ExtractValue('aabb','(a)/a|(a)/b'); ExtractValue('aabb','(a)/a|(a)/b') aa bb -SELECT ExtractValue('abc21','substring(/a/b,..)'); -ExtractValue('abc21','substring(/a/b,..)') +SELECT ExtractValue('abc21','substring(/a/b,..)') as xml; +xml Warnings: Warning 1292 Truncated incorrect INTEGER value: '' diff --git a/mysql-test/main/xml.test b/mysql-test/main/xml.test index f042c4371ce..2d0dd9907bb 100644 --- a/mysql-test/main/xml.test +++ b/mysql-test/main/xml.test @@ -166,14 +166,11 @@ select extractValue('','/a/@b[2=position()]'); select extractValue('','/a/@b[3=position()]'); select extractValue('','/a/@b[2>=position()]'); select extractValue('','/a/@b[2<=position()]'); -#enable after fix MDEV-27871 ---disable_view_protocol -select extractValue('','/a/@b[position()=3 or position()=2]'); +select extractValue('','/a/@b[position()=3 or position()=2]') as xml; -SELECT extractValue('aa1c1a2','/a/b[count(c)=0]'); -SELECT extractValue('aa1c1a2','/a/b[count(c)=1]'); -select extractValue('a1b1b24','/a/b[sum(@ba)=3]'); ---enable_view_protocol +SELECT extractValue('aa1c1a2','/a/b[count(c)=0]') as xml; +SELECT extractValue('aa1c1a2','/a/b[count(c)=1]') as xml; +select extractValue('a1b1b24','/a/b[sum(@ba)=3]') as xml; select extractValue('b1b2','/a/b[1]'); select extractValue('b1b2','/a/b[boolean(1)]'); @@ -216,12 +213,9 @@ select extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")]'); select extractValue(@xml,'/a/@b[contains(.,"1")][contains(.,"2")][2]'); SET @xml='a1b1c1b2a2'; -#enable after fix MDEV-27871 ---disable_view_protocol -select UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++'); -select UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++'); ---enable_view_protocol -select UpdateXML('a1b1c1b2a2','/a/b/c',''); +select UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++') as xml; +select UpdateXML('a1b1c1b2a2','/a/b/c','+++++++++') as xml; +select UpdateXML('a1b1c1b2a2','/a/b/c','') as xml; SET @xml='bb'; select UpdateXML(@xml, '/a/b', 'ccc'); @@ -277,10 +271,7 @@ select extractvalue('bb!','//b!'); # select extractvalue('ABC','/a/descendant::*'); select extractvalue('ABC','/a/self::*'); -#enable after fix MDEV-27871 ---disable_view_protocol -select extractvalue('ABC','/a/descendant-or-self::*'); ---enable_view_protocol +select extractvalue('ABC','/a/descendant-or-self::*') as xml; # Bug #16320 XML: extractvalue() won't accept names containing underscores # select extractvalue('A','/A_B'); @@ -288,37 +279,26 @@ select extractvalue('A','/A_B'); # # Bug#16318: XML: extractvalue() incorrectly returns last() = 1 # -select extractvalue('AB1B2','/a/b[position()]'); -#enable after fix MDEV-27871 ---disable_view_protocol -select extractvalue('AB1B2','/a/b[count(.)=last()]'); ---enable_view_protocol -select extractvalue('AB1B2','/a/b[last()]'); -select extractvalue('AB1B2','/a/b[last()-1]'); -select extractvalue('AB1B2','/a/b[last()=1]'); -select extractvalue('AB1B2','/a/b[last()=2]'); -#enable after fix MDEV-27871 ---disable_view_protocol -select extractvalue('AB1B2','/a/b[last()=position()]'); ---enable_view_protocol -select extractvalue('AB1B2','/a/b[count(.)]'); -select extractvalue('AB1B2','/a/b[count(.)-1]'); -select extractvalue('AB1B2','/a/b[count(.)=1]'); -select extractvalue('AB1B2','/a/b[count(.)=2]'); -#enable after fix MDEV-27871 ---disable_view_protocol -select extractvalue('AB1B2','/a/b[count(.)=position()]'); ---enable_view_protocol +select extractvalue('AB1B2','/a/b[position()]') as xml; +select extractvalue('AB1B2','/a/b[count(.)=last()]') as xml; +select extractvalue('AB1B2','/a/b[last()]') as xml; +select extractvalue('AB1B2','/a/b[last()-1]') as xml; +select extractvalue('AB1B2','/a/b[last()=1]') as xml; +select extractvalue('AB1B2','/a/b[last()=2]') as xml; +select extractvalue('AB1B2','/a/b[last()=position()]') as xml; +select extractvalue('AB1B2','/a/b[count(.)]') as xml; +select extractvalue('AB1B2','/a/b[count(.)-1]') as xml; +select extractvalue('AB1B2','/a/b[count(.)=1]') as xml; +select extractvalue('AB1B2','/a/b[count(.)=2]') as xml; +select extractvalue('AB1B2','/a/b[count(.)=position()]') as xml; + # # Bug#16316: XML: extractvalue() is case-sensitive with contains() # -select extractvalue('Jack','/a[contains(../a,"J")]'); -select extractvalue('Jack','/a[contains(../a,"j")]'); -#enable after fix MDEV-27871 ---disable_view_protocol -select extractvalue('Jack','/a[contains(../a,"j")]' collate latin1_bin); -select extractvalue('Jack' collate latin1_bin,'/a[contains(../a,"j")]'); ---enable_view_protocol +select extractvalue('Jack','/a[contains(../a,"J")]') as xml; +select extractvalue('Jack','/a[contains(../a,"j")]') as xml; +select extractvalue('Jack','/a[contains(../a,"j")]' collate latin1_bin) as xml; +select extractvalue('Jack' collate latin1_bin,'/a[contains(../a,"j")]') as xml; # # Bug#18285: ExtractValue not returning character @@ -383,33 +363,25 @@ DROP PROCEDURE p2; # Bug#18170: XML: ExtractValue(): # XPath expression can't use QNames (colon in names) # -#enable after fix MDEV-27871 ---disable_view_protocol -select extractValue('','count(ns:element)'); -select extractValue('a','/ns:element'); -select extractValue('a','/ns:element/@xmlns:ns'); ---enable_view_protocol +select extractValue('','count(ns:element)') as xml; +select extractValue('a','/ns:element') as xml; +select extractValue('a','/ns:element/@xmlns:ns') as xml; + # # Bug#20795 extractvalue() won't accept names containing a dot (.) # -#enable after fix MDEV-27871 ---disable_view_protocol -select extractValue('DataOtherdata','/foo/foo.bar'); -select extractValue('DataOtherdata','/foo/something'); ---enable_view_protocol +select extractValue('DataOtherdata','/foo/foo.bar') as xml; +select extractValue('DataOtherdata','/foo/something') as xml; # # Bug#20854 XML functions: wrong result in ExtractValue # -#enable after fix MDEV-27871 ---disable_view_protocol ---error 1105 -select extractValue('<01>10:39:15<02>140','/zot/tim0/02'); -select extractValue('<01>10:39:15<02>140','//*'); ---enable_view_protocol - #view protocol generates additional warning --disable_view_protocol +--error 1105 +select extractValue('<01>10:39:15<02>140','/zot/tim0/02') as xml; +select extractValue('<01>10:39:15<02>140','//*') as xml; + # dot and dash are bad identtifier start character select extractValue('<.>test','//*'); select extractValue('<->test','//*'); @@ -457,13 +429,10 @@ select ExtractValue(@xml, "/entry[(50<=pt)]/id"); # # Test nodetypes in node name context # -select ExtractValue('test','/a/b/Text'); -#enable after fix MDEV-27871 ---disable_view_protocol -select ExtractValue('test','/a/b/comment'); -select ExtractValue('test','/a/b/node'); -select ExtractValue('test','/a/b/processing-instruction'); ---enable_view_protocol +select ExtractValue('test','/a/b/Text') as xml; +select ExtractValue('test','/a/b/comment') as xml; +select ExtractValue('test','/a/b/node') as xml; +select ExtractValue('test','/a/b/processing-instruction') as xml; # # Test keywords in node name contexts @@ -479,22 +448,19 @@ select ExtractValue('test', '/a/div:div'); # # Test axis names in node name context # -select ExtractValue('test', '/a/ancestor'); -#enable after fix MDEV-27871 ---disable_view_protocol -select ExtractValue('test', '/a/ancestor-or-self'); -select ExtractValue('test', '/a/attribute'); -select ExtractValue('test', '/a/child'); -select ExtractValue('test', '/a/descendant'); -select ExtractValue('test', '/a/descendant-or-self'); -select ExtractValue('test', '/a/following'); -select ExtractValue('test', '/a/following-sibling'); -select ExtractValue('test', '/a/namespace'); -select ExtractValue('test', '/a/parent'); -select ExtractValue('test', '/a/preceding'); -select ExtractValue('test', '/a/preceding-sibling'); ---enable_view_protocol -select ExtractValue('test', '/a/self'); +select ExtractValue('test', '/a/ancestor') as xml; +select ExtractValue('test', '/a/ancestor-or-self') as xml; +select ExtractValue('test', '/a/attribute') as xml; +select ExtractValue('test', '/a/child') as xml; +select ExtractValue('test', '/a/descendant') as xml; +select ExtractValue('test', '/a/descendant-or-self') as xml; +select ExtractValue('test', '/a/following') as xml; +select ExtractValue('test', '/a/following-sibling') as xml; +select ExtractValue('test', '/a/namespace') as xml; +select ExtractValue('test', '/a/parent') as xml; +select ExtractValue('test', '/a/preceding') as xml; +select ExtractValue('test', '/a/preceding-sibling') as xml; +select ExtractValue('test', '/a/self') as xml; # # Bug#26518 XPath and variables problem @@ -751,10 +717,7 @@ SELECT ExtractValue('aabb','(a)/a|(a)/b'); # MDEV-5689 ExtractValue(xml, 'substring(/x,/y)') crashes # MySQL bug#12428404 MYSQLD.EXE CRASHES WHEN EXTRACTVALUE() IS CALLED WITH MALFORMED XPATH EXP # -#enable after fix MDEV-27871 ---disable_view_protocol -SELECT ExtractValue('abc21','substring(/a/b,..)'); ---enable_view_protocol +SELECT ExtractValue('abc21','substring(/a/b,..)') as xml; --echo # --echo # Bug#62429 XML: ExtractValue, UpdateXML max arg length 127 chars diff --git a/mysql-test/suite/encryption/r/tempfiles_encrypted.result b/mysql-test/suite/encryption/r/tempfiles_encrypted.result index e47443eaa21..87e0d8542a3 100644 --- a/mysql-test/suite/encryption/r/tempfiles_encrypted.result +++ b/mysql-test/suite/encryption/r/tempfiles_encrypted.result @@ -1105,11 +1105,9 @@ select a, count(col1) over (order by a range between 0.1 preceding -and 0.1 following) +and 0.1 following) as count from t1; -a count(col1) over (order by a -range between 0.1 preceding -and 0.1 following) +a count 0.450 3 0.500 3 0.550 3 @@ -1255,33 +1253,33 @@ insert into t1 values (1,1,'foo'); insert into t1 values (2,2,'bar'); select count(*) over (order by a,b -range between unbounded preceding and current row) +range between unbounded preceding and current row) as count from t1; ERROR HY000: RANGE-type frame requires ORDER BY clause with single sort key select count(*) over (order by c -range between unbounded preceding and current row) +range between unbounded preceding and current row) as count from t1; ERROR HY000: Numeric datatype is required for RANGE-type frame select count(*) over (order by a -range between 'abcd' preceding and current row) +range between 'abcd' preceding and current row) as count from t1; ERROR HY000: Numeric datatype is required for RANGE-type frame select count(*) over (order by a -range between current row and 'foo' following) +range between current row and 'foo' following) as count from t1; ERROR HY000: Numeric datatype is required for RANGE-type frame # Try range frame with invalid bounds select count(*) over (order by a -rows between 0.5 preceding and current row) +rows between 0.5 preceding and current row) as count from t1; ERROR HY000: Integer is required for ROWS-type frame select count(*) over (order by a -rows between current row and 3.14 following) +rows between current row and 3.14 following) as count from t1; ERROR HY000: Integer is required for ROWS-type frame # @@ -1290,29 +1288,27 @@ ERROR HY000: Integer is required for ROWS-type frame select count(*) over (order by a rows between 1 preceding and 1 following -exclude current row) +exclude current row) as count from t1; ERROR HY000: Frame exclusion is not supported yet select count(*) over (order by a range between 1 preceding and 1 following -exclude ties) +exclude ties) as count from t1; ERROR HY000: Frame exclusion is not supported yet select count(*) over (order by a range between 1 preceding and 1 following -exclude group) +exclude group) as count from t1; ERROR HY000: Frame exclusion is not supported yet select count(*) over (order by a rows between 1 preceding and 1 following -exclude no others) +exclude no others) as count from t1; -count(*) over (order by a -rows between 1 preceding and 1 following -exclude no others) +count 2 2 drop table t1; @@ -1632,10 +1628,10 @@ insert into t1 values # Check using counters flush status; select -rank() over (partition by c order by a), -rank() over (partition by c order by b) +rank() over (partition by c order by a) as rank_a, +rank() over (partition by c order by b) as rank_b from t1; -rank() over (partition by c order by a) rank() over (partition by c order by b) +rank_a rank_b 1 3 2 2 3 1 @@ -1648,10 +1644,10 @@ Sort_rows 6 Sort_scan 2 flush status; select -rank() over (partition by c order by a), -rank() over (partition by c order by a) +rank() over (partition by c order by a) as rank_a, +rank() over (partition by c order by a) as rank_b from t1; -rank() over (partition by c order by a) rank() over (partition by c order by a) +rank_a rank_b 1 1 2 2 3 3 @@ -1664,8 +1660,8 @@ Sort_rows 3 Sort_scan 1 explain format=json select -rank() over (partition by c order by a), -rank() over (partition by c order by a) +rank() over (partition by c order by a) as rank_a, +rank() over (partition by c order by a) as rank_b from t1; EXPLAIN { @@ -1728,8 +1724,8 @@ EXPLAIN } explain format=json select -rank() over (partition by c order by a), -count(*) over (partition by c) +rank() over (partition by c order by a) as rank_a, +count(*) over (partition by c) as count_c from t1; EXPLAIN { @@ -1760,8 +1756,8 @@ EXPLAIN } explain format=json select -count(*) over (partition by c), -rank() over (partition by c order by a) +count(*) over (partition by c) as count_c, +rank() over (partition by c order by a) as rank_a from t1; EXPLAIN { @@ -1902,18 +1898,18 @@ insert into t1 values (1, 3, 4); insert into t1 values (1, 4, 8); select pk, a, -sum(a) over (order by pk rows between 0 preceding and current row) +sum(a) over (order by pk rows between 0 preceding and current row) as sum from t1; -pk a sum(a) over (order by pk rows between 0 preceding and current row) +pk a sum 1 1 1 2 2 2 3 4 4 4 8 8 select pk, a, -sum(a) over (order by pk rows between 1 preceding and 0 preceding) +sum(a) over (order by pk rows between 1 preceding and 0 preceding) as sum from t1; -pk a sum(a) over (order by pk rows between 1 preceding and 0 preceding) +pk a sum 1 1 1 2 2 3 3 4 6 @@ -1924,9 +1920,9 @@ insert into t1 values (200, 3, 4); insert into t1 values (200, 4, 8); select part_id, pk, a, -sum(a) over (partition by part_id order by pk rows between 0 preceding and current row) +sum(a) over (partition by part_id order by pk rows between 0 preceding and current row) as sum from t1; -part_id pk a sum(a) over (partition by part_id order by pk rows between 0 preceding and current row) +part_id pk a sum 1 1 1 1 1 2 2 2 1 3 4 4 @@ -1937,9 +1933,9 @@ part_id pk a sum(a) over (partition by part_id order by pk rows between 0 preced 200 4 8 8 select part_id, pk, a, -sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding) +sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding) as sum from t1; -part_id pk a sum(a) over (partition by part_id order by pk rows between 1 preceding and 0 preceding) +part_id pk a sum 1 1 1 1 1 2 2 3 1 3 4 6 @@ -1964,8 +1960,8 @@ insert into t1 values (2000, 3), (2000, 3), (2000, 3); -select rank() over (partition by part_id order by a) from t1; -rank() over (partition by part_id order by a) +select rank() over (partition by part_id order by a) as rank from t1; +rank 1 2 2 @@ -1975,14 +1971,14 @@ rank() over (partition by part_id order by a) 3 3 3 -select distinct rank() over (partition by part_id order by a) from t1; -rank() over (partition by part_id order by a) +select distinct rank() over (partition by part_id order by a) as rank from t1; +rank 1 2 4 3 explain format=json -select distinct rank() over (partition by part_id order by a) from t1; +select distinct rank() over (partition by part_id order by a) as rank from t1; EXPLAIN { "query_block": { @@ -2068,11 +2064,8 @@ INSERT INTO `orders` VALUES (59940,238); SELECT o_custkey, avg(o_custkey) OVER (PARTITION BY abs(o_custkey) ORDER BY o_custkey RANGE BETWEEN 15 FOLLOWING -AND 15 FOLLOWING) from orders; -o_custkey avg(o_custkey) OVER (PARTITION BY abs(o_custkey) -ORDER BY o_custkey -RANGE BETWEEN 15 FOLLOWING -AND 15 FOLLOWING) +AND 15 FOLLOWING) as avg from orders; +o_custkey avg 238 NULL 242 NULL DROP table orders; @@ -2296,15 +2289,15 @@ a NULL NULL NULL -SELECT ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) from t; -ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) +SELECT ifnull(((t.a) / CASE WHEN sum(t.a) over(partition by t.b) =0 then null else null end) ,0) as result from t; +result 0.00000000000000 0.00000000000000 0.00000000000000 SELECT sum(t.a) over (partition by t.b order by a), -sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0)) +sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0)) as sum from t; -sum(t.a) over (partition by t.b order by a) sqrt(ifnull((sum(t.a) over (partition by t.b order by a)), 0)) +sum(t.a) over (partition by t.b order by a) sum 0.0000000000 0 1.0000000000 1 3.0000000000 1.7320508075688772 @@ -2479,9 +2472,9 @@ INSERT INTO t1 VALUES (1,1000), (2,1100), (3,1800), (4,1500), (5,1700), (6,1200), (7,2000), (8,2100), (9,1600); SELECT id, sum(a) OVER (PARTITION BY id -ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as sum FROM t1; -id sum(a) OVER (PARTITION BY id +id sum 1 1000 2 1100 3 1800 @@ -2491,10 +2484,9 @@ id sum(a) OVER (PARTITION BY id 7 2000 8 2100 9 1600 -ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) -SELECT id, sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +SELECT id, sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as sum FROM t1; -id sum(a) OVER (ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) +id sum 1 14000 2 13000 3 5900 @@ -3229,8 +3221,8 @@ DROP TABLE t1; # CREATE TABLE t1 (c CHAR(8)) ENGINE=MyISAM; INSERT IGNORE INTO t1 VALUES ('foo'); -SELECT ('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1); -('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1) +SELECT ('bar',1) IN ( SELECT c, ROW_NUMBER() OVER (PARTITION BY c) FROM t1) as result; +result 0 DROP TABLE t1; # @@ -3263,8 +3255,8 @@ DROP TABLE t1; # CREATE TABLE t1 (dt DATETIME); INSERT INTO t1 VALUES ('2017-05-17'); -SELECT MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) FROM t1; -MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) +SELECT MAX(dt) OVER (ORDER BY dt ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) as result FROM t1; +result NULL DROP TABLE t1; # diff --git a/mysql-test/suite/galera/r/MDEV-33064.result b/mysql-test/suite/galera/r/MDEV-33064.result new file mode 100644 index 00000000000..22e1ce7a77a --- /dev/null +++ b/mysql-test/suite/galera/r/MDEV-33064.result @@ -0,0 +1,26 @@ +connection node_2; +connection node_1; +connect con1,127.0.0.1,root,,test,$NODE_MYPORT_1; +CREATE TABLE t1(c1 INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t1_fk(c1 INT PRIMARY KEY, c2 INT, INDEX (c2), FOREIGN KEY (c2) REFERENCES t1(c1)) ENGINE=InnoDB; +INSERT INTO t1 VALUES (1); +connection con1; +SET SESSION wsrep_retry_autocommit = 0; +SET DEBUG_SYNC = 'ib_after_row_insert SIGNAL may_alter WAIT_FOR bf_abort'; +INSERT INTO t1_fk VALUES (1, 1); +connection node_1; +SET DEBUG_SYNC = 'now WAIT_FOR may_alter'; +SET DEBUG_SYNC = 'lock_wait_end WAIT_FOR alter_continue'; +ALTER TABLE t1 ADD COLUMN c2 INT, ALGORITHM=INPLACE; +connection con1; +ERROR 40001: Deadlock found when trying to get lock; try restarting transaction +SET DEBUG_SYNC = 'now SIGNAL alter_continue'; +connection node_1; +connection node_2; +INSERT INTO t1 (c1, c2) VALUES (2, 2); +connection node_1; +SET DEBUG_SYNC = 'RESET'; +DROP TABLE t1_fk, t1; +disconnect con1; +disconnect node_2; +disconnect node_1; diff --git a/mysql-test/suite/galera/t/MDEV-33064.test b/mysql-test/suite/galera/t/MDEV-33064.test new file mode 100644 index 00000000000..704ed70ab56 --- /dev/null +++ b/mysql-test/suite/galera/t/MDEV-33064.test @@ -0,0 +1,57 @@ +# +# MDEV-33064: ALTER INPLACE running TOI should abort a conflicting DML operation +# +# DDL operations may commit InnoDB transactions more than once during the execution. +# In this case wsrep flag on trx object is cleared, which may cause wrong logic of +# such operations afterwards (wsrep-related hooks are not run). +# One of the consequences was that DDL operation couldn't abort a DML operation +# holding conflicting locks. +# +# The fix: re-enable wsrep flag on trx restart if it's a part of a DDL operation. +# + +--source include/galera_cluster.inc +--source include/have_debug_sync.inc +--source include/have_debug.inc + +--connect con1,127.0.0.1,root,,test,$NODE_MYPORT_1 + +CREATE TABLE t1(c1 INT PRIMARY KEY) ENGINE=InnoDB; +CREATE TABLE t1_fk(c1 INT PRIMARY KEY, c2 INT, INDEX (c2), FOREIGN KEY (c2) REFERENCES t1(c1)) ENGINE=InnoDB; + +INSERT INTO t1 VALUES (1); + +--connection con1 +SET SESSION wsrep_retry_autocommit = 0; +SET DEBUG_SYNC = 'ib_after_row_insert SIGNAL may_alter WAIT_FOR bf_abort'; +# INSERT also grabs FK-referenced table lock. +--send + INSERT INTO t1_fk VALUES (1, 1); + +--connection node_1 +SET DEBUG_SYNC = 'now WAIT_FOR may_alter'; +SET DEBUG_SYNC = 'lock_wait_end WAIT_FOR alter_continue'; +# ALTER BF-aborts INSERT. +--send + ALTER TABLE t1 ADD COLUMN c2 INT, ALGORITHM=INPLACE; + +--connection con1 +# INSERT gets BF-aborted. +--error ER_LOCK_DEADLOCK +--reap +SET DEBUG_SYNC = 'now SIGNAL alter_continue'; + +--connection node_1 +# ALTER succeeds. +--reap + +--connection node_2 +# Sanity check that ALTER has been replicated. +INSERT INTO t1 (c1, c2) VALUES (2, 2); + +# Cleanup. +--connection node_1 +SET DEBUG_SYNC = 'RESET'; +DROP TABLE t1_fk, t1; +--disconnect con1 +--source include/galera_end.inc diff --git a/mysql-test/suite/innodb/r/innodb_ctype_big5.result b/mysql-test/suite/innodb/r/innodb_ctype_big5.result index 4c9f7a81cc3..bba6d4b82e4 100644 --- a/mysql-test/suite/innodb/r/innodb_ctype_big5.result +++ b/mysql-test/suite/innodb/r/innodb_ctype_big5.result @@ -100,20 +100,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'big5_chinese_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'big5_chinese_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'big5_chinese_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -237,20 +237,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'big5_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'big5_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'big5_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'big5_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/suite/innodb/r/innodb_ctype_latin1.result b/mysql-test/suite/innodb/r/innodb_ctype_latin1.result index d576f210d5a..c70c50ff3ef 100644 --- a/mysql-test/suite/innodb/r/innodb_ctype_latin1.result +++ b/mysql-test/suite/innodb/r/innodb_ctype_latin1.result @@ -100,20 +100,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin1_swedish_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin1_swedish_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin1_swedish_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -237,20 +237,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'latin1_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'latin1_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'latin1_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'latin1_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/suite/innodb/r/innodb_ctype_utf8.result b/mysql-test/suite/innodb/r/innodb_ctype_utf8.result index d817af2735c..e811409e997 100644 --- a/mysql-test/suite/innodb/r/innodb_ctype_utf8.result +++ b/mysql-test/suite/innodb/r/innodb_ctype_utf8.result @@ -100,20 +100,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_general_nopad_ci' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_general_nopad_ci' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_general_nopad_ci' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_general_nopad_ci', 'abc ')) as exp; +exp 6162632020 # # Collation mix @@ -237,20 +237,20 @@ DROP TABLE t1; # # IF, CASE, LEAST # -SELECT IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad'); -IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad') +SELECT IF('abc' COLLATE 'utf8_nopad_bin' = 'abc ', 'pad', 'nopad') as exp; +exp nopad -SELECT CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE 'abc' COLLATE 'utf8_nopad_bin' WHEN 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END; -CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END +SELECT CASE WHEN 'abc' COLLATE 'utf8_nopad_bin' = 'abc ' THEN 'pad' ELSE 'nopad' END as exp; +exp nopad -SELECT HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')); -HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) +SELECT HEX(LEAST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) as exp; +exp 61626320 -SELECT HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')); -HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) +SELECT HEX(GREATEST('abc ' COLLATE 'utf8_nopad_bin', 'abc ')) as exp; +exp 6162632020 # # Collation mix diff --git a/mysql-test/suite/innodb_gis/r/precise.result b/mysql-test/suite/innodb_gis/r/precise.result index 6cc0368fbb4..a3fd4b1a480 100644 --- a/mysql-test/suite/innodb_gis/r/precise.result +++ b/mysql-test/suite/innodb_gis/r/precise.result @@ -456,30 +456,26 @@ dist buffer buf_area -1 POLYGON 16.00 SELECT ST_CONTAINS( GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)')); -ST_CONTAINS( -GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)')) +GeomFromText('POINT(5 10)')) as geom; +geom 0 SELECT AsText(ST_UNION( GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)'))); -AsText(ST_UNION( -GeomFromText('MULTIPOLYGON(((0 0, 0 5, 5 5, 5 0, 0 0)),((6 6, 6 11, 11 11, 11 6, 6 6)))'), -GeomFromText('POINT(5 10)'))) +GeomFromText('POINT(5 10)'))) as geom; +geom GEOMETRYCOLLECTION(POLYGON((0 0,0 5,5 5,5 0,0 0)),POLYGON((6 6,6 11,11 11,11 6,6 6)),POINT(5 10)) DROP PROCEDURE p1; # # Bug #13833019 ASSERTION `T1->RESULT_RANGE' FAILED IN GCALC_OPERATION_REDUCER::END_COUPLE # -SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)); -GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)) +SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,9 4,3 3,0 0)),((2 2,2 2,8 8,2 3,2 2)))'), 3)) as geom; +geom POLYGON # # Bug #13832749 HANDLE_FATAL_SIGNAL IN GCALC_FUNCTION::COUNT_INTERNAL # -SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)); -GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)) +SELECT GeometryType(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2), (4 4,4 6,6 6,6 4,4 4)), ((9 9,8 1,1 5,9 9)))'),1)) as geom; +geom POLYGON # # Bug#13358363 - ASSERTION: N > 0 && N < SINUSES_CALCULATED*2+1 | GET_N_SINCOS/ADD_EDGE_BUFFER @@ -490,25 +486,19 @@ Warning 1292 Truncated incorrect DOUBLE value: '' SELECT ST_WITHIN( LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '), ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) '), -ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) ')))); -ST_WITHIN( -LINESTRINGFROMTEXT(' LINESTRING(3 8,9 2,3 8,3 3,7 6,4 7,4 7,8 1) '), -ST_BUFFER(MULTIPOLYGONFROMTEXT(' MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5)),((2 2,2 8,8 8,8 2,2 2),(4 4,4 6,6 6,6 4,4 4)),((0 5,3 5,3 2,1 2,1 1,3 1,3 0,0 0,0 3,2 3,2 4,0 4,0 5))) ') +ST_NUMINTERIORRINGS(POLYGONFROMTEXT('POLYGON((3 5,2 4,2 5,3 5)) ')))) as st; +st 0 SELECT ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '), -ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))); -ST_DIMENSION(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((3 5,2 5,2 4,3 4,3 5)) '), -ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))) +ST_NUMINTERIORRINGS(POLYGONFROMTEXT(' POLYGON((0 0,9 3,4 2,0 0))')))) as st; +st 2 SELECT ST_NUMINTERIORRINGS( ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '), -SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))); -ST_NUMINTERIORRINGS( -ST_ENVELOPE(ST_BUFFER(MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((3 5,2 5,2 4,3 4,3 5))) '), -SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))) +SRID(MULTILINESTRINGFROMTEXT('MULTILINESTRING((2 2,4 2,1 2,2 4,2 2)) '))))) as st; +st 0 SELECT ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'), -SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))); -ASTEXT(ST_BUFFER(POLYGONFROMTEXT(' POLYGON((9 9,5 2,4 5,9 9))'), -SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))) +SRID(GEOMETRYFROMTEXT(' MULTIPOINT(8 4,5 0,7 8,6 9,3 4,7 3,5 5) ')))) as st; +st POLYGON((9 9,5 2,4 5,9 9)) diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result index b58d18fb5af..661269f7425 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_embedded.result @@ -977,7 +977,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT Extra port number to use for tcp connections in a one-thread-per-connection manner. 0 means don't use another port NUMERIC_MIN_VALUE 0 -NUMERIC_MAX_VALUE 4294967295 +NUMERIC_MAX_VALUE 65535 NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY YES @@ -2887,7 +2887,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT Port number to use for connection or 0 to default to, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306), whatever comes first NUMERIC_MIN_VALUE 0 -NUMERIC_MAX_VALUE 4294967295 +NUMERIC_MAX_VALUE 65535 NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY YES @@ -3182,6 +3182,16 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO COMMAND_LINE_ARGUMENT REQUIRED +VARIABLE_NAME SERVER_UID +VARIABLE_SCOPE GLOBAL +VARIABLE_TYPE VARCHAR +VARIABLE_COMMENT Automatically calculated server unique id hash +NUMERIC_MIN_VALUE NULL +NUMERIC_MAX_VALUE NULL +NUMERIC_BLOCK_SIZE NULL +ENUM_VALUE_LIST NULL +READ_ONLY YES +COMMAND_LINE_ARGUMENT NULL VARIABLE_NAME SKIP_EXTERNAL_LOCKING VARIABLE_SCOPE GLOBAL VARIABLE_TYPE BOOLEAN diff --git a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result index 2c31e5f538c..978e7fb6eab 100644 --- a/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result +++ b/mysql-test/suite/sys_vars/r/sysvars_server_notembedded.result @@ -1007,7 +1007,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT Extra port number to use for tcp connections in a one-thread-per-connection manner. 0 means don't use another port NUMERIC_MIN_VALUE 0 -NUMERIC_MAX_VALUE 4294967295 +NUMERIC_MAX_VALUE 65535 NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY YES @@ -3057,7 +3057,7 @@ VARIABLE_SCOPE GLOBAL VARIABLE_TYPE INT UNSIGNED VARIABLE_COMMENT Port number to use for connection or 0 to default to, my.cnf, $MYSQL_TCP_PORT, /etc/services, built-in default (3306), whatever comes first NUMERIC_MIN_VALUE 0 -NUMERIC_MAX_VALUE 4294967295 +NUMERIC_MAX_VALUE 65535 NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY YES @@ -3652,6 +3652,16 @@ NUMERIC_BLOCK_SIZE 1 ENUM_VALUE_LIST NULL READ_ONLY NO COMMAND_LINE_ARGUMENT REQUIRED +VARIABLE_NAME SERVER_UID +VARIABLE_SCOPE GLOBAL +VARIABLE_TYPE VARCHAR +VARIABLE_COMMENT Automatically calculated server unique id hash +NUMERIC_MIN_VALUE NULL +NUMERIC_MAX_VALUE NULL +NUMERIC_BLOCK_SIZE NULL +ENUM_VALUE_LIST NULL +READ_ONLY YES +COMMAND_LINE_ARGUMENT NULL VARIABLE_NAME SESSION_TRACK_SCHEMA VARIABLE_SCOPE SESSION VARIABLE_TYPE BOOLEAN diff --git a/plugin/feedback/feedback.cc b/plugin/feedback/feedback.cc index 845e40ccf52..ca396573bc9 100644 --- a/plugin/feedback/feedback.cc +++ b/plugin/feedback/feedback.cc @@ -26,10 +26,8 @@ namespace feedback { ulong debug_startup_interval, debug_first_interval, debug_interval; #endif -char server_uid_buf[SERVER_UID_SIZE+1]; ///< server uid will be written here - /* backing store for system variables */ -static char *server_uid= server_uid_buf, *url, *http_proxy; +static char *url, *http_proxy; char *user_info; ulong send_timeout, send_retry_wait; @@ -253,9 +251,6 @@ static int init(void *p) PSI_register(cond); PSI_register(thread); - if (calculate_server_uid(server_uid_buf)) - return 1; - prepare_linux_info(); #ifndef DBUG_OFF @@ -361,9 +356,6 @@ static int free(void *p) #define DEFAULT_PROTO "http://" #endif -static MYSQL_SYSVAR_STR(server_uid, server_uid, - PLUGIN_VAR_READONLY | PLUGIN_VAR_NOCMDOPT, - "Automatically calculated server unique id hash.", NULL, NULL, 0); static MYSQL_SYSVAR_STR(user_info, user_info, PLUGIN_VAR_READONLY | PLUGIN_VAR_RQCMDARG, "User specified string that will be included in the feedback report.", @@ -394,7 +386,6 @@ static MYSQL_SYSVAR_ULONG(debug_interval, debug_interval, #endif static struct st_mysql_sys_var* settings[] = { - MYSQL_SYSVAR(server_uid), MYSQL_SYSVAR(user_info), MYSQL_SYSVAR(url), MYSQL_SYSVAR(send_timeout), diff --git a/plugin/feedback/feedback.h b/plugin/feedback/feedback.h index 6021eb85860..30ad1203ae7 100644 --- a/plugin/feedback/feedback.h +++ b/plugin/feedback/feedback.h @@ -25,8 +25,7 @@ int fill_misc_data(THD *thd, TABLE_LIST *tables); int fill_linux_info(THD *thd, TABLE_LIST *tables); int fill_collation_statistics(THD *thd, TABLE_LIST *tables); -static const int SERVER_UID_SIZE= 29; -extern char server_uid_buf[SERVER_UID_SIZE+1], *user_info; +extern char *user_info; int calculate_server_uid(char *); int prepare_linux_info(); diff --git a/plugin/feedback/sender_thread.cc b/plugin/feedback/sender_thread.cc index cc29e57fcfe..899157b0ae9 100644 --- a/plugin/feedback/sender_thread.cc +++ b/plugin/feedback/sender_thread.cc @@ -183,7 +183,7 @@ static void send_report(const char *when) str.length(0); str.append(STRING_WITH_LEN("FEEDBACK_SERVER_UID")); str.append('\t'); - str.append(server_uid_buf, sizeof(server_uid_buf)-1); + str.append(server_uid, sizeof(server_uid)-1); str.append('\n'); str.append(STRING_WITH_LEN("FEEDBACK_WHEN")); str.append('\t'); diff --git a/plugin/feedback/utils.cc b/plugin/feedback/utils.cc index c31422cc7ec..efd9d0f59b5 100644 --- a/plugin/feedback/utils.cc +++ b/plugin/feedback/utils.cc @@ -412,31 +412,4 @@ int fill_collation_statistics(THD *thd, TABLE_LIST *tables) } return 0; }; - -/** - calculates the server unique identifier - - UID is a base64 encoded SHA1 hash of the MAC address of one of - the interfaces, and the tcp port that the server is listening on -*/ -int calculate_server_uid(char *dest) -{ - uchar rawbuf[2 + 6]; - uchar shabuf[MY_SHA1_HASH_SIZE]; - - int2store(rawbuf, mysqld_port); - if (my_gethwaddr(rawbuf + 2)) - { - sql_print_error("feedback plugin: failed to retrieve the MAC address"); - return 1; - } - - my_sha1((uint8*) shabuf, (char*) rawbuf, sizeof(rawbuf)); - - assert(my_base64_needed_encoded_length(sizeof(shabuf)) <= SERVER_UID_SIZE); - my_base64_encode(shabuf, sizeof(shabuf), dest); - - return 0; -} - } // namespace feedback diff --git a/plugin/type_test/mysql-test/type_test/type_test_double.result b/plugin/type_test/mysql-test/type_test/type_test_double.result index edcfdc0eff8..ff009885072 100644 --- a/plugin/type_test/mysql-test/type_test/type_test_double.result +++ b/plugin/type_test/mysql-test/type_test/type_test_double.result @@ -83,7 +83,7 @@ SELECT HEX(a), a; END; $$ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def HEX(a) 253 44 3 Y 0 0 8 +def HEX(a) 253 16 3 Y 0 0 8 def a a 5 22 3 Y 32768 31 63 HEX(a) a 100 256 diff --git a/plugin/type_test/mysql-test/type_test/type_test_int8.result b/plugin/type_test/mysql-test/type_test/type_test_int8.result index 75fcf1f2f5e..4d7175ffe69 100644 --- a/plugin/type_test/mysql-test/type_test/type_test_int8.result +++ b/plugin/type_test/mysql-test/type_test/type_test_int8.result @@ -62,7 +62,7 @@ SELECT HEX(a), a; END; $$ Catalog Database Table Table_alias Column Column_alias Type Length Max length Is_null Flags Decimals Charsetnr -def HEX(a) 253 40 3 Y 0 0 8 +def HEX(a) 253 16 3 Y 0 0 8 def a a 8 20 3 Y 32768 0 63 HEX(a) a 100 256 diff --git a/sql/handler.cc b/sql/handler.cc index 20f181e6216..0f452933031 100644 --- a/sql/handler.cc +++ b/sql/handler.cc @@ -7882,7 +7882,9 @@ int handler::ha_delete_row(const uchar *buf) } #ifdef WITH_WSREP THD *thd= ha_thd(); - if (WSREP_NNULL(thd)) + /* For streaming replication, when removing fragments, don't call + wsrep_after_row() as that would initiate new streaming transaction */ + if (WSREP_NNULL(thd) && !thd->wsrep_ignore_table) { /* for streaming replication, the following wsrep_after_row() may replicate a fragment, so we have to declare potential PA diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 33b5f716ea8..a64a5291293 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -4087,9 +4087,11 @@ String *Item_func_hex::val_str_ascii_from_val_real(String *str) return 0; if ((val <= (double) LONGLONG_MIN) || (val >= (double) (ulonglong) ULONGLONG_MAX)) - dec= ~(longlong) 0; + dec= ULONGLONG_MAX; + else if (val < 0) + dec= (ulonglong) (longlong) (val - 0.5); else - dec= (ulonglong) (val + (val > 0 ? 0.5 : -0.5)); + dec= (ulonglong) (val + 0.5); return str->set_hex(dec) ? make_empty_result(str) : str; } diff --git a/sql/item_strfunc.h b/sql/item_strfunc.h index 72451c79f70..0d8f4461cd5 100644 --- a/sql/item_strfunc.h +++ b/sql/item_strfunc.h @@ -1633,10 +1633,20 @@ public: } bool fix_length_and_dec(THD *thd) override { + m_arg0_type_handler= args[0]->type_handler(); collation.set(default_charset(), DERIVATION_COERCIBLE, MY_REPERTOIRE_ASCII); decimals=0; - fix_char_length(args[0]->max_length * 2); - m_arg0_type_handler= args[0]->type_handler(); + /* + Reserve space for 16 characters for signed numeric data types: + hex(-1) -> 'FFFFFFFFFFFFFFFF'. + For unsigned numeric types, HEX() can create too large columns. + This should be eventually fixed to create minimum possible columns. + */ + const Type_handler_numeric *tn= + dynamic_cast(m_arg0_type_handler); + size_t char_length= (tn && !(tn->flags() & UNSIGNED_FLAG)) ? + (size_t) 16 : (size_t) args[0]->max_length * 2; + fix_char_length(char_length); return FALSE; } Item *get_copy(THD *thd) override diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 80bc7494008..f627a9ea5ac 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -355,6 +355,8 @@ LEX_STRING opt_init_connect, opt_init_slave; static DYNAMIC_ARRAY all_options; static longlong start_memory_used; +char server_uid[SERVER_UID_SIZE+1]; // server uid will be written here + /* Global variables */ bool opt_bin_log, opt_bin_log_used=0, opt_ignore_builtin_innodb= 0; @@ -1178,6 +1180,8 @@ PSI_file_key key_file_map; PSI_statement_info stmt_info_new_packet; #endif +static int calculate_server_uid(char *dest); + #ifndef EMBEDDED_LIBRARY void net_before_header_psi(struct st_net *net, void *thd, size_t /* unused: count */) { @@ -4136,6 +4140,9 @@ static int init_common_variables() if (IS_SYSVAR_AUTOSIZE(&server_version_ptr)) set_server_version(server_version, sizeof(server_version)); + if (calculate_server_uid(server_uid)) + strmov(server_uid, "unknown"); + mysql_real_data_home_len= uint(strlen(mysql_real_data_home)); sf_leaking_memory= 0; // no memory leaks from now on @@ -5010,8 +5017,10 @@ static int init_server_components() first in error log, for troubleshooting and debugging purposes */ if (!opt_help) - sql_print_information("Starting MariaDB %s source revision %s as process %lu", - server_version, SOURCE_REVISION, (ulong) getpid()); + sql_print_information("Starting MariaDB %s source revision %s " + "server_uid %s as process %lu", + server_version, SOURCE_REVISION, server_uid, + (ulong) getpid()); #ifdef WITH_PERFSCHEMA_STORAGE_ENGINE /* @@ -8349,6 +8358,14 @@ mysqld_get_one_option(const struct my_option *opt, const char *argument, if (argument == NULL) /* no argument */ log_error_file_ptr= const_cast(""); break; + case OPT_LOG_SLOW_FILTER: + if (argument == NULL || *argument == 0) + { + /* By default log_slow_filter_has all values except QPLAN_NOT_USING_INDEX */ + global_system_variables.log_slow_filter= opt->def_value | QPLAN_NOT_USING_INDEX; + sql_print_warning("log_slow_filter=\"\" changed to log_slow_filter=ALL"); + } + break; case OPT_IGNORE_DB_DIRECTORY: opt_ignore_db_dirs= NULL; // will be set in ignore_db_dirs_process_additions if (*argument == 0) @@ -9935,3 +9952,31 @@ my_thread_id next_thread_id(void) mysql_mutex_unlock(&LOCK_thread_id); return retval; } + + +/** + calculates the server unique identifier + + UID is a base64 encoded SHA1 hash of the MAC address of one of + the interfaces, and the tcp port that the server is listening on +*/ + +static int calculate_server_uid(char *dest) +{ + uchar rawbuf[2 + 6]; + uchar shabuf[MY_SHA1_HASH_SIZE]; + + int2store(rawbuf, mysqld_port); + if (my_gethwaddr(rawbuf + 2)) + { + sql_print_error("feedback plugin: failed to retrieve the MAC address"); + return 1; + } + + my_sha1((uint8*) shabuf, (char*) rawbuf, sizeof(rawbuf)); + + assert(my_base64_needed_encoded_length(sizeof(shabuf)) <= SERVER_UID_SIZE); + my_base64_encode(shabuf, sizeof(shabuf), dest); + + return 0; +} diff --git a/sql/mysqld.h b/sql/mysqld.h index 46ce3f8816d..cb3c763d7e9 100644 --- a/sql/mysqld.h +++ b/sql/mysqld.h @@ -813,6 +813,7 @@ enum options_mysqld OPT_KEY_CACHE_CHANGED_BLOCKS_HASH_SIZE, OPT_LOG_BASENAME, OPT_LOG_ERROR, + OPT_LOG_SLOW_FILTER, OPT_LOWER_CASE_TABLE_NAMES, OPT_PLUGIN_LOAD, OPT_PLUGIN_LOAD_ADD, @@ -981,6 +982,8 @@ extern my_bool opt_mysql56_temporal_format, strict_password_validation; extern ulong binlog_checksum_options; extern bool max_user_connections_checking; extern ulong opt_binlog_dbug_fsync_sleep; +static const int SERVER_UID_SIZE= 29; +extern char server_uid[SERVER_UID_SIZE+1]; extern uint volatile global_disable_checkpoint; extern my_bool opt_help; diff --git a/sql/semisync_master.cc b/sql/semisync_master.cc index f22d3fc4016..e7d7fa80251 100644 --- a/sql/semisync_master.cc +++ b/sql/semisync_master.cc @@ -571,6 +571,7 @@ void Repl_semi_sync_master::add_slave() void Repl_semi_sync_master::remove_slave() { lock(); + DBUG_ASSERT(rpl_semi_sync_master_clients > 0); if (!(--rpl_semi_sync_master_clients) && !rpl_semi_sync_master_wait_no_slave) { /* diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 5b21cf19a96..a223580d7fe 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -5052,6 +5052,9 @@ MYSQL_THD create_background_thd() thd->real_id= 0; thd->thread_id= 0; thd->query_id= 0; +#ifdef WITH_WSREP + thd->variables.wsrep_on= FALSE; +#endif /* WITH_WSREP */ return thd; } @@ -6401,7 +6404,8 @@ int THD::decide_logging_format(TABLE_LIST *tables) wsrep_is_active(this) && variables.wsrep_trx_fragment_size > 0) { - if (!is_current_stmt_binlog_format_row()) + if (!is_current_stmt_binlog_disabled() && + !is_current_stmt_binlog_format_row()) { my_message(ER_NOT_SUPPORTED_YET, "Streaming replication not supported with " diff --git a/sql/sql_partition_admin.h b/sql/sql_partition_admin.h index eee021b5fb4..2a8e37e87a0 100644 --- a/sql/sql_partition_admin.h +++ b/sql/sql_partition_admin.h @@ -32,12 +32,12 @@ public: {} /* Override SQLCOM_*, since it is an ALTER command */ - virtual enum_sql_command sql_command_code() const + virtual enum_sql_command sql_command_code() const override { return SQLCOM_ALTER_TABLE; } - bool execute(THD *thd); + bool execute(THD *thd) override; }; diff --git a/sql/sys_vars.cc b/sql/sys_vars.cc index 418507d5c64..20345e7ac9d 100644 --- a/sql/sys_vars.cc +++ b/sql/sys_vars.cc @@ -2981,7 +2981,7 @@ static Sys_var_uint Sys_port( #endif "built-in default (" STRINGIFY_ARG(MYSQL_PORT) "), whatever comes first", READ_ONLY GLOBAL_VAR(mysqld_port), CMD_LINE(REQUIRED_ARG, 'P'), - VALID_RANGE(0, UINT_MAX32), DEFAULT(0), BLOCK_SIZE(1)); + VALID_RANGE(0, UINT_MAX16), DEFAULT(0), BLOCK_SIZE(1)); static Sys_var_ulong Sys_preload_buff_size( "preload_buffer_size", @@ -3458,6 +3458,14 @@ Sys_server_id( VALID_RANGE(1, UINT_MAX32), DEFAULT(1), BLOCK_SIZE(1), NO_MUTEX_GUARD, NOT_IN_BINLOG, ON_CHECK(check_server_id), ON_UPDATE(fix_server_id)); +char *server_uid_ptr= &server_uid[0]; + +static Sys_var_charptr Sys_server_uid( + "server_uid", "Automatically calculated server unique id hash", + READ_ONLY GLOBAL_VAR(server_uid_ptr), + CMD_LINE_HELP_ONLY, + DEFAULT(server_uid)); + static Sys_var_on_access_global Sys_slave_compressed_protocol( @@ -6482,7 +6490,7 @@ static Sys_var_uint Sys_extra_port( "Extra port number to use for tcp connections in a " "one-thread-per-connection manner. 0 means don't use another port", READ_ONLY GLOBAL_VAR(mysqld_extra_port), CMD_LINE(REQUIRED_ARG), - VALID_RANGE(0, UINT_MAX32), DEFAULT(0), BLOCK_SIZE(1)); + VALID_RANGE(0, UINT_MAX16), DEFAULT(0), BLOCK_SIZE(1)); static Sys_var_on_access_global @@ -6519,7 +6527,8 @@ static const char *log_slow_filter_names[]= static Sys_var_set Sys_log_slow_filter( "log_slow_filter", "Log only certain types of queries to the slow log. If variable empty all kind of queries are logged. All types are bound by slow_query_time, except 'not_using_index' which is always logged if enabled", - SESSION_VAR(log_slow_filter), CMD_LINE(REQUIRED_ARG), + SESSION_VAR(log_slow_filter), CMD_LINE(REQUIRED_ARG, + OPT_LOG_SLOW_FILTER), log_slow_filter_names, /* by default we log all queries except 'not_using_index' */ DEFAULT(my_set_bits(array_elements(log_slow_filter_names)-1) & diff --git a/sql/wsrep_schema.cc b/sql/wsrep_schema.cc index d9baf69999a..05eb1eeb7fa 100644 --- a/sql/wsrep_schema.cc +++ b/sql/wsrep_schema.cc @@ -163,6 +163,24 @@ private: my_bool m_wsrep_on; }; +class wsrep_ignore_table +{ +public: + wsrep_ignore_table(THD* thd) + : m_thd(thd) + , m_wsrep_ignore_table(thd->wsrep_ignore_table) + { + thd->wsrep_ignore_table= true; + } + ~wsrep_ignore_table() + { + m_thd->wsrep_ignore_table= m_wsrep_ignore_table; + } +private: + THD* m_thd; + my_bool m_wsrep_ignore_table; +}; + class thd_server_status { public: @@ -760,6 +778,12 @@ int Wsrep_schema::store_view(THD* thd, const Wsrep_view& view) Wsrep_schema_impl::binlog_off binlog_off(thd); Wsrep_schema_impl::sql_safe_updates sql_safe_updates(thd); + if (trans_begin(thd, MYSQL_START_TRANS_OPT_READ_WRITE)) + { + WSREP_ERROR("Failed to start transaction for store view"); + goto out_not_started; + } + /* Clean up cluster table and members table. */ @@ -853,7 +877,22 @@ int Wsrep_schema::store_view(THD* thd, const Wsrep_view& view) #endif /* WSREP_SCHEMA_MEMBERS_HISTORY */ ret= 0; out: + if (ret) + { + trans_rollback_stmt(thd); + if (!trans_rollback(thd)) + { + close_thread_tables(thd); + } + } + else if (trans_commit(thd)) + { + ret= 1; + WSREP_ERROR("Failed to commit transaction for store view"); + } + thd->release_transactional_locks(); +out_not_started: DBUG_RETURN(ret); } @@ -1205,7 +1244,7 @@ int Wsrep_schema::remove_fragments(THD* thd, int ret= 0; WSREP_DEBUG("Removing %zu fragments", fragments.size()); - Wsrep_schema_impl::wsrep_off wsrep_off(thd); + Wsrep_schema_impl::wsrep_ignore_table wsrep_ignore_table(thd); Wsrep_schema_impl::binlog_off binlog_off(thd); Wsrep_schema_impl::sql_safe_updates sql_safe_updates(thd); diff --git a/sql/wsrep_server_service.cc b/sql/wsrep_server_service.cc index 19fa4470687..71252c94399 100644 --- a/sql/wsrep_server_service.cc +++ b/sql/wsrep_server_service.cc @@ -239,29 +239,9 @@ void Wsrep_server_service::log_view( view.state_id().seqno().get() >= prev_view.state_id().seqno().get()); } - if (trans_begin(applier->m_thd, MYSQL_START_TRANS_OPT_READ_WRITE)) + if (wsrep_schema->store_view(applier->m_thd, view)) { - WSREP_WARN("Failed to start transaction for store view"); - } - else - { - if (wsrep_schema->store_view(applier->m_thd, view)) - { - WSREP_WARN("Failed to store view"); - trans_rollback_stmt(applier->m_thd); - if (!trans_rollback(applier->m_thd)) - { - close_thread_tables(applier->m_thd); - } - } - else - { - if (trans_commit(applier->m_thd)) - { - WSREP_WARN("Failed to commit transaction for store view"); - } - } - applier->m_thd->release_transactional_locks(); + WSREP_WARN("Failed to store view"); } /* diff --git a/storage/innobase/btr/btr0btr.cc b/storage/innobase/btr/btr0btr.cc index 6b3a37335c4..02f06945964 100644 --- a/storage/innobase/btr/btr0btr.cc +++ b/storage/innobase/btr/btr0btr.cc @@ -1262,7 +1262,7 @@ void btr_drop_temporary_table(const dict_table_t &table) { if (buf_block_t *block= buf_page_get_low({SRV_TMP_SPACE_ID, index->page}, 0, RW_X_LATCH, nullptr, BUF_GET, &mtr, - nullptr, false)) + nullptr, false, nullptr)) { btr_free_but_not_root(block, MTR_LOG_NO_REDO); mtr.set_log_mode(MTR_LOG_NO_REDO); diff --git a/storage/innobase/btr/btr0cur.cc b/storage/innobase/btr/btr0cur.cc index 7ef5edf4ed6..564170baadf 100644 --- a/storage/innobase/btr/btr0cur.cc +++ b/storage/innobase/btr/btr0cur.cc @@ -971,12 +971,21 @@ static int btr_latch_prev(buf_block_t *block, page_id_t page_id, buffer-fixes on both blocks will prevent eviction. */ retry: - buf_block_t *prev= buf_page_get_gen(page_id, zip_size, RW_NO_LATCH, nullptr, - BUF_GET, mtr, err, false); - if (UNIV_UNLIKELY(!prev)) - return 0; - + /* Pass no_wait pointer to ensure that we don't wait on the current page + latch while holding the next page latch to avoid latch ordering violation. */ + bool no_wait= false; int ret= 1; + + buf_block_t *prev= buf_page_get_gen(page_id, zip_size, RW_NO_LATCH, nullptr, + BUF_GET, mtr, err, false, &no_wait); + if (UNIV_UNLIKELY(!prev)) + { + /* Check if we had to return because we couldn't wait on latch. */ + if (no_wait) + goto ordered_latch; + return 0; + } + static_assert(MTR_MEMO_PAGE_S_FIX == mtr_memo_type_t(BTR_SEARCH_LEAF), ""); static_assert(MTR_MEMO_PAGE_X_FIX == mtr_memo_type_t(BTR_MODIFY_LEAF), ""); @@ -996,6 +1005,7 @@ static int btr_latch_prev(buf_block_t *block, page_id_t page_id, { ut_ad(mtr->at_savepoint(mtr->get_savepoint() - 1)->page.id() == page_id); mtr->release_last_page(); +ordered_latch: if (rw_latch == RW_S_LATCH) block->page.lock.s_unlock(); else diff --git a/storage/innobase/buf/buf0buf.cc b/storage/innobase/buf/buf0buf.cc index 1380ce38000..cc386826408 100644 --- a/storage/innobase/buf/buf0buf.cc +++ b/storage/innobase/buf/buf0buf.cc @@ -2714,6 +2714,9 @@ BUF_PEEK_IF_IN_POOL, or BUF_GET_IF_IN_POOL_OR_WATCH while reading the page from file then it makes sure that it does merging of change buffer changes while reading the page from file. +@param[in,out] no_wait If not NULL on input, then we must not +wait for current page latch. On output, the value is set to true if we had to +return because we could not wait on page latch. @return pointer to the block or NULL */ TRANSACTIONAL_TARGET buf_block_t* @@ -2725,7 +2728,8 @@ buf_page_get_low( ulint mode, mtr_t* mtr, dberr_t* err, - bool allow_ibuf_merge) + bool allow_ibuf_merge, + bool* no_wait) { unsigned access_time; ulint retries = 0; @@ -2882,14 +2886,17 @@ ignore_unfixed: in buf_page_t::read_complete() or buf_pool_t::corrupted_evict(), or after buf_zip_decompress() in this function. */ - if (rw_latch != RW_NO_LATCH) { + if (!no_wait) { block->page.lock.s_lock(); } else if (!block->page.lock.s_lock_try()) { - /* For RW_NO_LATCH, we should not try to acquire S or X - latch directly as we could be violating the latching - order resulting in deadlock. Instead we try latching the - page and retry in case of a failure. */ - goto wait_for_read; + ut_ad(rw_latch == RW_NO_LATCH); + /* We should not wait trying to acquire S latch for + current page while holding latch for the next page. + It would violate the latching order resulting in + possible deadlock. Caller must handle the failure. */ + block->page.unfix(); + *no_wait= true; + return nullptr; } state = block->page.state(); ut_ad(state < buf_page_t::READ_FIX @@ -2945,7 +2952,6 @@ free_unfixed_block: if (UNIV_UNLIKELY(!block->page.frame)) { if (!block->page.lock.x_lock_try()) { wait_for_unzip: -wait_for_read: /* The page is being read or written, or another thread is executing buf_zip_decompress() in buf_page_get_low() on it. */ @@ -3234,6 +3240,9 @@ BUF_PEEK_IF_IN_POOL, or BUF_GET_IF_IN_POOL_OR_WATCH @param[out] err DB_SUCCESS or error code @param[in] allow_ibuf_merge Allow change buffer merge while reading the pages from file. +@param[in,out] no_wait If not NULL on input, then we must not +wait for current page latch. On output, the value is set to true if we had to +return because we could not wait on page latch. @return pointer to the block or NULL */ buf_block_t* buf_page_get_gen( @@ -3244,12 +3253,14 @@ buf_page_get_gen( ulint mode, mtr_t* mtr, dberr_t* err, - bool allow_ibuf_merge) + bool allow_ibuf_merge, + bool* no_wait) { buf_block_t *block= recv_sys.recover(page_id); if (UNIV_LIKELY(!block)) return buf_page_get_low(page_id, zip_size, rw_latch, - guess, mode, mtr, err, allow_ibuf_merge); + guess, mode, mtr, err, allow_ibuf_merge, + no_wait); else if (UNIV_UNLIKELY(block == reinterpret_cast(-1))) { corrupted: diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc index fa958791963..677e24ca667 100644 --- a/storage/innobase/handler/ha_innodb.cc +++ b/storage/innobase/handler/ha_innodb.cc @@ -2821,10 +2821,6 @@ innobase_trx_init( thd, OPTION_RELAXED_UNIQUE_CHECKS); trx->snapshot_isolation = THDVAR(thd, snapshot_isolation) & 1; -#ifdef WITH_WSREP - trx->wsrep = wsrep_on(thd); -#endif - DBUG_VOID_RETURN; } @@ -4338,9 +4334,6 @@ innobase_commit_low( trx_commit_for_mysql(trx); } else { trx->will_lock = false; -#ifdef WITH_WSREP - trx->wsrep = false; -#endif /* WITH_WSREP */ } #ifdef WITH_WSREP @@ -8664,7 +8657,10 @@ func_exit: } #ifdef WITH_WSREP - if (error == DB_SUCCESS && trx->is_wsrep() + if (error == DB_SUCCESS && + /* For sequences, InnoDB transaction may not have been started yet. + Check THD-level wsrep state in that case. */ + (trx->is_wsrep() || (!trx_is_started(trx) && wsrep_on(m_user_thd))) && wsrep_thd_is_local(m_user_thd) && !wsrep_thd_ignore_table(m_user_thd)) { DBUG_PRINT("wsrep", ("update row key")); diff --git a/storage/innobase/include/buf0buf.h b/storage/innobase/include/buf0buf.h index 23c6bc0d2e8..6e3cbee149f 100644 --- a/storage/innobase/include/buf0buf.h +++ b/storage/innobase/include/buf0buf.h @@ -209,6 +209,9 @@ BUF_PEEK_IF_IN_POOL, or BUF_GET_IF_IN_POOL_OR_WATCH @param[out] err DB_SUCCESS or error code @param[in] allow_ibuf_merge Allow change buffer merge while reading the pages from file. +@param[in,out] no_wait If not NULL on input, then we must not +wait for current page latch. On output, the value is set to true if we had to +return because we could not wait on page latch. @return pointer to the block or NULL */ buf_block_t* buf_page_get_gen( @@ -219,7 +222,8 @@ buf_page_get_gen( ulint mode, mtr_t* mtr, dberr_t* err = NULL, - bool allow_ibuf_merge = false) + bool allow_ibuf_merge = false, + bool* no_wait = nullptr) MY_ATTRIBUTE((nonnull(6), warn_unused_result)); /** This is the low level function used to get access to a database page. @@ -236,6 +240,11 @@ BUF_PEEK_IF_IN_POOL, or BUF_GET_IF_IN_POOL_OR_WATCH while reading the page from file then it makes sure that it does merging of change buffer changes while reading the page from file. +@param[in] holds_next_page_latch True if caller holds next page latch. +We must not wait for current page latch. +@param[in,out] no_wait If not NULL on input, then we must not +wait for current page latch. On output, the value is set to true if we had to +return because we could not wait on page latch. @return pointer to the block or NULL */ buf_block_t* buf_page_get_low( @@ -246,7 +255,8 @@ buf_page_get_low( ulint mode, mtr_t* mtr, dberr_t* err, - bool allow_ibuf_merge); + bool allow_ibuf_merge, + bool* no_wait); /** Initialize a page in the buffer pool. The page is usually not read from a file even if it cannot be found in the buffer buf_pool. This is one diff --git a/storage/innobase/include/mach0data.inl b/storage/innobase/include/mach0data.inl index 2f970fd27f0..8fdeaffedf5 100644 --- a/storage/innobase/include/mach0data.inl +++ b/storage/innobase/include/mach0data.inl @@ -39,7 +39,9 @@ mach_write_to_1( byte* b, /*!< in: pointer to byte where to store */ ulint n) /*!< in: ulint integer to be stored, >= 0, < 256 */ { +#ifndef HAVE_valgrind ut_ad((n & ~0xFFUL) == 0); +#endif b[0] = (byte) n; } @@ -56,7 +58,9 @@ mach_write_to_2( byte* b, /*!< in: pointer to two bytes where to store */ ulint n) /*!< in: ulint integer to be stored */ { +#ifndef HAVE_valgrind ut_ad((n & ~0xFFFFUL) == 0); +#endif b[0] = (byte)(n >> 8); b[1] = (byte)(n); diff --git a/storage/innobase/row/row0import.cc b/storage/innobase/row/row0import.cc index 6194e9c3eec..03e5ef032cd 100644 --- a/storage/innobase/row/row0import.cc +++ b/storage/innobase/row/row0import.cc @@ -2153,7 +2153,7 @@ dberr_t PageConverter::operator()(buf_block_t* block) UNIV_NOTHROW we no longer evict the pages on DISCARD TABLESPACE. */ buf_page_get_low(block->page.id(), get_zip_size(), RW_NO_LATCH, nullptr, BUF_PEEK_IF_IN_POOL, - nullptr, nullptr, false); + nullptr, nullptr, false, nullptr); uint16_t page_type; diff --git a/storage/innobase/trx/trx0roll.cc b/storage/innobase/trx/trx0roll.cc index f21ba4229b6..126d8aadacb 100644 --- a/storage/innobase/trx/trx0roll.cc +++ b/storage/innobase/trx/trx0roll.cc @@ -221,7 +221,7 @@ dberr_t trx_rollback_for_mysql(trx_t* trx) even if trx->state is TRX_STATE_NOT_STARTED. */ ut_ad(!(trx->lock.was_chosen_as_deadlock_victim & 1)); #ifdef WITH_WSREP - trx->wsrep= false; + ut_ad(!trx->is_wsrep()); trx->lock.was_chosen_as_deadlock_victim= false; #endif return(DB_SUCCESS); diff --git a/storage/innobase/trx/trx0trx.cc b/storage/innobase/trx/trx0trx.cc index 2635544eac7..457c3b49c46 100644 --- a/storage/innobase/trx/trx0trx.cc +++ b/storage/innobase/trx/trx0trx.cc @@ -923,6 +923,7 @@ trx_start_low( #ifdef WITH_WSREP trx->xid.null(); + trx->wsrep = wsrep_on(trx->mysql_thd); #endif /* WITH_WSREP */ ut_a(ib_vector_is_empty(trx->autoinc_locks)); @@ -1497,6 +1498,8 @@ TRANSACTIONAL_INLINE inline void trx_t::commit_in_memory(const mtr_t *mtr) trx_finalize_for_fts(this, undo_no != 0); #ifdef WITH_WSREP + ut_ad(is_wsrep() == wsrep_on(mysql_thd)); + /* Serialization history has been written and the transaction is committed in memory, which makes this commit ordered. Release commit order critical section. */ diff --git a/storage/perfschema/CMakeLists.txt b/storage/perfschema/CMakeLists.txt index e703e43fe50..402f62d569d 100644 --- a/storage/perfschema/CMakeLists.txt +++ b/storage/perfschema/CMakeLists.txt @@ -49,7 +49,6 @@ cursor_by_thread.h cursor_by_user.h pfs.h pfs_account.h -pfs_atomic.h pfs_buffer_container.h pfs_builtin_memory.h pfs_column_types.h diff --git a/storage/perfschema/pfs_account.h b/storage/perfschema/pfs_account.h index 0aa36204e12..8a2d40c5017 100644 --- a/storage/perfschema/pfs_account.h +++ b/storage/perfschema/pfs_account.h @@ -27,6 +27,7 @@ @file storage/perfschema/pfs_account.h Performance schema account (declarations). */ +#include #include "pfs_lock.h" #include "lf.h" @@ -62,22 +63,22 @@ struct PFS_ALIGNED PFS_account : PFS_connection_slice public: inline void init_refcount(void) { - PFS_atomic::store_32(& m_refcount, 1); + m_refcount.store(1); } inline int get_refcount(void) { - return PFS_atomic::load_32(& m_refcount); + return m_refcount.load(); } inline void inc_refcount(void) { - PFS_atomic::add_32(& m_refcount, 1); + m_refcount.fetch_add(1); } inline void dec_refcount(void) { - PFS_atomic::add_32(& m_refcount, -1); + m_refcount.fetch_sub(1); } void aggregate(bool alive, PFS_user *safe_user, PFS_host *safe_host); @@ -109,7 +110,7 @@ public: ulonglong m_disconnected_count; private: - int m_refcount; + std::atomic m_refcount; }; int init_account(const PFS_global_param *param); diff --git a/storage/perfschema/pfs_atomic.h b/storage/perfschema/pfs_atomic.h deleted file mode 100644 index 8543cdabc88..00000000000 --- a/storage/perfschema/pfs_atomic.h +++ /dev/null @@ -1,141 +0,0 @@ -/* Copyright (c) 2009, 2023, Oracle and/or its affiliates. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License, version 2.0, - as published by the Free Software Foundation. - - This program is also distributed with certain software (including - but not limited to OpenSSL) that is licensed under separate terms, - as designated in a particular file or component or in included license - documentation. The authors of MySQL hereby grant you an additional - permission to link the program and your derivative works with the - separately licensed software that they have included with MySQL. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License, version 2.0, for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ - -#ifndef PFS_ATOMIC_H -#define PFS_ATOMIC_H - -/** - @file storage/perfschema/pfs_atomic.h - Atomic operations (declarations). -*/ - -#include - -/** Helper for atomic operations. */ -class PFS_atomic -{ -public: - /** Atomic load. */ - static inline int32 load_32(int32 *ptr) - { - return my_atomic_load32(ptr); - } - - /** Atomic load. */ - static inline int64 load_64(int64 *ptr) - { - return my_atomic_load64(ptr); - } - - /** Atomic load. */ - static inline uint32 load_u32(uint32 *ptr) - { - return (uint32) my_atomic_load32((int32*) ptr); - } - - /** Atomic load. */ - static inline uint64 load_u64(uint64 *ptr) - { - return (uint64) my_atomic_load64((int64*) ptr); - } - - /** Atomic store. */ - static inline void store_32(int32 *ptr, int32 value) - { - my_atomic_store32(ptr, value); - } - - /** Atomic store. */ - static inline void store_64(int64 *ptr, int64 value) - { - my_atomic_store64(ptr, value); - } - - /** Atomic store. */ - static inline void store_u32(uint32 *ptr, uint32 value) - { - my_atomic_store32((int32*) ptr, (int32) value); - } - - /** Atomic store. */ - static inline void store_u64(uint64 *ptr, uint64 value) - { - my_atomic_store64((int64*) ptr, (int64) value); - } - - /** Atomic add. */ - static inline int32 add_32(int32 *ptr, int32 value) - { - return my_atomic_add32(ptr, value); - } - - /** Atomic add. */ - static inline int64 add_64(int64 *ptr, int64 value) - { - return my_atomic_add64(ptr, value); - } - - /** Atomic add. */ - static inline uint32 add_u32(uint32 *ptr, uint32 value) - { - return (uint32) my_atomic_add32((int32*) ptr, (int32) value); - } - - /** Atomic add. */ - static inline uint64 add_u64(uint64 *ptr, uint64 value) - { - return (uint64) my_atomic_add64((int64*) ptr, (int64) value); - } - - /** Atomic compare and swap. */ - static inline bool cas_32(int32 *ptr, int32 *old_value, - int32 new_value) - { - return my_atomic_cas32(ptr, old_value, new_value); - } - - /** Atomic compare and swap. */ - static inline bool cas_64(int64 *ptr, int64 *old_value, - int64 new_value) - { - return my_atomic_cas64(ptr, old_value, new_value); - } - - /** Atomic compare and swap. */ - static inline bool cas_u32(uint32 *ptr, uint32 *old_value, - uint32 new_value) - { - return my_atomic_cas32((int32*) ptr, (int32*) old_value, - (uint32) new_value); - } - - /** Atomic compare and swap. */ - static inline bool cas_u64(uint64 *ptr, uint64 *old_value, - uint64 new_value) - { - return my_atomic_cas64((int64*) ptr, (int64*) old_value, - (uint64) new_value); - } -}; - -#endif - diff --git a/storage/perfschema/pfs_buffer_container.h b/storage/perfschema/pfs_buffer_container.h index b5506fe0195..c1cd9e644ef 100644 --- a/storage/perfschema/pfs_buffer_container.h +++ b/storage/perfschema/pfs_buffer_container.h @@ -87,7 +87,7 @@ public: if (m_full) return NULL; - monotonic= PFS_atomic::add_u32(& m_monotonic.m_u32, 1); + monotonic= m_monotonic.m_u32.fetch_add(1); monotonic_max= monotonic + static_cast(m_max); while (monotonic < monotonic_max) @@ -99,7 +99,8 @@ public: { return pfs; } - monotonic= PFS_atomic::add_u32(& m_monotonic.m_u32, 1); + monotonic= m_monotonic.m_u32.fetch_add(1); + } m_full= true; @@ -517,7 +518,7 @@ public: ulong get_row_count() { - ulong page_count= PFS_atomic::load_u32(& m_max_page_index.m_u32); + ulong page_count= m_max_page_index.m_u32.load(); return page_count * PFS_PAGE_SIZE; } @@ -554,11 +555,11 @@ public: /* 1: Try to find an available record within the existing pages */ - current_page_count= PFS_atomic::load_u32(& m_max_page_index.m_u32); + current_page_count= m_max_page_index.m_u32.load(); if (current_page_count != 0) { - monotonic= PFS_atomic::load_u32(& m_monotonic.m_u32); + monotonic= m_monotonic.m_u32.load(); monotonic_max= monotonic + current_page_count; while (monotonic < monotonic_max) @@ -602,7 +603,7 @@ public: counter faster and then move on to the detection of new pages, in part 2: below. */ - monotonic= PFS_atomic::add_u32(& m_monotonic.m_u32, 1); + monotonic= m_monotonic.m_u32.fetch_add(1); }; } @@ -683,7 +684,7 @@ public: my_atomic_storeptr(typed_addr, ptr); /* Advertise the new page */ - PFS_atomic::add_u32(& m_max_page_index.m_u32, 1); + m_max_page_index.m_u32.fetch_add(1); } pthread_mutex_unlock(& m_critical_section); diff --git a/storage/perfschema/pfs_digest.cc b/storage/perfschema/pfs_digest.cc index fd5fdc5f8ff..47fa82dcb9a 100644 --- a/storage/perfschema/pfs_digest.cc +++ b/storage/perfschema/pfs_digest.cc @@ -76,7 +76,7 @@ int init_digest(const PFS_global_param *param) */ digest_max= param->m_digest_sizing; digest_lost= 0; - PFS_atomic::store_u32(& digest_monotonic_index.m_u32, 1); + digest_monotonic_index.m_u32.store(1); digest_full= false; if (digest_max == 0) @@ -275,7 +275,7 @@ search: while (++attempts <= digest_max) { - safe_index= PFS_atomic::add_u32(& digest_monotonic_index.m_u32, 1) % digest_max; + safe_index= digest_monotonic_index.m_u32.fetch_add(1) % digest_max; if (safe_index == 0) { /* Record [0] is reserved. */ @@ -407,7 +407,7 @@ void reset_esms_by_digest() Reset index which indicates where the next calculated digest information to be inserted in statements_digest_stat_array. */ - PFS_atomic::store_u32(& digest_monotonic_index.m_u32, 1); + digest_monotonic_index.m_u32.store(1); digest_full= false; } diff --git a/storage/perfschema/pfs_events_stages.cc b/storage/perfschema/pfs_events_stages.cc index aa1bdf4f7a0..9289d25e38e 100644 --- a/storage/perfschema/pfs_events_stages.cc +++ b/storage/perfschema/pfs_events_stages.cc @@ -34,7 +34,6 @@ #include "pfs_host.h" #include "pfs_user.h" #include "pfs_events_stages.h" -#include "pfs_atomic.h" #include "pfs_buffer_container.h" #include "pfs_builtin_memory.h" #include "m_string.h" @@ -62,7 +61,7 @@ int init_events_stages_history_long(uint events_stages_history_long_sizing) { events_stages_history_long_size= events_stages_history_long_sizing; events_stages_history_long_full= false; - PFS_atomic::store_u32(&events_stages_history_long_index.m_u32, 0); + events_stages_history_long_index.m_u32.store(0); if (events_stages_history_long_size == 0) return 0; @@ -135,7 +134,7 @@ void insert_events_stages_history_long(PFS_events_stages *stage) assert(events_stages_history_long_array != NULL); - uint index= PFS_atomic::add_u32(&events_stages_history_long_index.m_u32, 1); + uint index= events_stages_history_long_index.m_u32.fetch_add(1); index= index % events_stages_history_long_size; if (index == 0) @@ -176,7 +175,7 @@ void reset_events_stages_history(void) /** Reset table EVENTS_STAGES_HISTORY_LONG data. */ void reset_events_stages_history_long(void) { - PFS_atomic::store_u32(&events_stages_history_long_index.m_u32, 0); + events_stages_history_long_index.m_u32.store(0); events_stages_history_long_full= false; PFS_events_stages *pfs= events_stages_history_long_array; diff --git a/storage/perfschema/pfs_events_statements.cc b/storage/perfschema/pfs_events_statements.cc index 05bdc83fc5c..9bd6013b390 100644 --- a/storage/perfschema/pfs_events_statements.cc +++ b/storage/perfschema/pfs_events_statements.cc @@ -34,7 +34,6 @@ #include "pfs_host.h" #include "pfs_user.h" #include "pfs_events_statements.h" -#include "pfs_atomic.h" #include "pfs_buffer_container.h" #include "pfs_builtin_memory.h" #include "m_string.h" @@ -64,7 +63,7 @@ int init_events_statements_history_long(size_t events_statements_history_long_si { events_statements_history_long_size= events_statements_history_long_sizing; events_statements_history_long_full= false; - PFS_atomic::store_u32(&events_statements_history_long_index.m_u32, 0); + events_statements_history_long_index.m_u32.store(0); if (events_statements_history_long_size == 0) return 0; @@ -213,7 +212,7 @@ void insert_events_statements_history_long(PFS_events_statements *statement) assert(events_statements_history_long_array != NULL); - uint index= PFS_atomic::add_u32(&events_statements_history_long_index.m_u32, 1); + uint index= events_statements_history_long_index.m_u32.fetch_add(1); index= index % events_statements_history_long_size; if (index == 0) @@ -258,7 +257,7 @@ void reset_events_statements_history(void) /** Reset table EVENTS_STATEMENTS_HISTORY_LONG data. */ void reset_events_statements_history_long(void) { - PFS_atomic::store_u32(&events_statements_history_long_index.m_u32, 0); + events_statements_history_long_index.m_u32.store(0); events_statements_history_long_full= false; PFS_events_statements *pfs= events_statements_history_long_array; diff --git a/storage/perfschema/pfs_events_transactions.cc b/storage/perfschema/pfs_events_transactions.cc index 5ccdb0345d7..563de844f3a 100644 --- a/storage/perfschema/pfs_events_transactions.cc +++ b/storage/perfschema/pfs_events_transactions.cc @@ -34,7 +34,6 @@ #include "pfs_host.h" #include "pfs_user.h" #include "pfs_events_transactions.h" -#include "pfs_atomic.h" #include "pfs_buffer_container.h" #include "pfs_builtin_memory.h" #include "m_string.h" @@ -62,7 +61,7 @@ int init_events_transactions_history_long(uint events_transactions_history_long_ { events_transactions_history_long_size= events_transactions_history_long_sizing; events_transactions_history_long_full= false; - PFS_atomic::store_u32(&events_transactions_history_long_index.m_u32, 0); + events_transactions_history_long_index.m_u32.store(0); if (events_transactions_history_long_size == 0) return 0; @@ -135,7 +134,7 @@ void insert_events_transactions_history_long(PFS_events_transactions *transactio assert(events_transactions_history_long_array != NULL); - uint index= PFS_atomic::add_u32(&events_transactions_history_long_index.m_u32, 1); + uint index= events_transactions_history_long_index.m_u32.fetch_add(1); index= index % events_transactions_history_long_size; if (index == 0) @@ -176,7 +175,7 @@ void reset_events_transactions_history(void) /** Reset table EVENTS_TRANSACTIONS_HISTORY_LONG data. */ void reset_events_transactions_history_long(void) { - PFS_atomic::store_u32(&events_transactions_history_long_index.m_u32, 0); + events_transactions_history_long_index.m_u32.store(0); events_transactions_history_long_full= false; PFS_events_transactions *pfs= events_transactions_history_long_array; diff --git a/storage/perfschema/pfs_events_waits.cc b/storage/perfschema/pfs_events_waits.cc index 3ec6a671913..bceb8d3b791 100644 --- a/storage/perfschema/pfs_events_waits.cc +++ b/storage/perfschema/pfs_events_waits.cc @@ -34,7 +34,6 @@ #include "pfs_host.h" #include "pfs_account.h" #include "pfs_events_waits.h" -#include "pfs_atomic.h" #include "pfs_buffer_container.h" #include "pfs_builtin_memory.h" #include "m_string.h" @@ -66,7 +65,7 @@ int init_events_waits_history_long(uint events_waits_history_long_sizing) { events_waits_history_long_size= events_waits_history_long_sizing; events_waits_history_long_full= false; - PFS_atomic::store_u32(&events_waits_history_long_index.m_u32, 0); + events_waits_history_long_index.m_u32.store(0); if (events_waits_history_long_size == 0) return 0; @@ -135,7 +134,7 @@ void insert_events_waits_history_long(PFS_events_waits *wait) if (unlikely(events_waits_history_long_size == 0)) return; - uint index= PFS_atomic::add_u32(&events_waits_history_long_index.m_u32, 1); + uint index= events_waits_history_long_index.m_u32.fetch_add(1); index= index % events_waits_history_long_size; if (index == 0) @@ -181,7 +180,7 @@ void reset_events_waits_history(void) /** Reset table EVENTS_WAITS_HISTORY_LONG data. */ void reset_events_waits_history_long(void) { - PFS_atomic::store_u32(&events_waits_history_long_index.m_u32, 0); + events_waits_history_long_index.m_u32.store(0); events_waits_history_long_full= false; PFS_events_waits *wait= events_waits_history_long_array; diff --git a/storage/perfschema/pfs_global.h b/storage/perfschema/pfs_global.h index 6b73fd9f8a5..53425cdd4d7 100644 --- a/storage/perfschema/pfs_global.h +++ b/storage/perfschema/pfs_global.h @@ -24,6 +24,8 @@ #ifndef PFS_GLOBAL_H #define PFS_GLOBAL_H +#include + #include "my_compiler.h" /** @@ -44,7 +46,7 @@ extern size_t pfs_allocated_memory; */ struct PFS_cacheline_uint32 { - uint32 m_u32; + std::atomic m_u32; char m_full_cache_line[CPU_LEVEL1_DCACHE_LINESIZE - sizeof(uint32)]; PFS_cacheline_uint32() @@ -58,7 +60,7 @@ struct PFS_cacheline_uint32 */ struct PFS_cacheline_uint64 { - uint64 m_u64; + std::atomic m_u64; char m_full_cache_line[CPU_LEVEL1_DCACHE_LINESIZE - sizeof(uint64)]; PFS_cacheline_uint64() diff --git a/storage/perfschema/pfs_host.h b/storage/perfschema/pfs_host.h index 56bcccb94ac..89dd05df864 100644 --- a/storage/perfschema/pfs_host.h +++ b/storage/perfschema/pfs_host.h @@ -28,6 +28,8 @@ Performance schema host (declarations). */ +#include + #include "pfs_lock.h" #include "lf.h" #include "pfs_con_slice.h" @@ -58,22 +60,22 @@ struct PFS_ALIGNED PFS_host : PFS_connection_slice public: inline void init_refcount(void) { - PFS_atomic::store_32(& m_refcount, 1); + m_refcount.store(1); } inline int get_refcount(void) { - return PFS_atomic::load_32(& m_refcount); + return m_refcount.load(); } inline void inc_refcount(void) { - PFS_atomic::add_32(& m_refcount, 1); + m_refcount.fetch_add(1); } inline void dec_refcount(void) { - PFS_atomic::add_32(& m_refcount, -1); + m_refcount.fetch_sub(1); } void aggregate(bool alive); @@ -97,7 +99,7 @@ public: ulonglong m_disconnected_count; private: - int m_refcount; + std::atomic m_refcount; }; int init_host(const PFS_global_param *param); diff --git a/storage/perfschema/pfs_instr.cc b/storage/perfschema/pfs_instr.cc index f08d1a25174..d34afcb1393 100644 --- a/storage/perfschema/pfs_instr.cc +++ b/storage/perfschema/pfs_instr.cc @@ -527,7 +527,7 @@ PFS_thread* create_thread(PFS_thread_class *klass, const void *identity, if (pfs != NULL) { pfs->m_thread_internal_id= - PFS_atomic::add_u64(&thread_internal_id_counter.m_u64, 1); + thread_internal_id_counter.m_u64.fetch_add(1); pfs->m_parent_thread_internal_id= 0; pfs->m_processlist_id= static_cast(processlist_id); pfs->m_thread_os_id= my_thread_os_id(); diff --git a/storage/perfschema/pfs_instr_class.cc b/storage/perfschema/pfs_instr_class.cc index 56573d3dffd..49aa73f078a 100644 --- a/storage/perfschema/pfs_instr_class.cc +++ b/storage/perfschema/pfs_instr_class.cc @@ -25,6 +25,7 @@ @file storage/perfschema/pfs_instr_class.cc Performance schema instruments meta data (implementation). */ +#include #include "my_global.h" #include "my_sys.h" @@ -36,7 +37,6 @@ #include "pfs_timer.h" #include "pfs_events_waits.h" #include "pfs_setup_object.h" -#include "pfs_atomic.h" #include "pfs_program.h" #include "pfs_buffer_container.h" #include "mysql/psi/mysql_thread.h" @@ -76,12 +76,12 @@ static void init_instr_class(PFS_instr_class *klass, - the performance schema initialization - a plugin initialization */ -static uint32 mutex_class_dirty_count= 0; -static uint32 mutex_class_allocated_count= 0; -static uint32 rwlock_class_dirty_count= 0; -static uint32 rwlock_class_allocated_count= 0; -static uint32 cond_class_dirty_count= 0; -static uint32 cond_class_allocated_count= 0; +static std::atomic mutex_class_dirty_count(0); +static std::atomic mutex_class_allocated_count(0); +static std::atomic rwlock_class_dirty_count(0); +static std::atomic rwlock_class_allocated_count(0); +static std::atomic cond_class_dirty_count(0); +static std::atomic cond_class_allocated_count(0); /** Size of the mutex class array. @sa mutex_class_array */ ulong mutex_class_max= 0; @@ -137,8 +137,8 @@ PFS_cond_class *cond_class_array= NULL; - the performance schema initialization - a plugin initialization */ -static uint32 thread_class_dirty_count= 0; -static uint32 thread_class_allocated_count= 0; +static std::atomic thread_class_dirty_count(0); +static std::atomic thread_class_allocated_count(0); static PFS_thread_class *thread_class_array= NULL; @@ -185,28 +185,28 @@ LF_HASH table_share_hash; /** True if table_share_hash is initialized. */ static bool table_share_hash_inited= false; -static uint32 file_class_dirty_count= 0; -static uint32 file_class_allocated_count= 0; +static std::atomic file_class_dirty_count(0); +static std::atomic file_class_allocated_count(0); PFS_file_class *file_class_array= NULL; -static uint32 stage_class_dirty_count= 0; -static uint32 stage_class_allocated_count= 0; +static std::atomic stage_class_dirty_count(0); +static std::atomic stage_class_allocated_count(0); static PFS_stage_class *stage_class_array= NULL; -static uint32 statement_class_dirty_count= 0; -static uint32 statement_class_allocated_count= 0; +static std::atomic statement_class_dirty_count(0); +static std::atomic statement_class_allocated_count(0); static PFS_statement_class *statement_class_array= NULL; -static uint32 socket_class_dirty_count= 0; -static uint32 socket_class_allocated_count= 0; +static std::atomic socket_class_dirty_count(0); +static std::atomic socket_class_allocated_count(0); static PFS_socket_class *socket_class_array= NULL; -static uint32 memory_class_dirty_count= 0; -static uint32 memory_class_allocated_count= 0; +static std::atomic memory_class_dirty_count(0); +static std::atomic memory_class_allocated_count(0); static PFS_memory_class *memory_class_array= NULL; @@ -1092,7 +1092,7 @@ PFS_sync_key register_mutex_class(const char *name, uint name_length, mutex_class_dirty_count is incremented *before* an entry is added mutex_class_allocated_count is incremented *after* an entry is added */ - index= PFS_atomic::add_u32(&mutex_class_dirty_count, 1); + index= mutex_class_dirty_count.fetch_add(1); if (index < mutex_class_max) { @@ -1148,7 +1148,7 @@ PFS_sync_key register_mutex_class(const char *name, uint name_length, empty/NULL/zero, but this won't cause a crash (mutex_class_array is initialized with MY_ZEROFILL). */ - PFS_atomic::add_u32(&mutex_class_allocated_count, 1); + mutex_class_allocated_count.fetch_add(1); return (index + 1); } @@ -1178,7 +1178,7 @@ PFS_sync_key register_rwlock_class(const char *name, uint name_length, REGISTER_CLASS_BODY_PART(index, rwlock_class_array, rwlock_class_max, name, name_length) - index= PFS_atomic::add_u32(&rwlock_class_dirty_count, 1); + index= rwlock_class_dirty_count.fetch_add(1); if (index < rwlock_class_max) { @@ -1191,7 +1191,7 @@ PFS_sync_key register_rwlock_class(const char *name, uint name_length, entry->m_timed= false; /* Set user-defined configuration options for this instrument */ configure_instr_class(entry); - PFS_atomic::add_u32(&rwlock_class_allocated_count, 1); + rwlock_class_allocated_count.fetch_add(1); return (index + 1); } @@ -1217,7 +1217,7 @@ PFS_sync_key register_cond_class(const char *name, uint name_length, REGISTER_CLASS_BODY_PART(index, cond_class_array, cond_class_max, name, name_length) - index= PFS_atomic::add_u32(&cond_class_dirty_count, 1); + index= cond_class_dirty_count.fetch_add(1); if (index < cond_class_max) { @@ -1229,7 +1229,7 @@ PFS_sync_key register_cond_class(const char *name, uint name_length, entry->m_timed= false; /* Set user-defined configuration options for this instrument */ configure_instr_class(entry); - PFS_atomic::add_u32(&cond_class_allocated_count, 1); + cond_class_allocated_count.fetch_add(1); return (index + 1); } @@ -1311,7 +1311,7 @@ PFS_thread_key register_thread_class(const char *name, uint name_length, return (index + 1); } - index= PFS_atomic::add_u32(&thread_class_dirty_count, 1); + index= thread_class_dirty_count.fetch_add(1); if (index < thread_class_max) { @@ -1320,7 +1320,7 @@ PFS_thread_key register_thread_class(const char *name, uint name_length, strncpy(entry->m_name, name, name_length); entry->m_name_length= name_length; entry->m_enabled= true; - PFS_atomic::add_u32(&thread_class_allocated_count, 1); + thread_class_allocated_count.fetch_add(1); return (index + 1); } @@ -1361,7 +1361,7 @@ PFS_file_key register_file_class(const char *name, uint name_length, REGISTER_CLASS_BODY_PART(index, file_class_array, file_class_max, name, name_length) - index= PFS_atomic::add_u32(&file_class_dirty_count, 1); + index= file_class_dirty_count.fetch_add(1); if (index < file_class_max) { @@ -1373,7 +1373,7 @@ PFS_file_key register_file_class(const char *name, uint name_length, entry->m_timed= true; /* Set user-defined configuration options for this instrument */ configure_instr_class(entry); - PFS_atomic::add_u32(&file_class_allocated_count, 1); + file_class_allocated_count.fetch_add(1); return (index + 1); } @@ -1403,7 +1403,7 @@ PFS_stage_key register_stage_class(const char *name, REGISTER_CLASS_BODY_PART(index, stage_class_array, stage_class_max, name, name_length) - index= PFS_atomic::add_u32(&stage_class_dirty_count, 1); + index= stage_class_dirty_count.fetch_add(1); if (index < stage_class_max) { @@ -1427,7 +1427,7 @@ PFS_stage_key register_stage_class(const char *name, /* Set user-defined configuration options for this instrument */ configure_instr_class(entry); - PFS_atomic::add_u32(&stage_class_allocated_count, 1); + stage_class_allocated_count.fetch_add(1); return (index + 1); } @@ -1454,7 +1454,7 @@ PFS_statement_key register_statement_class(const char *name, uint name_length, REGISTER_CLASS_BODY_PART(index, statement_class_array, statement_class_max, name, name_length) - index= PFS_atomic::add_u32(&statement_class_dirty_count, 1); + index= statement_class_dirty_count.fetch_add(1); if (index < statement_class_max) { @@ -1465,7 +1465,7 @@ PFS_statement_key register_statement_class(const char *name, uint name_length, entry->m_timed= true; /* Set user-defined configuration options for this instrument */ configure_instr_class(entry); - PFS_atomic::add_u32(&statement_class_allocated_count, 1); + statement_class_allocated_count.fetch_add(1); return (index + 1); } @@ -1537,7 +1537,7 @@ PFS_socket_key register_socket_class(const char *name, uint name_length, REGISTER_CLASS_BODY_PART(index, socket_class_array, socket_class_max, name, name_length) - index= PFS_atomic::add_u32(&socket_class_dirty_count, 1); + index= socket_class_dirty_count.fetch_add(1); if (index < socket_class_max) { @@ -1549,7 +1549,7 @@ PFS_socket_key register_socket_class(const char *name, uint name_length, entry->m_timed= false; /* Set user-defined configuration options for this instrument */ configure_instr_class(entry); - PFS_atomic::add_u32(&socket_class_allocated_count, 1); + socket_class_allocated_count.fetch_add(1); return (index + 1); } @@ -1590,7 +1590,7 @@ PFS_memory_key register_memory_class(const char *name, uint name_length, REGISTER_CLASS_BODY_PART(index, memory_class_array, memory_class_max, name, name_length) - index= PFS_atomic::add_u32(&memory_class_dirty_count, 1); + index= memory_class_dirty_count.fetch_add(1); if (index < memory_class_max) { @@ -1601,7 +1601,7 @@ PFS_memory_key register_memory_class(const char *name, uint name_length, /* Set user-defined configuration options for this instrument */ configure_instr_class(entry); entry->m_timed= false; /* Immutable */ - PFS_atomic::add_u32(&memory_class_allocated_count, 1); + memory_class_allocated_count.fetch_add(1); return (index + 1); } diff --git a/storage/perfschema/pfs_instr_class.h b/storage/perfschema/pfs_instr_class.h index f353c410d4c..57c7f9e5464 100644 --- a/storage/perfschema/pfs_instr_class.h +++ b/storage/perfschema/pfs_instr_class.h @@ -23,11 +23,12 @@ #ifndef PFS_INSTR_CLASS_H #define PFS_INSTR_CLASS_H +#include + #include "my_global.h" #include "mysql_com.h" /* NAME_LEN */ #include "lf.h" #include "pfs_global.h" -#include "pfs_atomic.h" #include "sql_array.h" /** @@ -329,22 +330,22 @@ public: inline void init_refcount(void) { - PFS_atomic::store_32(& m_refcount, 1); + m_refcount.store(1); } inline int get_refcount(void) { - return PFS_atomic::load_32(& m_refcount); + return m_refcount.load(); } inline void inc_refcount(void) { - PFS_atomic::add_32(& m_refcount, 1); + m_refcount.fetch_add(1); } inline void dec_refcount(void) { - PFS_atomic::add_32(& m_refcount, -1); + m_refcount.fetch_sub(1); } void refresh_setup_object_flags(PFS_thread *thread); @@ -387,7 +388,7 @@ public: private: /** Number of opened table handles. */ - int m_refcount; + std::atomic m_refcount; /** Table locks statistics. */ PFS_table_share_lock *m_race_lock_stat; /** Table indexes' stats. */ diff --git a/storage/perfschema/pfs_lock.h b/storage/perfschema/pfs_lock.h index 0f4bcb6de8f..4d3c7c040e8 100644 --- a/storage/perfschema/pfs_lock.h +++ b/storage/perfschema/pfs_lock.h @@ -28,9 +28,9 @@ Performance schema internal locks (declarations). */ -#include "my_global.h" +#include -#include "pfs_atomic.h" +#include "my_global.h" /* to cause bugs, testing */ // #define MEM(X) std::memory_order_relaxed @@ -103,7 +103,7 @@ struct pfs_lock The version number is stored in the high 30 bits. The state is stored in the low 2 bits. */ - uint32 m_version_state; + std::atomic m_version_state; uint32 copy_version_state() { @@ -119,7 +119,7 @@ struct pfs_lock { uint32 copy; - copy= PFS_atomic::load_u32(&m_version_state); + copy= m_version_state.load(); return ((copy & STATE_MASK) == PFS_LOCK_FREE); } @@ -129,7 +129,7 @@ struct pfs_lock { uint32 copy; - copy= PFS_atomic::load_u32(&m_version_state); + copy= m_version_state.load(); return ((copy & STATE_MASK) == PFS_LOCK_ALLOCATED); } @@ -144,7 +144,7 @@ struct pfs_lock { uint32 old_val; - old_val= PFS_atomic::load_u32(&m_version_state); + old_val= m_version_state.load(); if ((old_val & STATE_MASK) != PFS_LOCK_FREE) { @@ -154,7 +154,7 @@ struct pfs_lock uint32 new_val= (old_val & VERSION_MASK) + PFS_LOCK_DIRTY; bool pass; - pass= PFS_atomic::cas_u32(&m_version_state, &old_val, new_val); + pass= m_version_state.compare_exchange_strong(old_val, new_val); if (pass) { @@ -178,7 +178,7 @@ struct pfs_lock uint32 new_val= (copy & VERSION_MASK) + PFS_LOCK_DIRTY; /* We own the record, no need to use compare and swap. */ - PFS_atomic::store_u32(&m_version_state, new_val); + m_version_state.store(new_val); copy_ptr->m_version_state= new_val; } @@ -195,7 +195,7 @@ struct pfs_lock /* Increment the version, set the ALLOCATED state */ uint32 new_val= (copy->m_version_state & VERSION_MASK) + VERSION_INC + PFS_LOCK_ALLOCATED; - PFS_atomic::store_u32(&m_version_state, new_val); + m_version_state.store(new_val); } /** @@ -210,7 +210,7 @@ struct pfs_lock /* Increment the version, set the ALLOCATED state */ uint32 new_val= (copy & VERSION_MASK) + VERSION_INC + PFS_LOCK_ALLOCATED; - PFS_atomic::store_u32(&m_version_state, new_val); + m_version_state.store(new_val); } /** @@ -219,10 +219,10 @@ struct pfs_lock void set_dirty(pfs_dirty_state *copy_ptr) { /* Do not set the version to 0, read the previous value. */ - uint32 copy= PFS_atomic::load_u32(&m_version_state); + uint32 copy= m_version_state.load(); /* Increment the version, set the DIRTY state */ uint32 new_val= (copy & VERSION_MASK) + VERSION_INC + PFS_LOCK_DIRTY; - PFS_atomic::store_u32(&m_version_state, new_val); + m_version_state.store(new_val); copy_ptr->m_version_state= new_val; } @@ -238,7 +238,7 @@ struct pfs_lock /* Keep the same version, set the FREE state */ uint32 new_val= (copy->m_version_state & VERSION_MASK) + PFS_LOCK_FREE; - PFS_atomic::store_u32(&m_version_state, new_val); + m_version_state.store(new_val); } /** @@ -258,7 +258,7 @@ struct pfs_lock /* Keep the same version, set the FREE state */ uint32 new_val= (copy & VERSION_MASK) + PFS_LOCK_FREE; - PFS_atomic::store_u32(&m_version_state, new_val); + m_version_state.store(new_val); } /** @@ -268,7 +268,7 @@ struct pfs_lock */ void begin_optimistic_lock(struct pfs_optimistic_state *copy) { - copy->m_version_state= PFS_atomic::load_u32(&m_version_state); + copy->m_version_state= m_version_state.load(); } /** @@ -285,7 +285,7 @@ struct pfs_lock if ((copy->m_version_state & STATE_MASK) != PFS_LOCK_ALLOCATED) return false; - version_state= PFS_atomic::load_u32(&m_version_state); + version_state= m_version_state.load(); /* Check the version + state has not changed. */ if (copy->m_version_state != version_state) @@ -298,7 +298,7 @@ struct pfs_lock { uint32 version_state; - version_state= PFS_atomic::load_u32(&m_version_state); + version_state= m_version_state.load(); return (version_state & VERSION_MASK); } diff --git a/storage/perfschema/pfs_memory.cc b/storage/perfschema/pfs_memory.cc index 0ee8e3dd7df..7cb932b3502 100644 --- a/storage/perfschema/pfs_memory.cc +++ b/storage/perfschema/pfs_memory.cc @@ -33,7 +33,6 @@ #include "pfs_account.h" #include "pfs_host.h" #include "pfs_user.h" -#include "pfs_atomic.h" #include "pfs_buffer_container.h" #include "m_string.h" diff --git a/storage/perfschema/pfs_status.cc b/storage/perfschema/pfs_status.cc index 2596c53c4ad..9d3bcd43ec3 100644 --- a/storage/perfschema/pfs_status.cc +++ b/storage/perfschema/pfs_status.cc @@ -34,7 +34,6 @@ #include "pfs_host.h" #include "pfs_user.h" #include "pfs_status.h" -#include "pfs_atomic.h" #include "pfs_buffer_container.h" #include "sql_show.h" /* reset_status_vars */ diff --git a/storage/perfschema/pfs_user.h b/storage/perfschema/pfs_user.h index e15e733e5ac..e92629e4dd7 100644 --- a/storage/perfschema/pfs_user.h +++ b/storage/perfschema/pfs_user.h @@ -28,6 +28,8 @@ Performance schema user (declarations). */ +#include + #include "pfs_lock.h" #include "lf.h" #include "pfs_con_slice.h" @@ -58,22 +60,22 @@ struct PFS_ALIGNED PFS_user : public PFS_connection_slice public: inline void init_refcount(void) { - PFS_atomic::store_32(& m_refcount, 1); + m_refcount.store(1); } inline int get_refcount(void) { - return PFS_atomic::load_32(& m_refcount); + return m_refcount.load(); } inline void inc_refcount(void) { - PFS_atomic::add_32(& m_refcount, 1); + m_refcount.fetch_add(1); } inline void dec_refcount(void) { - PFS_atomic::add_32(& m_refcount, -1); + m_refcount.fetch_sub(1); } void aggregate(bool alive); @@ -97,7 +99,7 @@ public: ulonglong m_disconnected_count; private: - int m_refcount; + std::atomic m_refcount; }; int init_user(const PFS_global_param *param); diff --git a/tpool/CMakeLists.txt b/tpool/CMakeLists.txt index 115e3d58634..cf35633b090 100644 --- a/tpool/CMakeLists.txt +++ b/tpool/CMakeLists.txt @@ -7,7 +7,7 @@ ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Linux") IF(WITH_URING) SET(URING_REQUIRED REQUIRED) ELSEIF(WITH_LIBAIO) - SET(LIBAIO_REQIRED REQUIRED) + SET(LIBAIO_REQUIRED REQUIRED) ENDIF() FIND_PACKAGE(URING QUIET ${URING_REQUIRED}) IF(URING_FOUND)