mark some file to been opensource for ce-farm

This commit is contained in:
niyuhang
2023-11-15 11:44:43 +00:00
committed by ob-robot
parent 4900683cff
commit c8ace58297
685 changed files with 1080566 additions and 111051 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,247 @@
result_format: 4
explain_protocol: 0
set @@ob_enable_plan_cache = 0;
drop table if exists t1, t2;
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 smallint, c6 smallint unsigned,
c7 mediumint, c8 mediumint unsigned,
c9 integer, c10 integer unsigned,
c11 bigint, c12 bigint unsigned,
c13 float, c14 float unsigned,
c15 double, c16 double unsigned,
c17 decimal, c18 decimal unsigned,
c19 datetime, c20 timestamp,
c21 varchar(30), c22 char(30), c_null int);
insert into t1 values(1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
3.5, 4.5,
5.5, 6.5,
7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'9.5', '10.5', null);
insert into t1 values(-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-3.5, 4.5,
-5.5, 6.5,
-7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'-9.5', '10.5', null);
create table t2(col_int int, col_utf8 varchar(100) charset utf8,
col_utf16 varchar(100) charset utf16,
col_gbk varchar(100) charset gbk);
insert into t2 values(1, 'a', 'a', 'a');
insert into t2 values(-1, '中国', '中文', '中文');
insert into t2 values(256, ' 中国', ' 中文', '中文');
select ascii(c_null) from t1;
+---------------+
| ascii(c_null) |
+---------------+
| NULL |
| NULL |
+---------------+
select ord(c_null) from t1;
+-------------+
| ord(c_null) |
+-------------+
| NULL |
| NULL |
+-------------+
select c1, ascii(c1), ord(c1) from t1;
+------+-----------+---------+
| c1 | ascii(c1) | ord(c1) |
+------+-----------+---------+
| 1 | 49 | 49 |
| -1 | 45 | 45 |
+------+-----------+---------+
select c2, ascii(c2), ord(c2) from t1;
+------+-----------+---------+
| c2 | ascii(c2) | ord(c2) |
+------+-----------+---------+
| 2 | 50 | 50 |
| 2 | 50 | 50 |
+------+-----------+---------+
select c3, ascii(c3), ord(c3) from t1;
+------+-----------+---------+
| c3 | ascii(c3) | ord(c3) |
+------+-----------+---------+
| 1 | 49 | 49 |
| -1 | 45 | 45 |
+------+-----------+---------+
select c4, ascii(c4), ord(c4) from t1;
+------+-----------+---------+
| c4 | ascii(c4) | ord(c4) |
+------+-----------+---------+
| 2 | 50 | 50 |
| 2 | 50 | 50 |
+------+-----------+---------+
select c5, ascii(c5), ord(c5) from t1;
+------+-----------+---------+
| c5 | ascii(c5) | ord(c5) |
+------+-----------+---------+
| 1 | 49 | 49 |
| -1 | 45 | 45 |
+------+-----------+---------+
select c6, ascii(c6), ord(c6) from t1;
+------+-----------+---------+
| c6 | ascii(c6) | ord(c6) |
+------+-----------+---------+
| 2 | 50 | 50 |
| 2 | 50 | 50 |
+------+-----------+---------+
select c7, ascii(c7), ord(c7) from t1;
+------+-----------+---------+
| c7 | ascii(c7) | ord(c7) |
+------+-----------+---------+
| 1 | 49 | 49 |
| -1 | 45 | 45 |
+------+-----------+---------+
select c8, ascii(c8), ord(c8) from t1;
+------+-----------+---------+
| c8 | ascii(c8) | ord(c8) |
+------+-----------+---------+
| 2 | 50 | 50 |
| 2 | 50 | 50 |
+------+-----------+---------+
select c9, ascii(c9), ord(c9) from t1;
+------+-----------+---------+
| c9 | ascii(c9) | ord(c9) |
+------+-----------+---------+
| 1 | 49 | 49 |
| -1 | 45 | 45 |
+------+-----------+---------+
select c10, ascii(c10), ord(c10) from t1;
+------+------------+----------+
| c10 | ascii(c10) | ord(c10) |
+------+------------+----------+
| 2 | 50 | 50 |
| 2 | 50 | 50 |
+------+------------+----------+
select c11, ascii(c11), ord(c11) from t1;
+------+------------+----------+
| c11 | ascii(c11) | ord(c11) |
+------+------------+----------+
| 1 | 49 | 49 |
| -1 | 45 | 45 |
+------+------------+----------+
select c12, ascii(c12), ord(c12) from t1;
+------+------------+----------+
| c12 | ascii(c12) | ord(c12) |
+------+------------+----------+
| 2 | 50 | 50 |
| 2 | 50 | 50 |
+------+------------+----------+
select c13, ascii(c13), ord(c13) from t1;
+------+------------+----------+
| c13 | ascii(c13) | ord(c13) |
+------+------------+----------+
| 3.5 | 51 | 51 |
| -3.5 | 45 | 45 |
+------+------------+----------+
select c14, ascii(c14), ord(c14) from t1;
+------+------------+----------+
| c14 | ascii(c14) | ord(c14) |
+------+------------+----------+
| 4.5 | 52 | 52 |
| 4.5 | 52 | 52 |
+------+------------+----------+
select c15, ascii(c15), ord(c15) from t1;
+------+------------+----------+
| c15 | ascii(c15) | ord(c15) |
+------+------------+----------+
| 5.5 | 53 | 53 |
| -5.5 | 45 | 45 |
+------+------------+----------+
select c16, ascii(c16), ord(c16) from t1;
+------+------------+----------+
| c16 | ascii(c16) | ord(c16) |
+------+------------+----------+
| 6.5 | 54 | 54 |
| 6.5 | 54 | 54 |
+------+------------+----------+
select c17, ascii(c17), ord(c17) from t1;
+------+------------+----------+
| c17 | ascii(c17) | ord(c17) |
+------+------------+----------+
| 8 | 56 | 56 |
| -8 | 45 | 45 |
+------+------------+----------+
select c18, ascii(c18), ord(c18) from t1;
+------+------------+----------+
| c18 | ascii(c18) | ord(c18) |
+------+------------+----------+
| 9 | 57 | 57 |
| 9 | 57 | 57 |
+------+------------+----------+
select c19, ascii(c19), ord(c19) from t1;
+---------------------+------------+----------+
| c19 | ascii(c19) | ord(c19) |
+---------------------+------------+----------+
| 2019-12-01 12:00:00 | 50 | 50 |
| 2019-12-01 12:00:00 | 50 | 50 |
+---------------------+------------+----------+
select c20, ascii(c20), ord(c20) from t1;
+---------------------+------------+----------+
| c20 | ascii(c20) | ord(c20) |
+---------------------+------------+----------+
| 2019-12-03 06:00:00 | 50 | 50 |
| 2019-12-03 06:00:00 | 50 | 50 |
+---------------------+------------+----------+
select c21, ascii(c21), ord(c21) from t1;
+------+------------+----------+
| c21 | ascii(c21) | ord(c21) |
+------+------------+----------+
| 9.5 | 57 | 57 |
| -9.5 | 45 | 45 |
+------+------------+----------+
select c22, ascii(c22), ord(c22) from t1;
+------+------------+----------+
| c22 | ascii(c22) | ord(c22) |
+------+------------+----------+
| 10.5 | 49 | 49 |
| 10.5 | 49 | 49 |
+------+------------+----------+
select col_int, ascii(col_int), ord(col_int) from t2;
+---------+----------------+--------------+
| col_int | ascii(col_int) | ord(col_int) |
+---------+----------------+--------------+
| 1 | 49 | 49 |
| -1 | 45 | 45 |
| 256 | 50 | 50 |
+---------+----------------+--------------+
select col_utf8, ascii(col_utf8), ord(col_utf8) from t2;
+----------+-----------------+---------------+
| col_utf8 | ascii(col_utf8) | ord(col_utf8) |
+----------+-----------------+---------------+
| a | 97 | 97 |
| 中国 | 228 | 14989485 |
| 中国 | 32 | 32 |
+----------+-----------------+---------------+
select col_utf16, ascii(col_utf16), ord(col_utf16) from t2;
+-----------+------------------+----------------+
| col_utf16 | ascii(col_utf16) | ord(col_utf16) |
+-----------+------------------+----------------+
| a | 0 | 97 |
| 中文 | 78 | 20013 |
| 中文 | 0 | 32 |
+-----------+------------------+----------------+
select col_gbk, ascii(col_gbk), ord(col_gbk) from t2;
+---------+----------------+--------------+
| col_gbk | ascii(col_gbk) | ord(col_gbk) |
+---------+----------------+--------------+
| a | 97 | 97 |
| 中文 | 214 | 54992 |
| 中文 | 214 | 54992 |
+---------+----------------+--------------+

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,59 @@
result_format: 4
set @@ob_enable_plan_cache = 0;
select elt(1, 2, 3, NULL);
+--------------------+
| elt(1, 2, 3, NULL) |
+--------------------+
| 2 |
+--------------------+
select elt(NULL, 2, 3, NULL);
+-----------------------+
| elt(NULL, 2, 3, NULL) |
+-----------------------+
| NULL |
+-----------------------+
select elt(2, 2, 3, NULL);
+--------------------+
| elt(2, 2, 3, NULL) |
+--------------------+
| 3 |
+--------------------+
select elt(3, 2, 3, NULL);
+--------------------+
| elt(3, 2, 3, NULL) |
+--------------------+
| NULL |
+--------------------+
select elt(4, 2, 3, NULL);
+--------------------+
| elt(4, 2, 3, NULL) |
+--------------------+
| NULL |
+--------------------+
select elt("4", "a", "b", NULL, "c");
+-------------------------------+
| elt("4", "a", "b", NULL, "c") |
+-------------------------------+
| c |
+-------------------------------+
select elt("4.1", "a", "b", NULL, "c", 'd');
+--------------------------------------+
| elt("4.1", "a", "b", NULL, "c", 'd') |
+--------------------------------------+
| c |
+--------------------------------------+
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '4.1'
select elt("4.9", "a", 2.3, NULL, "c", 'd');
+--------------------------------------+
| elt("4.9", "a", 2.3, NULL, "c", 'd') |
+--------------------------------------+
| c |
+--------------------------------------+
Warnings:
Warning 1292 Truncated incorrect INTEGER value: '4.9'

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,211 @@
result_format: 4
drop table if exists t;
create table t(start int);
insert into t values (-5);
insert into t values (-1);
insert into t values (0);
insert into t values (1);
insert into t values (2);
insert into t values (3);
insert into t values (4);
insert into t values (5);
insert into t values (6);
insert into t values (7);
insert into t values (8);
insert into t values (9);
insert into t values (10);
insert into t values (100);
select * from t;
+-------+
| start |
+-------+
| -5 |
| -1 |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
| 100 |
+-------+
set @@ob_enable_plan_cache = 0;
select insert('Quadratic', start, -1, 'What') from t;
+----------------------------------------+
| insert('Quadratic', start, -1, 'What') |
+----------------------------------------+
| Quadratic |
| Quadratic |
| Quadratic |
| What |
| QWhat |
| QuWhat |
| QuaWhat |
| QuadWhat |
| QuadrWhat |
| QuadraWhat |
| QuadratWhat |
| QuadratiWhat |
| Quadratic |
| Quadratic |
+----------------------------------------+
select insert('Quadratic', start, 0, 'What') from t;
+---------------------------------------+
| insert('Quadratic', start, 0, 'What') |
+---------------------------------------+
| Quadratic |
| Quadratic |
| Quadratic |
| WhatQuadratic |
| QWhatuadratic |
| QuWhatadratic |
| QuaWhatdratic |
| QuadWhatratic |
| QuadrWhatatic |
| QuadraWhattic |
| QuadratWhatic |
| QuadratiWhatc |
| Quadratic |
| Quadratic |
+---------------------------------------+
select insert('Quadratic', start, 1, 'What') from t;
+---------------------------------------+
| insert('Quadratic', start, 1, 'What') |
+---------------------------------------+
| Quadratic |
| Quadratic |
| Quadratic |
| Whatuadratic |
| QWhatadratic |
| QuWhatdratic |
| QuaWhatratic |
| QuadWhatatic |
| QuadrWhattic |
| QuadraWhatic |
| QuadratWhatc |
| QuadratiWhat |
| Quadratic |
| Quadratic |
+---------------------------------------+
select insert('Quadratic', start, 2, 'What') from t;
+---------------------------------------+
| insert('Quadratic', start, 2, 'What') |
+---------------------------------------+
| Quadratic |
| Quadratic |
| Quadratic |
| Whatadratic |
| QWhatdratic |
| QuWhatratic |
| QuaWhatatic |
| QuadWhattic |
| QuadrWhatic |
| QuadraWhatc |
| QuadratWhat |
| QuadratiWhat |
| Quadratic |
| Quadratic |
+---------------------------------------+
select insert('Quadratic', start, 3, 'What') from t;
+---------------------------------------+
| insert('Quadratic', start, 3, 'What') |
+---------------------------------------+
| Quadratic |
| Quadratic |
| Quadratic |
| Whatdratic |
| QWhatratic |
| QuWhatatic |
| QuaWhattic |
| QuadWhatic |
| QuadrWhatc |
| QuadraWhat |
| QuadratWhat |
| QuadratiWhat |
| Quadratic |
| Quadratic |
+---------------------------------------+
select insert('Quadratic', start, 4, 'What') from t;
+---------------------------------------+
| insert('Quadratic', start, 4, 'What') |
+---------------------------------------+
| Quadratic |
| Quadratic |
| Quadratic |
| Whatratic |
| QWhatatic |
| QuWhattic |
| QuaWhatic |
| QuadWhatc |
| QuadrWhat |
| QuadraWhat |
| QuadratWhat |
| QuadratiWhat |
| Quadratic |
| Quadratic |
+---------------------------------------+
select insert('Quadratic', start, 5, 'What') from t;
+---------------------------------------+
| insert('Quadratic', start, 5, 'What') |
+---------------------------------------+
| Quadratic |
| Quadratic |
| Quadratic |
| Whatatic |
| QWhattic |
| QuWhatic |
| QuaWhatc |
| QuadWhat |
| QuadrWhat |
| QuadraWhat |
| QuadratWhat |
| QuadratiWhat |
| Quadratic |
| Quadratic |
+---------------------------------------+
select insert('Quadratic', start, 6, 'What') from t;
+---------------------------------------+
| insert('Quadratic', start, 6, 'What') |
+---------------------------------------+
| Quadratic |
| Quadratic |
| Quadratic |
| Whattic |
| QWhatic |
| QuWhatc |
| QuaWhat |
| QuadWhat |
| QuadrWhat |
| QuadraWhat |
| QuadratWhat |
| QuadratiWhat |
| Quadratic |
| Quadratic |
+---------------------------------------+
select insert('Quadratic', start, 100, 'What') from t;
+-----------------------------------------+
| insert('Quadratic', start, 100, 'What') |
+-----------------------------------------+
| Quadratic |
| Quadratic |
| Quadratic |
| What |
| QWhat |
| QuWhat |
| QuaWhat |
| QuadWhat |
| QuadrWhat |
| QuadraWhat |
| QuadratWhat |
| QuadratiWhat |
| Quadratic |
| Quadratic |
+-----------------------------------------+
drop table t;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,233 @@
result_format: 4
drop table if exists t1;
drop table if exists t2;
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 bigint, c6 bigint unsigned,
c7 float, c8 float unsigned,
c9 double, c10 double unsigned,
c11 decimal, c12 decimal unsigned,
c13 date, c14 datetime, c15 timestamp);
create table t2 (c1 varchar(100), c2 char(100));
select * from t1;
+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+
| c1 | c2 | c3 | c4 | c5 | c6 | c7 | c8 | c9 | c10 | c11 | c12 | c13 | c14 | c15 |
+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+
+------+------+------+------+------+------+------+------+------+------+------+------+------+------+------+
select * from t2;
+------+------+
| c1 | c2 |
+------+------+
+------+------+
insert into t1 values(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
insert into t1 values(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0000-00-00', '0000-00-00 00:00:00', '0000-00-00 00:00:00');
insert into t1 values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '0013-01-01', '0014-01-01', '0015-01-01');
insert into t1 values(-1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, '0013-01-01', '0014-01-01 00:00:00', '0015-01-01 00:00:00');
insert into t1 values(1234567, 7654321, -33, 44, 555555555, 666666666, 777.777, 8888.888, 99999.999999, 10000.00000, 1111, 121212121, '0013-01-01', '0014-01-01 00:00:11', '0015-01-01 00:00:11');
insert into t2 values(null, null);
insert into t2 values('', '');
insert into t2 values('a', 'a');
insert into t2 values('A', 'A');
insert into t2 values('0', '0');
insert into t2 values('1', '1');
insert into t2 values('@', '@');
insert into t2 values('#', '#');
insert into t2 values(' ', ' ');
insert into t2 values('abcdefg', 'abcdefg');
insert into t2 values('abcdefg ', 'abcdefg ');
insert into t2 values('Good morning', 'Good morning');
insert into t2 values('Good evening', 'Good evening');
insert into t2 values('255.255.255.255', '255.255.255.255');
insert into t2 values('192.168.1.100', '192.168.1.100');
insert into t2 values('30.32.204.180', '30.32.204.180');
insert into t2 values('emily@163.com', 'emily@163.com');
insert into t2 values('mike@sohu.com', 'mike@sohu.com');
insert into t2 values('joey@sina.com', 'joey@sina.com');
insert into t2 values('阿里巴巴', '阿里巴巴');
insert into t2 values('阿里巴巴 ', '阿里巴巴 ');
insert into t2 values('淘宝', '淘宝');
insert into t2 values('淘宝 ', '淘宝 ');
set @@ob_enable_plan_cache = 0;
select c1, md5(c1) from t1;
+---------+----------------------------------+
| c1 | md5(c1) |
+---------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 1 | c4ca4238a0b923820dcc509a6f75849b |
| -1 | 6bb61e3b7bce0931da574d19d1d82c88 |
| 1234567 | fcea920f7412b5da7be0cf42b8c93759 |
+---------+----------------------------------+
select c2, md5(c2) from t1;
+---------+----------------------------------+
| c2 | md5(c2) |
+---------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 2 | c81e728d9d4c2f636f067f89cc14862c |
| 2 | c81e728d9d4c2f636f067f89cc14862c |
| 7654321 | f0898af949a373e72a4f6a34b4de9090 |
+---------+----------------------------------+
select c3, md5(c3) from t1;
+------+----------------------------------+
| c3 | md5(c3) |
+------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 3 | eccbc87e4b5ce2fe28308fd9f2a7baf3 |
| -3 | b3149ecea4628efd23d2f86e5a723472 |
| -33 | 0405bb6050e3e04f90c6bfae8ea1000e |
+------+----------------------------------+
select c4, md5(c4) from t1;
+------+----------------------------------+
| c4 | md5(c4) |
+------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 4 | a87ff679a2f3e71d9181a67b7542122c |
| 4 | a87ff679a2f3e71d9181a67b7542122c |
| 44 | f7177163c833dff4b38fc8d2872f1ec6 |
+------+----------------------------------+
select c5, md5(c5) from t1;
+-----------+----------------------------------+
| c5 | md5(c5) |
+-----------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 5 | e4da3b7fbbce2345d7772b0674a318d5 |
| -5 | 47c1b025fa18ea96c33fbb6718688c0f |
| 555555555 | 3665a76e271ada5a75368b99f774e404 |
+-----------+----------------------------------+
select c6, md5(c6) from t1;
+-----------+----------------------------------+
| c6 | md5(c6) |
+-----------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 6 | 1679091c5a880faf6fb5e6087eb1b2dc |
| 6 | 1679091c5a880faf6fb5e6087eb1b2dc |
| 666666666 | 9f0863dd5f0256b0f586a7b523f8cfe8 |
+-----------+----------------------------------+
select c7, md5(c7) from t1;
+---------+----------------------------------+
| c7 | md5(c7) |
+---------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 7 | 8f14e45fceea167a5a36dedd4bea2543 |
| -7 | 74687a12d3915d3c4d83f1af7b3683d5 |
| 777.777 | d3c35946d7f923ca16623f474237e865 |
+---------+----------------------------------+
select c8, md5(c8) from t1;
+---------+----------------------------------+
| c8 | md5(c8) |
+---------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 8 | c9f0f895fb98ab9159f51fd0297e236d |
| 8 | c9f0f895fb98ab9159f51fd0297e236d |
| 8888.89 | 9e81de41fa5f570dc92f2f98e6d6d662 |
+---------+----------------------------------+
select c9, md5(c9) from t1;
+--------------+----------------------------------+
| c9 | md5(c9) |
+--------------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 9 | 45c48cce2e2d7fbdea1afc51c7c6ad26 |
| -9 | 252e691406782824eec43d7eadc3d256 |
| 99999.999999 | ecea7349839513115a4cfd226947a7f3 |
+--------------+----------------------------------+
select c10, md5(c10) from t1;
+-------+----------------------------------+
| c10 | md5(c10) |
+-------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 10 | d3d9446802a44259755d38e6d163e820 |
| 10 | d3d9446802a44259755d38e6d163e820 |
| 10000 | b7a782741f667201b54880c925faec4b |
+-------+----------------------------------+
select c11, md5(c11) from t1;
+------+----------------------------------+
| c11 | md5(c11) |
+------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 11 | 6512bd43d9caa6e02c990b0a82652dca |
| -11 | fe9bea92980bb30c7fb9cc3c33c99204 |
| 1111 | b59c67bf196a4758191e42f76670ceba |
+------+----------------------------------+
select c12, md5(c12) from t1;
+-----------+----------------------------------+
| c12 | md5(c12) |
+-----------+----------------------------------+
| NULL | NULL |
| 0 | cfcd208495d565ef66e7dff9f98764da |
| 12 | c20ad4d76fe97759aa27a0c99bff6710 |
| 12 | c20ad4d76fe97759aa27a0c99bff6710 |
| 121212121 | 28f673f31cdd6af50d1f0b8e2b71b9e5 |
+-----------+----------------------------------+
select c13, md5(c13) from t1;
+------------+----------------------------------+
| c13 | md5(c13) |
+------------+----------------------------------+
| NULL | NULL |
| 0000-00-00 | 21818ea7c95e62897f2739dd05578c8d |
| 0013-01-01 | 72782cdcbfb6d85b4293747a2b6f250b |
| 0013-01-01 | 72782cdcbfb6d85b4293747a2b6f250b |
| 0013-01-01 | 72782cdcbfb6d85b4293747a2b6f250b |
+------------+----------------------------------+
select c14, md5(c14) from t1;
+---------------------+----------------------------------+
| c14 | md5(c14) |
+---------------------+----------------------------------+
| NULL | NULL |
| 0000-00-00 00:00:00 | 8e30a659c31b53017073692309ab0da1 |
| 0014-01-01 00:00:00 | 532c4452dbb2e2ffafef1a869ff09ef2 |
| 0014-01-01 00:00:00 | 532c4452dbb2e2ffafef1a869ff09ef2 |
| 0014-01-01 00:00:11 | 02da86a1eeaff88dffb97a1ee3573824 |
+---------------------+----------------------------------+
select c15, md5(c15) from t1;
+---------------------+----------------------------------+
| c15 | md5(c15) |
+---------------------+----------------------------------+
| NULL | NULL |
| 0000-00-00 00:00:00 | 8e30a659c31b53017073692309ab0da1 |
| 0015-01-01 00:00:00 | 0a6c39d0a24b970b5f2b0ae1c35a2283 |
| 0015-01-01 00:00:00 | 0a6c39d0a24b970b5f2b0ae1c35a2283 |
| 0015-01-01 00:00:11 | 44d4719b08d9536a0dd47907fe8c75e6 |
+---------------------+----------------------------------+
select c1, md5(c1), c2, md5(c2) from t2;
+-----------------+----------------------------------+-----------------+----------------------------------+
| c1 | md5(c1) | c2 | md5(c2) |
+-----------------+----------------------------------+-----------------+----------------------------------+
| NULL | NULL | NULL | NULL |
| | d41d8cd98f00b204e9800998ecf8427e | | d41d8cd98f00b204e9800998ecf8427e |
| a | 0cc175b9c0f1b6a831c399e269772661 | a | 0cc175b9c0f1b6a831c399e269772661 |
| A | 7fc56270e7a70fa81a5935b72eacbe29 | A | 7fc56270e7a70fa81a5935b72eacbe29 |
| 0 | cfcd208495d565ef66e7dff9f98764da | 0 | cfcd208495d565ef66e7dff9f98764da |
| 1 | c4ca4238a0b923820dcc509a6f75849b | 1 | c4ca4238a0b923820dcc509a6f75849b |
| @ | 518ed29525738cebdac49c49e60ea9d3 | @ | 518ed29525738cebdac49c49e60ea9d3 |
| # | 01abfc750a0c942167651c40d088531d | # | 01abfc750a0c942167651c40d088531d |
| | 7215ee9c7d9dc229d2921a40e899ec5f | | d41d8cd98f00b204e9800998ecf8427e |
| abcdefg | 7ac66c0f148de9519b8bd264312c4d64 | abcdefg | 7ac66c0f148de9519b8bd264312c4d64 |
| abcdefg | cea1a161b6f38ac9189d204a6ff0e231 | abcdefg | 7ac66c0f148de9519b8bd264312c4d64 |
| Good morning | 4e44298897ed12cdc10e5302fa781688 | Good morning | 4e44298897ed12cdc10e5302fa781688 |
| Good evening | 0a28b30e5d84d83d385b6b9afd5661ae | Good evening | 0a28b30e5d84d83d385b6b9afd5661ae |
| 255.255.255.255 | eea88cd0d9a7ba26282fc786713bbbb6 | 255.255.255.255 | eea88cd0d9a7ba26282fc786713bbbb6 |
| 192.168.1.100 | d984a05fa268b7cc6ac052a38960aeb2 | 192.168.1.100 | d984a05fa268b7cc6ac052a38960aeb2 |
| 30.32.204.180 | 8f70c7dd37a827875dd5e8bfb59b001e | 30.32.204.180 | 8f70c7dd37a827875dd5e8bfb59b001e |
| emily@163.com | 3def867c78b2b87744512a6cbbc1d730 | emily@163.com | 3def867c78b2b87744512a6cbbc1d730 |
| mike@sohu.com | 91f49bb2c81568dcc32f74d9f1cb5811 | mike@sohu.com | 91f49bb2c81568dcc32f74d9f1cb5811 |
| joey@sina.com | 59014c527f2387d23490b78e6b973c37 | joey@sina.com | 59014c527f2387d23490b78e6b973c37 |
| 阿里巴巴 | 49edab1cb53ba3cf77c6c3271196acbb | 阿里巴巴 | 49edab1cb53ba3cf77c6c3271196acbb |
| 阿里巴巴 | a5ca9dd3dc1f3857eee9c2daaeba130b | 阿里巴巴 | 49edab1cb53ba3cf77c6c3271196acbb |
| 淘宝 | 12ad5c790444f88966c2faf90e73d8c9 | 淘宝 | 12ad5c790444f88966c2faf90e73d8c9 |
| 淘宝 | e04842fc8f74042c581063da43e6adb9 | 淘宝 | 12ad5c790444f88966c2faf90e73d8c9 |
+-----------------+----------------------------------+-----------------+----------------------------------+
drop table t1;
drop table t2;

View File

@ -0,0 +1,66 @@
result_format: 4
set @@ob_enable_plan_cache = 0;
select mid('abcdef', 2);
+------------------+
| mid('abcdef', 2) |
+------------------+
| bcdef |
+------------------+
select mid('abcdef', 2, 2);
+---------------------+
| mid('abcdef', 2, 2) |
+---------------------+
| bc |
+---------------------+
select mid('abcdef', "2.9", 2);
+-------------------------+
| mid('abcdef', "2.9", 2) |
+-------------------------+
| bc |
+-------------------------+
select mid('abcdef', NULL, 2);
+------------------------+
| mid('abcdef', NULL, 2) |
+------------------------+
| NULL |
+------------------------+
select mid('abcdef', -1, 2);
+----------------------+
| mid('abcdef', -1, 2) |
+----------------------+
| f |
+----------------------+
select mid('abcdef', 2, 100);
+-----------------------+
| mid('abcdef', 2, 100) |
+-----------------------+
| bcdef |
+-----------------------+
select mid('abcdef', 2, -1);
+----------------------+
| mid('abcdef', 2, -1) |
+----------------------+
| |
+----------------------+
select mid('abcdef', 2, NULL);
+------------------------+
| mid('abcdef', 2, NULL) |
+------------------------+
| NULL |
+------------------------+
select mid('', 1);
+------------+
| mid('', 1) |
+------------+
| |
+------------+
select mid(NULL, 1);
+--------------+
| mid(NULL, 1) |
+--------------+
| NULL |
+--------------+

View File

@ -0,0 +1,787 @@
result_format: 4
alter system flush plan cache global;
set @@ob_enable_plan_cache = 0;
select neg(1) from dual;
+--------+
| neg(1) |
+--------+
| -1 |
+--------+
select neg(-1) from dual;
+---------+
| neg(-1) |
+---------+
| 1 |
+---------+
select neg(1.2324) from dual;
+-------------+
| neg(1.2324) |
+-------------+
| -1.2324 |
+-------------+
select neg(-1.2324) from dual;
+--------------+
| neg(-1.2324) |
+--------------+
| 1.2324 |
+--------------+
select neg('-1') from dual;
+-----------+
| neg('-1') |
+-----------+
| 1 |
+-----------+
explain select neg('-1') from dual;
Query Plan
==========================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------
|0 |EXPRESSION| |1 |1 |
==========================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast('-1', DOUBLE(-1, -1)))]), filter(nil)
values({neg(cast('-1', DOUBLE(-1, -1)))})
select neg('1.234') from dual;
+--------------+
| neg('1.234') |
+--------------+
| -1.234 |
+--------------+
select neg(null) from dual;
+-----------+
| neg(null) |
+-----------+
| NULL |
+-----------+
select neg('-abcd');
+--------------+
| neg('-abcd') |
+--------------+
| -0 |
+--------------+
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '-abcd'
select neg('2014-10-09 10:00:00');
+----------------------------+
| neg('2014-10-09 10:00:00') |
+----------------------------+
| -2014 |
+----------------------------+
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: '2014-10-09 10:00:00'
select neg(-9223372036854775808);
+---------------------------+
| neg(-9223372036854775808) |
+---------------------------+
| 9223372036854775808 |
+---------------------------+
select neg(-9999999999999999999999);
+------------------------------+
| neg(-9999999999999999999999) |
+------------------------------+
| 9999999999999999999999 |
+------------------------------+
select neg(10/0);
+-----------+
| neg(10/0) |
+-----------+
| NULL |
+-----------+
select neg(9999999999999999999999);
+-----------------------------+
| neg(9999999999999999999999) |
+-----------------------------+
| -9999999999999999999999 |
+-----------------------------+
select neg(true);
+-----------+
| neg(true) |
+-----------+
| -1 |
+-----------+
select neg(false);
+------------+
| neg(false) |
+------------+
| 0 |
+------------+
set @@ob_enable_plan_cache = 0;
drop table if exists t;
create table t (t1 tinyint,
t2 smallint,
t3 mediumint,
t4 integer,
t5 bigint,
t6 tinyint unsigned,
t7 smallint unsigned,
t8 mediumint unsigned,
t9 integer unsigned,
t10 bigint unsigned,
t11 float,
t12 float unsigned,
t13 double,
t14 double unsigned,
t15 number,
t16 number unsigned,
t17 datetime,
t18 timestamp,
t19 date,
t20 time,
t21 year,
t22 varchar(255),
t23 char(255),
t24 tinytext,
t25 mediumtext,
t26 longtext,
t27 bit,
t28 enum('a', 'b', 'c'),
t29 set('a', 'b', 'c'));
insert into t values (1, -1, 1, -1, 1, 1, 1, 1, 1, 1, -0.2, 0.3, 0.4, 0.5, -0.6, 0.7,
'1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '0.8', '0.9', '1.0', '1.1',
'1.2', 1, 'b', 'b');
insert into t(t1) values (null);
set @@ob_enable_plan_cache = 0;
select neg(t1) from t;
+---------+
| neg(t1) |
+---------+
| -1 |
| NULL |
+---------+
explain select neg(t1) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t1, BIGINT(-1, 0)))]), filter(nil), rowset=16
access([t.t1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t2) from t;
+---------+
| neg(t2) |
+---------+
| 1 |
| NULL |
+---------+
explain select neg(t2) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t2, BIGINT(-1, 0)))]), filter(nil), rowset=16
access([t.t2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t3) from t;
+---------+
| neg(t3) |
+---------+
| -1 |
| NULL |
+---------+
explain select neg(t3) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t3, BIGINT(-1, 0)))]), filter(nil), rowset=16
access([t.t3]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t4) from t;
+---------+
| neg(t4) |
+---------+
| 1 |
| NULL |
+---------+
explain select neg(t4) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t4, BIGINT(-1, 0)))]), filter(nil), rowset=16
access([t.t4]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t5) from t;
+---------+
| neg(t5) |
+---------+
| -1 |
| NULL |
+---------+
explain select neg(t5) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(t.t5)]), filter(nil), rowset=16
access([t.t5]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t6) from t;
+---------+
| neg(t6) |
+---------+
| -1 |
| NULL |
+---------+
explain select neg(t6) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t6, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=16
access([t.t6]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t7) from t;
+---------+
| neg(t7) |
+---------+
| -1 |
| NULL |
+---------+
explain select neg(t7) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t7, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=16
access([t.t7]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t8) from t;
+---------+
| neg(t8) |
+---------+
| -1 |
| NULL |
+---------+
explain select neg(t8) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t8, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=16
access([t.t8]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t9) from t;
+---------+
| neg(t9) |
+---------+
| -1 |
| NULL |
+---------+
explain select neg(t9) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t9, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=16
access([t.t9]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t10) from t;
+----------+
| neg(t10) |
+----------+
| -1 |
| NULL |
+----------+
explain select neg(t10) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(t.t10)]), filter(nil), rowset=16
access([t.t10]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t11) from t;
+---------------------+
| neg(t11) |
+---------------------+
| NULL |
| 0.20000000298023224 |
+---------------------+
explain select neg(t11) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t11, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t11]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t12) from t;
+----------------------+
| neg(t12) |
+----------------------+
| NULL |
| -0.30000001192092896 |
+----------------------+
explain select neg(t12) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t12, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t12]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t13) from t;
+----------+
| neg(t13) |
+----------+
| -0.4 |
| NULL |
+----------+
explain select neg(t13) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(t.t13)]), filter(nil), rowset=16
access([t.t13]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t14) from t;
+----------+
| neg(t14) |
+----------+
| -0.5 |
| NULL |
+----------+
explain select neg(t14) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t14, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t14]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t15) from t;
+----------+
| neg(t15) |
+----------+
| 1 |
| NULL |
+----------+
explain select neg(t15) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(t.t15)]), filter(nil), rowset=16
access([t.t15]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t16) from t;
+----------+
| neg(t16) |
+----------+
| -1 |
| NULL |
+----------+
explain select neg(t16) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t16, DECIMAL(10, 0)))]), filter(nil), rowset=16
access([t.t16]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t17) from t;
+-----------------+
| neg(t17) |
+-----------------+
| NULL |
| -19930320000000 |
+-----------------+
explain select neg(t17) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t17, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t17]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t18) from t;
+-----------------+
| neg(t18) |
+-----------------+
| NULL |
| -19930320000000 |
+-----------------+
explain select neg(t18) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t18, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t18]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t19) from t;
+-----------+
| neg(t19) |
+-----------+
| NULL |
| -19930320 |
+-----------+
explain select neg(t19) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t19, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t19]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t20) from t;
+----------+
| neg(t20) |
+----------+
| NULL |
| -101010 |
+----------+
explain select neg(t20) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t20, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t20]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t21) from t;
+----------+
| neg(t21) |
+----------+
| NULL |
| -1993 |
+----------+
explain select neg(t21) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t21, BIGINT(-1, 0)))]), filter(nil), rowset=16
access([t.t21]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t22) from t;
+----------+
| neg(t22) |
+----------+
| -0.8 |
| NULL |
+----------+
explain select neg(t22) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t22, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t22]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t23) from t;
+----------+
| neg(t23) |
+----------+
| -0.9 |
| NULL |
+----------+
explain select neg(t23) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t23, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t23]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t24) from t;
+----------+
| neg(t24) |
+----------+
| -1 |
| NULL |
+----------+
explain select neg(t24) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t24, DOUBLE(-1, -1)))]), filter(nil), rowset=16
access([t.t24]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t25) from t;
+----------+
| neg(t25) |
+----------+
| -1.1 |
| NULL |
+----------+
explain select neg(t25) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t25, DOUBLE(-1, -1)))]), filter(nil)
access([t.t25]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t26) from t;
+----------+
| neg(t26) |
+----------+
| -1.2 |
| NULL |
+----------+
explain select neg(t26) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t26, DOUBLE(-1, -1)))]), filter(nil)
access([t.t26]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t27) from t;
+----------+
| neg(t27) |
+----------+
| -1 |
| NULL |
+----------+
explain select neg(t27) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t27, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=16
access([t.t27]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t28) from t;
+----------+
| neg(t28) |
+----------+
| -2 |
| NULL |
+----------+
explain select neg(t28) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t28, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=16
access([t.t28]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
select neg(t29) from t;
+----------+
| neg(t29) |
+----------+
| -2 |
| NULL |
+----------+
explain select neg(t29) from t;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |TABLE FULL SCAN|t |2 |3 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([neg(cast(t.t29, BIGINT UNSIGNED(-1, 0)))]), filter(nil), rowset=16
access([t.t29]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.__pk_increment]), range(MIN ; MAX)always true
set ob_enable_plan_cache = 0;
select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
+-----------------------+------------------------+-------------------------+
| --9223372036854775808 | ---9223372036854775808 | ----9223372036854775808 |
+-----------------------+------------------------+-------------------------+
| 9223372036854775808 | -9223372036854775808 | 9223372036854775808 |
+-----------------------+------------------------+-------------------------+
alter system flush plan cache global;
set ob_enable_plan_cache = 1;
select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
+-----------------------+------------------------+-------------------------+
| --9223372036854775808 | ---9223372036854775808 | ----9223372036854775808 |
+-----------------------+------------------------+-------------------------+
| 9223372036854775808 | -9223372036854775808 | 9223372036854775808 |
+-----------------------+------------------------+-------------------------+
drop view if exists v1;
create view v1 as select --9223372036854775808 c1, ---9223372036854775808 c2, ----9223372036854775808 c3;
// bug here: 视图的列的类型应该是decimal,应该是因为create view as路径上没有开新引擎开关
desc v1;
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| c1 | decimal(21,0) | NO | | | |
| c2 | decimal(22,0) | NO | | | |
| c3 | decimal(23,0) | NO | | | |
+-------+---------------+------+-----+---------+-------+
drop view v1;
create view v1 as select -neg(-9223372036854775808) c1, --neg(-9223372036854775808) c2, ---neg(-9223372036854775808) c3;
desc v1;
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| c1 | decimal(22,0) | NO | | | |
| c2 | decimal(23,0) | NO | | | |
| c3 | decimal(24,0) | NO | | | |
+-------+---------------+------+-----+---------+-------+
drop view v1;
drop table if exists tt;
create table tt(c1 bigint);
insert into tt values(-9223372036854775808);
select c1, -c1 from tt;
ERROR 22003: value is out of range
// MySQL will give error, OB return c1. two neg will be removed when resolve neg node
select c1, --c1 from tt;
ERROR 22003: value is out of range
select c1, ---c1 from tt;
ERROR 22003: value is out of range

View File

@ -1,912 +0,0 @@
result_format: 4
set @@ob_enable_plan_cache = 0;
drop table if exists t1, t2;
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 smallint, c6 smallint unsigned,
c7 mediumint, c8 mediumint unsigned,
c9 integer, c10 integer unsigned,
c11 bigint, c12 bigint unsigned,
c13 float, c14 float unsigned,
c15 double, c16 double unsigned,
c17 decimal, c18 decimal unsigned,
c19 datetime, c20 timestamp,
c21 varchar(30), c22 char(30), c_null int);
insert into t1 values(1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
3.5, 4.5,
5.5, 6.5,
7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'9.5', '10.5', null);
insert into t1 values(-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-3.5, 4.5,
-5.5, 6.5,
-7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'-9.5', '10.5', null);
create table t2(
a1 char(3) primary key,
a2 int,
a3 char(3),
a4 float,
a5 datetime
);
insert into t2 values('AME',0,'SEA',0.100,date'1942-02-19');
insert into t2 values('HBR',1,'SEA',0.085,date'1948-03-05');
insert into t2 values('BOT',-2,'SEA',-0.085,date'1951-11-29');
insert into t2 values('BMC',3,'SEA',-0.085,date'1958-09-08');
insert into t2 values('TWU',+0,'LAX',-0.080,date'1969-10-05');
insert into t2 values('BDL',-0,'DEN',-0.080,date'1960-11-27');
insert into t2 values('DTX',1,'NYC',0.080,date'1961-05-04');
insert into t2 values('PLS',-1,'WDC',-0.075,date'1949-01-02');
insert into t2 values('ZAJ',2,'CHI',-0.075,date'1960-06-15');
insert into t2 values('VVV',-2,'MON',0.075,date'1959-06-28');
insert into t2 values('GTM',3,'DAL',-0.070,date'1977-09-23');
insert into t2 values('SSJ',null,'CHI',null,date'1974-03-19');
insert into t2 values('KKK',-3,'ATL',null,null);
insert into t2 values('XXX',null,'MIN',null,null);
insert into t2 values('WWW',1,'LED',null,null);
insert into t2 values('GG3',-3,'DD3',-0.051,date'1974-03-19');
insert into t2 values('GG2',-3,'DD2',0.052,date'1974-03-19');
insert into t2 values('GG1',3,'DD1',0.053,date'1974-03-19');
select sign(null) from dual;
+------------+
| sign(null) |
+------------+
| NULL |
+------------+
select c1, sign(c1) from t1;
+------+----------+
| c1 | sign(c1) |
+------+----------+
| 1 | 1 |
| -1 | -1 |
+------+----------+
select c2, sign(c2) from t1;
+------+----------+
| c2 | sign(c2) |
+------+----------+
| 2 | 1 |
| 2 | 1 |
+------+----------+
select c3, sign(c3) from t1;
+------+----------+
| c3 | sign(c3) |
+------+----------+
| 1 | 1 |
| -1 | -1 |
+------+----------+
select c4, sign(c4) from t1;
+------+----------+
| c4 | sign(c4) |
+------+----------+
| 2 | 1 |
| 2 | 1 |
+------+----------+
select c5, sign(c5) from t1;
+------+----------+
| c5 | sign(c5) |
+------+----------+
| 1 | 1 |
| -1 | -1 |
+------+----------+
select c6, sign(c6) from t1;
+------+----------+
| c6 | sign(c6) |
+------+----------+
| 2 | 1 |
| 2 | 1 |
+------+----------+
select c7, sign(c7) from t1;
+------+----------+
| c7 | sign(c7) |
+------+----------+
| 1 | 1 |
| -1 | -1 |
+------+----------+
select c8, sign(c8) from t1;
+------+----------+
| c8 | sign(c8) |
+------+----------+
| 2 | 1 |
| 2 | 1 |
+------+----------+
select c9, sign(c9) from t1;
+------+----------+
| c9 | sign(c9) |
+------+----------+
| 1 | 1 |
| -1 | -1 |
+------+----------+
select c10, sign(c10) from t1;
+------+-----------+
| c10 | sign(c10) |
+------+-----------+
| 2 | 1 |
| 2 | 1 |
+------+-----------+
select c11, sign(c11) from t1;
+------+-----------+
| c11 | sign(c11) |
+------+-----------+
| 1 | 1 |
| -1 | -1 |
+------+-----------+
select c12, sign(c12) from t1;
+------+-----------+
| c12 | sign(c12) |
+------+-----------+
| 2 | 1 |
| 2 | 1 |
+------+-----------+
select c13, sign(c13) from t1;
+------+-----------+
| c13 | sign(c13) |
+------+-----------+
| 3.5 | 1 |
| -3.5 | -1 |
+------+-----------+
select c14, sign(c14) from t1;
+------+-----------+
| c14 | sign(c14) |
+------+-----------+
| 4.5 | 1 |
| 4.5 | 1 |
+------+-----------+
select c15, sign(c15) from t1;
+------+-----------+
| c15 | sign(c15) |
+------+-----------+
| 5.5 | 1 |
| -5.5 | -1 |
+------+-----------+
select c16, sign(c16) from t1;
+------+-----------+
| c16 | sign(c16) |
+------+-----------+
| 6.5 | 1 |
| 6.5 | 1 |
+------+-----------+
select c17, sign(c17) from t1;
+------+-----------+
| c17 | sign(c17) |
+------+-----------+
| 8 | 1 |
| -8 | -1 |
+------+-----------+
select c18, sign(c18) from t1;
+------+-----------+
| c18 | sign(c18) |
+------+-----------+
| 9 | 1 |
| 9 | 1 |
+------+-----------+
select c19, sign(c19) from t1;
+---------------------+-----------+
| c19 | sign(c19) |
+---------------------+-----------+
| 2019-12-01 12:00:00 | 1 |
| 2019-12-01 12:00:00 | 1 |
+---------------------+-----------+
select c20, sign(c20) from t1;
+---------------------+-----------+
| c20 | sign(c20) |
+---------------------+-----------+
| 2019-12-03 06:00:00 | 1 |
| 2019-12-03 06:00:00 | 1 |
+---------------------+-----------+
select c21, sign(c21) from t1;
+------+-----------+
| c21 | sign(c21) |
+------+-----------+
| 9.5 | 1 |
| -9.5 | -1 |
+------+-----------+
select c22, sign(c22) from t1;
+------+-----------+
| c22 | sign(c22) |
+------+-----------+
| 10.5 | 1 |
| 10.5 | 1 |
+------+-----------+
select sign(a1) from t2;
+----------+
| sign(a1) |
+----------+
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
+----------+
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'AME'
Warning 1292 Truncated incorrect DOUBLE value: 'BDL'
Warning 1292 Truncated incorrect DOUBLE value: 'BMC'
Warning 1292 Truncated incorrect DOUBLE value: 'BOT'
Warning 1292 Truncated incorrect DOUBLE value: 'DTX'
Warning 1292 Truncated incorrect DOUBLE value: 'GG1'
Warning 1292 Truncated incorrect DOUBLE value: 'GG2'
Warning 1292 Truncated incorrect DOUBLE value: 'GG3'
Warning 1292 Truncated incorrect DOUBLE value: 'GTM'
Warning 1292 Truncated incorrect DOUBLE value: 'HBR'
Warning 1292 Truncated incorrect DOUBLE value: 'KKK'
Warning 1292 Truncated incorrect DOUBLE value: 'PLS'
Warning 1292 Truncated incorrect DOUBLE value: 'SSJ'
Warning 1292 Truncated incorrect DOUBLE value: 'TWU'
Warning 1292 Truncated incorrect DOUBLE value: 'VVV'
Warning 1292 Truncated incorrect DOUBLE value: 'WWW'
Warning 1292 Truncated incorrect DOUBLE value: 'XXX'
Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ'
select sign(a3) from t2;
+----------+
| sign(a3) |
+----------+
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
| 0 |
+----------+
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'SEA'
Warning 1292 Truncated incorrect DOUBLE value: 'DEN'
Warning 1292 Truncated incorrect DOUBLE value: 'SEA'
Warning 1292 Truncated incorrect DOUBLE value: 'SEA'
Warning 1292 Truncated incorrect DOUBLE value: 'NYC'
Warning 1292 Truncated incorrect DOUBLE value: 'DD1'
Warning 1292 Truncated incorrect DOUBLE value: 'DD2'
Warning 1292 Truncated incorrect DOUBLE value: 'DD3'
Warning 1292 Truncated incorrect DOUBLE value: 'DAL'
Warning 1292 Truncated incorrect DOUBLE value: 'SEA'
Warning 1292 Truncated incorrect DOUBLE value: 'ATL'
Warning 1292 Truncated incorrect DOUBLE value: 'WDC'
Warning 1292 Truncated incorrect DOUBLE value: 'CHI'
Warning 1292 Truncated incorrect DOUBLE value: 'LAX'
Warning 1292 Truncated incorrect DOUBLE value: 'MON'
Warning 1292 Truncated incorrect DOUBLE value: 'LED'
Warning 1292 Truncated incorrect DOUBLE value: 'MIN'
Warning 1292 Truncated incorrect DOUBLE value: 'CHI'
select sign(a1),a2 from t2;
+----------+------+
| sign(a1) | a2 |
+----------+------+
| 0 | 0 |
| 0 | 0 |
| 0 | 3 |
| 0 | -2 |
| 0 | 1 |
| 0 | 3 |
| 0 | -3 |
| 0 | -3 |
| 0 | 3 |
| 0 | 1 |
| 0 | -3 |
| 0 | -1 |
| 0 | NULL |
| 0 | 0 |
| 0 | -2 |
| 0 | 1 |
| 0 | NULL |
| 0 | 2 |
+----------+------+
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'AME'
Warning 1292 Truncated incorrect DOUBLE value: 'BDL'
Warning 1292 Truncated incorrect DOUBLE value: 'BMC'
Warning 1292 Truncated incorrect DOUBLE value: 'BOT'
Warning 1292 Truncated incorrect DOUBLE value: 'DTX'
Warning 1292 Truncated incorrect DOUBLE value: 'GG1'
Warning 1292 Truncated incorrect DOUBLE value: 'GG2'
Warning 1292 Truncated incorrect DOUBLE value: 'GG3'
Warning 1292 Truncated incorrect DOUBLE value: 'GTM'
Warning 1292 Truncated incorrect DOUBLE value: 'HBR'
Warning 1292 Truncated incorrect DOUBLE value: 'KKK'
Warning 1292 Truncated incorrect DOUBLE value: 'PLS'
Warning 1292 Truncated incorrect DOUBLE value: 'SSJ'
Warning 1292 Truncated incorrect DOUBLE value: 'TWU'
Warning 1292 Truncated incorrect DOUBLE value: 'VVV'
Warning 1292 Truncated incorrect DOUBLE value: 'WWW'
Warning 1292 Truncated incorrect DOUBLE value: 'XXX'
Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ'
select sign(a2) from t2 where sign(a4) >= 0;
+----------+
| sign(a2) |
+----------+
| 0 |
| 1 |
| 1 |
| -1 |
| 1 |
| -1 |
+----------+
select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2;
+----------+
| sign(a4) |
+----------+
| 1 |
| -1 |
| -1 |
| 1 |
| -1 |
| NULL |
| -1 |
| -1 |
| 1 |
+----------+
select * from t2 group by sign(a2);
+-----+------+------+--------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+--------+---------------------+
| AME | 0 | SEA | 0.1 | timestamp |
| BMC | 3 | SEA | -0.085 | timestamp |
| BOT | -2 | SEA | -0.085 | timestamp |
| SSJ | NULL | CHI | NULL | timestamp |
+-----+------+------+--------+---------------------+
select * from t2 order by sign(a4) ;
+-----+------+------+--------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+--------+---------------------+
| XXX | NULL | MIN | NULL | timestamp |
| KKK | -3 | ATL | NULL | timestamp |
| SSJ | NULL | CHI | NULL | timestamp |
| WWW | 1 | LED | NULL | timestamp |
| GG3 | -3 | DD3 | -0.051 | timestamp |
| GTM | 3 | DAL | -0.07 | timestamp |
| ZAJ | 2 | CHI | -0.075 | timestamp |
| BDL | 0 | DEN | -0.08 | timestamp |
| PLS | -1 | WDC | -0.075 | timestamp |
| BMC | 3 | SEA | -0.085 | timestamp |
| TWU | 0 | LAX | -0.08 | timestamp |
| BOT | -2 | SEA | -0.085 | timestamp |
| HBR | 1 | SEA | 0.085 | timestamp |
| DTX | 1 | NYC | 0.08 | timestamp |
| VVV | -2 | MON | 0.075 | timestamp |
| GG1 | 3 | DD1 | 0.053 | timestamp |
| GG2 | -3 | DD2 | 0.052 | timestamp |
| AME | 0 | SEA | 0.1 | timestamp |
+-----+------+------+--------+---------------------+
select * from t2 order by sign(a4) , a4 ;
+-----+------+------+--------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+--------+---------------------+
| XXX | NULL | MIN | NULL | timestamp |
| KKK | -3 | ATL | NULL | timestamp |
| SSJ | NULL | CHI | NULL | timestamp |
| WWW | 1 | LED | NULL | timestamp |
| BMC | 3 | SEA | -0.085 | timestamp |
| BOT | -2 | SEA | -0.085 | timestamp |
| BDL | 0 | DEN | -0.08 | timestamp |
| TWU | 0 | LAX | -0.08 | timestamp |
| ZAJ | 2 | CHI | -0.075 | timestamp |
| PLS | -1 | WDC | -0.075 | timestamp |
| GTM | 3 | DAL | -0.07 | timestamp |
| GG3 | -3 | DD3 | -0.051 | timestamp |
| GG2 | -3 | DD2 | 0.052 | timestamp |
| GG1 | 3 | DD1 | 0.053 | timestamp |
| VVV | -2 | MON | 0.075 | timestamp |
| DTX | 1 | NYC | 0.08 | timestamp |
| HBR | 1 | SEA | 0.085 | timestamp |
| AME | 0 | SEA | 0.1 | timestamp |
+-----+------+------+--------+---------------------+
select * from t2 order by sign(a4) , a1 ;
+-----+------+------+--------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+--------+---------------------+
| KKK | -3 | ATL | NULL | timestamp |
| SSJ | NULL | CHI | NULL | timestamp |
| WWW | 1 | LED | NULL | timestamp |
| XXX | NULL | MIN | NULL | timestamp |
| BDL | 0 | DEN | -0.08 | timestamp |
| BMC | 3 | SEA | -0.085 | timestamp |
| BOT | -2 | SEA | -0.085 | timestamp |
| GG3 | -3 | DD3 | -0.051 | timestamp |
| GTM | 3 | DAL | -0.07 | timestamp |
| PLS | -1 | WDC | -0.075 | timestamp |
| TWU | 0 | LAX | -0.08 | timestamp |
| ZAJ | 2 | CHI | -0.075 | timestamp |
| AME | 0 | SEA | 0.1 | timestamp |
| DTX | 1 | NYC | 0.08 | timestamp |
| GG1 | 3 | DD1 | 0.053 | timestamp |
| GG2 | -3 | DD2 | 0.052 | timestamp |
| HBR | 1 | SEA | 0.085 | timestamp |
| VVV | -2 | MON | 0.075 | timestamp |
+-----+------+------+--------+---------------------+
select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0;
+---------+---------------------+
| abs(a2) | sum(a4) |
+---------+---------------------+
| 1 | 0.08999999612569809 |
+---------+---------------------+
select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) );
+-----+------+------+-------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+-------+---------------------+
| DTX | 1 | NYC | 0.08 | timestamp |
| HBR | 1 | SEA | 0.085 | timestamp |
| WWW | 1 | LED | NULL | timestamp |
+-----+------+------+-------+---------------------+
select sign( sum(a2) ) , sign( sum(a4) ) from t2;
+-----------------+-----------------+
| sign( sum(a2) ) | sign( sum(a4) ) |
+-----------------+-----------------+
| 0 | -1 |
+-----------------+-----------------+
select sign( avg(a2) ) , sign( avg(a4) ) from t2;
+-----------------+-----------------+
| sign( avg(a2) ) | sign( avg(a4) ) |
+-----------------+-----------------+
| 0 | -1 |
+-----------------+-----------------+
select sign( max(a2) ) , sign( min(a4) ) from t2;
+-----------------+-----------------+
| sign( max(a2) ) | sign( min(a4) ) |
+-----------------+-----------------+
| 1 | -1 |
+-----------------+-----------------+
select sign(count(*)) from t2;
+----------------+
| sign(count(*)) |
+----------------+
| 1 |
+----------------+
select * from t2 where sign( length(a1) ) = 1;
+-----+------+------+--------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+--------+---------------------+
| AME | 0 | SEA | 0.1 | timestamp |
| BDL | 0 | DEN | -0.08 | timestamp |
| BMC | 3 | SEA | -0.085 | timestamp |
| BOT | -2 | SEA | -0.085 | timestamp |
| DTX | 1 | NYC | 0.08 | timestamp |
| GG1 | 3 | DD1 | 0.053 | timestamp |
| GG2 | -3 | DD2 | 0.052 | timestamp |
| GG3 | -3 | DD3 | -0.051 | timestamp |
| GTM | 3 | DAL | -0.07 | timestamp |
| HBR | 1 | SEA | 0.085 | timestamp |
| KKK | -3 | ATL | NULL | timestamp |
| PLS | -1 | WDC | -0.075 | timestamp |
| SSJ | NULL | CHI | NULL | timestamp |
| TWU | 0 | LAX | -0.08 | timestamp |
| VVV | -2 | MON | 0.075 | timestamp |
| WWW | 1 | LED | NULL | timestamp |
| XXX | NULL | MIN | NULL | timestamp |
| ZAJ | 2 | CHI | -0.075 | timestamp |
+-----+------+------+--------+---------------------+
select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2;
+--------------------------------+--------------------------------+
| sign( cast(a1 as char(1024)) ) | sign( cast(a3 as char(1024)) ) |
+--------------------------------+--------------------------------+
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
+--------------------------------+--------------------------------+
select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2;
+--------------------------------+--------------------------------+
| sign( cast(a2 as char(1024)) ) | sign( cast(a4 as char(1024)) ) |
+--------------------------------+--------------------------------+
| 0 | 1 |
| 0 | -1 |
| 1 | -1 |
| -1 | -1 |
| 1 | 1 |
| 1 | 1 |
| -1 | 1 |
| -1 | -1 |
| 1 | -1 |
| 1 | 1 |
| -1 | NULL |
| -1 | -1 |
| NULL | NULL |
| 0 | -1 |
| -1 | 1 |
| 1 | NULL |
| NULL | NULL |
| 1 | -1 |
+--------------------------------+--------------------------------+
select * from t2 as t21 join t2 as t22 on sign(t21.a2) = sign(t22.a4);
+-----+------+------+--------+---------------------+-----+------+------+--------+---------------------+
| a1 | a2 | a3 | a4 | a5 | a1 | a2 | a3 | a4 | a5 |
+-----+------+------+--------+---------------------+-----+------+------+--------+---------------------+
| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 |
| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 |
| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 |
| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 |
| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 |
| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 |
| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 |
| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 |
| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 |
| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 |
| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 |
| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 |
| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 |
| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 |
| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 |
| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 |
| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 |
| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 |
| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 |
| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 |
| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 |
| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 |
| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 |
| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 |
| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 |
| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 |
| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 |
| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 |
| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 |
| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 |
| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 |
| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 |
| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 |
| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 |
| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 |
| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 |
| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 |
| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 |
| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 |
| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 |
| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 |
| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 |
| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 |
| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 |
| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 |
| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 |
| KKK | -3 | ATL | NULL | NULL | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 |
| KKK | -3 | ATL | NULL | NULL | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 |
| KKK | -3 | ATL | NULL | NULL | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 |
| KKK | -3 | ATL | NULL | NULL | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 |
| KKK | -3 | ATL | NULL | NULL | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 |
| KKK | -3 | ATL | NULL | NULL | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 |
| KKK | -3 | ATL | NULL | NULL | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 |
| KKK | -3 | ATL | NULL | NULL | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 |
| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 |
| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 |
| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 |
| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 |
| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 |
| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 |
| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 |
| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 |
| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 |
| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 |
| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 |
| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 |
| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 |
| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 |
| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 |
| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 | ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 |
| WWW | 1 | LED | NULL | NULL | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 |
| WWW | 1 | LED | NULL | NULL | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 |
| WWW | 1 | LED | NULL | NULL | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 |
| WWW | 1 | LED | NULL | NULL | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 |
| WWW | 1 | LED | NULL | NULL | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 |
| WWW | 1 | LED | NULL | NULL | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 |
| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 |
| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 |
| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 |
| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 |
| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 |
| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 | VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 |
+-----+------+------+--------+---------------------+-----+------+------+--------+---------------------+
select tmp.a1 , sign(tmp.a2) , tmp.a3 , sign(tmp.a4) from t2 as tmp;
+-----+--------------+------+--------------+
| a1 | sign(tmp.a2) | a3 | sign(tmp.a4) |
+-----+--------------+------+--------------+
| AME | 0 | SEA | 1 |
| BDL | 0 | DEN | -1 |
| BMC | 1 | SEA | -1 |
| BOT | -1 | SEA | -1 |
| DTX | 1 | NYC | 1 |
| GG1 | 1 | DD1 | 1 |
| GG2 | -1 | DD2 | 1 |
| GG3 | -1 | DD3 | -1 |
| GTM | 1 | DAL | -1 |
| HBR | 1 | SEA | 1 |
| KKK | -1 | ATL | NULL |
| PLS | -1 | WDC | -1 |
| SSJ | NULL | CHI | NULL |
| TWU | 0 | LAX | -1 |
| VVV | -1 | MON | 1 |
| WWW | 1 | LED | NULL |
| XXX | NULL | MIN | NULL |
| ZAJ | 1 | CHI | -1 |
+-----+--------------+------+--------------+
## select for update
select sign(a2) from t2 where sign(a4) >= 0 for update;
+----------+
| sign(a2) |
+----------+
| 0 |
| 1 |
| 1 |
| -1 |
| 1 |
| -1 |
+----------+
select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2 for update;
+----------+
| sign(a4) |
+----------+
| 1 |
| -1 |
| -1 |
| 1 |
| -1 |
| NULL |
| -1 |
| -1 |
| 1 |
+----------+
select * from t2 group by sign(a2) for update;
+-----+------+------+--------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+--------+---------------------+
| AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 |
| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 |
| SSJ | NULL | CHI | NULL | 1974-03-19 00:00:00 |
+-----+------+------+--------+---------------------+
select * from t2 order by sign(a4) for update;
+-----+------+------+--------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+--------+---------------------+
| XXX | NULL | MIN | NULL | NULL |
| KKK | -3 | ATL | NULL | NULL |
| SSJ | NULL | CHI | NULL | 1974-03-19 00:00:00 |
| WWW | 1 | LED | NULL | NULL |
| GG3 | -3 | DD3 | -0.051 | 1974-03-19 00:00:00 |
| GTM | 3 | DAL | -0.07 | 1977-09-23 00:00:00 |
| ZAJ | 2 | CHI | -0.075 | 1960-06-15 00:00:00 |
| BDL | 0 | DEN | -0.08 | 1960-11-27 00:00:00 |
| PLS | -1 | WDC | -0.075 | 1949-01-02 00:00:00 |
| BMC | 3 | SEA | -0.085 | 1958-09-08 00:00:00 |
| TWU | 0 | LAX | -0.08 | 1969-10-05 00:00:00 |
| BOT | -2 | SEA | -0.085 | 1951-11-29 00:00:00 |
| HBR | 1 | SEA | 0.085 | 1948-03-05 00:00:00 |
| DTX | 1 | NYC | 0.08 | 1961-05-04 00:00:00 |
| VVV | -2 | MON | 0.075 | 1959-06-28 00:00:00 |
| GG1 | 3 | DD1 | 0.053 | 1974-03-19 00:00:00 |
| GG2 | -3 | DD2 | 0.052 | 1974-03-19 00:00:00 |
| AME | 0 | SEA | 0.1 | 1942-02-19 00:00:00 |
+-----+------+------+--------+---------------------+
select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0 for update;
+---------+---------------------+
| abs(a2) | sum(a4) |
+---------+---------------------+
| 1 | 0.08999999612569809 |
+---------+---------------------+
select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) ) for update;
+-----+------+------+-------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+-------+---------------------+
| DTX | 1 | NYC | 0.08 | timestamp |
| HBR | 1 | SEA | 0.085 | timestamp |
| WWW | 1 | LED | NULL | timestamp |
+-----+------+------+-------+---------------------+
select sign( sum(a2) ) , sign( sum(a4) ) from t2 for update;
+-----------------+-----------------+
| sign( sum(a2) ) | sign( sum(a4) ) |
+-----------------+-----------------+
| 0 | -1 |
+-----------------+-----------------+
select sign( avg(a2) ) , sign( avg(a4) ) from t2 for update;
+-----------------+-----------------+
| sign( avg(a2) ) | sign( avg(a4) ) |
+-----------------+-----------------+
| 0 | -1 |
+-----------------+-----------------+
select sign( max(a2) ) , sign( min(a4) ) from t2 for update;
+-----------------+-----------------+
| sign( max(a2) ) | sign( min(a4) ) |
+-----------------+-----------------+
| 1 | -1 |
+-----------------+-----------------+
select sign(count(*)) from t2 for update;
+----------------+
| sign(count(*)) |
+----------------+
| 1 |
+----------------+
select * from t2 where sign( length(a1) ) = 1 for update;
+-----+------+------+--------+---------------------+
| a1 | a2 | a3 | a4 | a5 |
+-----+------+------+--------+---------------------+
| AME | 0 | SEA | 0.1 | timestamp |
| BDL | 0 | DEN | -0.08 | timestamp |
| BMC | 3 | SEA | -0.085 | timestamp |
| BOT | -2 | SEA | -0.085 | timestamp |
| DTX | 1 | NYC | 0.08 | timestamp |
| GG1 | 3 | DD1 | 0.053 | timestamp |
| GG2 | -3 | DD2 | 0.052 | timestamp |
| GG3 | -3 | DD3 | -0.051 | timestamp |
| GTM | 3 | DAL | -0.07 | timestamp |
| HBR | 1 | SEA | 0.085 | timestamp |
| KKK | -3 | ATL | NULL | timestamp |
| PLS | -1 | WDC | -0.075 | timestamp |
| SSJ | NULL | CHI | NULL | timestamp |
| TWU | 0 | LAX | -0.08 | timestamp |
| VVV | -2 | MON | 0.075 | timestamp |
| WWW | 1 | LED | NULL | timestamp |
| XXX | NULL | MIN | NULL | timestamp |
| ZAJ | 2 | CHI | -0.075 | timestamp |
+-----+------+------+--------+---------------------+
select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2 for update;
+--------------------------------+--------------------------------+
| sign( cast(a1 as char(1024)) ) | sign( cast(a3 as char(1024)) ) |
+--------------------------------+--------------------------------+
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
| 0 | 0 |
+--------------------------------+--------------------------------+
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'AME'
Warning 1292 Truncated incorrect DOUBLE value: 'BDL'
Warning 1292 Truncated incorrect DOUBLE value: 'BMC'
Warning 1292 Truncated incorrect DOUBLE value: 'BOT'
Warning 1292 Truncated incorrect DOUBLE value: 'DTX'
Warning 1292 Truncated incorrect DOUBLE value: 'GG1'
Warning 1292 Truncated incorrect DOUBLE value: 'GG2'
Warning 1292 Truncated incorrect DOUBLE value: 'GG3'
Warning 1292 Truncated incorrect DOUBLE value: 'GTM'
Warning 1292 Truncated incorrect DOUBLE value: 'HBR'
Warning 1292 Truncated incorrect DOUBLE value: 'KKK'
Warning 1292 Truncated incorrect DOUBLE value: 'PLS'
Warning 1292 Truncated incorrect DOUBLE value: 'SSJ'
Warning 1292 Truncated incorrect DOUBLE value: 'TWU'
Warning 1292 Truncated incorrect DOUBLE value: 'VVV'
Warning 1292 Truncated incorrect DOUBLE value: 'WWW'
Warning 1292 Truncated incorrect DOUBLE value: 'XXX'
Warning 1292 Truncated incorrect DOUBLE value: 'ZAJ'
Warning 1292 Truncated incorrect DOUBLE value: 'SEA'
Warning 1292 Truncated incorrect DOUBLE value: 'DEN'
Warning 1292 Truncated incorrect DOUBLE value: 'SEA'
Warning 1292 Truncated incorrect DOUBLE value: 'SEA'
Warning 1292 Truncated incorrect DOUBLE value: 'NYC'
Warning 1292 Truncated incorrect DOUBLE value: 'DD1'
Warning 1292 Truncated incorrect DOUBLE value: 'DD2'
Warning 1292 Truncated incorrect DOUBLE value: 'DD3'
Warning 1292 Truncated incorrect DOUBLE value: 'DAL'
Warning 1292 Truncated incorrect DOUBLE value: 'SEA'
Warning 1292 Truncated incorrect DOUBLE value: 'ATL'
Warning 1292 Truncated incorrect DOUBLE value: 'WDC'
Warning 1292 Truncated incorrect DOUBLE value: 'CHI'
Warning 1292 Truncated incorrect DOUBLE value: 'LAX'
Warning 1292 Truncated incorrect DOUBLE value: 'MON'
Warning 1292 Truncated incorrect DOUBLE value: 'LED'
Warning 1292 Truncated incorrect DOUBLE value: 'MIN'
Warning 1292 Truncated incorrect DOUBLE value: 'CHI'
select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2 for update;
+--------------------------------+--------------------------------+
| sign( cast(a2 as char(1024)) ) | sign( cast(a4 as char(1024)) ) |
+--------------------------------+--------------------------------+
| 0 | 1 |
| 0 | -1 |
| 1 | -1 |
| -1 | -1 |
| 1 | 1 |
| 1 | 1 |
| -1 | 1 |
| -1 | -1 |
| 1 | -1 |
| 1 | 1 |
| -1 | NULL |
| -1 | -1 |
| NULL | NULL |
| 0 | -1 |
| -1 | 1 |
| 1 | NULL |
| NULL | NULL |
| 1 | -1 |
+--------------------------------+--------------------------------+
#
select sign(1E-300) from dual;
+--------------+
| sign(1E-300) |
+--------------+
| 1 |
+--------------+
select sign(1E-400) from dual;
+--------------+
| sign(1E-400) |
+--------------+
| 0 |
+--------------+
##bug:
drop table if exists t1;
create table t1(c1 bit(64),c2 bit(64));
insert into t1(c1) values(1);
select sign(c1) from t1;
+----------+
| sign(c1) |
+----------+
| 1 |
+----------+
drop table t1;

View File

@ -0,0 +1,94 @@
result_format: 4
set @@ob_enable_plan_cache = 0;
select space(NULL);
+-------------+
| space(NULL) |
+-------------+
| NULL |
+-------------+
select space(-1);
+-----------+
| space(-1) |
+-----------+
| |
+-----------+
select space(0);
+----------+
| space(0) |
+----------+
| |
+----------+
select space(1);
+----------+
| space(1) |
+----------+
| |
+----------+
select space(2);
+----------+
| space(2) |
+----------+
| |
+----------+
select length(space("2.1"));
+----------------------+
| length(space("2.1")) |
+----------------------+
| 2 |
+----------------------+
select length(space("2.9"));
+----------------------+
| length(space("2.9")) |
+----------------------+
| 2 |
+----------------------+
select length(space("200000000"));
+----------------------------+
| length(space("200000000")) |
+----------------------------+
| NULL |
+----------------------------+
drop table t2;
create table t2 as select space(512),space(513),space(32767),space(32768),space(65535),space(65536) from dual;
desc t2;
+--------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+-------+
| space(512) | varchar(512) | YES | | NULL | |
| space(513) | text | YES | | NULL | |
| space(32767) | text | YES | | NULL | |
| space(32768) | text | YES | | NULL | |
| space(65535) | text | YES | | NULL | |
| space(65536) | longtext | YES | | NULL | |
+--------------+--------------+------+-----+---------+-------+
drop table t2;
#bugfix
drop database if exists luofan;
drop table if exists t1;
create database luofan;
create table t1 (c1 varchar(64));
insert into t1 values(-1);
insert into t1 values(-2);
insert into t1 values(-3);
insert into t1 values(-4);
select * from t1 where space(c1) = '';
+------+
| c1 |
+------+
| -1 |
| -2 |
| -3 |
| -4 |
+------+
drop table if exists t1;
drop database if exists luofan;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,77 @@
drop table t1;
create table t1(c1 int, c2 varchar(10), c3 decimal);
insert into t1 values(0, 'abc', '0.1');
insert into t1 values(1, 'def', '1.1');
insert into t1 values(2, 'ghi', '2.1');
insert into t1 values(3, 'jkl', '3.1');
insert into t1 values(4, 'mno', '4.1');
insert into t1 values(5, 'pqr', '5.1');
insert into t1 values(6, 'stu', '6.1');
insert into t1 values(7, 'vwx', '7.1');
insert into t1 values(8, 'yz', '8.1');
insert into t1 values(9, null, null);
result_format: 4
explain_protocol: 1
set @@ob_enable_plan_cache = 0;
set ob_enable_plan_cache = 0;
EXPLAIN BASIC select /*+ tracing(0) */ * from t1;
Query Plan
===========================
|ID|OPERATOR |NAME|
---------------------------
|0 |MONITORING DUMP | |
|1 |└─TABLE FULL SCAN|t1 |
===========================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), rowset=16
1 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), rowset=16
access([t1.c1], [t1.c2], [t1.c3]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.__pk_increment]), range(MIN ; MAX)always true
select /*+ tracing(0) */ * from t1;
+------+------+------+
| c1 | c2 | c3 |
+------+------+------+
| 0 | abc | 0 |
| 1 | def | 1 |
| 2 | ghi | 2 |
| 3 | jkl | 3 |
| 4 | mno | 4 |
| 5 | pqr | 5 |
| 6 | stu | 6 |
| 7 | vwx | 7 |
| 8 | yz | 8 |
| 9 | NULL | NULL |
+------+------+------+
EXPLAIN BASIC select /*+ tracing(1) */ * from t1;
Query Plan
=========================
|ID|OPERATOR |NAME|
-------------------------
|0 |TABLE FULL SCAN|t1 |
=========================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t1.c3]), filter(nil), rowset=16
access([t1.c1], [t1.c2], [t1.c3]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.__pk_increment]), range(MIN ; MAX)always true
select /*+ tracing(1) */ * from t1;
+------+------+------+
| c1 | c2 | c3 |
+------+------+------+
| 0 | abc | 0 |
| 1 | def | 1 |
| 2 | ghi | 2 |
| 3 | jkl | 3 |
| 4 | mno | 4 |
| 5 | pqr | 5 |
| 6 | stu | 6 |
| 7 | vwx | 7 |
| 8 | yz | 8 |
| 9 | NULL | NULL |
+------+------+------+
drop table t1;

View File

@ -0,0 +1,817 @@
result_format: 4
explain_protocol: 2
drop table if exists t1, t2;
create table t1(c1 int, c2 int primary key);
create table t2(c1 int primary key, c2 int);
insert/*trace*/ into t1 values(1,1), (1, 2), (null, 3), (2, 4), (3,5);
insert/*trace*/ into t2 values(1, 1), (3, 3), (5,5), (6, null);
set @@ob_enable_plan_cache = 0;
============================== no use batch nested loop join =========
set _nlj_batching_enabled = false;
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c1;
Query Plan
=======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |NESTED-LOOP JOIN | |4 |96 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─DISTRIBUTED TABLE GET|t2 |1 |18 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
conds(nil), nl_params_([t1.c1(:0)]), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([:0 = t2.c1])
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c1;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 3 | 5 | 3 | 3 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c2;
Query Plan
===================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |NESTED-LOOP JOIN | |5 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |4 |3 |
|3 | └─TABLE FULL SCAN|t2 |4 |3 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c2]), nl_params_(nil), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
3 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c2;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 3 | 5 | 3 | 3 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c1;
Query Plan
=======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |NESTED-LOOP OUTER JOIN | |5 |96 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─DISTRIBUTED TABLE GET|t2 |1 |18 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
conds(nil), nl_params_([t1.c1(:0)]), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([:0 = t2.c1])
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c1;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| NULL | 3 | NULL | NULL |
| 2 | 4 | NULL | NULL |
| 3 | 5 | 3 | 3 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c2;
Query Plan
=======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |NESTED-LOOP OUTER JOIN | |5 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |4 |3 |
|3 | └─TABLE FULL SCAN |t2 |4 |3 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c2]), nl_params_(nil), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
3 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c2;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| NULL | 3 | NULL | NULL |
| 2 | 4 | NULL | NULL |
| 3 | 5 | 3 | 3 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c1;
Query Plan
===================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |MERGE OUTER JOIN | |4 |6 |
|1 |├─TABLE FULL SCAN |t2 |4 |3 |
|2 |└─SORT | |5 |3 |
|3 | └─TABLE FULL SCAN|t1 |5 |3 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
equal_conds([t1.c1 = t2.c1]), other_conds(nil)
merge_directions([ASC])
1 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
sort_keys([t1.c1, ASC])
3 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c1;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 3 | 5 | 3 | 3 |
| NULL | NULL | 5 | 5 |
| NULL | NULL | 6 | NULL |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c2;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |HASH OUTER JOIN | |5 |6 |
|1 |├─TABLE FULL SCAN|t2 |4 |3 |
|2 |└─TABLE FULL SCAN|t1 |5 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
equal_conds([t1.c1 = t2.c2]), other_conds(nil)
1 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c2;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 3 | 5 | 3 | 3 |
| NULL | NULL | 6 | NULL |
| NULL | NULL | 5 | 5 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c1;
Query Plan
======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------------
|0 |MERGE FULL OUTER JOIN | |5 |6 |
|1 |├─TABLE FULL SCAN |t2 |4 |3 |
|2 |└─SORT | |5 |3 |
|3 | └─TABLE FULL SCAN |t1 |5 |3 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
equal_conds([t1.c1 = t2.c1]), other_conds(nil)
merge_directions([ASC])
1 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
sort_keys([t1.c1, ASC])
3 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c1;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| NULL | 3 | NULL | NULL |
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 2 | 4 | NULL | NULL |
| 3 | 5 | 3 | 3 |
| NULL | NULL | 5 | 5 |
| NULL | NULL | 6 | NULL |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c2;
Query Plan
=====================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH FULL OUTER JOIN | |5 |6 |
|1 |├─TABLE FULL SCAN |t2 |4 |3 |
|2 |└─TABLE FULL SCAN |t1 |5 |3 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
equal_conds([t1.c1 = t2.c2]), other_conds(nil)
1 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c2;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| NULL | 3 | NULL | NULL |
| 2 | 4 | NULL | NULL |
| 3 | 5 | 3 | 3 |
| NULL | NULL | 6 | NULL |
| NULL | NULL | 5 | 5 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c2);
Query Plan
======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------------
|0 |NESTED-LOOP SEMI JOIN | |4 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |4 |3 |
|3 | └─TABLE FULL SCAN |t2 |4 |3 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c2]), nl_params_(nil), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c2]), filter(nil), rowset=16
3 - output([t2.c2]), filter(nil), rowset=16
access([t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c2);
+------+----+
| c1 | c2 |
+------+----+
| 1 | 1 |
| 1 | 2 |
| 3 | 5 |
+------+----+
EXPLAIN select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c1);
Query Plan
===================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |NESTED-LOOP JOIN | |4 |3 |
|1 |├─TABLE FULL SCAN |t2 |4 |3 |
|2 |└─MATERIAL | |5 |3 |
|3 | └─TABLE FULL SCAN|t1 |5 |3 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c1]), nl_params_(nil), use_batch=false
1 - output([t2.c1]), filter(nil), rowset=16
access([t2.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
3 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c1);
+------+----+
| c1 | c2 |
+------+----+
| 1 | 1 |
| 1 | 2 |
| 3 | 5 |
+------+----+
EXPLAIN select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c2);
Query Plan
======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------------
|0 |NESTED-LOOP ANTI JOIN | |1 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |4 |3 |
|3 | └─TABLE FULL SCAN |t2 |4 |3 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c2]), nl_params_(nil), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c2]), filter(nil), rowset=16
3 - output([t2.c2]), filter(nil), rowset=16
access([t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c2);
+------+----+
| c1 | c2 |
+------+----+
| NULL | 3 |
| 2 | 4 |
+------+----+
EXPLAIN select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c1);
Query Plan
=======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |NESTED-LOOP ANTI JOIN | |1 |96 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─DISTRIBUTED TABLE GET|t2 |1 |18 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
conds(nil), nl_params_([t1.c1(:0)]), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([:0 = t2.c1])
select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c1);
+------+----+
| c1 | c2 |
+------+----+
| NULL | 3 |
| 2 | 4 |
+------+----+
============================== use batch nested loop join =========
set _nlj_batching_enabled = true;
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c1;
Query Plan
=======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |NESTED-LOOP JOIN | |4 |83 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─DISTRIBUTED TABLE GET|t2 |1 |16 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
conds(nil), nl_params_([t1.c1(:0)]), use_batch=true
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([GROUP_ID], [t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([:0 = t2.c1])
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c1;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 3 | 5 | 3 | 3 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c2;
Query Plan
===================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |NESTED-LOOP JOIN | |5 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |4 |3 |
|3 | └─TABLE FULL SCAN|t2 |4 |3 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c2]), nl_params_(nil), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
3 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c2;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 3 | 5 | 3 | 3 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c1;
Query Plan
=======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |NESTED-LOOP OUTER JOIN | |5 |83 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─DISTRIBUTED TABLE GET|t2 |1 |16 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
conds(nil), nl_params_([t1.c1(:0)]), use_batch=true
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([GROUP_ID], [t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([:0 = t2.c1])
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c1;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| NULL | 3 | NULL | NULL |
| 2 | 4 | NULL | NULL |
| 3 | 5 | 3 | 3 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c2;
Query Plan
=======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |NESTED-LOOP OUTER JOIN | |5 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |4 |3 |
|3 | └─TABLE FULL SCAN |t2 |4 |3 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c2]), nl_params_(nil), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
3 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c2;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| NULL | 3 | NULL | NULL |
| 2 | 4 | NULL | NULL |
| 3 | 5 | 3 | 3 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c1;
Query Plan
===================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |MERGE OUTER JOIN | |4 |6 |
|1 |├─TABLE FULL SCAN |t2 |4 |3 |
|2 |└─SORT | |5 |3 |
|3 | └─TABLE FULL SCAN|t1 |5 |3 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
equal_conds([t1.c1 = t2.c1]), other_conds(nil)
merge_directions([ASC])
1 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
sort_keys([t1.c1, ASC])
3 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c1;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 3 | 5 | 3 | 3 |
| NULL | NULL | 5 | 5 |
| NULL | NULL | 6 | NULL |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c2;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |HASH OUTER JOIN | |5 |6 |
|1 |├─TABLE FULL SCAN|t2 |4 |3 |
|2 |└─TABLE FULL SCAN|t1 |5 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
equal_conds([t1.c1 = t2.c2]), other_conds(nil)
1 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c2;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 3 | 5 | 3 | 3 |
| NULL | NULL | 6 | NULL |
| NULL | NULL | 5 | 5 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c1;
Query Plan
======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------------
|0 |MERGE FULL OUTER JOIN | |5 |6 |
|1 |├─TABLE FULL SCAN |t2 |4 |3 |
|2 |└─SORT | |5 |3 |
|3 | └─TABLE FULL SCAN |t1 |5 |3 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
equal_conds([t1.c1 = t2.c1]), other_conds(nil)
merge_directions([ASC])
1 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
sort_keys([t1.c1, ASC])
3 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c1;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| NULL | 3 | NULL | NULL |
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| 2 | 4 | NULL | NULL |
| 3 | 5 | 3 | 3 |
| NULL | NULL | 5 | 5 |
| NULL | NULL | 6 | NULL |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c2;
Query Plan
=====================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |HASH FULL OUTER JOIN | |5 |6 |
|1 |├─TABLE FULL SCAN |t2 |4 |3 |
|2 |└─TABLE FULL SCAN |t1 |5 |3 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2], [t2.c1], [t2.c2]), filter(nil), rowset=16
equal_conds([t1.c1 = t2.c2]), other_conds(nil)
1 - output([t2.c1], [t2.c2]), filter(nil), rowset=16
access([t2.c1], [t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c2;
+------+----+----+------+
| c1 | c2 | c1 | c2 |
+------+----+----+------+
| 1 | 1 | 1 | 1 |
| 1 | 2 | 1 | 1 |
| NULL | 3 | NULL | NULL |
| 2 | 4 | NULL | NULL |
| 3 | 5 | 3 | 3 |
| NULL | NULL | 6 | NULL |
| NULL | NULL | 5 | 5 |
+------+----+----+------+
EXPLAIN select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c2);
Query Plan
======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------------
|0 |NESTED-LOOP SEMI JOIN | |4 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |4 |3 |
|3 | └─TABLE FULL SCAN |t2 |4 |3 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c2]), nl_params_(nil), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c2]), filter(nil), rowset=16
3 - output([t2.c2]), filter(nil), rowset=16
access([t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c2);
+------+----+
| c1 | c2 |
+------+----+
| 1 | 1 |
| 1 | 2 |
| 3 | 5 |
+------+----+
EXPLAIN select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c1);
Query Plan
===================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |NESTED-LOOP JOIN | |4 |3 |
|1 |├─TABLE FULL SCAN |t2 |4 |3 |
|2 |└─MATERIAL | |5 |3 |
|3 | └─TABLE FULL SCAN|t1 |5 |3 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c1]), nl_params_(nil), use_batch=false
1 - output([t2.c1]), filter(nil), rowset=16
access([t2.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
2 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
3 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c1);
+------+----+
| c1 | c2 |
+------+----+
| 1 | 1 |
| 1 | 2 |
| 3 | 5 |
+------+----+
EXPLAIN select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c2);
Query Plan
======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
------------------------------------------------------
|0 |NESTED-LOOP ANTI JOIN | |1 |3 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─MATERIAL | |4 |3 |
|3 | └─TABLE FULL SCAN |t2 |4 |3 |
======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
conds([t1.c1 = t2.c2]), nl_params_(nil), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output([t2.c2]), filter(nil), rowset=16
3 - output([t2.c2]), filter(nil), rowset=16
access([t2.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX)always true
select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c2);
+------+----+
| c1 | c2 |
+------+----+
| NULL | 3 |
| 2 | 4 |
+------+----+
EXPLAIN select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c1);
Query Plan
=======================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------------
|0 |NESTED-LOOP ANTI JOIN | |1 |96 |
|1 |├─TABLE FULL SCAN |t1 |5 |3 |
|2 |└─DISTRIBUTED TABLE GET|t2 |1 |18 |
=======================================================
Outputs & filters:
-------------------------------------
0 - output([t1.c1], [t1.c2]), filter(nil), rowset=16
conds(nil), nl_params_([t1.c1(:0)]), use_batch=false
1 - output([t1.c2], [t1.c1]), filter(nil), rowset=16
access([t1.c2], [t1.c1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.c2]), range(MIN ; MAX)always true
2 - output(nil), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t2.c1]), range(MIN ; MAX),
range_cond([:0 = t2.c1])
select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c1);
+------+----+
| c1 | c2 |
+------+----+
| NULL | 3 |
| 2 | 4 |
+------+----+
drop table t1;
drop table t2;

View File

@ -0,0 +1,65 @@
# owner: peihan.dph
# owner group: sql2
--disable_abort_on_error
--result_format 4
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn_admin;
alter system flush plan cache global;
sleep 2;
set ob_enable_plan_cache = 0;
#basic test
set block_encryption_mode = 0;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
--source mysql_test/test_suite/security/include/aes_two_param.inc
set block_encryption_mode = 1;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
--source mysql_test/test_suite/security/include/aes_two_param.inc
set block_encryption_mode = 2;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
--source mysql_test/test_suite/security/include/aes_two_param.inc
set block_encryption_mode = 3;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 4;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 5;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 6;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 7;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 8;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 9;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 10;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 11;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 12;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 13;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 14;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
set block_encryption_mode = 15;
show variables like '%encrypt%mode';
--source mysql_test/test_suite/security/include/aes_three_param.inc
sleep 2;

View File

@ -0,0 +1,80 @@
#owner: luofan.zp
#owner group: sql2
#tags: optimizer
--disable_abort_on_error
--result_format 4
--explain_protocol 0
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn_admin;
--sleep 2
set @@ob_enable_plan_cache = 0;
#set @@ob_log_level='debug';
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 smallint, c6 smallint unsigned,
c7 mediumint, c8 mediumint unsigned,
c9 integer, c10 integer unsigned,
c11 bigint, c12 bigint unsigned,
c13 float, c14 float unsigned,
c15 double, c16 double unsigned,
c17 decimal, c18 decimal unsigned,
c19 datetime, c20 timestamp,
c21 varchar(30), c22 char(30), c_null int);
insert into t1 values(1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
3.5, 4.5,
5.5, 6.5,
7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'9.5', '10.5', null);
insert into t1 values(-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-3.5, 4.5,
-5.5, 6.5,
-7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'-9.5', '10.5', null);
create table t2(col_int int, col_utf8 varchar(100) charset utf8,
col_utf16 varchar(100) charset utf16,
col_gbk varchar(100) charset gbk);
insert into t2 values(1, 'a', 'a', 'a');
insert into t2 values(-1, '中国', '中文', '中文');
insert into t2 values(256, ' 中国', ' 中文', '中文');
--sleep 2
#--explain_protocol 2
select ascii(c_null) from t1;
select ord(c_null) from t1;
let $cnt=22;
let $left=1;
while ($left <= $cnt)
{
eval select c$left, ascii(c$left), ord(c$left) from t1;
inc $left;
}
select col_int, ascii(col_int), ord(col_int) from t2;
select col_utf8, ascii(col_utf8), ord(col_utf8) from t2;
select col_utf16, ascii(col_utf16), ord(col_utf16) from t2;
select col_gbk, ascii(col_gbk), ord(col_gbk) from t2;
--sleep 2

View File

@ -0,0 +1,146 @@
# owner: peihan.dph
# owner group: sql2
# tags: optimizer
--disable_abort_on_error
--result_format 4
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 smallint, c6 smallint unsigned,
c7 mediumint, c8 mediumint unsigned,
c9 integer, c10 integer unsigned,
c11 bigint, c12 bigint unsigned,
c13 float, c14 float unsigned,
c15 double, c16 double unsigned,
c17 decimal, c18 decimal unsigned,
c19 datetime, c20 timestamp,
c21 varchar(30), c22 char(30));
insert into t1 values(1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
3.5, 4.5,
5.5, 6.5,
7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'9.5', '10.5');
--echo // Case1: normal test.测试各种类型组合, 跟不开新引擎开关进行对比
alter system flush plan cache global;
--explain_protocol 0
set @@ob_enable_plan_cache = 0;
let $cnt=22;
let $left=1;
while ($left <= $cnt)
{
eval select coalesce(c$left, null) from t1;
let $right=1;
while ($right <= $cnt)
{
eval select coalesce(c$left, c$right, null) from t1;
eval select coalesce(c$right, c$left) from t1;
inc $right;
}
inc $left;
}
--echo // Case2: 带有0的测试
--explain_protocol 0
delete from t1;
insert into t1 values(1, 0,
1, 0,
1, 0,
1, 0,
1, 0,
1, 0,
3.5, 0.0,
5.5, 0.0,
7.5, 0.0,
'2019-12-01 12:00:00', '0000-00-00 00:00:00'
'9.5', '000000000');
alter system flush plan cache global;
--explain_protocol 0
set @@ob_enable_plan_cache = 0;
let $cnt=22;
let $left=1;
while ($left <= $cnt)
{
eval select coalesce(c$left, null) from t1;
let $right=1;
while ($right <= $cnt)
{
eval select coalesce(c$left, c$right, null) from t1;
inc $right;
}
inc $left;
}
--sleep 2
--echo #for
--error 1051
drop table t1_enum;
create table t1_enum (a enum ('2015-09-11','2015-09-21'));
SELECT * FROM t1_enum WHERE COALESCE(a)=DATE('2015-09-11') AND COALESCE(a)='00:00:00';
drop table t1_enum;
--explain_protocol 0
--echo ##bugfix:
--disable_warnings
DROP TABLE IF EXISTS `table1_hash_abs_pk_parts_8_bigint`;
--enable_warnings
CREATE TABLE `table1_hash_abs_pk_parts_8_bigint` (
`col_bigint` bigint(20) DEFAULT NULL,
`col_char_20` char(20) DEFAULT NULL,
`col_timestamp_6` timestamp(6) NULL DEFAULT NULL,
`col_decimal_20_0` decimal(20,0) DEFAULT NULL,
`pk` bigint(20) NOT NULL,
PRIMARY KEY (`pk`)
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 2 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0
partition by hash(abs(pk))
(partition p0,
partition p1,
partition p2,
partition p3,
partition p4,
partition p5,
partition p6,
partition p7);
INSERT INTO `table1_hash_abs_pk_parts_8_bigint` VALUES (NULL,NULL,NULL,NULL,0),(-24595,NULL,NULL,NULL,-29386),(NULL,NULL,NULL,8,-10),(NULL,NULL,NULL,7,2),(NULL,'0000',NULL,888888888,204),(NULL,'2',NULL,3,-30937),(-68,'ybhowb','2000-04-25 15:22:58.055028',22008,1),(0,'0000',NULL,NULL,10577),(NULL,NULL,'2017-06-14 17:00:00.000003',NULL,99),(NULL,NULL,'2021-06-14 11:55:00.000003',NULL,125),(-100,NULL,NULL,NULL,-99999);
SELECT * FROM table1_hash_abs_pk_parts_8_bigint WHERE NOT col_timestamp_6 != CONCAT( CAST( 2015 + 3 + 3 AS CHAR(20) ) , '-06-19 01:00:00.000003') AND ( ( col_decimal_20_0 <> -10622 AND ( ( col_bigint NOT IN (ROUND( SIGN( LENGTH( TRIM( SUBSTR( HEX( TRIM( SUBSTR( CONCAT( CONCAT( SUBSTR( SUBSTR( 'lvmzy' , 1, 20) , 5 ) , SUBSTR( 'hlv' , 1, 20) ) , REPEAT( TRIM( SUBSTR( CONCAT(SUBSTR( 'chl' , 1, 20) , SUBSTR( 'jchlvm' , 1, 20) ) , 1 , 20 ) ) , 6 + 1 ) ) , 1 , 20 ) ) ) , 1 , 20 ) ) ) ) ) , -10293 , 0) ) ) ) OR ( col_decimal_20_0 <> -10622 OR ( col_bigint != -10622 AND COALESCE( 10 , 99999 , 99999 ) <=> col_bigint ) AND ( col_bigint != -10622 OR ( COALESCE( col_timestamp_6 , col_timestamp_6 , col_timestamp_6 ) IS NULL ) IS NOT TRUE ) ) ) ORDER BY col_char_20 ASC , pk ASC LIMIT 5 , 1 /* RESULTSET_HAS_ZERO_OR_ONE_ROWS */;
SELECT * FROM table1_hash_abs_pk_parts_8_bigint WHERE (COALESCE( col_timestamp_6 , col_timestamp_6 )) AND col_timestamp_6 = '2020-06-19 01:00:00.000003';
drop table `table1_hash_abs_pk_parts_8_bigint`;
##bugfix:
--disable_warnings
DROP TABLE IF EXISTS `tbl_108`;
--enable_warnings
CREATE TABLE `tbl_108` (
`col_1623` text NOT NULL,
`col_1629` text DEFAULT NULL,
`col_1631` set('Alice','Bob','Charlie','David') NOT NULL DEFAULT 'Bob'
);
UPDATE tbl_108 SET col_1623 = Coalesce(col_1631, col_1629) ;
UPDATE tbl_108 SET col_1623 = Coalesce(col_1629, col_1631) ;
drop table tbl_108;
--disable_warnings
DROP TABLE IF EXISTS t, tt;
--enable_warnings
create table t(c1 tinytext, c2 varchar(1000));
insert into t values(null, '01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789');
create table tt as select coalesce(c1, c2), coalesce(c2, c1) from t;
select * from tt;
drop table t, tt;

View File

@ -0,0 +1,26 @@
# owner: bin.lb
# owner group: sql2
--disable_abort_on_error
--result_format 4
connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection syscon;
sleep 2;
connection default;
set @@ob_enable_plan_cache = 0;
select elt(1, 2, 3, NULL);
select elt(NULL, 2, 3, NULL);
select elt(2, 2, 3, NULL);
select elt(3, 2, 3, NULL);
select elt(4, 2, 3, NULL);
select elt("4", "a", "b", NULL, "c");
select elt("4.1", "a", "b", NULL, "c", 'd');
select elt("4.9", "a", 2.3, NULL, "c", 'd');
connection syscon;
--sleep 2

View File

@ -0,0 +1,78 @@
#owner: luofan.zp
#owner group: sql2
#tags: optimizer
--disable_abort_on_error
--result_format 4
--explain_protocol 0
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn_admin;
--sleep 2
set @@ob_enable_plan_cache = 0;
#set @@ob_log_level='debug';
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 smallint, c6 smallint unsigned,
c7 mediumint, c8 mediumint unsigned,
c9 integer, c10 integer unsigned,
c11 bigint, c12 bigint unsigned,
c13 float, c14 float unsigned,
c15 double, c16 double unsigned,
c17 decimal, c18 decimal unsigned,
c19 datetime, c20 timestamp,
c21 varchar(30), c22 char(30), c_null int);
insert into t1 values(1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
3.5, 4.5,
5.5, 6.5,
7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'1,2,3.5,4.5', '12,2,8.5', null);
insert into t1 values(-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-3.5, 4.5,
-5.5, 6.5,
-7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'2019-12-03 06:00:00,2019-12-03 06:00:00', '1231,23,-1,2,3,4.5', null);
--sleep 2
#--explain_protocol 2
eval select find_in_set(null, null) from t1;
let $cnt=22;
let $left=1;
while ($left <= $cnt)
{
let $right=1;
while ($right <= $cnt)
{
eval select c$left, find_in_set(null, c$left) from t1;
eval select c$left, find_in_set(c$left, null) from t1;
eval select c$left, c$right, find_in_set(c$left, c$right) from t1;
inc $right;
}
inc $left;
}
--sleep 2

View File

@ -0,0 +1,100 @@
#owner: dachuan.sdc
#tags: optimizer
--result_format 4
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn_admin;
alter system flush plan cache global;
--sleep 2
connection default;
set ob_enable_plan_cache = false;
select from_unixtime(0);
select from_unixtime(0.0);
select from_unixtime("0");
select from_unixtime("0.0");
select from_unixtime(123456789);
select from_unixtime(123456789.123);
select from_unixtime("123456789.123");
select from_unixtime(-123456789);
select from_unixtime(-123456789.123);
select from_unixtime("-123456789.123");
select from_unixtime(date"2020-01-15");
select from_unixtime(time"22:10:10");
select from_unixtime(null);
select from_unixtime(null,null);
select from_unixtime("123456789.123",null);
select from_unixtime(null,"123456789.123");
select from_unixtime("123456789.123",1234);
select from_unixtime("123456789.123","1234");
select from_unixtime("123456789.123","");
select from_unixtime(1234567890, '%Y-%m-%d %H:%i:%S');
select from_unixtime(9999999999999999999, '%Y-%m-%d %H:%i:%S');
connection conn_admin;
--sleep 2
connection default;
--disable_warnings
drop table if exists t;
--enable_warnings
create table t (t1 tinyint,
t2 smallint,
t3 mediumint,
t4 integer,
t5 bigint,
t6 tinyint unsigned,
t7 smallint unsigned,
t8 mediumint unsigned,
t9 integer unsigned,
t10 bigint unsigned,
t11 float,
t12 float unsigned,
t13 double,
t14 double unsigned,
t15 number,
t16 number unsigned,
t17 datetime,
t18 timestamp,
t19 date,
t20 time,
t21 year,
t22 varchar(255),
t23 char(255),
t24 tinytext,
t25 mediumtext,
t26 longtext,
t27 bit,
t28 enum('a', 'b', 'c', '123', '%Y-%M-%D %h:%m:%s'),
t29 set('a', 'b', 'c'));
insert into t values (1, -1, 1, 1234567, 13445677888, 1, 1, 1, 14455423, 1, 123123123.13, 131231.111,
11113211.22323, 22312312312.322, 123123222.23232, 1231232.22222,
'1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '123123.13', '132123.24', '31231231231.222', '31231231231.22',
'1.2', 1, 'b', 'b');
insert into t(t28) values ('%Y-%M-%D %h:%m:%s');
connection conn_admin;
--sleep 2
connection default;
let $cnt = 1;
while ($cnt <= 29)
{
# enum_set cast to number is not supported for now. @shaoge.gjt
--error 0,1235
eval select from_unixtime(t$cnt) from t;
eval explain select from_unixtime(t$cnt) from t;
# select from_unixtime(1234567890, t27); error, bit cast to varchar is invalid. @shaoge.gjt
--error 0,4016,1235
eval select from_unixtime(1234567890, t$cnt) from t;
eval explain select from_unixtime(1234567890, t$cnt) from t;
inc $cnt;
}
--sleep 2

View File

@ -0,0 +1,49 @@
# owner: dachuan.sdc
# owner group: SQL2
--result_format 4
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn_admin;
--sleep 2
connection default;
--disable_warnings
drop table if exists t;
--enable_warnings
create table t(start int);
insert into t values (-5);
insert into t values (-1);
insert into t values (0);
insert into t values (1);
insert into t values (2);
insert into t values (3);
insert into t values (4);
insert into t values (5);
insert into t values (6);
insert into t values (7);
insert into t values (8);
insert into t values (9);
insert into t values (10);
insert into t values (100);
select * from t;
connection conn_admin;
--sleep 2
connection default;
set @@ob_enable_plan_cache = 0;
select insert('Quadratic', start, -1, 'What') from t;
select insert('Quadratic', start, 0, 'What') from t;
select insert('Quadratic', start, 1, 'What') from t;
select insert('Quadratic', start, 2, 'What') from t;
select insert('Quadratic', start, 3, 'What') from t;
select insert('Quadratic', start, 4, 'What') from t;
select insert('Quadratic', start, 5, 'What') from t;
select insert('Quadratic', start, 6, 'What') from t;
select insert('Quadratic', start, 100, 'What') from t;
drop table t;
connection conn_admin;
--sleep 2

View File

@ -0,0 +1,151 @@
# owner: peihan.dph
# owner group: sql2
# tags: optimizer
--disable_abort_on_error
--result_format 4
--explain_protocol 0
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn_admin;
--sleep 2
set @@ob_enable_plan_cache = 0;
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 smallint, c6 smallint unsigned,
c7 mediumint, c8 mediumint unsigned,
c9 integer, c10 integer unsigned,
c11 bigint, c12 bigint unsigned,
c13 float, c14 float unsigned,
c15 double, c16 double unsigned,
c17 decimal, c18 decimal unsigned,
c19 datetime, c20 timestamp,
c21 varchar(30), c22 char(30), c_null int);
insert into t1 values(1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
3.5, 4.5,
5.5, 6.5,
7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'9.5', '10.5', null);
insert into t1 values(-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-3.5, 4.5,
-5.5, 6.5,
-7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'-9.5', '10.5', null);
create table t2 (c1 varchar(100), c2 int,
c3 int, c4 varchar(100));
insert into t2(c1, c2) values ('12345abcde', -1),
('12345abcde', 0),
('12345abcde', 1),
('12345abcde', 2),
('12345abcde', 3),
('12345abcde', 4),
('12345abcde', 5),
('12345abcde', 6),
('12345abcde', 7),
('12345abcde', 8),
('12345abcde', 9),
('12345abcde', 10),
('12345abcde', 11),
('蚂蚁金服天天向上', -1),
('蚂蚁金服天天向上', 0),
('蚂蚁金服天天向上', 1),
('蚂蚁金服天天向上', 2),
('蚂蚁金服天天向上', 3),
('蚂蚁金服天天向上', 4),
('蚂蚁金服天天向上', 5),
('蚂蚁金服天天向上', 6),
('蚂蚁金服天天向上', 7),
('蚂蚁金服天天向上', 8),
('蚂蚁金服天天向上', 9),
('蚂蚁1金服2天天3向上4', -1),
('蚂蚁1金服2天天3向上4', 0),
('蚂蚁1金服2天天3向上4', 1),
('蚂蚁1金服2天天3向上4', 2),
('蚂蚁1金服2天天3向上4', 3),
('蚂蚁1金服2天天3向上4', 4),
('蚂蚁1金服2天天3向上4', 5),
('蚂蚁1金服2天天3向上4', 6),
('蚂蚁1金服2天天3向上4', 7),
('蚂蚁1金服2天天3向上4', 8),
('蚂蚁1金服2天天3向上4', 9),
('蚂蚁1金服2天天3向上4', 10),
('蚂蚁1金服2天天3向上4', 11),
('蚂蚁1金服2天天3向上4', 12),
('蚂蚁1金服2天天3向上4', 13),
('12345abcde', '1'),
('12345abcde', '111');
insert into t2 (c3, c4) values
(100, '12'),
(100, '1'),
(100, 2),
(100, -2),
(100, '-1'),
(01, '1'),
(b'01', '2'),
(x'01', '1'),
('01''12', 3);
--sleep 2
--explain_protocol 2
select left(null, null) from dual;
select left(123, null) from dual;
select left(null, 1) from dual;
select right(null, null) from dual;
select right(123, null) from dual;
select right(null, 1) from dual;
select left('', '') from dual;
select left(123, '') from dual;
select left('', 1) from dual;
select right('', '') from dual;
select right(123, '') from dual;
select right('', 1) from dual;
let $cnt=22;
let $left=1;
while ($left <= $cnt)
{
let $right=1;
while ($right <= $cnt)
{
eval select c$left, c$right, left(c$left, c$right), right(c$left, c$right) from t1;
inc $right;
}
inc $left;
}
select c1, c2, left(c1, c2), right(c1, c2) from t2;
select c3, c4, left(c3, c4), right(c3, c4) from t2;
select left('abc', '1.9');
select left('abc', '-1.9');
select left('abc', '1.1');
select left('abc', '-1.1');
select right('abc', '1.9');
select right('abc', '-1.9');
select right('abc', '1.1');
select right('abc', '-1.1');
--sleep 2

View File

@ -0,0 +1,115 @@
# owner: peihan.dph
# owner group: sql2
# description: log2/log10/log/ln exp/pow/power sqrt
--disable_abort_on_error
--result_format 4
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection conn_admin;
--sleep 2
alter system set enable_async_syslog = false;
set @@ob_enable_plan_cache = 0;
#set @@ob_log_level='debug';
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 smallint, c6 smallint unsigned,
c7 mediumint, c8 mediumint unsigned,
c9 integer, c10 integer unsigned,
c11 bigint, c12 bigint unsigned,
c13 float, c14 float unsigned,
c15 double, c16 double unsigned,
c17 decimal, c18 decimal unsigned,
c19 datetime, c20 timestamp,
c21 varchar(30), c22 char(30));
insert into t1 values(1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
3.5, 4.5,
5.5, 6.5,
7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'9.5', '10.5');
insert into t1 values(-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-3.5, 4.5,
-5.5, 6.5,
-7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'-9.5', '10.5');
insert into t1(c17) values(1), (-1), (10000000000000), (-10000000000000), (0.000001), (-0.000001);
--sleep 2
let $cnt=22;
let $left=1;
while ($left <= $cnt)
{
eval select log2(c$left), log10(c$left), exp(c$left), sqrt(c$left) from t1;
let $right=1;
while ($right <= $cnt)
{
eval select pow(c$left, c$right), power(c$left, c$right) from t1;
inc $right;
}
inc $left;
}
--echo // 'a' casted to zero
--echo // expect 0
select pow('a', 2);
--echo // expect 1
select pow(2, 'a');
--echo // expect 1
select pow('a', 'a');
--echo // expect 0
select power('a', 2);
--echo // expect 1
select power(2, 'a');
--echo // expect 1
select power('a', 'a');
--echo // use pow in insert stmt
--disable_warnings
drop table t1;
--enable_warnings
create table t1(c1 double);
insert into t1 select pow('a', 2);
insert into t1 select pow(2, 'a');
insert into t1 select pow('a', 'a');
--echo // expect 0, 1, 1
--sorted_result
select * from t1;
connection conn_admin;
sleep 3;
--echo // use pow in insert stmt(old engine)
--disable_warnings
drop table t1;
--enable_warnings
create table t1(c1 double);
insert into t1 select pow('a', 2);
insert into t1 select pow(2, 'a');
insert into t1 select pow('a', 'a');
--echo // expect 0, 1, 1
--sorted_result
select * from t1;
connection conn_admin;
sleep 3;

View File

@ -0,0 +1,68 @@
# owner: dachuan.sdc
# owner group: SQL2
--result_format 4
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn_admin;
--sleep 2
connection default;
--disable_warnings
drop table if exists t1;
drop table if exists t2;
--enable_warnings
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 bigint, c6 bigint unsigned,
c7 float, c8 float unsigned,
c9 double, c10 double unsigned,
c11 decimal, c12 decimal unsigned,
c13 date, c14 datetime, c15 timestamp);
create table t2 (c1 varchar(100), c2 char(100));
select * from t1;
select * from t2;
insert into t1 values(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
insert into t1 values(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '0000-00-00', '0000-00-00 00:00:00', '0000-00-00 00:00:00');
insert into t1 values(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, '0013-01-01', '0014-01-01', '0015-01-01');
insert into t1 values(-1, 2, -3, 4, -5, 6, -7, 8, -9, 10, -11, 12, '0013-01-01', '0014-01-01 00:00:00', '0015-01-01 00:00:00');
insert into t1 values(1234567, 7654321, -33, 44, 555555555, 666666666, 777.777, 8888.888, 99999.999999, 10000.00000, 1111, 121212121, '0013-01-01', '0014-01-01 00:00:11', '0015-01-01 00:00:11');
insert into t2 values(null, null);
insert into t2 values('', '');
insert into t2 values('a', 'a');
insert into t2 values('A', 'A');
insert into t2 values('0', '0');
insert into t2 values('1', '1');
insert into t2 values('@', '@');
insert into t2 values('#', '#');
insert into t2 values(' ', ' ');
insert into t2 values('abcdefg', 'abcdefg');
insert into t2 values('abcdefg ', 'abcdefg ');
insert into t2 values('Good morning', 'Good morning');
insert into t2 values('Good evening', 'Good evening');
insert into t2 values('255.255.255.255', '255.255.255.255');
insert into t2 values('192.168.1.100', '192.168.1.100');
insert into t2 values('30.32.204.180', '30.32.204.180');
insert into t2 values('emily@163.com', 'emily@163.com');
insert into t2 values('mike@sohu.com', 'mike@sohu.com');
insert into t2 values('joey@sina.com', 'joey@sina.com');
insert into t2 values('阿里巴巴', '阿里巴巴');
insert into t2 values('阿里巴巴 ', '阿里巴巴 ');
insert into t2 values('淘宝', '淘宝');
insert into t2 values('淘宝 ', '淘宝 ');
connection conn_admin;
--sleep 2
connection default;
set @@ob_enable_plan_cache = 0;
let $cnt=15;
let $left=1;
while ($left <= $cnt)
{
eval select c$left, md5(c$left) from t1;
inc $left;
}
select c1, md5(c1), c2, md5(c2) from t2;
drop table t1;
drop table t2;
connection conn_admin;
--sleep 2

View File

@ -0,0 +1,30 @@
# owner: bin.lb
# owner group: sql2
--disable_abort_on_error
--result_format 4
connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection syscon;
sleep 2;
connection default;
set @@ob_enable_plan_cache = 0;
--disable_warnings
select mid('abcdef', 2);
select mid('abcdef', 2, 2);
select mid('abcdef', "2.9", 2);
select mid('abcdef', NULL, 2);
select mid('abcdef', -1, 2);
select mid('abcdef', 2, 100);
select mid('abcdef', 2, -1);
select mid('abcdef', 2, NULL);
select mid('', 1);
select mid(NULL, 1);
--enable_warnings
connection syscon;
--sleep 2

View File

@ -0,0 +1,123 @@
#owner: dachuan.sdc
#tags: optimizer
--result_format 4
--enable_sorted_result
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn_admin;
alter system flush plan cache global;
--sleep 2
connection default;
set @@ob_enable_plan_cache = 0;
select neg(1) from dual;
select neg(-1) from dual;
select neg(1.2324) from dual;
select neg(-1.2324) from dual;
select neg('-1') from dual;
explain select neg('-1') from dual;
select neg('1.234') from dual;
select neg(null) from dual;
select neg('-abcd');
select neg('2014-10-09 10:00:00');
select neg(-9223372036854775808);
select neg(-9999999999999999999999);
select neg(10/0);
select neg(9999999999999999999999);
select neg(true);
select neg(false);
connection conn_admin;
--sleep 2
connection default;
set @@ob_enable_plan_cache = 0;
--disable_warnings
drop table if exists t;
--enable_warnings
create table t (t1 tinyint,
t2 smallint,
t3 mediumint,
t4 integer,
t5 bigint,
t6 tinyint unsigned,
t7 smallint unsigned,
t8 mediumint unsigned,
t9 integer unsigned,
t10 bigint unsigned,
t11 float,
t12 float unsigned,
t13 double,
t14 double unsigned,
t15 number,
t16 number unsigned,
t17 datetime,
t18 timestamp,
t19 date,
t20 time,
t21 year,
t22 varchar(255),
t23 char(255),
t24 tinytext,
t25 mediumtext,
t26 longtext,
t27 bit,
t28 enum('a', 'b', 'c'),
t29 set('a', 'b', 'c'));
insert into t values (1, -1, 1, -1, 1, 1, 1, 1, 1, 1, -0.2, 0.3, 0.4, 0.5, -0.6, 0.7,
'1993-03-20', '1993-03-20', '1993-03-20', '10:10:10', '1993', '0.8', '0.9', '1.0', '1.1',
'1.2', 1, 'b', 'b');
insert into t(t1) values (null);
connection conn_admin;
--sleep 2
connection default;
set @@ob_enable_plan_cache = 0;
let $cnt = 1;
--disable_abort_on_error
while ($cnt <= 29)
{
eval select neg(t$cnt) from t;
eval explain select neg(t$cnt) from t;
inc $cnt;
}
connection conn_admin;
set ob_enable_plan_cache = 0;
select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
alter system flush plan cache global;
set ob_enable_plan_cache = 1;
select --9223372036854775808, ---9223372036854775808, ----9223372036854775808;
--disable_warnings
drop view if exists v1;
--enable_warnings
create view v1 as select --9223372036854775808 c1, ---9223372036854775808 c2, ----9223372036854775808 c3;
--echo // bug here: 视图的列的类型应该是decimal,应该是因为create view as路径上没有开新引擎开关
desc v1;
drop view v1;
create view v1 as select -neg(-9223372036854775808) c1, --neg(-9223372036854775808) c2, ---neg(-9223372036854775808) c3;
desc v1;
drop view v1;
--disable_warnings
drop table if exists tt;
--enable_warnings
create table tt(c1 bigint);
insert into tt values(-9223372036854775808);
select c1, -c1 from tt;
--echo // MySQL will give error, OB return c1. two neg will be removed when resolve neg node
select c1, --c1 from tt;
select c1, ---c1 from tt;
--sleep 2

View File

@ -1,162 +0,0 @@
# owner: dachuan.sdc
# owner group: sql2
# tags: optimizer
--disable_abort_on_error
--result_format 4
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn_admin;
set @@ob_enable_plan_cache = 0;
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
create table t1 (c1 int, c2 int unsigned,
c3 tinyint, c4 tinyint unsigned,
c5 smallint, c6 smallint unsigned,
c7 mediumint, c8 mediumint unsigned,
c9 integer, c10 integer unsigned,
c11 bigint, c12 bigint unsigned,
c13 float, c14 float unsigned,
c15 double, c16 double unsigned,
c17 decimal, c18 decimal unsigned,
c19 datetime, c20 timestamp,
c21 varchar(30), c22 char(30), c_null int);
insert into t1 values(1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
1, 2,
3.5, 4.5,
5.5, 6.5,
7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'9.5', '10.5', null);
insert into t1 values(-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-1, 2,
-3.5, 4.5,
-5.5, 6.5,
-7.5, 8.5,
'2019-12-01 12:00:00', '2019-12-03 06:00:00',
'-9.5', '10.5', null);
create table t2(
a1 char(3) primary key,
a2 int,
a3 char(3),
a4 float,
a5 datetime
);
insert into t2 values('AME',0,'SEA',0.100,date'1942-02-19');
insert into t2 values('HBR',1,'SEA',0.085,date'1948-03-05');
insert into t2 values('BOT',-2,'SEA',-0.085,date'1951-11-29');
insert into t2 values('BMC',3,'SEA',-0.085,date'1958-09-08');
insert into t2 values('TWU',+0,'LAX',-0.080,date'1969-10-05');
insert into t2 values('BDL',-0,'DEN',-0.080,date'1960-11-27');
insert into t2 values('DTX',1,'NYC',0.080,date'1961-05-04');
insert into t2 values('PLS',-1,'WDC',-0.075,date'1949-01-02');
insert into t2 values('ZAJ',2,'CHI',-0.075,date'1960-06-15');
insert into t2 values('VVV',-2,'MON',0.075,date'1959-06-28');
insert into t2 values('GTM',3,'DAL',-0.070,date'1977-09-23');
insert into t2 values('SSJ',null,'CHI',null,date'1974-03-19');
insert into t2 values('KKK',-3,'ATL',null,null);
insert into t2 values('XXX',null,'MIN',null,null);
insert into t2 values('WWW',1,'LED',null,null);
insert into t2 values('GG3',-3,'DD3',-0.051,date'1974-03-19');
insert into t2 values('GG2',-3,'DD2',0.052,date'1974-03-19');
insert into t2 values('GG1',3,'DD1',0.053,date'1974-03-19');
--sleep 1
select sign(null) from dual;
let $cnt=22;
let $left=1;
while ($left <= $cnt)
{
let $right=1;
eval select c$left, sign(c$left) from t1;
inc $left;
}
select sign(a1) from t2;
select sign(a3) from t2;
select sign(a1),a2 from t2;
select sign(a2) from t2 where sign(a4) >= 0;
select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2;
--replace_column 5 timestamp
select * from t2 group by sign(a2);
--replace_column 5 timestamp
select * from t2 order by sign(a4) ;
--replace_column 5 timestamp
select * from t2 order by sign(a4) , a4 ;
--replace_column 5 timestamp
select * from t2 order by sign(a4) , a1 ;
--sorted_result
select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0;
--replace_column 5 timestamp
select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) );
select sign( sum(a2) ) , sign( sum(a4) ) from t2;
select sign( avg(a2) ) , sign( avg(a4) ) from t2;
select sign( max(a2) ) , sign( min(a4) ) from t2;
select sign(count(*)) from t2;
--replace_column 5 timestamp
select * from t2 where sign( length(a1) ) = 1;
#cast
--disable_warnings
select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2;
select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2;
--enable_warnings
# sign in join
--sorted_result
select * from t2 as t21 join t2 as t22 on sign(t21.a2) = sign(t22.a4);
#col alias
select tmp.a1 , sign(tmp.a2) , tmp.a3 , sign(tmp.a4) from t2 as tmp;
## select for update
select sign(a2) from t2 where sign(a4) >= 0 for update;
select sign(a4) from t2 where sign(a2) <=0 AND a2 < 2 for update;
select * from t2 group by sign(a2) for update;
select * from t2 order by sign(a4) for update;
--sorted_result
select abs(a2) , sum(a4) from t2 group by abs(a2) having sum(sign(a4)) > 0 for update;
--replace_column 5 timestamp
select * from t2 where a2 = sign ( floor(1.5) - ceil(1.5) + round(1.5) - abs(-1.5) + neg(-1) ) for update;
select sign( sum(a2) ) , sign( sum(a4) ) from t2 for update;
select sign( avg(a2) ) , sign( avg(a4) ) from t2 for update;
select sign( max(a2) ) , sign( min(a4) ) from t2 for update;
select sign(count(*)) from t2 for update;
--replace_column 5 timestamp
select * from t2 where sign( length(a1) ) = 1 for update;
--replace_column 5 timestamp
select sign( cast(a1 as char(1024)) ) , sign( cast(a3 as char(1024)) ) from t2 for update;
select sign( cast(a2 as char(1024)) ) , sign( cast(a4 as char(1024)) ) from t2 for update;
--sleep 2
--echo #
select sign(1E-300) from dual;
select sign(1E-400) from dual;
##bug:
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(c1 bit(64),c2 bit(64));
insert into t1(c1) values(1);
select sign(c1) from t1;
drop table t1;

View File

@ -0,0 +1,66 @@
# owner: bin.lb
# owner group: sql2
--disable_abort_on_error
--result_format 4
connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection syscon;
sleep 2;
connection default;
set @@ob_enable_plan_cache = 0;
--disable_warnings
select space(NULL);
select space(-1);
select space(0);
select space(1);
select space(2);
select length(space("2.1"));
select length(space("2.9"));
select length(space("200000000"));
--error 0,1051
drop table t2;
create table t2 as select space(512),space(513),space(32767),space(32768),space(65535),space(65536) from dual;
desc t2;
drop table t2;
--enable_warnings
connection syscon;
--sleep 2
--echo #bugfix
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection conn_admin;
connection default;
--disable_warnings
--error 0, 942
drop database if exists luofan;
--error 0, 942
drop table if exists t1;
--enable_warnings
create database luofan;
create table t1 (c1 varchar(64));
insert into t1 values(-1);
insert into t1 values(-2);
insert into t1 values(-3);
insert into t1 values(-4);
select * from t1 where space(c1) = '';
--disable_warnings
--error 0, 942
drop table if exists t1;
--error 0, 942
drop database if exists luofan;
--enable_warnings

View File

@ -0,0 +1,443 @@
# owner: peihan.dph
# owner group: sql2
# tags: optimizer
connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
sleep 2;
connection default;
--disable_warnings
--error 0,1051
drop table t0;
--error 0,1051
drop table t1;
--error 0,1051
drop table t2;
--error 0,1051
drop table t111_var;
--enable_warnings
create table t1(c1 int,c2 int,c3 int);
create table t2(c1 int,c2 int,c3 int);
insert into t1 values(1,2,3);
insert into t1 values(1,2,3);
insert into t1 values(0,2,3);
insert into t1 values(2,2,3);
insert into t1 values(3,2,3);
insert into t2 values(2,2,3);
insert into t2 values(2,0,3);
insert into t2 values(0,2,3);
insert into t2 values(1,2,3);
insert into t2 values(null,2,3);
insert into t2 values(1,2,3);
insert into t2 values(0,2,1);
insert into t2 values(2,2,3);
commit;
create table t111_var(c0 bigint,c1 varchar(4000), c2 varchar(4000), c3 varchar(4000), c4 varchar(4000), c5 varchar(4000),c6 varchar(4000), c7 longtext);
insert into t111_var values(1,repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('ab',2000),repeat('abcdefghij',4000));
set ob_query_timeout = 30000000;
insert into t111_var select c0+1,c1,c2,c3,c4,c5,c6,c7 from t111_var;
insert into t111_var select c0+10,c1,c2,c3,c4,c5,c6,c7 from t111_var;
insert into t111_var select c0+100,c1,c2,c3,c4,c5,c6,c7 from t111_var;
insert into t111_var select c0+1000,c1,c2,c3,c4,c5,c6,c7 from t111_var;
insert into t111_var select c0+10000,c1,c2,c3,c4,c5,c6,c7 from t111_var;
insert into t111_var select c0+100000,c1,c2,c3,c4,c5,c6,c7 from t111_var;
insert into t111_var select c0+1000000,c1,c2,c3,c4,c5,c6,c7 from t111_var;
insert into t111_var select c0+10000000,c1,c2,c3,c4,c5,c6,c7 from t111_var;
insert into t111_var select c0+100000000,c1,c2,c3,c4,c5,c6,c7 from t111_var;
insert into t111_var values(null,null,null,null,null,null,null,null);
insert into t111_var select * from t111_var;
commit;
connection syscon;
sleep 2;
--result_format 4
--explain_protocol 1
connection default;
set @@ob_enable_plan_cache = 0;
select /*+ USE_HASH_DISTINCT */distinct c1,c2 from t2;
select /*+ USE_HASH_DISTINCT */distinct c2,c1 from t2;
select /*+ USE_HASH_DISTINCT */distinct c2,c1,c1+c2 from t2;
select /*+ USE_HASH_DISTINCT */distinct c1+c2,abs(c1) from t2;
select /*+ USE_HASH_DISTINCT */distinct c1+c2 from t2;
select /*+ USE_HASH_DISTINCT */distinct c2,c1,c3 from t2;
select /*+ USE_HASH_DISTINCT */distinct 1,2,3,5,'ab' from t2;
select /*+ USE_HASH_DISTINCT */distinct 1,c2,2,3,c1,5,'ab' from t2;
select /*+ USE_HASH_DISTINCT */distinct 1,c2,2,3,c1,5,'ab' from t2 where c2=0;
## dump
set ob_query_timeout=90000000;
select /*+ use_merge(a b) */SQL_CALC_FOUND_ROWS sum(c0),sum(length(c1)),count(c2),count(c3),count(c4),count(c5),count(c6),count(c7)
from (select /*+ USE_HASH_DISTINCT */ distinct * from t111_var) order by c1 limit 1;
drop table t1;
drop table t2;
CREATE TABLE IF NOT EXISTS t0(c0 VARCHAR(500) NULL, c1 BIGINT UNIQUE ) PARTITION BY HASH(c1) partitions 15;
CREATE TABLE IF NOT EXISTS t1(c0 VARCHAR(500) COMMENT 'asdf' NULL) PARTITION BY KEY (c0) partitions 3;
CREATE TABLE t2(c0 BIGINT(174) ZEROFILL ) PARTITION BY KEY (c0) partitions 7;
--disable_abort_on_error
REPLACE INTO t2(c0) VALUES(1623564365);
REPLACE INTO t1(c0) VALUES("{8oe6A<\\kkTz '");
TRUNCATE TABLE t1;
INSERT INTO t0(c1, c0) VALUES(-183816722, "<.g"), (-684755701, 'Q?lk#!XmzjCpH]EiNM*so');
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t2(c0) VALUES(-1245021015) ON DUPLICATE KEY UPDATE c0=-1810276342;
REPLACE INTO t1(c0) VALUES('2');
INSERT /*+parallel(8) enable_parallel_dml*/ INTO t0(c1) VALUES(-183816722), (1623564365) ON DUPLICATE KEY UPDATE c1=-1245021015;
REPLACE INTO t0(c0) VALUES("-684755701");
REPLACE INTO t2(c0) VALUES(1047809412);
REPLACE INTO t1(c0) VALUES("F!kJuYIEkY}r^U?f|s\\.j5gc"), ('6');
INSERT /*+parallel(6) enable_parallel_dml*/ INTO t0(c0) VALUES("{8oe6A<\\kkTz '"), ("<.g");
REPLACE INTO t2(c0) VALUES(-684755701);
REPLACE INTO t1(c0) VALUES('[4/dbA*1X<!k*V#9');
INSERT INTO t2(c0) VALUES(-684755701);
REPLACE INTO t1(c0) VALUES('-RV\\!dH1M''gtK+CS-t#xli');
INSERT INTO t0(c1, c0) VALUES(-1810276342, "-1245021015") ON DUPLICATE KEY UPDATE c1=-1810276342;
INSERT INTO t0(c1, c0) VALUES(1047809412, "*"), (-1971421495, ""), (417065122, "!"), (834933091, 'W,}kPz)VwU[*.8Az38ag4aJqY'), (1534499616, "-183816722"), (834933091, '#g');
INSERT INTO t1(c0) VALUES('');
INSERT INTO t0(c0, c1) VALUES("#g", -222390328);
REPLACE INTO t1(c0) VALUES('''l*] 6X2!MN'), ('^'), ("1047809412"), ("");
INSERT /*+parallel(8) enable_parallel_dml*/ INTO t2(c0) VALUES(-1971421495);
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t1(c0) VALUES(''), ('834933091') ON DUPLICATE KEY UPDATE c0="";
INSERT INTO t2(c0) VALUES(79355437), (-1810276342) ON DUPLICATE KEY UPDATE c0=1489403758;
INSERT /*+parallel(7) enable_parallel_dml*/ INTO t2(c0) VALUES(-1319874701) ON DUPLICATE KEY UPDATE c0=-1260108762;
REPLACE INTO t2(c0) VALUES(-294659499), (1047809412), (-183816722), (1047809412);
REPLACE INTO t0(c1, c0) VALUES(-104530260, "-294659499");
REPLACE INTO t1(c0) VALUES("!6v!iRzM,]aq1");
INSERT /*+parallel(1) enable_parallel_dml*/ INTO t2(c0) VALUES(-1750125326) ON DUPLICATE KEY UPDATE c0=-190239276;
REPLACE INTO t2(c0) VALUES(58271544);
REPLACE INTO t1(c0) VALUES('%tS*_s!&Y~}');
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t1(c0) VALUES('');
INSERT INTO t2(c0) VALUES(667802359) ON DUPLICATE KEY UPDATE c0=1797578838;
REPLACE INTO t2(c0) VALUES(1534499616), (710325654);
REPLACE INTO t0(c0) VALUES('A&7'), ("v");
INSERT INTO t0(c0, c1) VALUES('%u#1Go9+jI!_]uOGv|O!', -294659499) ON DUPLICATE KEY UPDATE c1=50774738;
INSERT INTO t0(c0) VALUES("C");
REPLACE INTO t0(c0, c1) VALUES("", 1202431853);
INSERT /*+parallel(6) enable_parallel_dml*/ INTO t2(c0) VALUES(1541216475) ON DUPLICATE KEY UPDATE c0=79355437;
INSERT INTO t1(c0) VALUES('hHtipgfUcllsz');
INSERT /*+parallel(5) enable_parallel_dml*/ INTO t2(c0) VALUES(-775404381) ON DUPLICATE KEY UPDATE c0=50774738;
INSERT INTO t1(c0) VALUES("-1810276342") ON DUPLICATE KEY UPDATE c0='-294659499';
REPLACE INTO t2(c0) VALUES(1128771098), (1489403758);
INSERT INTO t1(c0) VALUES('UZ!VMyXOZeyECPZ?A*vGHtEwN)~j') ON DUPLICATE KEY UPDATE c0='cb,Ot/f8<0L{IY_ -~{qPm';
REPLACE INTO t1(c0) VALUES("C");
INSERT INTO t2(c0) VALUES(1202431853) ON DUPLICATE KEY UPDATE c0=512850030;
REPLACE INTO t1(c0) VALUES('');
REPLACE INTO t1(c0) VALUES("GXe!Isi-*w/");
INSERT /*+parallel(10) enable_parallel_dml*/ INTO t1(c0) VALUES('834933091') ON DUPLICATE KEY UPDATE c0="F{";
REPLACE INTO t0(c1, c0) VALUES(512850030, "^");
INSERT /*+parallel(1) enable_parallel_dml*/ INTO t0(c0, c1) VALUES('9I,TA{.)^oHgx+,J~p7t', 520051546) ON DUPLICATE KEY UPDATE c1=-1260108762;
INSERT INTO t0(c0) VALUES('!') ON DUPLICATE KEY UPDATE c0=">7";
INSERT /*+parallel(10) enable_parallel_dml*/ INTO t2(c0) VALUES(1541216475), (1186933746), (559766851);
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t0(c0, c1) VALUES("58271544", 1489403758);
REPLACE INTO t2(c0) VALUES(-692090307), (487694549);
INSERT /*+parallel(2) enable_parallel_dml*/ INTO t1(c0) VALUES("[4/dbA*1X<!k*V#9") ON DUPLICATE KEY UPDATE c0="\\";
REPLACE INTO t0(c1, c0) VALUES(710325654, '0');
REPLACE INTO t2(c0) VALUES(50774738);
INSERT /*+parallel(3) enable_parallel_dml*/ INTO t0(c0, c1) VALUES("4l5{SQ_n8YqKXdlVAjpgvZ%EQ]<^", -992574900) ON DUPLICATE KEY UPDATE c1=-2042045427;
REPLACE INTO t2(c0) VALUES(512850030);
REPLACE INTO t2(c0) VALUES(450933628), (-1120407263), (487694549), (2128576969);
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t1(c0) VALUES("XmbEf~[mUG5_"), ('417065122') ON DUPLICATE KEY UPDATE c0="^}\\Uk41V]";
INSERT /*+parallel(2) enable_parallel_dml*/ INTO t0(c1, c0) VALUES(-898088197, '') ON DUPLICATE KEY UPDATE c1=-519247255;
REPLACE INTO t1(c0) VALUES("bh#^J0%dT\\o,R.\\B>f[~j");
REPLACE INTO t0(c0) VALUES('XyD*%aQ+MXT9w80p#F');
REPLACE INTO t1(c0) VALUES("-1810276342");
INSERT INTO t1(c0) VALUES('>j');
REPLACE INTO t1(c0) VALUES('G');
INSERT INTO t1(c0) VALUES("lrzyLtiPj*IrdBu9%-O*Ih<>3") ON DUPLICATE KEY UPDATE c0='#g';
REPLACE INTO t1(c0) VALUES(""), ('6MQXB)Er');
INSERT /*+parallel(3) enable_parallel_dml*/ INTO t2(c0) VALUES(-518787001) ON DUPLICATE KEY UPDATE c0=1977657970;
INSERT INTO t1(c0) VALUES('4*1xLR38DAa9lGB1-2Q');
INSERT INTO t2(c0) VALUES(-30984391) ON DUPLICATE KEY UPDATE c0=1489403758;
INSERT /*+parallel(9) enable_parallel_dml*/ INTO t0(c1, c0) VALUES(141916557, '');
REPLACE INTO t0(c0, c1) VALUES('Wz?&>+', 512850030);
REPLACE INTO t0(c0) VALUES(""), ("-1750125326");
INSERT INTO t0(c1, c0) VALUES(559766851, 'XMBEF~[MUG5_') ON DUPLICATE KEY UPDATE c0='1977657970';
REPLACE INTO t1(c0) VALUES('1489403758');
INSERT /*+parallel(6) enable_parallel_dml*/ INTO t2(c0) VALUES(-2025228192) ON DUPLICATE KEY UPDATE c0=2128576969;
INSERT /*+parallel(7) enable_parallel_dml*/ INTO t1(c0) VALUES("I|yJ") ON DUPLICATE KEY UPDATE c0='1541216475';
REPLACE INTO t1(c0) VALUES('2128576969'), ("B5a\\i4g8.PN>l^2");
REPLACE INTO t2(c0) VALUES(266043513);
REPLACE INTO t1(c0) VALUES('4*1xlr38daa9lgb1-2q');
REPLACE INTO t1(c0) VALUES(''), ('hHtipgfUcllsz');
INSERT INTO t0(c1, c0) VALUES(710325654, 'Gv9U<^N^qLa(}') ON DUPLICATE KEY UPDATE c0='3/qIdE^Iz';
INSERT INTO t0(c0) VALUES('~mn+|.fzXJLKStd**TtwF(oICz_'), ('_');
REPLACE INTO t1(c0) VALUES('-1810276342');
REPLACE INTO t2(c0) VALUES(-342988771);
REPLACE INTO t0(c0, c1) VALUES("I|yJ", 1541216475);
INSERT /*+parallel(9) enable_parallel_dml*/ INTO t0(c1) VALUES(38814790) ON DUPLICATE KEY UPDATE c0='16lW,ub';
INSERT /*+parallel(5) enable_parallel_dml*/ INTO t2(c0) VALUES(383434325);
REPLACE INTO t0(c1, c0) VALUES(-222390328, '-898088197'), (-47944970, 't!#%mSfY{Jmv}N');
REPLACE INTO t2(c0) VALUES(383434325);
REPLACE INTO t0(c0) VALUES("w6?YiI7D\\0\\ZpM8NP>R,d{*");
REPLACE INTO t1(c0) VALUES('*'), ('');
INSERT /*+parallel(7) enable_parallel_dml*/ INTO t2(c0) VALUES(1074912575);
REPLACE INTO t2(c0) VALUES(-1059804694);
INSERT INTO t1(c0) VALUES('(Ct0#v') ON DUPLICATE KEY UPDATE c0="^.mC2C(*5bcTF^_QuvE+gIH)E";
ALTER TABLE t2 ;
REPLACE INTO t1(c0) VALUES('90'), ('s'), ("XOG)!uY#&7E-5VdYQt1}cv");
REPLACE INTO t2(c0) VALUES(1921869132);
REPLACE INTO t1(c0) VALUES('');
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t0(c1) VALUES(1546588654);
REPLACE INTO t0(c0) VALUES('[d78a[xFm1J{/jh*i!_&Rh7/'), ('266043513'), ("c/qIdE^Iz");
INSERT /*+parallel(9) enable_parallel_dml*/ INTO t2(c0) VALUES(1608276723) ON DUPLICATE KEY UPDATE c0=-1120407263;
REPLACE INTO t2(c0) VALUES(-1791001932), (-1751730295), (-992574900);
INSERT INTO t0(c0) VALUES("-684755701") ON DUPLICATE KEY UPDATE c0='r<Kv';
REPLACE INTO t1(c0) VALUES('Rr&p5if|pArY^1.lSvkG');
INSERT INTO t2(c0) VALUES(398204275);
REPLACE INTO t0(c0, c1) VALUES('D', 277389578);
INSERT INTO t2(c0) VALUES(-611875472) ON DUPLICATE KEY UPDATE c0=-1075618189;
REPLACE INTO t1(c0) VALUES('-104530260');
INSERT INTO t0(c0, c1) VALUES('CB,OT/F8<0L{IY_ -~{QPM', -684755701) ON DUPLICATE KEY UPDATE c0=' Fs7%c-SDW!jM';
REPLACE INTO t0(c1, c0) VALUES(-863400574, "y1p3qByYNx.bym)/q4c");
REPLACE INTO t1(c0) VALUES("w6?yii7d\\0\\zpm8np>r,d{*"), ('834933091'), ('hHtipgfUcllsz'), ('');
REPLACE INTO t2(c0) VALUES(-1120407263);
INSERT INTO t2(c0) VALUES(-1943761954);
INSERT INTO t2(c0) VALUES(-374675935), (-1664313740), (503345056) ON DUPLICATE KEY UPDATE c0=-1245021015;
INSERT /*+parallel(6) enable_parallel_dml*/ INTO t2(c0) VALUES(-1490343411), (1030190317), (1782144585);
REPLACE INTO t1(c0) VALUES("w^");
REPLACE INTO t0(c1, c0) VALUES(58271544, 'Y');
INSERT INTO t0(c1, c0) VALUES(-1773558993, 'T>d.K7');
REPLACE INTO t1(c0) VALUES('R4^HYn'), ('c');
REPLACE INTO t0(c0, c1) VALUES("3l~<*E3le", 1546588654);
CREATE INDEX i430 ON t1(c0(1)) global;
REPLACE INTO t2(c0) VALUES(1489403758);
INSERT INTO t1(c0) VALUES("W"), ('u|Qxg6*bV 8Xcx!HQo*VO') ON DUPLICATE KEY UPDATE c0='06';
INSERT INTO t1(c0) VALUES("5jr");
REPLACE INTO t2(c0) VALUES(1796091423);
INSERT INTO t2(c0) VALUES(1047809412) ON DUPLICATE KEY UPDATE c0=1608276723;
INSERT /*+parallel(1) enable_parallel_dml*/ INTO t2(c0) VALUES(666893151);
INSERT INTO t1(c0) VALUES("");
REPLACE INTO t0(c1, c0) VALUES(-1810276342, 'Y');
INSERT /*+parallel(5) enable_parallel_dml*/ INTO t1(c0) VALUES('b.6,RL-c[<.ScG<');
INSERT INTO t1(c0) VALUES('-1773558993');
INSERT /*+parallel(1) enable_parallel_dml*/ INTO t0(c0) VALUES('A&7');
INSERT INTO t1(c0) VALUES('-j&7LN&bUm*drF?') ON DUPLICATE KEY UPDATE c0="u>|!T4e/?W";
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t2(c0) VALUES(1489403758), (450933628), (-1012219707) ON DUPLICATE KEY UPDATE c0=1608276723;
REPLACE INTO t0(c1, c0) VALUES(-532544134, "5&6|8\\X'45j[yR{]");
REPLACE INTO t0(c0) VALUES('666893151');
INSERT INTO t1(c0) VALUES("38814790") ON DUPLICATE KEY UPDATE c0='AS';
INSERT INTO t2(c0) VALUES(-1751730295), (-818062927);
REPLACE INTO t1(c0) VALUES("1623564365");
REPLACE INTO t2(c0) VALUES(-519247255);
REPLACE INTO t2(c0) VALUES(-532544134);
INSERT INTO t1(c0) VALUES("#"), ('-2025228192') ON DUPLICATE KEY UPDATE c0='4W[^L2o';
REPLACE INTO t0(c0) VALUES("-684755701");
REPLACE INTO t2(c0) VALUES(1329380798);
REPLACE INTO t0(c0) VALUES('450933628'), ('H>hf#sf.7Dd6nxcH');
#select TABLE_NAME, 'InnoDB' from information_schema.TABLES where table_schema = 'database0';
INSERT INTO t2(c0) VALUES(-1245021015) ON DUPLICATE KEY UPDATE c0=1090711076;
REPLACE INTO t1(c0) VALUES("W");
INSERT INTO t1(c0) VALUES('6Hk') ON DUPLICATE KEY UPDATE c0='79355437';
INSERT INTO t1(c0) VALUES("-532544134"), ("666893151");
INSERT /*+parallel(10) enable_parallel_dml*/ INTO t1(c0) VALUES("eX ad2g") ON DUPLICATE KEY UPDATE c0='~qpBxh2{~O4VOlX]>}';
REPLACE INTO t1(c0) VALUES("1030190317"), ("KU^)");
REPLACE INTO t0(c0, c1) VALUES('8', 1030190317);
INSERT /*+parallel(10) enable_parallel_dml*/ INTO t2(c0) VALUES(1094103626), (-1394402382);
REPLACE INTO t2(c0) VALUES(326647090);
REPLACE INTO t1(c0) VALUES(''''), ("-1490343411"), ('[4/dbA*1X<!k*V#9'), ("-1e50");
INSERT /*+parallel(9) enable_parallel_dml*/ INTO t2(c0) VALUES(177198859);
REPLACE INTO t1(c0) VALUES("");
REPLACE INTO t0(c0) VALUES("559766851");
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t1(c0) VALUES('U{/') ON DUPLICATE KEY UPDATE c0='HZ#?tYU!jSQG8O}8r*m*i-B4g';
INSERT /*+parallel(3) enable_parallel_dml*/ INTO t1(c0) VALUES('_W>nY~7') ON DUPLICATE KEY UPDATE c0='ZNTH|';
INSERT INTO t1(c0) VALUES('wv^wo}]0Ye]0._'), ("B}F?kb10lgWz"), ('TRUE'), ('lrzyLtiPj*IrdBu9%-O*Ih<>3') ON DUPLICATE KEY UPDATE c0="1mdf";
REPLACE INTO t1(c0) VALUES('06'), ("i.3");
INSERT INTO t0(c1, c0) VALUES(922106747, "Y9{X.*gCBXnh~8&.-m&F"), (-518787001, "/"), (752753855, 'k3yS(^S0.,''[]UGqUtd/u7eySSQjo') ON DUPLICATE KEY UPDATE c0='I|yJ';
CREATE INDEX i950 USING HASH ON t2(c0) PARTITION BY HASH(c0) partitions 3;
INSERT INTO t0(c0) VALUES("0w49hQ|&qK,~ (O]Dp");
REPLACE INTO t0(c1, c0) VALUES(383434325, 'F{');
INSERT INTO t1(c0) VALUES("F<THOTAy{\\Nko|<_HJF^L?"), ("1977657970"), ('k');
REPLACE INTO t1(c0) VALUES('vh5XVc7J/)H');
INSERT INTO t2(c0) VALUES(141186181), (1623564365) ON DUPLICATE KEY UPDATE c0=-1664313740;
INSERT INTO t0(c1, c0) VALUES(118491464, '91AaljT*MNKDlQ1 lz8DR,k#[)'), (657040223, "-1943761954"), (1047809412, 'A?!1>)Ms/^s''{|L~5-m6?&Vt/');
REPLACE INTO t0(c1, c0) VALUES(118491464, "-1245021015");
INSERT /*+parallel(3) enable_parallel_dml*/ INTO t0(c0) VALUES('d'), ("") ON DUPLICATE KEY UPDATE c1=-760588103;
REPLACE INTO t2(c0) VALUES(-288124332), (555552610), (559766851);
REPLACE INTO t2(c0) VALUES(-1750125326);
REPLACE INTO t0(c0, c1) VALUES('(Z%,', -692090307);
INSERT INTO t0(c0, c1) VALUES(')h', 512850030);
INSERT /*+parallel(5) enable_parallel_dml*/ INTO t2(c0) VALUES(-222390328) ON DUPLICATE KEY UPDATE c0=-288124332;
REPLACE INTO t0(c1, c0) VALUES(260264234, "zb1S,4T9p{*P*b"), (-190239276, 'g');
INSERT INTO t0(c1) VALUES(1526935571) ON DUPLICATE KEY UPDATE c0="3M";
INSERT INTO t1(c0) VALUES('~6'), ('') ON DUPLICATE KEY UPDATE c0="}]rz7kf]8o(LZ)*2Z/*Cer[t";
INSERT /*+parallel(9) enable_parallel_dml*/ INTO t1(c0) VALUES("");
REPLACE INTO t1(c0) VALUES("u~!v\\OJtA7t}[Z "), ("]3#rkm");
REPLACE INTO t0(c0, c1) VALUES("Rr&p5if|pArY^1.lSvkG", 417065122);
REPLACE INTO t0(c0) VALUES('1B3s-|{i3R');
INSERT INTO t1(c0) VALUES('['), ("pt^O(_6NrLQkdgSNYV3") ON DUPLICATE KEY UPDATE c0="38814790";
REPLACE INTO t0(c0, c1) VALUES("38814790", -182939180);
REPLACE INTO t0(c1, c0) VALUES(-308089097, 'Nq%Uv!QBU');
INSERT /*+parallel(3) enable_parallel_dml*/ INTO t1(c0) VALUES("1782144585");
REPLACE INTO t0(c0) VALUES("");
REPLACE INTO t0(c0, c1) VALUES('277389578', -1120407263), ('FALSE', 84553879), ("u(l3Z", -1864228286), ('wv^wo}]0ye]0._', -2007349734);
INSERT /*+parallel(8) enable_parallel_dml*/ INTO t2(c0) VALUES(1796091423), (-1796698850) ON DUPLICATE KEY UPDATE c0=1549773963;
REPLACE INTO t0(c0) VALUES('H');
INSERT INTO t2(c0) VALUES(-1292595305), (-518787001) ON DUPLICATE KEY UPDATE c0=-50086899;
REPLACE INTO t1(c0) VALUES('[d78a[xFm1J{/jh*i!_&Rh7/');
REPLACE INTO t2(c0) VALUES(266043513);
INSERT INTO t1(c0) VALUES('|');
INSERT INTO t2(c0) VALUES(-60671572) ON DUPLICATE KEY UPDATE c0=-1484960474;
INSERT INTO t1(c0) VALUES('B+|1zv5XulF,23fY8ax'), ("\\#Sj}vEKk}[}HvhDtbQJ70nU "), ("RGE");
#select TABLE_NAME, 'InnoDB' from information_schema.TABLES where table_schema = 'database0';
INSERT INTO t1(c0) VALUES('_w>ny~7');
REPLACE INTO t2(c0) VALUES(-167779305);
REPLACE INTO t1(c0) VALUES('PO');
INSERT INTO t1(c0) VALUES('-j&7ln&bum*drf?'), (""), ('1090711076'), ('4*1xlr38daa9lgb1-2q');
INSERT /*+parallel(3) enable_parallel_dml*/ INTO t2(c0) VALUES(-1654859912) ON DUPLICATE KEY UPDATE c0=1921869132;
INSERT INTO t0(c0, c1) VALUES("qDQ", -271708509) ON DUPLICATE KEY UPDATE c1=989068660;
INSERT INTO t1(c0) VALUES("") ON DUPLICATE KEY UPDATE c0='5JR';
REPLACE INTO t2(c0) VALUES(326647090);
INSERT INTO t1(c0) VALUES('xkwDL3io6,T!') ON DUPLICATE KEY UPDATE c0='-rv\\!dh1m''gtk+cs-t#xli';
INSERT INTO t0(c0) VALUES("A") ON DUPLICATE KEY UPDATE c0='*,';
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t2(c0) VALUES(-1263839793);
REPLACE INTO t1(c0) VALUES('398204275');
REPLACE INTO t1(c0) VALUES(']a');
REPLACE INTO t2(c0) VALUES(141186181), (1117292413);
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t0(c1) VALUES(1235043174), (634617016), (-820154399) ON DUPLICATE KEY UPDATE c0="1546588654";
INSERT INTO t2(c0) VALUES(-1810276342) ON DUPLICATE KEY UPDATE c0=1621699534;
INSERT /*+parallel(8) enable_parallel_dml*/ INTO t1(c0) VALUES("Hg 4QF9^yYv(|n0aC") ON DUPLICATE KEY UPDATE c0="w,}kpz)vwu[*.8az38ag4ajqy";
REPLACE INTO t1(c0) VALUES('h*9X7!SX95R?Xh'), ('xog)!uy#&7e-5vdyqt1}cv'), ('e\\ DN?Y');
REPLACE INTO t0(c0) VALUES("{"), ('');
INSERT /*+parallel(5) enable_parallel_dml*/ INTO t0(c1) VALUES(-106041801);
REPLACE INTO t1(c0) VALUES("ZxJ|lh\\%UKIy]/x&C?Q-+vweYo&");
REPLACE INTO t1(c0) VALUES("o");
REPLACE INTO t1(c0) VALUES('6MQXB)Er');
REPLACE INTO t1(c0) VALUES("[4/DBA*1X<!K*V#9");
REPLACE INTO t2(c0) VALUES(-1038445869);
INSERT /*+parallel(2) enable_parallel_dml*/ INTO t2(c0) VALUES(698536726) ON DUPLICATE KEY UPDATE c0=459591044;
INSERT INTO t2(c0) VALUES(-288124332);
INSERT INTO t0(c1, c0) VALUES(260264234, 'E}''');
INSERT INTO t2(c0) VALUES(68007585) ON DUPLICATE KEY UPDATE c0=-1142355879;
INSERT /*+parallel(6) enable_parallel_dml*/ INTO t2(c0) VALUES(-818062927), (-541455226), (-143282765) ON DUPLICATE KEY UPDATE c0=1603599002;
REPLACE INTO t1(c0) VALUES('');
#select TABLE_NAME, 'InnoDB' from information_schema.TABLES where table_schema = 'database0';
INSERT INTO t0(c0, c1) VALUES("h", -289348621), ("(AL}*f&>y+f^11(LDl}3+\\ _vzv", -1810276342) ON DUPLICATE KEY UPDATE c0="";
INSERT /*+parallel(1) enable_parallel_dml*/ INTO t0(c1, c0) VALUES(-1826957836, 'qZG+') ON DUPLICATE KEY UPDATE c1=398204275;
INSERT /*+parallel(3) enable_parallel_dml*/ INTO t0(c0, c1) VALUES('[)', -544121435) ON DUPLICATE KEY UPDATE c0='uvz{';
INSERT INTO t0(c0, c1) VALUES('pZ p2hX{C{*X4F99~%', -995081015) ON DUPLICATE KEY UPDATE c1=1155123982;
INSERT INTO t0(c0, c1) VALUES("DnNyk#QM}Cy%<rDUchOMz", -1943761954) ON DUPLICATE KEY UPDATE c1=1055882632;
REPLACE INTO t0(c1, c0) VALUES(392658544, 'P');
INSERT INTO t0(c0, c1) VALUES('8', 6661643);
INSERT /*+parallel(5) enable_parallel_dml*/ INTO t2(c0) VALUES(1329380798) ON DUPLICATE KEY UPDATE c0=-519247255;
REPLACE INTO t2(c0) VALUES(-30984391), (-1380389374), (-104530260);
REPLACE INTO t1(c0) VALUES("-692090307"), ("2/}8nAnJ0"), ("");
INSERT INTO t0(c0) VALUES('1782144585') ON DUPLICATE KEY UPDATE c0='5jr';
REPLACE INTO t0(c0) VALUES("");
REPLACE INTO t2(c0) VALUES(-832890617);
REPLACE INTO t0(c1, c0) VALUES(-2069014372, "i~2]4~|#D s{Y"), (-765292737, 'z'), (-1664313740, "s3Ep8+");
INSERT /*+parallel(7) enable_parallel_dml*/ INTO t1(c0) VALUES('') ON DUPLICATE KEY UPDATE c0="-_s";
REPLACE INTO t0(c0) VALUES("487694549"), ("?");
REPLACE INTO t0(c1, c0) VALUES(1245367531, '');
REPLACE INTO t1(c0) VALUES("R'");
INSERT INTO t0(c0, c1) VALUES("", 1022005211);
INSERT /*+parallel(10) enable_parallel_dml*/ INTO t1(c0) VALUES('') ON DUPLICATE KEY UPDATE c0='';
REPLACE INTO t1(c0) VALUES('');
REPLACE INTO t2(c0) VALUES(559766851);
INSERT INTO t0(c1) VALUES(438947685) ON DUPLICATE KEY UPDATE c0="-183816722";
INSERT /*+parallel(10) enable_parallel_dml*/ INTO t2(c0) VALUES(1097763330);
REPLACE INTO t2(c0) VALUES(1921869132);
INSERT /*+parallel(10) enable_parallel_dml*/ INTO t1(c0) VALUES("nZmnPezW*p'1F_A9"), (""), ('1623564365'), ("bGb ,(gNvYBJ&h[w835\\JUA7!C");
REPLACE INTO t0(c1) VALUES(-1153904014);
INSERT INTO t2(c0) VALUES(520051546), (2128576969);
REPLACE INTO t0(c1, c0) VALUES(-730569861, "cb,ot/f8<0l{iy_ -~{qpm");
REPLACE INTO t2(c0) VALUES(-1394402382);
REPLACE INTO t0(c0, c1) VALUES("", 1030190317);
INSERT INTO t0(c1, c0) VALUES(-1277048949, '''#*R)1mdBeOtM[');
REPLACE INTO t1(c0) VALUES('%tS*_s!&Y~}'), ("38814790");
REPLACE INTO t2(c0) VALUES(503345056);
INSERT INTO t0(c1, c0) VALUES(1931894424, '-518787001'), (-500510214, "\\"), (1504571057, "2");
INSERT INTO t2(c0) VALUES(-342988771), (118491464) ON DUPLICATE KEY UPDATE c0=84553879;
REPLACE INTO t0(c0) VALUES('W'), ("l%V4?zb0Q^HBNv59]");
INSERT /*+parallel(7) enable_parallel_dml*/ INTO t1(c0) VALUES("c");
INSERT /*+parallel(7) enable_parallel_dml*/ INTO t0(c1) VALUES(398204275);
REPLACE INTO t0(c0) VALUES('#g');
REPLACE INTO t1(c0) VALUES("HHX_hf[^");
REPLACE INTO t2(c0) VALUES(555552610), (-1359896317), (-1922956388);
REPLACE INTO t1(c0) VALUES("Qw9");
INSERT /*+parallel(7) enable_parallel_dml*/ INTO t1(c0) VALUES("") ON DUPLICATE KEY UPDATE c0="h";
INSERT /*+parallel(7) enable_parallel_dml*/ INTO t2(c0) VALUES(-1416892404) ON DUPLICATE KEY UPDATE c0=-850566294;
REPLACE INTO t2(c0) VALUES(-294659499);
INSERT INTO t1(c0) VALUES("") ON DUPLICATE KEY UPDATE c0="v>";
REPLACE INTO t0(c0, c1) VALUES("1074912575", -1111240956);
REPLACE INTO t1(c0) VALUES('q6h]zjLt)|[?S*C'), ("");
INSERT /*+parallel(1) enable_parallel_dml*/ INTO t0(c1, c0) VALUES(499424592, "1526935571"), (-1949597880, 'I|yJ');
REPLACE INTO t0(c1, c0) VALUES(-1059804694, "d*%^(Lcrq<|JmNyjM38B+2");
INSERT INTO t2(c0) VALUES(2074113033);
REPLACE INTO t1(c0) VALUES('t');
REPLACE INTO t2(c0) VALUES(-1059804694);
REPLACE INTO t2(c0) VALUES(1660984477);
REPLACE INTO t2(c0) VALUES(-2025228192), (-943802207), (273159703);
INSERT /*+parallel(5) enable_parallel_dml*/ INTO t1(c0) VALUES("&a>a"), ('}8Z'), ('d|ze^fJh(Y|tof0-w#FVF[{pTf 1Z') ON DUPLICATE KEY UPDATE c0='%*5?JXe5x''--N*w|NM#+~''yj}w';
REPLACE INTO t0(c1, c0) VALUES(-182939180, '1549773963');
REPLACE INTO t0(c1) VALUES(-1119894901), (84553879);
INSERT /*+parallel(1) enable_parallel_dml*/ INTO t1(c0) VALUES('1796091423');
INSERT /*+parallel(5) enable_parallel_dml*/ INTO t2(c0) VALUES(443129399) ON DUPLICATE KEY UPDATE c0=520051546;
REPLACE INTO t2(c0) VALUES(-593968021), (-518787001), (1588767598), (-423953906), (-1749738322);
REPLACE INTO t1(c0) VALUES(""), ("u[");
REPLACE INTO t0(c0) VALUES("Oo2C");
INSERT /*+parallel(8) enable_parallel_dml*/ INTO t1(c0) VALUES(''''), ('ehOqju3G72*M'), ('E.p1qkG'), ("%P%_5\\+1J}\\cjXWYbcD\\Y(]qX8+z]"), ("") ON DUPLICATE KEY UPDATE c0="upb,KpUrE8ZdvnzOe";
INSERT /*+parallel(10) enable_parallel_dml*/ INTO t0(c1) VALUES(1623564365);
INSERT /*+parallel(3) enable_parallel_dml*/ INTO t0(c1, c0) VALUES(1526718257, "U<0*0") ON DUPLICATE KEY UPDATE c1=-621014573;
REPLACE INTO t2(c0) VALUES(-554964227);
REPLACE INTO t0(c1, c0) VALUES(1790436495, "V/7NHRW^%3^b[h>'Q");
INSERT INTO t0(c1, c0) VALUES(79355437, 'oVh5l');
INSERT INTO t2(c0) VALUES(-255112077);
INSERT INTO t2(c0) VALUES(666893151) ON DUPLICATE KEY UPDATE c0=1089965791;
INSERT /*+parallel(5) enable_parallel_dml*/ INTO t2(c0) VALUES(359479526) ON DUPLICATE KEY UPDATE c0=1990806843;
INSERT /*+parallel(1) enable_parallel_dml*/ INTO t0(c0, c1) VALUES('-222390328', 1921869132), ('9lyjAk#p#xG&<\\9!', -701977576) ON DUPLICATE KEY UPDATE c0="xyd*%aq+mxt9w80p#f";
INSERT INTO t0(c0, c1) VALUES("[>Y2K>h.5", 560088349);
REPLACE INTO t0(c1) VALUES(908791520);
REPLACE INTO t0(c0, c1) VALUES('hh', 1455480061), ('2]~\\{F{I5mj~~%l]O|', -1664313740);
INSERT /*+parallel(8) enable_parallel_dml*/ INTO t0(c0, c1) VALUES("M**sk]{Cht3'J2", -2042045427);
REPLACE INTO t1(c0) VALUES('L0');
REPLACE INTO t2(c0) VALUES(484725598), (-1150330143), (-2066290446);
INSERT /*+parallel(10) enable_parallel_dml*/ INTO t2(c0) VALUES(-1575710347), (1308540841) ON DUPLICATE KEY UPDATE c0=1772972035;
REPLACE INTO t1(c0) VALUES('417065122');
INSERT INTO t1(c0) VALUES("+"), ("V5Bd"), ('mo)!qHyHCC5l''K');
REPLACE INTO t1(c0) VALUES('G%Dy&j6yjSU{Kk#Szx0Z#S_i4pkLq'), ("");
REPLACE INTO t1(c0) VALUES("gNy.{w^bliF#ob4w8Bgg)");
REPLACE INTO t1(c0) VALUES("N");
INSERT INTO t2(c0) VALUES(-1849251169) ON DUPLICATE KEY UPDATE c0=752753855;
REPLACE INTO t0(c0, c1) VALUES("FP!", 1921869132);
INSERT INTO t2(c0) VALUES(1094103626);
REPLACE INTO t0(c1) VALUES(944751702), (-1178854287), (-2060215925), (1541216475);
REPLACE INTO t0(c1, c0) VALUES(1086836408, 'W');
INSERT INTO t2(c0) VALUES(443788724) ON DUPLICATE KEY UPDATE c0=1546588654;
REPLACE INTO t1(c0) VALUES("C]");
INSERT /*+parallel(6) enable_parallel_dml*/ INTO t1(c0) VALUES("-1971421495") ON DUPLICATE KEY UPDATE c0='';
INSERT INTO t2(c0) VALUES(-392421974), (-2012768933);
REPLACE INTO t1(c0) VALUES("FtK<%7j6kT2|206T4OaoRlx,]mNN/"), ("eOtb0c_zm'a*U%{6g0/%l7BpQmY "), (""), (""), ("xa");
REPLACE INTO t1(c0) VALUES('^.MC2C(*5BCTF^_QUVE+GIH)E');
CREATE INDEX i260 USING HASH ON t1(c0(1)) global;
INSERT INTO t2(c0) VALUES(269160292);
REPLACE INTO t0(c0, c1) VALUES('''\\J^y9RwAo', 118491464), ('141916557', -381060933), ('6', 487694549), ('4|yJ', 1489403758), ("K", -1260108762), ("50774738", 791886485), ("iZYKo|<a^", 917882623);
REPLACE INTO t0(c1, c0) VALUES(1090711076, ""), (-1557729036, "0"), (-1986474355, ']06B[]');
REPLACE INTO t1(c0) VALUES('lXpUQ'), ('xbo'), ('W'), ('y1p3qByYNx.bym)/q4c'), ("-1750125326"), ('y');
REPLACE INTO t1(c0) VALUES("s");
INSERT /*+parallel(4) enable_parallel_dml*/ INTO t2(c0) VALUES(1600588072), (-2042045427), (-532544134), (-1174702315);
REPLACE INTO t1(c0) VALUES('rF0Lll5');
--enable_abort_on_error
explain basic SELECT count(*) as rowCount FROM (SELECT /*+ USE_HASH (t1) */ DISTINCT t0.c0 AS t0c0, t0.c1 AS t0c1, t2.c0 AS t2c0, t1.c0 AS t1c0 FROM t0, t2, t1 WHERE t0.c1 ORDER BY t0.c0 DESC, t1.c0 DESC LIMIT 2147483647 OFFSET 0) as result WHERE concat(result.t0c0,'') IS NULL AND result.t0c1 = 398204275 AND result.t2c0 = 1489403758 AND concat(result.t1c0,'') = "q6h]zjLt)|[?S*C";
SELECT count(*) as rowCount FROM (SELECT /*+ USE_HASH (t1) */ DISTINCT t0.c0 AS t0c0, t0.c1 AS t0c1, t2.c0 AS t2c0, t1.c0 AS t1c0 FROM t0, t2, t1 WHERE t0.c1 ORDER BY t0.c0 DESC, t1.c0 DESC LIMIT 2147483647 OFFSET 0) as result WHERE concat(result.t0c0,'') IS NULL AND result.t0c1 = 398204275 AND result.t2c0 = 1489403758 AND concat(result.t1c0,'') = "q6h]zjLt)|[?S*C";
connection syscon;
sleep 2;
connection default;
drop table t0;
drop table t1;
drop table t2;
drop table t111_var;
--sleep 2

View File

@ -0,0 +1,106 @@
# owner: xiaoyi.xy
# owner group: sql2
# tags: optimizer
--result_format 4
--explain_protocol 2
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection conn_admin;
connection default;
--disable_warnings
drop table if exists pk_t, t1, t2, t3, t4;
--enable_warnings
create table pk_t(pk int primary key, c2 int);
create table t1(c1 int, c2 int);
create table t2(c1 int, c2 int);
create table t3(c1 int, c2 int);
create table t4(c1 int, c2 int);
insert/*trace*/ into pk_t values(2,2),(3,3), (6,6), (7, 7);
insert/*trace*/ into t1 values(NULL, 8), (NULL, 8), (2,2),(2,2), (3,3), (3,3), (4,4), (4,4),(7,7),(7, 7);
insert/*trace*/ into t2 values(NULL, 3),(1, 1), (1,1), (2,2), (3,3), (6,6),(6,6),(9,9), (10,10);
insert/*trace*/ into t3 values(1,3), (2,2);
insert/*trace*/ into t4 values(1,2), (1,2), (2,3);
connection conn_admin;
connection default;
set @@ob_enable_plan_cache = 0;
--echo
--echo ********* basic merge join
select /*+use_merge(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c1;
--echo
select /*+use_merge(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c1;
--echo
select /*+use_merge(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c1;
--echo
select /*+use_merge(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c1;
--echo
select /*+use_merge(t1 t2)*/ * from t1 where exists(select 1 from t2 where t1.c1 = t2.c1);
--echo
select /*+use_merge(t1 t2)*/ * from t1 where not exists(select 1 from t2 where t1.c1 = t2.c1);
--echo
--echo ********* nullsafe equal condition
select /*+use_merge(t1 t2)*/ * from t1, t2 where t1.c1 <=> t2.c1;
--echo
select /*+use_merge(t1 t2)*/ * from t1 left join t2 on t1.c1 <=> t2.c1;
--echo
select /*+use_merge(t1 t2)*/ * from t1 right join t2 on t1.c1 <=> t2.c1;
--echo
select /*+use_merge(t1 t2)*/ * from t1 full join t2 on t1.c1 <=> t2.c1;
--echo
select /*+use_merge(t1 t2)*/ * from t1 where exists(select 1 from t2 where t1.c1 <=> t2.c1);
--echo
select /*+use_merge(t1 t2)*/ * from t1 where not exists(select 1 from t2 where t1.c1 <=> t2.c1);
--echo
--echo ******** contain other condition
select /*+use_merge(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c1 and t1.c2 * t2.c2 < 10;
--echo
select /*+use_merge(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c1 and t1.c2 * t2.c2 < 10;
--echo
select /*+use_merge(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c1 and t1.c2 * t2.c2 < 10;
--echo
select /*+use_merge(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c1 and t1.c2 * t2.c2 < 10;
--echo
select /*+use_merge(t1 t2)*/ * from t1 where exists(select 1 from t2 where t1.c1 = t2.c1 and t1.c2 * t2.c2 < 10) ;
--echo
select /*+use_merge(t1 t2)*/ * from t1 where not exists(select 1 from t2 where t1.c1 = t2.c1 and t1.c2 * t2.c2 < 10) ;
--echo
--echo ************ equel condition表达式左右子表达式分别来自join operator的右边和左边
select /*+use_merge(t1 t2) leading(t1 t2)*/ * from t1, t2 where t2.c1 = t1.c1 and t1.c2 * t2.c2 < 10;
--echo
select /*+use_merge(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t2.c1 = t1.c1 and t1.c2 * t2.c2 < 10;
--echo
select /*+use_merge(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t2.c1 = t1.c1 and t1.c2 * t2.c2 < 10;
--echo
select /*+use_merge(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t2.c1 = t1.c1 and t1.c2 * t2.c2 < 10;
--echo
select /*+use_merge(t1 t2) leading(t1 t2)*/ * from t1 where exists(select 1 from t2 where t2.c1 = t1.c1 and t1.c2 * t2.c2 < 10) ;
--echo
select /*+use_merge(t1 t2) leading(t1 t2)*/ * from t1 where not exists(select 1 from t2 where t2.c1 = t1.c1 and t1.c2 * t2.c2 < 10) ;
--echo
--echo ******* 测试左表为唯一键时不需要进cache的场景, 仅支持inner join
select /*+use_merge(pk_t t2) leading(pk_t t2)*/ * from pk_t, t2 where pk_t.pk = t2.c1 and pk_t.c2 * t2.c2 < 10;
--echo ******* 测试不进cache, 且左边最后一行与右边最后一行匹配的场景
select /*+use_merge(pk_t t1) leading(pk_t t1)*/ * from pk_t, t1 where pk_t.pk = t1.c1;
--echo
select/*+use_merge(t3 t4) leading(t3 t4)*/ * from t3 left join t4 on t3.c1 = t4.c1 and t3.c2 < t4.c2;
drop table pk_t;
drop table t1;
drop table t2;
drop table t3;
drop table t4;
connection conn_admin;
--sleep 2

View File

@ -0,0 +1,49 @@
# owner: peihan.dph
# owner group: sql2
# tags: optimizer
connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
sleep 2;
connection default;
--disable_warnings
--error 0,1051
drop table t1;
--enable_warnings
create table t1(c1 int, c2 varchar(10), c3 decimal);
insert into t1 values(0, 'abc', '0.1');
insert into t1 values(1, 'def', '1.1');
insert into t1 values(2, 'ghi', '2.1');
insert into t1 values(3, 'jkl', '3.1');
insert into t1 values(4, 'mno', '4.1');
insert into t1 values(5, 'pqr', '5.1');
insert into t1 values(6, 'stu', '6.1');
insert into t1 values(7, 'vwx', '7.1');
insert into t1 values(8, 'yz', '8.1');
insert into t1 values(9, null, null);
connection syscon;
sleep 2;
--result_format 4
--explain_protocol 1
connection default;
set @@ob_enable_plan_cache = 0;
#set @@ob_enable_trace_log=1;
#set @@ob_log_level='trace';
set ob_enable_plan_cache = 0;
select /*+ tracing(0) */ * from t1;
select /*+ tracing(1) */ * from t1;
connection syscon;
sleep 2;
connection default;
drop table t1;
--sleep 2

View File

@ -0,0 +1,95 @@
# owner: xiaoyi.xy
# owner group: sql2
# tags: optimizer
--result_format 4
--explain_protocol 2
connect (conn_admin, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection conn_admin;
connection default;
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
create table t1(c1 int, c2 int primary key);
create table t2(c1 int primary key, c2 int);
insert/*trace*/ into t1 values(1,1), (1, 2), (null, 3), (2, 4), (3,5);
insert/*trace*/ into t2 values(1, 1), (3, 3), (5,5), (6, null);
connection conn_admin;
connection default;
set @@ob_enable_plan_cache = 0;
--echo ============================== no use batch nested loop join =========
set _nlj_batching_enabled = false;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c1;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c2;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c1;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c2;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c1;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c2;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c1;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c2;
--echo
select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c2);
--echo
select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c1);
--echo
select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c2);
--echo
select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c1);
--echo ============================== use batch nested loop join =========
set _nlj_batching_enabled = true;
# batch nested loop 场景存储层迭代器的迭代器在吐行时逻辑还需处理下,本周修改后打开
#--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c1;
#--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1, t2 where t1.c1 = t2.c2;
#--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c1;
#--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 left join t2 on t1.c1 = t2.c2;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c1;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 right join t2 on t1.c1 = t2.c2;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c1;
--echo
select /*+use_nl(t1 t2) leading(t1 t2)*/ * from t1 full join t2 on t1.c1 = t2.c2;
--echo
select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c2);
--echo
select /*+use_nl(t1, t2)*/ * from t1 where exists (select 1 from t2 where t1.c1 = t2.c1);
--echo
select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c2);
--echo
select /*+use_nl(t1, t2)*/ * from t1 where not exists (select 1 from t2 where t1.c1 = t2.c1);
drop table t1;
drop table t2;
connection conn_admin;
--sleep 2