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

View File

@ -0,0 +1,619 @@
alter system enable_table_without_all_cg = false;
create table t1(a int, b varchar(3048), primary key (a), c int) with column group for all columns, each column;
create table t2(pk int, c1 int, c2 int unsigned, c3 varchar(100)) block_size=2048 with column group for all columns, each column;
select count(*) from t1;
count(*)
150
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
150 150 1 299 22500 150 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 150 10 2990 225000
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
alter system major freeze;
alter table t1 add column c1 int default 0, add column c2 varchar(100);
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*) from t1;
count(*)
250
select count(c1) from t1;
count(c1)
250
select count(c2) from t1;
count(c2)
100
select count(c1) from t1 where c1 > 300;
count(c1)
99
select count(c1) from t1 where c1 < 30;
count(c1)
150
select a, c2, count(c1) from t1 where c1 > 480;
a c2 count(c1)
482 482482482482482 9
select c1, c2 from t1 where c1 > 480 and a < 495;
c1 c2
482 482482482482482
484 484484484484484
486 486486486486486
488 488488488488488
490 490490490490490
492 492492492492492
494 494494494494494
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
b c2 count(c1)
49204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920 492492492492492 2
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
a c1 count(c1)
1 0 10
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*) from t1;
count(*)
250
select count(c1) from t1;
count(c1)
250
select count(c2) from t1;
count(c2)
100
select count(c1) from t1 where c1 > 300;
count(c1)
99
select count(c1) from t1 where c1 < 30;
count(c1)
150
select a, c2, count(c1) from t1 where c1 > 480;
a c2 count(c1)
482 482482482482482 9
select c1, c2 from t1 where c1 > 480 and a < 495;
c1 c2
482 482482482482482
484 484484484484484
486 486486486486486
488 488488488488488
490 490490490490490
492 492492492492492
494 494494494494494
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
b c2 count(c1)
49204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920 492492492492492 2
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
a c1 count(c1)
1 0 10
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*) from t1;
count(*)
250
select count(c1) from t1;
count(c1)
250
select count(c2) from t1;
count(c2)
100
select count(c1) from t1 where c1 > 300;
count(c1)
99
select count(c1) from t1 where c1 < 30;
count(c1)
150
select a, c2, count(c1) from t1 where c1 > 480;
a c2 count(c1)
482 482482482482482 9
select c1, c2 from t1 where c1 > 480 and a < 495;
c1 c2
482 482482482482482
484 484484484484484
486 486486486486486
488 488488488488488
490 490490490490490
492 492492492492492
494 494494494494494
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
b c2 count(c1)
49204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920 492492492492492 2
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
a c1 count(c1)
1 0 10
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*) from t1;
count(*)
250
select count(c1) from t1;
count(c1)
250
select count(c2) from t1;
count(c2)
100
select count(c1) from t1 where c1 > 300;
count(c1)
99
select count(c1) from t1 where c1 < 30;
count(c1)
150
select a, c2, count(c1) from t1 where c1 > 480;
a c2 count(c1)
482 482482482482482 9
select c1, c2 from t1 where c1 > 480 and a < 495;
c1 c2
482 482482482482482
484 484484484484484
486 486486486486486
488 488488488488488
490 490490490490490
492 492492492492492
494 494494494494494
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
b c2 count(c1)
49204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920 492492492492492 2
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
a c1 count(c1)
1 0 10
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system major freeze;
alter table t2 add column c4 bigint default 10, add column c5 bigint unsigned default 20;
alter table t2 add column c6 bigint default null;
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
select count(*),count(c4),count(c5),count(c6) from t2;
count(*) count(c4) count(c5) count(c6)
1500 1500 1500 0
select min(c4),min(c5),min(c6) from t2;
min(c4) min(c5) min(c6)
10 20 NULL
select max(c4),max(c5),max(c6) from t2;
max(c4) max(c5) max(c6)
10 20 NULL
select sum(c4),sum(c5),sum(c6) from t2;
sum(c4) sum(c5) sum(c6)
15000 30000 NULL
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
count(*) min(pk) max(c1) sum(c2) min(c3) max(c4) sum(c5) count(c6)
1500 11 3000 2259750 abcdefg1 10 30000 0
select count(*) from t1;
count(*)
250
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
select count(*),count(c4),count(c5),count(c6) from t2;
count(*) count(c4) count(c5) count(c6)
1500 1500 1500 0
select min(c4),min(c5),min(c6) from t2;
min(c4) min(c5) min(c6)
10 20 NULL
select max(c4),max(c5),max(c6) from t2;
max(c4) max(c5) max(c6)
10 20 NULL
select sum(c4),sum(c5),sum(c6) from t2;
sum(c4) sum(c5) sum(c6)
15000 30000 NULL
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
count(*) min(pk) max(c1) sum(c2) min(c3) max(c4) sum(c5) count(c6)
1500 11 3000 2259750 abcdefg1 10 30000 0
select count(*) from t1;
count(*)
250
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
select count(*),count(c4),count(c5),count(c6) from t2;
count(*) count(c4) count(c5) count(c6)
1500 1500 1500 0
select min(c4),min(c5),min(c6) from t2;
min(c4) min(c5) min(c6)
10 20 NULL
select max(c4),max(c5),max(c6) from t2;
max(c4) max(c5) max(c6)
10 20 NULL
select sum(c4),sum(c5),sum(c6) from t2;
sum(c4) sum(c5) sum(c6)
15000 30000 NULL
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
count(*) min(pk) max(c1) sum(c2) min(c3) max(c4) sum(c5) count(c6)
1500 11 3000 2259750 abcdefg1 10 30000 0
select count(*) from t1;
count(*)
250
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
select count(*),count(c4),count(c5),count(c6) from t2;
count(*) count(c4) count(c5) count(c6)
1500 1500 1500 0
select min(c4),min(c5),min(c6) from t2;
min(c4) min(c5) min(c6)
10 20 NULL
select max(c4),max(c5),max(c6) from t2;
max(c4) max(c5) max(c6)
10 20 NULL
select sum(c4),sum(c5),sum(c6) from t2;
sum(c4) sum(c5) sum(c6)
15000 30000 NULL
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
count(*) min(pk) max(c1) sum(c2) min(c3) max(c4) sum(c5) count(c6)
1500 11 3000 2259750 abcdefg1 10 30000 0
select count(*) from t1;
count(*)
250
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
drop table t1,t2;
alter system enable_table_without_all_cg = true;
alter system flush plan cache;
create table t1(a int, b varchar(3048), primary key (a), c int) with column group for all columns, each column;
create table t2(pk int, c1 int, c2 int unsigned, c3 varchar(100)) block_size=2048 with column group for all columns, each column;
select count(*) from t1;
count(*)
150
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
150 150 1 299 22500 150 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 150 10 2990 225000
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
alter system major freeze;
alter table t1 add column c1 int default 0, add column c2 varchar(100);
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*) from t1;
count(*)
250
select count(c1) from t1;
count(c1)
250
select count(c2) from t1;
count(c2)
100
select count(c1) from t1 where c1 > 300;
count(c1)
99
select count(c1) from t1 where c1 < 30;
count(c1)
150
select a, c2, count(c1) from t1 where c1 > 480;
a c2 count(c1)
482 482482482482482 9
select c1, c2 from t1 where c1 > 480 and a < 495;
c1 c2
482 482482482482482
484 484484484484484
486 486486486486486
488 488488488488488
490 490490490490490
492 492492492492492
494 494494494494494
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
b c2 count(c1)
49204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920 492492492492492 2
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
a c1 count(c1)
1 0 10
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*) from t1;
count(*)
250
select count(c1) from t1;
count(c1)
250
select count(c2) from t1;
count(c2)
100
select count(c1) from t1 where c1 > 300;
count(c1)
99
select count(c1) from t1 where c1 < 30;
count(c1)
150
select a, c2, count(c1) from t1 where c1 > 480;
a c2 count(c1)
482 482482482482482 9
select c1, c2 from t1 where c1 > 480 and a < 495;
c1 c2
482 482482482482482
484 484484484484484
486 486486486486486
488 488488488488488
490 490490490490490
492 492492492492492
494 494494494494494
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
b c2 count(c1)
49204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920 492492492492492 2
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
a c1 count(c1)
1 0 10
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*) from t1;
count(*)
250
select count(c1) from t1;
count(c1)
250
select count(c2) from t1;
count(c2)
100
select count(c1) from t1 where c1 > 300;
count(c1)
99
select count(c1) from t1 where c1 < 30;
count(c1)
150
select a, c2, count(c1) from t1 where c1 > 480;
a c2 count(c1)
482 482482482482482 9
select c1, c2 from t1 where c1 > 480 and a < 495;
c1 c2
482 482482482482482
484 484484484484484
486 486486486486486
488 488488488488488
490 490490490490490
492 492492492492492
494 494494494494494
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
b c2 count(c1)
49204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920 492492492492492 2
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
a c1 count(c1)
1 0 10
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system major freeze;
alter table t2 add column c4 bigint default 10, add column c5 bigint unsigned default 20;
alter table t2 add column c6 bigint default null;
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
select count(*),count(c4),count(c5),count(c6) from t2;
count(*) count(c4) count(c5) count(c6)
1500 1500 1500 0
select min(c4),min(c5),min(c6) from t2;
min(c4) min(c5) min(c6)
10 20 NULL
select max(c4),max(c5),max(c6) from t2;
max(c4) max(c5) max(c6)
10 20 NULL
select sum(c4),sum(c5),sum(c6) from t2;
sum(c4) sum(c5) sum(c6)
15000 30000 NULL
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
count(*) min(pk) max(c1) sum(c2) min(c3) max(c4) sum(c5) count(c6)
1500 11 3000 2259750 abcdefg1 10 30000 0
select count(*) from t1;
count(*)
250
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
select count(*),count(c4),count(c5),count(c6) from t2;
count(*) count(c4) count(c5) count(c6)
1500 1500 1500 0
select min(c4),min(c5),min(c6) from t2;
min(c4) min(c5) min(c6)
10 20 NULL
select max(c4),max(c5),max(c6) from t2;
max(c4) max(c5) max(c6)
10 20 NULL
select sum(c4),sum(c5),sum(c6) from t2;
sum(c4) sum(c5) sum(c6)
15000 30000 NULL
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
count(*) min(pk) max(c1) sum(c2) min(c3) max(c4) sum(c5) count(c6)
1500 11 3000 2259750 abcdefg1 10 30000 0
select count(*) from t1;
count(*)
250
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
select count(*),count(c4),count(c5),count(c6) from t2;
count(*) count(c4) count(c5) count(c6)
1500 1500 1500 0
select min(c4),min(c5),min(c6) from t2;
min(c4) min(c5) min(c6)
10 20 NULL
select max(c4),max(c5),max(c6) from t2;
max(c4) max(c5) max(c6)
10 20 NULL
select sum(c4),sum(c5),sum(c6) from t2;
sum(c4) sum(c5) sum(c6)
15000 30000 NULL
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
count(*) min(pk) max(c1) sum(c2) min(c3) max(c4) sum(c5) count(c6)
1500 11 3000 2259750 abcdefg1 10 30000 0
select count(*) from t1;
count(*)
250
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
count(*) count(pk) min(pk) max(pk) sum(pk) min(c1) max(c1) sum(c1) min(c2) max(c2) sum(c2) min(c3) max(c3)
1500 1500 11 3000 2258250 11 3000 2258250 12 3001 2259750 abcdefg1 abcdefg99
select count(*),count(c4),count(c5),count(c6) from t2;
count(*) count(c4) count(c5) count(c6)
1500 1500 1500 0
select min(c4),min(c5),min(c6) from t2;
min(c4) min(c5) min(c6)
10 20 NULL
select max(c4),max(c5),max(c6) from t2;
max(c4) max(c5) max(c6)
10 20 NULL
select sum(c4),sum(c5),sum(c6) from t2;
sum(c4) sum(c5) sum(c6)
15000 30000 NULL
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
count(*) min(pk) max(c1) sum(c2) min(c3) max(c4) sum(c5) count(c6)
1500 11 3000 2259750 abcdefg1 10 30000 0
select count(*) from t1;
count(*)
250
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
count(*) count(a) min(a) max(a) sum(a) count(b) min(b) max(b) count(c) min(c) max(c) sum(c)
250 250 1 498 62400 250 1010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010 990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990990 250 10 4980 624000
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
count(*) count(c1) min(c1) max(c1) sum(c1) count(c2) min(c2) max(c2)
250 250 0 498 39900 100 300300300300300 498498498498498
drop table t1,t2;

View File

@ -0,0 +1,675 @@
drop table if exists ct1;
set session ob_trx_timeout=100000000000;
create table ct1(c1 int primary key, c2 int, c3 number, c4 varchar(60000), c5 varchar(60000)) ROW_FORMAT = redundant COMPRESSION = 'none' with column group for all columns, each column;
alter system minor freeze;
alter system major freeze;
select c1, c2, c3, length(c4) from ct1 where c1 < 1;
c1 c2 c3 length(c4)
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c1 < 10;
c1 c2 c3 length(c4)
0 0 0 3200
1 1 1 3200
2 2 2 3200
3 3 3 3200
4 4 4 3200
5 5 5 3200
6 6 6 3200
7 7 7 3200
8 8 8 3200
9 9 9 3200
select c1, c2, c3, length(c4) from ct1 where c1 > 10000;
c1 c2 c3 length(c4)
select c1, c2, c3, length(c4) from ct1 where c2 < 1;
c1 c2 c3 length(c4)
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c2 < 10;
c1 c2 c3 length(c4)
0 0 0 3200
1 1 1 3200
2 2 2 3200
3 3 3 3200
4 4 4 3200
5 5 5 3200
6 6 6 3200
7 7 7 3200
8 8 8 3200
9 9 9 3200
select c1, c2, c3, length(c4) from ct1 where c2 > 10000;
c1 c2 c3 length(c4)
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 and c2 < 20;
c1 c2 c3 length(c4)
0 0 0 3200
1 1 1 3200
2 2 2 3200
3 3 3 3200
4 4 4 3200
5 5 5 3200
6 6 6 3200
7 7 7 3200
8 8 8 3200
9 9 9 3200
10 10 10 3200
11 11 11 3200
12 12 12 3200
13 13 13 3200
14 14 14 3200
15 15 15 3200
16 16 16 3200
17 17 17 3200
18 18 18 3200
19 19 19 3200
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 or c2 < 20;
c1 c2 c3 length(c4)
0 0 0 3200
1 1 1 3200
2 2 2 3200
3 3 3 3200
4 4 4 3200
5 5 5 3200
6 6 6 3200
7 7 7 3200
8 8 8 3200
9 9 9 3200
10 10 10 3200
11 11 11 3200
12 12 12 3200
13 13 13 3200
14 14 14 3200
15 15 15 3200
16 16 16 3200
17 17 17 3200
18 18 18 3200
19 19 19 3200
20 20 20 3200
21 21 21 3200
22 22 22 3200
23 23 23 3200
24 24 24 3200
25 25 25 3200
26 26 26 3200
27 27 27 3200
28 28 28 3200
29 29 29 3200
30 30 30 3200
31 31 31 3200
32 32 32 3200
33 33 33 3200
34 34 34 3200
35 35 35 3200
36 36 36 3200
37 37 37 3200
38 38 38 3200
39 39 39 3200
40 40 40 3200
41 41 41 3200
42 42 42 3200
43 43 43 3200
44 44 44 3200
45 45 45 3200
46 46 46 3200
47 47 47 3200
48 48 48 3200
49 49 49 3200
50 50 50 3200
select c1, c2, c3, length(c4) from ct1 where c1 < 1 order by c1 desc;
c1 c2 c3 length(c4)
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c1 < 10 order by c1 desc;
c1 c2 c3 length(c4)
9 9 9 3200
8 8 8 3200
7 7 7 3200
6 6 6 3200
5 5 5 3200
4 4 4 3200
3 3 3 3200
2 2 2 3200
1 1 1 3200
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c1 > 10000 order by c1 desc;
c1 c2 c3 length(c4)
select c1, c2, c3, length(c4) from ct1 where c2 < 1 order by c1 desc;
c1 c2 c3 length(c4)
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c2 < 10 order by c1 desc;
c1 c2 c3 length(c4)
9 9 9 3200
8 8 8 3200
7 7 7 3200
6 6 6 3200
5 5 5 3200
4 4 4 3200
3 3 3 3200
2 2 2 3200
1 1 1 3200
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c2 > 10000 order by c1 desc;
c1 c2 c3 length(c4)
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 and c2 < 20 order by c1 desc;
c1 c2 c3 length(c4)
19 19 19 3200
18 18 18 3200
17 17 17 3200
16 16 16 3200
15 15 15 3200
14 14 14 3200
13 13 13 3200
12 12 12 3200
11 11 11 3200
10 10 10 3200
9 9 9 3200
8 8 8 3200
7 7 7 3200
6 6 6 3200
5 5 5 3200
4 4 4 3200
3 3 3 3200
2 2 2 3200
1 1 1 3200
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 or c2 < 20 order by c1 desc;
c1 c2 c3 length(c4)
50 50 50 3200
49 49 49 3200
48 48 48 3200
47 47 47 3200
46 46 46 3200
45 45 45 3200
44 44 44 3200
43 43 43 3200
42 42 42 3200
41 41 41 3200
40 40 40 3200
39 39 39 3200
38 38 38 3200
37 37 37 3200
36 36 36 3200
35 35 35 3200
34 34 34 3200
33 33 33 3200
32 32 32 3200
31 31 31 3200
30 30 30 3200
29 29 29 3200
28 28 28 3200
27 27 27 3200
26 26 26 3200
25 25 25 3200
24 24 24 3200
23 23 23 3200
22 22 22 3200
21 21 21 3200
20 20 20 3200
19 19 19 3200
18 18 18 3200
17 17 17 3200
16 16 16 3200
15 15 15 3200
14 14 14 3200
13 13 13 3200
12 12 12 3200
11 11 11 3200
10 10 10 3200
9 9 9 3200
8 8 8 3200
7 7 7 3200
6 6 6 3200
5 5 5 3200
4 4 4 3200
3 3 3 3200
2 2 2 3200
1 1 1 3200
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c5 is null;
c1 c2 c3 length(c4)
select c1, c2, c3, length(c4), length(c5) from ct1 limit 20;
c1 c2 c3 length(c4) length(c5)
0 0 0 3200 3200
1 1 1 3200 3200
2 2 2 3200 3200
3 3 3 3200 3200
4 4 4 3200 3200
5 5 5 3200 3200
6 6 6 3200 3200
7 7 7 3200 3200
8 8 8 3200 3200
9 9 9 3200 3200
10 10 10 3200 3200
11 11 11 3200 3200
12 12 12 3200 3200
13 13 13 3200 3200
14 14 14 3200 3200
15 15 15 3200 3200
16 16 16 3200 3200
17 17 17 3200 3200
18 18 18 3200 3200
19 19 19 3200 3200
select c1, c2, c3, length(c4), length(c5) from ct1 limit 20 offset 5000;
c1 c2 c3 length(c4) length(c5)
5000 5000 5000 3200 3200
5001 5001 5001 3200 3200
5002 5002 5002 3200 3200
5003 5003 5003 3200 3200
5004 5004 5004 3200 3200
5005 5005 5005 3200 3200
5006 5006 5006 3200 3200
5007 5007 5007 3200 3200
5008 5008 5008 3200 3200
5009 5009 5009 3200 3200
5010 5010 5010 3200 3200
5011 5011 5011 3200 3200
5012 5012 5012 3200 3200
5013 5013 5013 3200 3200
5014 5014 5014 3200 3200
5015 5015 5015 3200 3200
5016 5016 5016 3200 3200
5017 5017 5017 3200 3200
5018 5018 5018 3200 3200
5019 5019 5019 3200 3200
select c1, c2, c3, length(c4), length(c5) from ct1 order by c1 desc limit 20;
c1 c2 c3 length(c4) length(c5)
9999 9999 9999 3200 3200
9998 9998 9998 3200 3200
9997 9997 9997 3200 3200
9996 9996 9996 3200 3200
9995 9995 9995 3200 3200
9994 9994 9994 3200 3200
9993 9993 9993 3200 3200
9992 9992 9992 3200 3200
9991 9991 9991 3200 3200
9990 9990 9990 3200 3200
9989 9989 9989 3200 3200
9988 9988 9988 3200 3200
9987 9987 9987 3200 3200
9986 9986 9986 3200 3200
9985 9985 9985 3200 3200
9984 9984 9984 3200 3200
9983 9983 9983 3200 3200
9982 9982 9982 3200 3200
9981 9981 9981 3200 3200
9980 9980 9980 3200 3200
select c1, c2, c3, length(c4), length(c5) from ct1 order by c1 desc limit 20 offset 5000;
c1 c2 c3 length(c4) length(c5)
4999 4999 4999 3200 3200
4998 4998 4998 3200 3200
4997 4997 4997 3200 3200
4996 4996 4996 3200 3200
4995 4995 4995 3200 3200
4994 4994 4994 3200 3200
4993 4993 4993 3200 3200
4992 4992 4992 3200 3200
4991 4991 4991 3200 3200
4990 4990 4990 3200 3200
4989 4989 4989 3200 3200
4988 4988 4988 3200 3200
4987 4987 4987 3200 3200
4986 4986 4986 3200 3200
4985 4985 4985 3200 3200
4984 4984 4984 3200 3200
4983 4983 4983 3200 3200
4982 4982 4982 3200 3200
4981 4981 4981 3200 3200
4980 4980 4980 3200 3200
select c1, c2, c3, length(c4) from ct1 where (c1 < 100 and c1 < 20 and c3 < 10) or ((c1 + c2) < 100 and c3 < 10 and (c1 + c2) >= 0);
c1 c2 c3 length(c4)
0 0 0 3200
1 1 1 3200
2 2 2 3200
3 3 3 3200
4 4 4 3200
5 5 5 3200
6 6 6 3200
7 7 7 3200
8 8 8 3200
9 9 9 3200
alter system minor freeze;
select c1, c2, c3, length(c4) from ct1 where c1 < 1;
c1 c2 c3 length(c4)
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c1 < 10;
c1 c2 c3 length(c4)
0 0 0 3200
1 1 1 3200
2 2 2 3200
3 3 3 3200
4 4 4 3200
5 5 5 3200
6 6 6 3200
7 7 7 3200
8 8 8 3200
9 9 9 3200
select c1, c2, c3, length(c4) from ct1 where c1 > 10000 limit 10;
c1 c2 c3 length(c4)
10001 10001 10001 3200
10002 10002 10002 3200
10003 10003 10003 3200
10004 10004 10004 3200
10005 10005 10005 3200
10006 10006 10006 3200
10007 10007 10007 3200
10008 10008 10008 3200
10009 10009 10009 3200
10010 10010 10010 3200
select c1, c2, c3, length(c4) from ct1 where c2 < 1;
c1 c2 c3 length(c4)
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c2 < 10;
c1 c2 c3 length(c4)
0 0 0 3200
1 1 1 3200
2 2 2 3200
3 3 3 3200
4 4 4 3200
5 5 5 3200
6 6 6 3200
7 7 7 3200
8 8 8 3200
9 9 9 3200
select c1, c2, c3, length(c4) from ct1 where c2 > 10000 limit 10;
c1 c2 c3 length(c4)
10001 10001 10001 3200
10002 10002 10002 3200
10003 10003 10003 3200
10004 10004 10004 3200
10005 10005 10005 3200
10006 10006 10006 3200
10007 10007 10007 3200
10008 10008 10008 3200
10009 10009 10009 3200
10010 10010 10010 3200
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 and c2 < 20;
c1 c2 c3 length(c4)
0 0 0 3200
1 1 1 3200
2 2 2 3200
3 3 3 3200
4 4 4 3200
5 5 5 3200
6 6 6 3200
7 7 7 3200
8 8 8 3200
9 9 9 3200
10 10 10 3200
11 11 11 3200
12 12 12 3200
13 13 13 3200
14 14 14 3200
15 15 15 3200
16 16 16 3200
17 17 17 3200
18 18 18 3200
19 19 19 3200
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 or c2 < 20;
c1 c2 c3 length(c4)
0 0 0 3200
1 1 1 3200
2 2 2 3200
3 3 3 3200
4 4 4 3200
5 5 5 3200
6 6 6 3200
7 7 7 3200
8 8 8 3200
9 9 9 3200
10 10 10 3200
11 11 11 3200
12 12 12 3200
13 13 13 3200
14 14 14 3200
15 15 15 3200
16 16 16 3200
17 17 17 3200
18 18 18 3200
19 19 19 3200
20 20 20 3200
21 21 21 3200
22 22 22 3200
23 23 23 3200
24 24 24 3200
25 25 25 3200
26 26 26 3200
27 27 27 3200
28 28 28 3200
29 29 29 3200
30 30 30 3200
31 31 31 3200
32 32 32 3200
33 33 33 3200
34 34 34 3200
35 35 35 3200
36 36 36 3200
37 37 37 3200
38 38 38 3200
39 39 39 3200
40 40 40 3200
41 41 41 3200
42 42 42 3200
43 43 43 3200
44 44 44 3200
45 45 45 3200
46 46 46 3200
47 47 47 3200
48 48 48 3200
49 49 49 3200
50 50 50 3200
select c1, c2, c3, length(c4) from ct1 where c1 < 1 order by c1 desc;
c1 c2 c3 length(c4)
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c1 < 10 order by c1 desc;
c1 c2 c3 length(c4)
9 9 9 3200
8 8 8 3200
7 7 7 3200
6 6 6 3200
5 5 5 3200
4 4 4 3200
3 3 3 3200
2 2 2 3200
1 1 1 3200
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c1 > 10000 order by c1 desc limit 10;
c1 c2 c3 length(c4)
11999 11999 11999 3200
11998 11998 11998 3200
11997 11997 11997 3200
11996 11996 11996 3200
11995 11995 11995 3200
11994 11994 11994 3200
11993 11993 11993 3200
11992 11992 11992 3200
11991 11991 11991 3200
11990 11990 11990 3200
select c1, c2, c3, length(c4) from ct1 where c2 < 1 order by c1 desc;
c1 c2 c3 length(c4)
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c2 < 10 order by c1 desc;
c1 c2 c3 length(c4)
9 9 9 3200
8 8 8 3200
7 7 7 3200
6 6 6 3200
5 5 5 3200
4 4 4 3200
3 3 3 3200
2 2 2 3200
1 1 1 3200
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c2 > 10000 order by c1 desc limit 10;
c1 c2 c3 length(c4)
11999 11999 11999 3200
11998 11998 11998 3200
11997 11997 11997 3200
11996 11996 11996 3200
11995 11995 11995 3200
11994 11994 11994 3200
11993 11993 11993 3200
11992 11992 11992 3200
11991 11991 11991 3200
11990 11990 11990 3200
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 and c2 < 20 order by c1 desc;
c1 c2 c3 length(c4)
19 19 19 3200
18 18 18 3200
17 17 17 3200
16 16 16 3200
15 15 15 3200
14 14 14 3200
13 13 13 3200
12 12 12 3200
11 11 11 3200
10 10 10 3200
9 9 9 3200
8 8 8 3200
7 7 7 3200
6 6 6 3200
5 5 5 3200
4 4 4 3200
3 3 3 3200
2 2 2 3200
1 1 1 3200
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 or c2 < 20 order by c1 desc;
c1 c2 c3 length(c4)
50 50 50 3200
49 49 49 3200
48 48 48 3200
47 47 47 3200
46 46 46 3200
45 45 45 3200
44 44 44 3200
43 43 43 3200
42 42 42 3200
41 41 41 3200
40 40 40 3200
39 39 39 3200
38 38 38 3200
37 37 37 3200
36 36 36 3200
35 35 35 3200
34 34 34 3200
33 33 33 3200
32 32 32 3200
31 31 31 3200
30 30 30 3200
29 29 29 3200
28 28 28 3200
27 27 27 3200
26 26 26 3200
25 25 25 3200
24 24 24 3200
23 23 23 3200
22 22 22 3200
21 21 21 3200
20 20 20 3200
19 19 19 3200
18 18 18 3200
17 17 17 3200
16 16 16 3200
15 15 15 3200
14 14 14 3200
13 13 13 3200
12 12 12 3200
11 11 11 3200
10 10 10 3200
9 9 9 3200
8 8 8 3200
7 7 7 3200
6 6 6 3200
5 5 5 3200
4 4 4 3200
3 3 3 3200
2 2 2 3200
1 1 1 3200
0 0 0 3200
select c1, c2, c3, length(c4) from ct1 where c5 is null;
c1 c2 c3 length(c4)
select c1, c2, c3, length(c4), length(c5) from ct1 limit 20;
c1 c2 c3 length(c4) length(c5)
0 0 0 3200 3200
1 1 1 3200 3200
2 2 2 3200 3200
3 3 3 3200 3200
4 4 4 3200 3200
5 5 5 3200 3200
6 6 6 3200 3200
7 7 7 3200 3200
8 8 8 3200 3200
9 9 9 3200 3200
10 10 10 3200 3200
11 11 11 3200 3200
12 12 12 3200 3200
13 13 13 3200 3200
14 14 14 3200 3200
15 15 15 3200 3200
16 16 16 3200 3200
17 17 17 3200 3200
18 18 18 3200 3200
19 19 19 3200 3200
select c1, c2, c3, length(c4), length(c5) from ct1 limit 20 offset 5000;
c1 c2 c3 length(c4) length(c5)
5000 5000 5000 3200 3200
5001 5001 5001 3200 3200
5002 5002 5002 3200 3200
5003 5003 5003 3200 3200
5004 5004 5004 3200 3200
5005 5005 5005 3200 3200
5006 5006 5006 3200 3200
5007 5007 5007 3200 3200
5008 5008 5008 3200 3200
5009 5009 5009 3200 3200
5010 5010 5010 3200 3200
5011 5011 5011 3200 3200
5012 5012 5012 3200 3200
5013 5013 5013 3200 3200
5014 5014 5014 3200 3200
5015 5015 5015 3200 3200
5016 5016 5016 3200 3200
5017 5017 5017 3200 3200
5018 5018 5018 3200 3200
5019 5019 5019 3200 3200
select c1, c2, c3, length(c4), length(c5) from ct1 order by c1 desc limit 20;
c1 c2 c3 length(c4) length(c5)
11999 11999 11999 3200 3200
11998 11998 11998 3200 3200
11997 11997 11997 3200 3200
11996 11996 11996 3200 3200
11995 11995 11995 3200 3200
11994 11994 11994 3200 3200
11993 11993 11993 3200 3200
11992 11992 11992 3200 3200
11991 11991 11991 3200 3200
11990 11990 11990 3200 3200
11989 11989 11989 3200 3200
11988 11988 11988 3200 3200
11987 11987 11987 3200 3200
11986 11986 11986 3200 3200
11985 11985 11985 3200 3200
11984 11984 11984 3200 3200
11983 11983 11983 3200 3200
11982 11982 11982 3200 3200
11981 11981 11981 3200 3200
11980 11980 11980 3200 3200
select c1, c2, c3, length(c4), length(c5) from ct1 order by c1 desc limit 20 offset 5000;
c1 c2 c3 length(c4) length(c5)
6999 6999 6999 3200 3200
6998 6998 6998 3200 3200
6997 6997 6997 3200 3200
6996 6996 6996 3200 3200
6995 6995 6995 3200 3200
6994 6994 6994 3200 3200
6993 6993 6993 3200 3200
6992 6992 6992 3200 3200
6991 6991 6991 3200 3200
6990 6990 6990 3200 3200
6989 6989 6989 3200 3200
6988 6988 6988 3200 3200
6987 6987 6987 3200 3200
6986 6986 6986 3200 3200
6985 6985 6985 3200 3200
6984 6984 6984 3200 3200
6983 6983 6983 3200 3200
6982 6982 6982 3200 3200
6981 6981 6981 3200 3200
6980 6980 6980 3200 3200
drop table ct1;

View File

@ -0,0 +1,897 @@
drop table if exists ct1;
set session ob_trx_timeout=100000000000;
create table ct1(c1 int primary key, c2 int, c3 number, c4 varchar(60000), c5 varchar(60000)) ROW_FORMAT = redundant COMPRESSION = 'none' with column group for all columns, each column;
alter system minor freeze;
alter system major freeze;
update ct1 set c3 = 0 where c1 = 0;
update ct1 set c3 = 0 where c1 = 200;
update ct1 set c3 = 0 where c1 = 1200;
update ct1 set c3 = 0 where c1 = 5200;
update ct1 set c3 = 0 where c1 = 8803;
update ct1 set c3 = 0 where c1 = 9907;
insert into ct1 values(10001, 0, 0, '', '');
insert into ct1 values(20000, 0, 0, '', '');
select c1,c2 from ct1 where c2 <= 9;
c1 c2
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10001 0
20000 0
select c1,c2 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
select c1,c2 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10001 0
20000 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 9
8 8 8
7 7 7
6 6 6
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 9
8 8 8
7 7 7
6 6 6
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 9
8 8 8
7 7 7
6 6 6
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
update ct1 set c3 = 0 where c1 < 1000;
update ct1 set c3 = 0 where c1 < 2000 and c1 >= 1000;
update ct1 set c3 = 0 where c1 < 3000 and c1 >= 2000;
update ct1 set c3 = 0 where c1 < 4000 and c1 >= 3000;
update ct1 set c3 = 0 where c1 < 5000 and c1 >= 4000;
update ct1 set c3 = 0 where c1 < 6000 and c1 >= 5000;
update ct1 set c3 = 0 where c1 < 7000 and c1 >= 6000;
update ct1 set c3 = 0 where c1 < 8000 and c1 >= 7000;
update ct1 set c3 = 0 where c1 < 9000 and c1 >= 8000;
update ct1 set c3 = 0 where c1 < 10000 and c1 >= 9000;
alter system set _rowsets_enabled = false;
alter system set _pushdown_storage_level = 0;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select count(*) from ct1;
count(*)
10002
alter system set _rowsets_enabled = false;
alter system set _pushdown_storage_level = 4;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select count(*) from ct1;
count(*)
10002
alter system set _rowsets_enabled = true;
alter system set _pushdown_storage_level = 0;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select count(*) from ct1;
count(*)
10002
alter system set _rowsets_enabled = true;
alter system set _pushdown_storage_level = 4;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select count(*) from ct1;
count(*)
10002
drop table ct1;
alter system enable_table_without_all_cg = false;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
create table ct1(c1 int primary key, c2 int, c3 number, c4 varchar(60000), c5 varchar(60000)) ROW_FORMAT = redundant COMPRESSION = 'none' with column group for all columns, each column;
alter system minor freeze;
alter system major freeze;
update ct1 set c3 = 0 where c1 = 0;
update ct1 set c3 = 0 where c1 = 200;
update ct1 set c3 = 0 where c1 = 1200;
update ct1 set c3 = 0 where c1 = 5200;
update ct1 set c3 = 0 where c1 = 8803;
update ct1 set c3 = 0 where c1 = 9907;
insert into ct1 values(10001, 0, 0, '', '');
insert into ct1 values(20000, 0, 0, '', '');
select c1,c2 from ct1 where c2 <= 9;
c1 c2
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10001 0
20000 0
select c1,c2 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
select c1,c2 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10001 0
20000 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 9
8 8 8
7 7 7
6 6 6
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 9
8 8 8
7 7 7
6 6 6
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 9
8 8 8
7 7 7
6 6 6
5 5 5
4 4 4
3 3 3
2 2 2
1 1 1
0 0 0
update ct1 set c3 = 0 where c1 < 1000;
update ct1 set c3 = 0 where c1 < 2000 and c1 >= 1000;
update ct1 set c3 = 0 where c1 < 3000 and c1 >= 2000;
update ct1 set c3 = 0 where c1 < 4000 and c1 >= 3000;
update ct1 set c3 = 0 where c1 < 5000 and c1 >= 4000;
update ct1 set c3 = 0 where c1 < 6000 and c1 >= 5000;
update ct1 set c3 = 0 where c1 < 7000 and c1 >= 6000;
update ct1 set c3 = 0 where c1 < 8000 and c1 >= 7000;
update ct1 set c3 = 0 where c1 < 9000 and c1 >= 8000;
update ct1 set c3 = 0 where c1 < 10000 and c1 >= 9000;
alter system set _rowsets_enabled = false;
alter system set _pushdown_storage_level = 0;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select count(*) from ct1;
count(*)
10002
alter system set _rowsets_enabled = false;
alter system set _pushdown_storage_level = 4;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select count(*) from ct1;
count(*)
10002
alter system set _rowsets_enabled = true;
alter system set _pushdown_storage_level = 0;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select count(*) from ct1;
count(*)
10002
alter system set _rowsets_enabled = true;
alter system set _pushdown_storage_level = 4;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
c1 c2 c3
0 0 0
1 1 0
2 2 0
3 3 0
4 4 0
5 5 0
6 6 0
7 7 0
8 8 0
9 9 0
10001 0 0
20000 0 0
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
c1 c2 c3
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
c1 c2 c3
20000 0 0
10001 0 0
9 9 0
8 8 0
7 7 0
6 6 0
5 5 0
4 4 0
3 3 0
2 2 0
1 1 0
0 0 0
select count(*) from ct1;
count(*)
10002
drop table ct1;

View File

@ -0,0 +1,9 @@
create table tt1(a int, b int, c int, primary key(a)) with column group for all columns, each column;
create index idx_tt1 on tt1(b);
create table tt2(d int, e int);
alter table tt1 drop column c;
ERROR 0A000: drop column with column store table not supported
alter table tt1 modify column c varchar(20);
ERROR 0A000: alter column with column store table not supported
drop table tt1;
drop table tt2;

View File

@ -0,0 +1,40 @@
create table t1(a int, b varchar(3048), primary key (a)) with column group for all columns, each column;
create table t2(c0 int, c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int, c9 int, c10 int, c11 int, c12 int) with column group for all columns, each column;
create table t3(a int, b varchar(3048), primary key (a)) with column group for all columns, each column;
insert into t1 values(1, 1);
insert into t2 values(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
insert into t3 values(1, 1);
select count(*) from t1;
count(*)
501
alter system major freeze;
select count(*) from t1;
count(*)
1001
select * from t3;
a b c
1 1 NULL
2 1 1
select c from t3;
c
NULL
1
select count(c) from t3;
count(c)
1
INSERT INTO t1 VALUES(8000, repeat(8000,512));
alter system major freeze;
select count(*) from t1;
count(*)
1002
select * from t3;
a b c
1 1 NULL
2 1 1
select c from t3;
c
NULL
1
drop table t1;
drop table t2;
drop table t3;

View File

@ -0,0 +1,13 @@
create table t1(a int, b varchar(3048), primary key (a)) with column group for each column;
create table t2(c0 int, c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int, c9 int, c10 int, c11 int, c12 int) with column group for each column;
create table t3(a int, b varchar(3048), primary key (a)) with column group for each column;
insert into t1 values(1, 1);
insert into t2 values(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
insert into t3 values(1, 1);
select count(*) from t1;
count(*)
501
alter system major freeze;
drop table t1;
drop table t2;
drop table t3;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,359 @@
# owner: huronghui.hrh
# owner group: STORAGE
# description:
--disable_query_log
--disable_warnings
set @@recyclebin = off;
drop table if exists t1,t2;
--enable_warnings
--enable_query_log
alter system enable_table_without_all_cg = false;
create table t1(a int, b varchar(3048), primary key (a), c int) with column group for all columns, each column;
create table t2(pk int, c1 int, c2 int unsigned, c3 varchar(100)) block_size=2048 with column group for all columns, each column;
sleep 10;
--disable_query_log
--disable_warnings
--let $count=1
while ($count < 300)
{
eval INSERT INTO t1 VALUES($count, repeat($count * 10, 512), $count * 10);
eval insert into t2(pk, c1,c2,c3) values
($count * 10 + 1,$count * 10 + 1, $count * 10 + 1 + 1, concat("abcdefg", $count)),
($count * 10 + 2,$count * 10 + 2, $count * 10 + 2 + 1, concat("abcdefg", $count)),
($count * 10 + 3,$count * 10 + 3, $count * 10 + 3 + 1, concat("abcdefg", $count)),
($count * 10 + 4,$count * 10 + 4, $count * 10 + 4 + 1, concat("abcdefg", $count)),
($count * 10 + 5,$count * 10 + 5, $count * 10 + 5 + 1, concat("abcdefg", $count)),
($count * 10 + 6,$count * 10 + 6, $count * 10 + 6 + 1, concat("abcdefg", $count)),
($count * 10 + 7,$count * 10 + 7, $count * 10 + 7 + 1, concat("abcdefg", $count)),
($count * 10 + 8,$count * 10 + 8, $count * 10 + 8 + 1, concat("abcdefg", $count)),
($count * 10 + 9,$count * 10 + 9, $count * 10 + 9 + 1, concat("abcdefg", $count)),
($count * 10 + 10,$count * 10 + 10, $count * 10 + 10+ 1, concat("abcdefg", $count));
inc $count;
inc $count;
}
--enable_warnings
--enable_query_log
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
alter table t1 add column c1 int default 0, add column c2 varchar(100);
--disable_query_log
--disable_warnings
--let $count=300
while ($count < 500)
{
eval INSERT INTO t1 VALUES($count, repeat($count * 10, 512), $count * 10, $count, repeat($count, 5));
inc $count;
inc $count;
}
--enable_warnings
--enable_query_log
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*) from t1;
select count(c1) from t1;
select count(c2) from t1;
select count(c1) from t1 where c1 > 300;
select count(c1) from t1 where c1 < 30;
select a, c2, count(c1) from t1 where c1 > 480;
select c1, c2 from t1 where c1 > 480 and a < 495;
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*) from t1;
select count(c1) from t1;
select count(c2) from t1;
select count(c1) from t1 where c1 > 300;
select count(c1) from t1 where c1 < 30;
select a, c2, count(c1) from t1 where c1 > 480;
select c1, c2 from t1 where c1 > 480 and a < 495;
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*) from t1;
select count(c1) from t1;
select count(c2) from t1;
select count(c1) from t1 where c1 > 300;
select count(c1) from t1 where c1 < 30;
select a, c2, count(c1) from t1 where c1 > 480;
select c1, c2 from t1 where c1 > 480 and a < 495;
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*) from t1;
select count(c1) from t1;
select count(c2) from t1;
select count(c1) from t1 where c1 > 300;
select count(c1) from t1 where c1 < 30;
select a, c2, count(c1) from t1 where c1 > 480;
select c1, c2 from t1 where c1 > 480 and a < 495;
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
alter table t2 add column c4 bigint default 10, add column c5 bigint unsigned default 20;
alter table t2 add column c6 bigint default null;
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
select count(*),count(c4),count(c5),count(c6) from t2;
select min(c4),min(c5),min(c6) from t2;
select max(c4),max(c5),max(c6) from t2;
select sum(c4),sum(c5),sum(c6) from t2;
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
select count(*),count(c4),count(c5),count(c6) from t2;
select min(c4),min(c5),min(c6) from t2;
select max(c4),max(c5),max(c6) from t2;
select sum(c4),sum(c5),sum(c6) from t2;
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
select count(*),count(c4),count(c5),count(c6) from t2;
select min(c4),min(c5),min(c6) from t2;
select max(c4),max(c5),max(c6) from t2;
select sum(c4),sum(c5),sum(c6) from t2;
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
select count(*),count(c4),count(c5),count(c6) from t2;
select min(c4),min(c5),min(c6) from t2;
select max(c4),max(c5),max(c6) from t2;
select sum(c4),sum(c5),sum(c6) from t2;
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
drop table t1,t2;
alter system enable_table_without_all_cg = true;
alter system flush plan cache;
create table t1(a int, b varchar(3048), primary key (a), c int) with column group for all columns, each column;
create table t2(pk int, c1 int, c2 int unsigned, c3 varchar(100)) block_size=2048 with column group for all columns, each column;
sleep 10;
--disable_query_log
--disable_warnings
--let $count=1
while ($count < 300)
{
eval INSERT INTO t1 VALUES($count, repeat($count * 10, 512), $count * 10);
eval insert into t2(pk, c1,c2,c3) values
($count * 10 + 1,$count * 10 + 1, $count * 10 + 1 + 1, concat("abcdefg", $count)),
($count * 10 + 2,$count * 10 + 2, $count * 10 + 2 + 1, concat("abcdefg", $count)),
($count * 10 + 3,$count * 10 + 3, $count * 10 + 3 + 1, concat("abcdefg", $count)),
($count * 10 + 4,$count * 10 + 4, $count * 10 + 4 + 1, concat("abcdefg", $count)),
($count * 10 + 5,$count * 10 + 5, $count * 10 + 5 + 1, concat("abcdefg", $count)),
($count * 10 + 6,$count * 10 + 6, $count * 10 + 6 + 1, concat("abcdefg", $count)),
($count * 10 + 7,$count * 10 + 7, $count * 10 + 7 + 1, concat("abcdefg", $count)),
($count * 10 + 8,$count * 10 + 8, $count * 10 + 8 + 1, concat("abcdefg", $count)),
($count * 10 + 9,$count * 10 + 9, $count * 10 + 9 + 1, concat("abcdefg", $count)),
($count * 10 + 10,$count * 10 + 10, $count * 10 + 10+ 1, concat("abcdefg", $count));
inc $count;
inc $count;
}
--enable_warnings
--enable_query_log
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
alter table t1 add column c1 int default 0, add column c2 varchar(100);
--disable_query_log
--disable_warnings
--let $count=300
while ($count < 500)
{
eval INSERT INTO t1 VALUES($count, repeat($count * 10, 512), $count * 10, $count, repeat($count, 5));
inc $count;
inc $count;
}
--enable_warnings
--enable_query_log
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*) from t1;
select count(c1) from t1;
select count(c2) from t1;
select count(c1) from t1 where c1 > 300;
select count(c1) from t1 where c1 < 30;
select a, c2, count(c1) from t1 where c1 > 480;
select c1, c2 from t1 where c1 > 480 and a < 495;
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*) from t1;
select count(c1) from t1;
select count(c2) from t1;
select count(c1) from t1 where c1 > 300;
select count(c1) from t1 where c1 < 30;
select a, c2, count(c1) from t1 where c1 > 480;
select c1, c2 from t1 where c1 > 480 and a < 495;
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*) from t1;
select count(c1) from t1;
select count(c2) from t1;
select count(c1) from t1 where c1 > 300;
select count(c1) from t1 where c1 < 30;
select a, c2, count(c1) from t1 where c1 > 480;
select c1, c2 from t1 where c1 > 480 and a < 495;
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
alter table t2 add column c4 bigint default 10, add column c5 bigint unsigned default 20;
alter table t2 add column c6 bigint default null;
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
select count(*),count(c4),count(c5),count(c6) from t2;
select min(c4),min(c5),min(c6) from t2;
select max(c4),max(c5),max(c6) from t2;
select sum(c4),sum(c5),sum(c6) from t2;
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 0;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
select count(*),count(c4),count(c5),count(c6) from t2;
select min(c4),min(c5),min(c6) from t2;
select max(c4),max(c5),max(c6) from t2;
select sum(c4),sum(c5),sum(c6) from t2;
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = false;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
select count(*),count(c4),count(c5),count(c6) from t2;
select min(c4),min(c5),min(c6) from t2;
select max(c4),max(c5),max(c6) from t2;
select sum(c4),sum(c5),sum(c6) from t2;
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
select count(*),count(pk),min(pk),max(pk),sum(pk),min(c1),max(c1),sum(c1),min(c2),max(c2),sum(c2),min(c3),max(c3) from t2;
select count(*),count(c4),count(c5),count(c6) from t2;
select min(c4),min(c5),min(c6) from t2;
select max(c4),max(c5),max(c6) from t2;
select sum(c4),sum(c5),sum(c6) from t2;
select count(*),min(pk),max(c1),sum(c2),min(c3),max(c4),sum(c5),count(c6) from t2;
select count(*) from t1;
select count(*),count(a),min(a),max(a),sum(a),count(b),min(b),max(b),count(c),min(c),max(c),sum(c) from t1;
select count(*),count(c1),min(c1),max(c1),sum(c1),count(c2),min(c2),max(c2) from t1;
drop table t1,t2;
--disable_query_log
set @@recyclebin = on;
alter system enable_table_without_all_cg = false;
alter system set _pushdown_storage_level = 4;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
--enable_query_log

View File

@ -0,0 +1,71 @@
# owner: yuxiaozhe.yxz
# owner group: storage
# description: execute query which filter by scanning columnar store
--disable_query_log
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
set @@session.explicit_defaults_for_timestamp=off;
set session ob_trx_timeout=100000000000;
set @@recyclebin = off;
--enable_query_log
connection conn1;
--disable_warnings
drop table if exists ct1;
--enable_warnings
create table ct1(c1 int, c2 int) with column group for all columns, each column;
--disable_query_log
--let $count = 0
while($count < 500)
{
eval insert into ct1 values
($count * 20+ 1 , $count * 20 + 1 ),
($count * 20+ 2 , $count * 20 + 2 ),
($count * 20+ 3 , $count * 20 + 3 ),
($count * 20+ 4 , $count * 20 + 4 ),
($count * 20+ 5 , $count * 20 + 5 ),
($count * 20+ 6 , $count * 20 + 6 ),
($count * 20+ 7 , $count * 20 + 7 ),
($count * 20+ 8 , $count * 20 + 8 ),
($count * 20+ 9 , $count * 20 + 9 ),
($count * 20+ 10, $count * 20 + 10),
($count * 20+ 11, $count * 20 + 11),
($count * 20+ 12, $count * 20 + 12),
($count * 20+ 13, $count * 20 + 13),
($count * 20+ 14, $count * 20 + 14),
($count * 20+ 15, $count * 20 + 15),
($count * 20+ 16, $count * 20 + 16),
($count * 20+ 17, $count * 20 + 17),
($count * 20+ 18, $count * 20 + 18),
($count * 20+ 19, $count * 20 + 19),
($count * 20+ 20, $count * 20 + 20);
inc $count;
}
--enable_query_log
connection default;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
connection conn1;
select * from ct1 where c1 < 1;
select * from ct1 where c1 < 10;
select * from ct1 where c1 > 10000;
select * from ct1 where c2 < 1;
select * from ct1 where c2 < 10;
select * from ct1 where c2 > 10000;
select * from ct1 where c1 > 400 and c1 < 500;
select * from ct1 where c1 > 9000 and c1 < 9300;
select * from ct1 where c1 < 10 or c2 > 9900;
select * from ct1 where c1 < 10 or c2 < 20;
select * from ct1 where c1 < 10 and c2 > 9900;
select * from ct1 where c1 > 10 and c2 < 20;
select * from ct1 where c1 * 2 > 500 and c2 * 2 < 600;
select * from ct1 where c1 * 2 < 500 or (c2 * 2 > 19000 and c2 * 2 < 20000) ;
drop table ct1;
--disable_query_log
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,145 @@
# owner: yuxiaozhe.yxz
# owner group: storage
# description: execute query whith filter by scanning columnar store
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection conn1;
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
set @@recyclebin = off;
--enable_query_log
--disable_warnings
drop table if exists ct1;
--enable_warnings
set session ob_trx_timeout=100000000000;
create table ct1(c1 int primary key, c2 int, c3 number, c4 varchar(60000), c5 varchar(60000)) ROW_FORMAT = redundant COMPRESSION = 'none' with column group for all columns, each column;
--disable_query_log
--let $count = 0
while($count < 1000)
{
eval insert into ct1 values($count * 10, $count * 10, $count * 10, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 1, $count * 10 + 1, $count * 10 + 1, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 2, $count * 10 + 2, $count * 10 + 2, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 3, $count * 10 + 3, $count * 10 + 3, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 4, $count * 10 + 4, $count * 10 + 4, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 5, $count * 10 + 5, $count * 10 + 5, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 6, $count * 10 + 6, $count * 10 + 6, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 7, $count * 10 + 7, $count * 10 + 7, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 8, $count * 10 + 8, $count * 10 + 8, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 9, $count * 10 + 9, $count * 10 + 9, repeat(md5(rand()), 100), repeat(md5(rand()), 100));
--inc $count
}
--enable_query_log
connection default;
alter system minor freeze;
--source mysql_test/include/wait_minor_merge.inc
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
connection conn1;
select c1, c2, c3, length(c4) from ct1 where c1 < 1;
select c1, c2, c3, length(c4) from ct1 where c1 < 10;
select c1, c2, c3, length(c4) from ct1 where c1 > 10000;
select c1, c2, c3, length(c4) from ct1 where c2 < 1;
select c1, c2, c3, length(c4) from ct1 where c2 < 10;
select c1, c2, c3, length(c4) from ct1 where c2 > 10000;
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 and c2 < 20;
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 or c2 < 20;
select c1, c2, c3, length(c4) from ct1 where c1 < 1 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c1 < 10 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c1 > 10000 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c2 < 1 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c2 < 10 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c2 > 10000 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 and c2 < 20 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 or c2 < 20 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c5 is null;
select c1, c2, c3, length(c4), length(c5) from ct1 limit 20;
select c1, c2, c3, length(c4), length(c5) from ct1 limit 20 offset 5000;
select c1, c2, c3, length(c4), length(c5) from ct1 order by c1 desc limit 20;
select c1, c2, c3, length(c4), length(c5) from ct1 order by c1 desc limit 20 offset 5000;
select c1, c2, c3, length(c4) from ct1 where (c1 < 100 and c1 < 20 and c3 < 10) or ((c1 + c2) < 100 and c3 < 10 and (c1 + c2) >= 0);
# insert 1000 rows in minor
--disable_query_log
while($count < 1100)
{
eval insert into ct1 values($count * 10, $count * 10, $count * 10, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 1, $count * 10 + 1, $count * 10 + 1, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 2, $count * 10 + 2, $count * 10 + 2, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 3, $count * 10 + 3, $count * 10 + 3, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 4, $count * 10 + 4, $count * 10 + 4, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 5, $count * 10 + 5, $count * 10 + 5, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 6, $count * 10 + 6, $count * 10 + 6, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 7, $count * 10 + 7, $count * 10 + 7, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 8, $count * 10 + 8, $count * 10 + 8, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 9, $count * 10 + 9, $count * 10 + 9, repeat(md5(rand()), 100), repeat(md5(rand()), 100));
--inc $count
}
--enable_query_log
connection default;
alter system minor freeze;
--source mysql_test/include/wait_minor_merge.inc
# insert 1000 rows in memtable
connection conn1;
--disable_query_log
while($count < 1200)
{
eval insert into ct1 values($count * 10, $count * 10, $count * 10, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 1, $count * 10 + 1, $count * 10 + 1, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 2, $count * 10 + 2, $count * 10 + 2, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 3, $count * 10 + 3, $count * 10 + 3, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 4, $count * 10 + 4, $count * 10 + 4, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 5, $count * 10 + 5, $count * 10 + 5, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 6, $count * 10 + 6, $count * 10 + 6, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 7, $count * 10 + 7, $count * 10 + 7, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 8, $count * 10 + 8, $count * 10 + 8, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 9, $count * 10 + 9, $count * 10 + 9, repeat(md5(rand()), 100), repeat(md5(rand()), 100));
--inc $count
}
--enable_query_log
select c1, c2, c3, length(c4) from ct1 where c1 < 1;
select c1, c2, c3, length(c4) from ct1 where c1 < 10;
select c1, c2, c3, length(c4) from ct1 where c1 > 10000 limit 10;
select c1, c2, c3, length(c4) from ct1 where c2 < 1;
select c1, c2, c3, length(c4) from ct1 where c2 < 10;
select c1, c2, c3, length(c4) from ct1 where c2 > 10000 limit 10;
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 and c2 < 20;
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 or c2 < 20;
select c1, c2, c3, length(c4) from ct1 where c1 < 1 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c1 < 10 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c1 > 10000 order by c1 desc limit 10;
select c1, c2, c3, length(c4) from ct1 where c2 < 1 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c2 < 10 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c2 > 10000 order by c1 desc limit 10;
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 and c2 < 20 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c1 + c2 <= 100 or c2 < 20 order by c1 desc;
select c1, c2, c3, length(c4) from ct1 where c5 is null;
select c1, c2, c3, length(c4), length(c5) from ct1 limit 20;
select c1, c2, c3, length(c4), length(c5) from ct1 limit 20 offset 5000;
select c1, c2, c3, length(c4), length(c5) from ct1 order by c1 desc limit 20;
select c1, c2, c3, length(c4), length(c5) from ct1 order by c1 desc limit 20 offset 5000;
drop table ct1;
--disable_query_log
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,232 @@
# owner: yuxiaozhe.yxz
# owner group: storage
# description: execute query which scan columnar store and row store
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection conn1;
--disable_query_log
alter system enable_table_without_all_cg = true;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
set @@recyclebin = off;
--enable_query_log
--disable_warnings
drop table if exists ct1;
--enable_warnings
set session ob_trx_timeout=100000000000;
# create table without all column group
create table ct1(c1 int primary key, c2 int, c3 number, c4 varchar(60000), c5 varchar(60000)) ROW_FORMAT = redundant COMPRESSION = 'none' with column group for all columns, each column;
--disable_query_log
--let $count = 0
while($count < 1000)
{
eval insert into ct1 values($count * 10, $count * 10, $count * 10, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 1, $count * 10 + 1, $count * 10 + 1, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 2, $count * 10 + 2, $count * 10 + 2, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 3, $count * 10 + 3, $count * 10 + 3, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 4, $count * 10 + 4, $count * 10 + 4, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 5, $count * 10 + 5, $count * 10 + 5, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 6, $count * 10 + 6, $count * 10 + 6, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 7, $count * 10 + 7, $count * 10 + 7, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 8, $count * 10 + 8, $count * 10 + 8, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 9, $count * 10 + 9, $count * 10 + 9, repeat(md5(rand()), 100), repeat(md5(rand()), 100));
--inc $count
}
--enable_query_log
alter system minor freeze;
--source mysql_test/include/wait_minor_merge.inc
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
update ct1 set c3 = 0 where c1 = 0;
update ct1 set c3 = 0 where c1 = 200;
update ct1 set c3 = 0 where c1 = 1200;
update ct1 set c3 = 0 where c1 = 5200;
update ct1 set c3 = 0 where c1 = 8803;
update ct1 set c3 = 0 where c1 = 9907;
insert into ct1 values(10001, 0, 0, '', '');
insert into ct1 values(20000, 0, 0, '', '');
select c1,c2 from ct1 where c2 <= 9;
select c1,c2 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
update ct1 set c3 = 0 where c1 < 1000;
update ct1 set c3 = 0 where c1 < 2000 and c1 >= 1000;
update ct1 set c3 = 0 where c1 < 3000 and c1 >= 2000;
update ct1 set c3 = 0 where c1 < 4000 and c1 >= 3000;
update ct1 set c3 = 0 where c1 < 5000 and c1 >= 4000;
update ct1 set c3 = 0 where c1 < 6000 and c1 >= 5000;
update ct1 set c3 = 0 where c1 < 7000 and c1 >= 6000;
update ct1 set c3 = 0 where c1 < 8000 and c1 >= 7000;
update ct1 set c3 = 0 where c1 < 9000 and c1 >= 8000;
update ct1 set c3 = 0 where c1 < 10000 and c1 >= 9000;
alter system set _rowsets_enabled = false;
alter system set _pushdown_storage_level = 0;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
select count(*) from ct1;
alter system set _rowsets_enabled = false;
alter system set _pushdown_storage_level = 4;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
select count(*) from ct1;
alter system set _rowsets_enabled = true;
alter system set _pushdown_storage_level = 0;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
select count(*) from ct1;
alter system set _rowsets_enabled = true;
alter system set _pushdown_storage_level = 4;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
select count(*) from ct1;
drop table ct1;
alter system enable_table_without_all_cg = false;
alter system set _rowsets_enabled = true;
alter system flush plan cache;
# create table with all column group
create table ct1(c1 int primary key, c2 int, c3 number, c4 varchar(60000), c5 varchar(60000)) ROW_FORMAT = redundant COMPRESSION = 'none' with column group for all columns, each column;
--disable_query_log
--let $count = 0
while($count < 1000)
{
eval insert into ct1 values($count * 10, $count * 10, $count * 10, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 1, $count * 10 + 1, $count * 10 + 1, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 2, $count * 10 + 2, $count * 10 + 2, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 3, $count * 10 + 3, $count * 10 + 3, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 4, $count * 10 + 4, $count * 10 + 4, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 5, $count * 10 + 5, $count * 10 + 5, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 6, $count * 10 + 6, $count * 10 + 6, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 7, $count * 10 + 7, $count * 10 + 7, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 8, $count * 10 + 8, $count * 10 + 8, repeat(md5(rand()), 100), repeat(md5(rand()), 100)),
($count * 10 + 9, $count * 10 + 9, $count * 10 + 9, repeat(md5(rand()), 100), repeat(md5(rand()), 100));
--inc $count
}
--enable_query_log
alter system minor freeze;
--source mysql_test/include/wait_minor_merge.inc
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
update ct1 set c3 = 0 where c1 = 0;
update ct1 set c3 = 0 where c1 = 200;
update ct1 set c3 = 0 where c1 = 1200;
update ct1 set c3 = 0 where c1 = 5200;
update ct1 set c3 = 0 where c1 = 8803;
update ct1 set c3 = 0 where c1 = 9907;
insert into ct1 values(10001, 0, 0, '', '');
insert into ct1 values(20000, 0, 0, '', '');
select c1,c2 from ct1 where c2 <= 9;
select c1,c2 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
update ct1 set c3 = 0 where c1 < 1000;
update ct1 set c3 = 0 where c1 < 2000 and c1 >= 1000;
update ct1 set c3 = 0 where c1 < 3000 and c1 >= 2000;
update ct1 set c3 = 0 where c1 < 4000 and c1 >= 3000;
update ct1 set c3 = 0 where c1 < 5000 and c1 >= 4000;
update ct1 set c3 = 0 where c1 < 6000 and c1 >= 5000;
update ct1 set c3 = 0 where c1 < 7000 and c1 >= 6000;
update ct1 set c3 = 0 where c1 < 8000 and c1 >= 7000;
update ct1 set c3 = 0 where c1 < 9000 and c1 >= 8000;
update ct1 set c3 = 0 where c1 < 10000 and c1 >= 9000;
alter system set _rowsets_enabled = false;
alter system set _pushdown_storage_level = 0;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
select count(*) from ct1;
alter system set _rowsets_enabled = false;
alter system set _pushdown_storage_level = 4;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
select count(*) from ct1;
alter system set _rowsets_enabled = true;
alter system set _pushdown_storage_level = 0;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
select count(*) from ct1;
alter system set _rowsets_enabled = true;
alter system set _pushdown_storage_level = 4;
alter system flush plan cache;
select c1,c2,c3 from ct1 where c2 <= 9;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000));
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000));
select c1,c2,c3 from ct1 where c2 <= 9 order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000)) order by c1 desc;
select c1,c2,c3 from ct1 where c2 <= 9 and ((c1 >= 0 and c1 <= 3000) or (c1 >= 4000 and c1 <= 8000) or (c1 >= 9000 and c1 <= 30000)) order by c1 desc;
select count(*) from ct1;
drop table ct1;
--disable_query_log
set @@recyclebin = on;
alter system enable_table_without_all_cg = false;
alter system set _rowsets_enabled = true;
alter system set _pushdown_storage_level = 4;
alter system flush plan cache;
--enable_query_log

View File

@ -0,0 +1,60 @@
#owner: fenggu.yh
#owner group: storage
#tags: column_group
connect (sys_conn,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection sys_conn;
--disable_query_log
--disable_warnings
set @@recyclebin = off;
drop table if exists tt1;
drop table if exists tt2;
--enable_warnings
--enable_query_log
create table tt1(a int, b int, c int, primary key(a)) with column group for all columns, each column;
create index idx_tt1 on tt1(b);
create table tt2(d int, e int);
--error 1235
alter table tt1 drop column c;
--error 1235
alter table tt1 modify column c varchar(20);
let $tt1_table_id= query_get_value(select table_id from __all_virtual_table where table_name='tt1', table_id, 1);
let $tt2_table_id= query_get_value(select table_id from __all_virtual_table where table_name='tt2', table_id, 1);
## In tt1 table schema, there exists 5 column_group: __co_default, __co_all, __cg_a, __cg_b, __cg_c
let $tt1_cg_cnt = query_get_value(select count(*) as cg_cnt from __all_column_group where table_id=$tt1_table_id, cg_cnt, 1);
if ($tt1_cg_cnt != 5)
{
--echo unexpected column_group count of table tt1, real value is $tt1_cg_cnt
}
## tt1 default_type column_group will have none column_id mapping, cuz it has all_type & each_type column_group
let $tt1_default_cg_id = query_get_value(select column_group_id from __all_column_group where table_id=$tt1_table_id and column_group_name='__co_default', column_group_id, 1);
let $tt1_column_id_cnt = query_get_value(select count(*) as mapping_cnt from __all_column_group_mapping where table_id=$tt1_table_id and column_group_id=$tt1_default_cg_id, mapping_cnt, 1);
if ($tt1_column_id_cnt != 0)
{
--echo unexpected column_group mapping count of table tt1, real value is $tt1_column_id_cnt;
}
## In tt2 table schema, there exists only 1 column_group: __co_default
let $tt2_cg_cnt = query_get_value(select count(*) as cg_cnt from __all_column_group where table_id=$tt2_table_id, cg_cnt, 1);
if ($tt2_cg_cnt != 1)
{
--echo unexpected column_group count of table tt2, real value is $tt2_cg_cnt
}
## tt2 default_type column_group will have 3 column_id mapping, include d, e, pk_increment
let $tt2_default_cg_id = query_get_value(select column_group_id from __all_column_group where table_id=$tt2_table_id and column_group_name='__co_default', column_group_id, 1);
let $tt2_column_id_cnt = query_get_value(select count(*) as mapping_cnt from __all_column_group_mapping where table_id=$tt2_table_id and column_group_id=$tt2_default_cg_id, mapping_cnt, 1);
if ($tt2_column_id_cnt != 3)
{
--echo unexpected column_group mapping count of table tt2, real value is $tt2_column_id_cnt
}
drop table tt1;
drop table tt2;
--disable_query_log
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,94 @@
# owner: lixia.yq
# owner group: STORAGE
# description:
--disable_query_log
--disable_warnings
set @@recyclebin = off;
drop table if exists t1;
drop table if exists t2;
drop table if exists t3;
--enable_warnings
--enable_query_log
create table t1(a int, b varchar(3048), primary key (a)) with column group for all columns, each column;
create table t2(c0 int, c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int, c9 int, c10 int, c11 int, c12 int) with column group for all columns, each column;
create table t3(a int, b varchar(3048), primary key (a)) with column group for all columns, each column;
sleep 10;
insert into t1 values(1, 1);
insert into t2 values(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
insert into t3 values(1, 1);
--disable_query_log
--disable_warnings
--let $count=1
while ($count < 100)
{
eval INSERT INTO t1 VALUES($count * 10 , repeat($count * 10 ,512));
eval INSERT INTO t1 VALUES($count * 10 + 2, repeat($count * 10 + 2,512));
eval INSERT INTO t1 VALUES($count * 10 + 4, repeat($count * 10 + 4,512));
eval INSERT INTO t1 VALUES($count * 10 + 6, repeat($count * 10 + 6,512));
eval INSERT INTO t1 VALUES($count * 10 + 8, repeat($count * 10 + 8,512));
eval INSERT INTO t1 VALUES($count * 20 , repeat($count * 20 ,512));
eval INSERT INTO t1 VALUES($count * 20 + 2, repeat($count * 20 + 2,512));
eval INSERT INTO t1 VALUES($count * 20 + 4, repeat($count * 20 + 3,512));
eval INSERT INTO t1 VALUES($count * 20 + 6, repeat($count * 20 + 6,512));
eval INSERT INTO t1 VALUES($count * 20 + 8, repeat($count * 20 + 8,512));
inc $count;
inc $count;
}
--enable_warnings
--enable_query_log
select count(*) from t1;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
--disable_query_log
--disable_warnings
--let $count=1
while ($count < 100)
{
eval INSERT INTO t1 VALUES($count * 10 + 1, repeat($count * 10 ,512));
eval INSERT INTO t1 VALUES($count * 10 + 3, repeat($count * 10 + 2,512));
eval INSERT INTO t1 VALUES($count * 10 + 5, repeat($count * 10 + 4,512));
eval INSERT INTO t1 VALUES($count * 10 + 7, repeat($count * 10 + 6,512));
eval INSERT INTO t1 VALUES($count * 10 + 9, repeat($count * 10 + 8,512));
eval INSERT INTO t1 VALUES($count * 20 + 1, repeat($count * 20 ,512));
eval INSERT INTO t1 VALUES($count * 20 + 3, repeat($count * 20 + 2,512));
eval INSERT INTO t1 VALUES($count * 20 + 5, repeat($count * 20 + 3,512));
eval INSERT INTO t1 VALUES($count * 20 + 7, repeat($count * 20 + 6,512));
eval INSERT INTO t1 VALUES($count * 20 + 9, repeat($count * 20 + 8,512));
inc $count;
inc $count;
}
alter table t3 add column c int;
insert into t3 values(2, 1, 1);
--enable_warnings
--enable_query_log
select count(*) from t1;
select * from t3;
select c from t3;
select count(c) from t3;
--let $count=8000
eval INSERT INTO t1 VALUES($count, repeat($count,512));
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
select count(*) from t1;
select * from t3;
select c from t3;
drop table t1;
drop table t2;
drop table t3;
--disable_query_log
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,83 @@
# owner: huronghui.hrh
# owner group: STORAGE
# description:
--disable_query_log
--disable_warnings
set @@recyclebin = off;
drop table if exists t1;
drop table if exists t2;
drop table if exists t3;
--enable_warnings
--enable_query_log
create table t1(a int, b varchar(3048), primary key (a)) with column group for each column;
create table t2(c0 int, c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int, c9 int, c10 int, c11 int, c12 int) with column group for each column;
create table t3(a int, b varchar(3048), primary key (a)) with column group for each column;
sleep 10;
insert into t1 values(1, 1);
insert into t2 values(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
insert into t3 values(1, 1);
--disable_query_log
--disable_warnings
--let $count=1
while ($count < 100)
{
eval INSERT INTO t1 VALUES($count * 10 , repeat($count * 10 ,512));
eval INSERT INTO t1 VALUES($count * 10 + 2, repeat($count * 10 + 2,512));
eval INSERT INTO t1 VALUES($count * 10 + 4, repeat($count * 10 + 4,512));
eval INSERT INTO t1 VALUES($count * 10 + 6, repeat($count * 10 + 6,512));
eval INSERT INTO t1 VALUES($count * 10 + 8, repeat($count * 10 + 8,512));
eval INSERT INTO t1 VALUES($count * 20 , repeat($count * 20 ,512));
eval INSERT INTO t1 VALUES($count * 20 + 2, repeat($count * 20 + 2,512));
eval INSERT INTO t1 VALUES($count * 20 + 4, repeat($count * 20 + 3,512));
eval INSERT INTO t1 VALUES($count * 20 + 6, repeat($count * 20 + 6,512));
eval INSERT INTO t1 VALUES($count * 20 + 8, repeat($count * 20 + 8,512));
inc $count;
inc $count;
}
--enable_warnings
--enable_query_log
select count(*) from t1;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
--disable_query_log
--disable_warnings
--let $count=1
while ($count < 100)
{
eval INSERT INTO t1 VALUES($count * 10 + 1, repeat($count * 10 ,512));
eval INSERT INTO t1 VALUES($count * 10 + 3, repeat($count * 10 + 2,512));
eval INSERT INTO t1 VALUES($count * 10 + 5, repeat($count * 10 + 4,512));
eval INSERT INTO t1 VALUES($count * 10 + 7, repeat($count * 10 + 6,512));
eval INSERT INTO t1 VALUES($count * 10 + 9, repeat($count * 10 + 8,512));
eval INSERT INTO t1 VALUES($count * 20 + 1, repeat($count * 20 ,512));
eval INSERT INTO t1 VALUES($count * 20 + 3, repeat($count * 20 + 2,512));
eval INSERT INTO t1 VALUES($count * 20 + 5, repeat($count * 20 + 3,512));
eval INSERT INTO t1 VALUES($count * 20 + 7, repeat($count * 20 + 6,512));
eval INSERT INTO t1 VALUES($count * 20 + 9, repeat($count * 20 + 8,512));
inc $count;
inc $count;
}
alter table t3 add column c int;
insert into t3 values(2, 1, 1);
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
--enable_warnings
--enable_query_log
drop table t1;
drop table t2;
drop table t3;
--disable_query_log
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,109 @@
# owner: yht146439
# owner group: storage
# description: project with tile scanner
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
set @@recyclebin = off;
--disable_warnings
set session ob_query_timeout=10000000000;
drop table if exists ct1,ct2,ct3;
--enable_warnings
--disable_query_log
create table ct1 (c1 int, c2 int) with column group for all columns, each column;
create table ct2(c1 int, c2 varchar(100), c3 varchar(1000)) block_size=2048 with column group for all columns, each column;
create table ct3(c1 int primary key, c2 int, c3 int, c4 int) partition by hash(c1) partitions 2 with column group for all columns, each column;
--let $count = 0
while($count < 1000)
{
eval insert into ct1(c1,c2) values
($count * 10 + 1 ,$count * 10 + 1 + 1),
($count * 10 + 2 ,$count * 10 + 2 + 1),
($count * 10 + 3 ,$count * 10 + 3 + 1),
($count * 10 + 4 ,$count * 10 + 4 + 1),
($count * 10 + 5 ,$count * 10 + 5 + 1),
($count * 10 + 6 ,$count * 10 + 6 + 1),
($count * 10 + 7 ,$count * 10 + 7 + 1),
($count * 10 + 8 ,$count * 10 + 8 + 1),
($count * 10 + 9 ,$count * 10 + 9 + 1),
($count * 10 + 10,$count * 10 + 10+ 1);
eval insert into ct2(c1,c2,c3) values
($count * 10 + 1 ,repeat('a',($count * 10 + 1 ) % 100),repeat('a',($count * 10 + 1 ) % 1000)),
($count * 10 + 2 ,repeat('a',($count * 10 + 2 ) % 100),repeat('a',($count * 10 + 2 ) % 1000)),
($count * 10 + 3 ,repeat('a',($count * 10 + 3 ) % 100),repeat('a',($count * 10 + 3 ) % 1000)),
($count * 10 + 4 ,repeat('a',($count * 10 + 4 ) % 100),repeat('a',($count * 10 + 4 ) % 1000)),
($count * 10 + 5 ,repeat('a',($count * 10 + 5 ) % 100),repeat('a',($count * 10 + 5 ) % 1000)),
($count * 10 + 6 ,repeat('a',($count * 10 + 6 ) % 100),repeat('a',($count * 10 + 6 ) % 1000)),
($count * 10 + 7 ,repeat('a',($count * 10 + 7 ) % 100),repeat('a',($count * 10 + 7 ) % 1000)),
($count * 10 + 8 ,repeat('a',($count * 10 + 8 ) % 100),repeat('a',($count * 10 + 8 ) % 1000)),
($count * 10 + 9 ,repeat('a',($count * 10 + 9 ) % 100),repeat('a',($count * 10 + 9 ) % 1000)),
($count * 10 + 10,repeat('a',($count * 10 + 10) % 100),repeat('a',($count * 10 + 10) % 1000));
--inc $count
}
insert into ct3 select c1,c1,c1,c1 from ct1 limit 1000;
alter system minor freeze;
--source mysql_test/include/wait_minor_merge.inc
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
select * from ct1 where c1 > c2;
select * from ct1 where c1 < c2 limit 100;
select * from ct1 where c1 = c2;
select * from ct1 where c1 - c2 > 1;
select * from ct1 where c1 - c2 = -1 limit 100;
select * from ct1 where c1 - c2 = -1 order by c1 desc limit 100;
select * from ct1 where c1 + c2 < 20;
select * from ct1 where c1 + c2 > 19980;
select c1,c2 from ct1 where c1 + c2 < 1000;
select c1,char_length(c2) from ct2 where c1 > 9900;
select c1,char_length(c3) from ct2 where c1 > 9900;
select c1,char_length(c2),char_length(c3) from ct2 where c1 > 9000;
select max(c1) from ct2 where c2 < c3;
select min(c1),char_length(c2),char_length(c3) from ct2;
select * from ct1 limit 1 offset 1000;
select * from ct1 limit 100 offset 1000;
select * from ct1 limit 255 offset 1000;
select * from ct1 limit 256 offset 1000;
select * from ct1 limit 257 offset 1000;
select * from ct1 limit 100 offset 8190;
select * from ct1 limit 100 offset 8191;
select * from ct1 limit 100 offset 8192;
select * from ct1 limit 100 offset 8193;
select * from ct1 where c1 % 2 = 0 limit 100 offset 1000;
select * from ct1 where c1 - c2 = -1 limit 1 offset 10;
select * from ct1 where c1 - c2 = -1 limit 1 offset 100;
select * from ct1 where c1 - c2 = -1 limit 1 offset 1000;
select * from ct1 where c1 - c2 = -1 limit 1 offset 10000;
select * from ct1 where c1 - c2 = -1 limit 255 offset 1000;
select * from ct1 where c1 - c2 = -1 limit 256 offset 1000;
select * from ct1 where c1 - c2 = -1 limit 257 offset 1000;
select * from ct1 where c1 - c2 = -1 limit 1000 offset 1000;
select * from ct1 where c1 + c2 > 19980 and rand() < 2;
select * from ct1 where c1 + c2 > 19980 and rand() > 2;
select * from ct1 where c1 > 9990 and rand() + rand() > 2;
select * from ct1 where c1 > 9990 and rand() + rand() < 2;
select c1,char_length(c2),char_length(c3) from ct2 where c1 > 9000 and rand() < 2;
select c1,char_length(c2),char_length(c3) from ct2 where c1 > 9000 and rand() > 2;
select c1 from ct2 where rand() > 2 or c1 < 10;
select c1 from ct2 where rand() > 2 and c1 < 10;
select c1 from ct2 where rand() > 2 or rand() > 10;
select count(*) from ct1,ct2 where ct2.c1 < ct1.c1 and ct1.c1 < 100;
select sum(c1),sum(char_length(c2)),sum(char_length(c3)) from ct2;
select/*+ parallel(2)*/ sum(c1),sum(char_length(c2)),sum(char_length(c3)) from ct2;
select c2 from ct3 order by c1 desc limit 2;
select c2 from ct3 order by c1 desc limit 20;
select c2 from ct3 order by c1 asc limit 2;
select c2 from ct3 order by c1 asc limit 20;
drop table if exists ct1,ct2,ct3;
--disable_query_log
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,400 @@
count(1)
64
alter system minor freeze;
select count(1) from t1;
count(1)
70
select a, b, e from t1 where c > 'ab' order by a;
a b e
4 4 NULL
5 5 NULL
6 6 NULL
7 7 NULL
8 8 NULL
12 5 NULL
13 6 NULL
14 7 NULL
15 8 NULL
16 9 NULL
27 5 NULL
28 6 NULL
29 7 NULL
30 8 NULL
31 9 NULL
35 6 NULL
36 7 NULL
37 8 NULL
38 9 NULL
39 10 NULL
58 5 NULL
59 6 NULL
60 7 NULL
61 8 NULL
62 9 NULL
66 6 NULL
67 7 NULL
68 8 NULL
69 9 NULL
70 10 NULL
74 6 NULL
75 7 NULL
76 8 NULL
77 9 NULL
78 10 NULL
82 7 NULL
83 8 NULL
84 9 NULL
85 10 NULL
86 11 NULL
118 100 NULL
119 101 NULL
120 102 NULL
121 103 NULL
122 104 NULL
123 105 NULL
select a, b, e from t1 where e > 10 order by a;
a b e
select a, b, e, def1, def2 from t1 where def1 > 10 order by a;
a b e def1 def2
select a, b, e, def1, def2 from t1 where def2 > 10 order by a;
a b e def1 def2
1 1 NULL 10 20
2 2 NULL 10 20
3 3 NULL 10 20
4 4 NULL 10 20
5 5 NULL 10 20
6 6 NULL 10 20
7 7 NULL 10 20
8 8 NULL 10 20
9 2 NULL 10 20
10 3 NULL 10 20
11 4 NULL 10 20
12 5 NULL 10 20
13 6 NULL 10 20
14 7 NULL 10 20
15 8 NULL 10 20
16 9 NULL 10 20
24 2 NULL 10 20
25 3 NULL 10 20
26 4 NULL 10 20
27 5 NULL 10 20
28 6 NULL 10 20
29 7 NULL 10 20
30 8 NULL 10 20
31 9 NULL 10 20
32 3 NULL 10 20
33 4 NULL 10 20
34 5 NULL 10 20
35 6 NULL 10 20
36 7 NULL 10 20
37 8 NULL 10 20
38 9 NULL 10 20
39 10 NULL 10 20
55 2 NULL 10 20
56 3 NULL 10 20
57 4 NULL 10 20
58 5 NULL 10 20
59 6 NULL 10 20
60 7 NULL 10 20
61 8 NULL 10 20
62 9 NULL 10 20
63 3 NULL 10 20
64 4 NULL 10 20
65 5 NULL 10 20
66 6 NULL 10 20
67 7 NULL 10 20
68 8 NULL 10 20
69 9 NULL 10 20
70 10 NULL 10 20
71 3 NULL 10 20
72 4 NULL 10 20
73 5 NULL 10 20
74 6 NULL 10 20
75 7 NULL 10 20
76 8 NULL 10 20
77 9 NULL 10 20
78 10 NULL 10 20
79 4 NULL 10 20
80 5 NULL 10 20
81 6 NULL 10 20
82 7 NULL 10 20
83 8 NULL 10 20
84 9 NULL 10 20
85 10 NULL 10 20
86 11 NULL 10 20
118 100 NULL 10 20
119 101 NULL 10 20
120 102 NULL 10 20
121 103 NULL 10 20
122 104 NULL 10 20
123 105 NULL 10 20
select a, b, e, def1, def2 from t1 where def2 < def1 order by a;
a b e def1 def2
select a, b, e, def1, def2 from t1 where def2 > def1 order by a;
a b e def1 def2
1 1 NULL 10 20
2 2 NULL 10 20
3 3 NULL 10 20
4 4 NULL 10 20
5 5 NULL 10 20
6 6 NULL 10 20
7 7 NULL 10 20
8 8 NULL 10 20
9 2 NULL 10 20
10 3 NULL 10 20
11 4 NULL 10 20
12 5 NULL 10 20
13 6 NULL 10 20
14 7 NULL 10 20
15 8 NULL 10 20
16 9 NULL 10 20
24 2 NULL 10 20
25 3 NULL 10 20
26 4 NULL 10 20
27 5 NULL 10 20
28 6 NULL 10 20
29 7 NULL 10 20
30 8 NULL 10 20
31 9 NULL 10 20
32 3 NULL 10 20
33 4 NULL 10 20
34 5 NULL 10 20
35 6 NULL 10 20
36 7 NULL 10 20
37 8 NULL 10 20
38 9 NULL 10 20
39 10 NULL 10 20
55 2 NULL 10 20
56 3 NULL 10 20
57 4 NULL 10 20
58 5 NULL 10 20
59 6 NULL 10 20
60 7 NULL 10 20
61 8 NULL 10 20
62 9 NULL 10 20
63 3 NULL 10 20
64 4 NULL 10 20
65 5 NULL 10 20
66 6 NULL 10 20
67 7 NULL 10 20
68 8 NULL 10 20
69 9 NULL 10 20
70 10 NULL 10 20
71 3 NULL 10 20
72 4 NULL 10 20
73 5 NULL 10 20
74 6 NULL 10 20
75 7 NULL 10 20
76 8 NULL 10 20
77 9 NULL 10 20
78 10 NULL 10 20
79 4 NULL 10 20
80 5 NULL 10 20
81 6 NULL 10 20
82 7 NULL 10 20
83 8 NULL 10 20
84 9 NULL 10 20
85 10 NULL 10 20
86 11 NULL 10 20
118 100 NULL 10 20
119 101 NULL 10 20
120 102 NULL 10 20
121 103 NULL 10 20
122 104 NULL 10 20
123 105 NULL 10 20
alter table t1 add column f int generated always as (b*2) virtual;
select a, e, f from t1 where c > 'ab' order by a;
a e f
4 NULL 8
5 NULL 10
6 NULL 12
7 NULL 14
8 NULL 16
12 NULL 10
13 NULL 12
14 NULL 14
15 NULL 16
16 NULL 18
27 NULL 10
28 NULL 12
29 NULL 14
30 NULL 16
31 NULL 18
35 NULL 12
36 NULL 14
37 NULL 16
38 NULL 18
39 NULL 20
58 NULL 10
59 NULL 12
60 NULL 14
61 NULL 16
62 NULL 18
66 NULL 12
67 NULL 14
68 NULL 16
69 NULL 18
70 NULL 20
74 NULL 12
75 NULL 14
76 NULL 16
77 NULL 18
78 NULL 20
82 NULL 14
83 NULL 16
84 NULL 18
85 NULL 20
86 NULL 22
118 NULL 200
119 NULL 202
120 NULL 204
121 NULL 206
122 NULL 208
123 NULL 210
alter system major freeze tenant all;
alter table t1 add column g int;
select a, b, e from t1 where c > 'ab' order by a;
a b e
4 4 NULL
5 5 NULL
6 6 NULL
7 7 NULL
8 8 NULL
12 5 NULL
13 6 NULL
14 7 NULL
15 8 NULL
16 9 NULL
27 5 NULL
28 6 NULL
29 7 NULL
30 8 NULL
31 9 NULL
35 6 NULL
36 7 NULL
37 8 NULL
38 9 NULL
39 10 NULL
58 5 NULL
59 6 NULL
60 7 NULL
61 8 NULL
62 9 NULL
66 6 NULL
67 7 NULL
68 8 NULL
69 9 NULL
70 10 NULL
74 6 NULL
75 7 NULL
76 8 NULL
77 9 NULL
78 10 NULL
82 7 NULL
83 8 NULL
84 9 NULL
85 10 NULL
86 11 NULL
118 100 NULL
119 101 NULL
120 102 NULL
121 103 NULL
122 104 NULL
123 105 NULL
select a, b, f from t1 where c > 'ab' order by a;
a b f
4 4 8
5 5 10
6 6 12
7 7 14
8 8 16
12 5 10
13 6 12
14 7 14
15 8 16
16 9 18
27 5 10
28 6 12
29 7 14
30 8 16
31 9 18
35 6 12
36 7 14
37 8 16
38 9 18
39 10 20
58 5 10
59 6 12
60 7 14
61 8 16
62 9 18
66 6 12
67 7 14
68 8 16
69 9 18
70 10 20
74 6 12
75 7 14
76 8 16
77 9 18
78 10 20
82 7 14
83 8 16
84 9 18
85 10 20
86 11 22
118 100 200
119 101 202
120 102 204
121 103 206
122 104 208
123 105 210
select a, b, g from t1 where c > 'ab' order by a;
a b g
4 4 NULL
5 5 NULL
6 6 NULL
7 7 NULL
8 8 NULL
12 5 NULL
13 6 NULL
14 7 NULL
15 8 NULL
16 9 NULL
27 5 NULL
28 6 NULL
29 7 NULL
30 8 NULL
31 9 NULL
35 6 NULL
36 7 NULL
37 8 NULL
38 9 NULL
39 10 NULL
58 5 NULL
59 6 NULL
60 7 NULL
61 8 NULL
62 9 NULL
66 6 NULL
67 7 NULL
68 8 NULL
69 9 NULL
70 10 NULL
74 6 NULL
75 7 NULL
76 8 NULL
77 9 NULL
78 10 NULL
82 7 NULL
83 8 NULL
84 9 NULL
85 10 NULL
86 11 NULL
118 100 NULL
119 101 NULL
120 102 NULL
121 103 NULL
122 104 NULL
123 105 NULL
drop table t1;

View File

@ -0,0 +1,450 @@
count(1)
256
alter system major freeze tenant all;
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
select count(1) from t1;
count(1)
261
insert into t2 values (700,576);
select * from t2 where a = 700 or a <= 601;
a b
39 845
280 748
520 693
531 834
548 17
575 81
576 711
597 756
700 576
select * from t2 where a = 800 or a <= 601;
a b
39 845
280 748
520 693
531 834
548 17
575 81
576 711
597 756
alter system set _rowsets_enabled = true tenant = 'mysql';
alter system flush plan cache global;
delete from t3 where a = 2;
insert into t3 (a, b, c, d) values(31, 1, "a", repeat('a', 1000));
create table t4(a int) row_format = compressed with column group for all columns, each column;
insert into t4 values (-1), (0);
explain select /*+ LEADING(t4,t3) USE_NL(t3,t4) NO_USE_NL_MATERIALIZATION(t3) */ t3.a from t4,t3 where (t3.a >= t4.a + 31 and t3.a <= t4.a + 35) or (t3.a >= t4.a + 1 and t3.a <= t4.a + 5) order by t3.a;
Query Plan
================================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
----------------------------------------------------------------
|0 |SORT | |13 |36 |
|1 |└─NESTED-LOOP JOIN | |13 |35 |
|2 | ├─COLUMN TABLE FULL SCAN |t4 |2 |3 |
|3 | └─DISTRIBUTED TABLE RANGE SCAN|t3 |3 |16 |
================================================================
Outputs & filters:
-------------------------------------
0 - output([t3.a]), filter(nil), rowset=16
sort_keys([t3.a, ASC])
1 - output([t3.a]), filter(nil), rowset=16
conds(nil), nl_params_([t4.a(:0)]), use_batch=true
2 - output([t4.a]), filter(nil), rowset=16
access([t4.a]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t4.__pk_increment]), range(MIN ; MAX)always true
3 - output([t3.a]), filter(nil), rowset=16
access([GROUP_ID], [t3.a]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t3.a]), range(MIN ; MAX),
range_cond([t3.a >= :0 + 31 AND t3.a <= :0 + 35 OR t3.a >= :0 + 1 AND t3.a <= :0 + 5])
select /*+ LEADING(t4,t3) USE_NL(t3,t4) NO_USE_NL_MATERIALIZATION(t3) */ t3.a from t4,t3 where (t3.a >= t4.a + 31 and t3.a <= t4.a + 35) or (t3.a >= t4.a + 1 and t3.a <= t4.a + 5) order by t3.a;
a
1
1
3
3
4
4
5
30
31
31
alter system set _rowsets_enabled = false tenant = 'mysql';
alter system flush plan cache global;
alter system minor freeze tenant = all;
insert into t1 (b, c, d) values(9, "ab c", repeat('ab ', 300));
select count(1) from t1;
count(1)
262
select count(1) from t1 where b = 1;
count(1)
1
select count(1) from t1 where b != 2;
count(1)
256
select count(1) from t1 where b between 1 and 5;
count(1)
80
select count(1) from t1 where b > 4 and a > 0;
count(1)
213
select b, c from t1 where b = 9;
b c
9 abcde
9 abcde
9 abcd
9 abcde
9 abcd
9 abcd
9 abc
9 abcde
9 abcd
9 abcd
9 abc
9 abcd
9 abc
9 abc
9 ab c
9 abcde
9 abcd
9 abcd
9 abc
9 abcd
9 abc
9 abc
9 ab c
9 abcd
9 abc
9 abc
9 ab c
9 abc
9 ab c
9 ab c
9 abcd
9 ab
9 ab
9 ab
9 ab
9 ab
9 ab c
select 1 as rnd1 from t1 where rand() > 2;
rnd1
select a, b from t1 where rand() < 2 order by a desc limit 10;
a b
505 9
504 9
503 9
502 9
501 9
500 9
372 13
371 12
370 11
369 10
select count(1) from t1 where c < "ab ";
count(1)
32
select count(1) from t1 where c = "ab ";
count(1)
69
select count(1) from t1 where c > "ab ";
count(1)
161
select count(1) from t1 where c > "ab a";
count(1)
161
select count(1) from t1 where c IN ("ab c", "abc");
count(1)
65
select count(1) from t1 where c between "abaaa" and "abccc";
count(1)
32
select count(1) from t1 where b = 2 and c < "ab ";
count(1)
5
select count(1) from t1 where b != 2 and c = "ab ";
count(1)
68
select count(1) from t1 where b > 4 and c > "ab ";
count(1)
160
select count(1) from t1 where b between 1 and 5 and c > "ab a";
count(1)
7
select count(1) from t1 where b = 9 and c IN ("ab c", "abc");
count(1)
16
select count(1) from t1 where b * 2 > 10 and c between "abaaa" and "abccc";
count(1)
32
select count(1) from t1 where d between "abaaa" and "abccc";
count(1)
133
select count(1) from t1 where a > 10 or c between "abaaa" and "abccc";
count(1)
253
select count(1) from t1 where a < 30 and b > 4 and c > "ab ";
count(1)
12
select count(1) from t1 where b != 9 and c > "ab " order by b desc;
count(1)
129
select count(1) from t1 where b != 2 and c = "ab " order by c desc;
count(1)
68
select count(1) from t1 where b between 1 and 5 and c > "ab a" order by c desc;
count(1)
7
select count(1) from t1 where a < 100 and b * 2 > 10 and c between "abaaa" and "abccc" order by a;
count(1)
8
select count(1) from t1 where d between "abaaa" and "abccc" order by a desc;
count(1)
133
select count(1) from t1 where b = 9 order by a desc;
count(1)
37
select a, b, c from t1 where c > "ab a" and b < 8 order by a;
a b c
4 4 abcd
5 5 ab c
6 6 abc
7 7 abcd
12 5 abcd
13 6 ab c
14 7 abc
27 5 abcd
28 6 ab c
29 7 abc
35 6 abcd
36 7 ab c
58 5 abcd
59 6 ab c
60 7 abc
66 6 abcd
67 7 ab c
74 6 abcd
75 7 ab c
82 7 abcd
121 5 abcd
122 6 ab c
123 7 abc
129 6 abcd
130 7 ab c
137 6 abcd
138 7 ab c
145 7 abcd
153 6 abcd
154 7 ab c
161 7 abcd
169 7 abcd
248 5 abcd
249 6 ab c
250 7 abc
256 6 abcd
257 7 ab c
264 6 abcd
265 7 ab c
272 7 abcd
280 6 abcd
281 7 ab c
288 7 abcd
296 7 abcd
312 6 abcd
313 7 ab c
320 7 abcd
328 7 abcd
344 7 abcd
select a, b, c from t1 where c > "ab a" and b > 8 order by a desc;
a b c
505 9 ab c
372 13 abcde
371 12 abcd
370 11 abc
369 10 ab c
368 9 abcd
364 12 abcde
363 11 abcd
362 10 abc
361 9 ab c
356 12 abcde
355 11 abcd
354 10 abc
353 9 ab c
348 11 abcde
347 10 abcd
346 9 abc
340 12 abcde
339 11 abcd
338 10 abc
337 9 ab c
332 11 abcde
331 10 abcd
330 9 abc
324 11 abcde
323 10 abcd
322 9 abc
316 10 abcde
315 9 abcd
308 12 abcde
307 11 abcd
306 10 abc
305 9 ab c
300 11 abcde
299 10 abcd
298 9 abc
292 11 abcde
291 10 abcd
290 9 abc
284 10 abcde
283 9 abcd
276 11 abcde
275 10 abcd
274 9 abc
268 10 abcde
267 9 abcd
260 10 abcde
259 9 abcd
252 9 abcde
181 12 abcde
180 11 abcd
179 10 abc
178 9 ab c
173 11 abcde
172 10 abcd
171 9 abc
165 11 abcde
164 10 abcd
163 9 abc
157 10 abcde
156 9 abcd
149 11 abcde
148 10 abcd
147 9 abc
141 10 abcde
140 9 abcd
133 10 abcde
132 9 abcd
125 9 abcde
86 11 abcde
85 10 abcd
84 9 abc
78 10 abcde
77 9 abcd
70 10 abcde
69 9 abcd
62 9 abcde
39 10 abcde
38 9 abcd
31 9 abcde
16 9 abcde
select count(1) from t1 where UPPER(c) < "AB";
count(1)
32
select count(1) from t1 where STRCMP(c, d) > 0;
count(1)
97
select count(1) from t1 where STRCMP(c, d) < 0;
count(1)
165
select count(1) from t1 where a = b;
count(1)
8
select count(1) from t1 where a + b < 20;
count(1)
13
select count(1) from t1 where b * 2 > a;
count(1)
10
select a, b, c, d from t1 where STRCMP(c, d) > 0 and b < 10 order by a;
a b c d
4 4 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
5 5 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
7 7 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
12 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
13 6 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
15 8 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
27 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
28 6 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
30 8 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
35 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
36 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
38 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
58 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
59 6 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
61 8 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
66 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
67 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
69 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
74 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
75 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
77 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
82 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
83 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
121 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
122 6 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
124 8 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
129 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
130 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
132 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
137 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
138 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
140 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
145 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
146 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
153 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
154 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
156 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
161 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
162 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
169 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
170 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
177 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
178 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
248 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
249 6 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
251 8 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
256 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
257 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
259 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
264 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
265 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
267 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
272 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
273 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
280 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
281 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
283 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
288 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
289 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
296 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
297 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
304 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
305 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
312 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
313 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
315 9 abcd abbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbbabbb
320 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
321 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
328 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
329 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
336 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
337 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
344 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
345 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
352 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
353 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
360 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
361 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
368 9 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
505 9 ab c ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
drop table t1;
drop table t2;
drop table t3;
drop table t4;
alter system set _rowsets_enabled = true tenant = 'mysql';

View File

@ -0,0 +1,11 @@
count(1)
300
count(*)
100
count(*)
90
count(*)
10
a e f cnt
alter system major freeze tenant all;
drop table t_black;

View File

@ -0,0 +1,40 @@
create table t1(a int, b varchar(3048), primary key (a)) row_format = compressed with column group for all columns, each column;
create table t2(c0 int, c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int, c9 int, c10 int, c11 int, c12 int) row_format = compressed with column group for all columns, each column;
create table t3(a int, b varchar(3048), primary key (a)) row_format = compressed with column group for all columns, each column;
insert into t1 values(1, 1);
insert into t2 values(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
insert into t3 values(1, 1);
select count(*) from t1;
count(*)
2501
alter system major freeze;
select count(*) from t1;
count(*)
3001
select * from t3;
a b c
1 1 NULL
2 1 1
select c from t3;
c
NULL
1
select count(c) from t3;
count(c)
1
INSERT INTO t1 VALUES(12000, repeat(12000,512));
alter system major freeze;
select count(*) from t1;
count(*)
3002
select * from t3;
a b c
1 1 NULL
2 1 1
select c from t3;
c
NULL
1
drop table t1;
drop table t2;
drop table t3;

View File

@ -0,0 +1,414 @@
create table nn1(c1 int, c2 int, c3 varchar(10));
create table nn2 (c1 int primary key, c2 int unique, c3 int);
explain select (select count(x.c2) from nn1 a) as x from nn1 x;
Query Plan
===================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
---------------------------------------------------
|0 |SUBPLAN FILTER | |1 |5 |
|1 |├─SCALAR GROUP BY | |1 |3 |
|2 |│ └─TABLE FULL SCAN|x |1 |3 |
|3 |└─TABLE FULL SCAN |a |1 |3 |
===================================================
Outputs & filters:
-------------------------------------
0 - output([subquery(1)]), filter(nil), rowset=16
exec_params_([T_FUN_COUNT_SUM(T_FUN_COUNT(x.c2))(:0)]), onetime_exprs_(nil), init_plan_idxs_(nil), use_batch=false
1 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(x.c2))]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(x.c2))])
2 - output([T_FUN_COUNT(x.c2)]), filter(nil), rowset=16
access([x.c2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([x.__pk_increment]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_COUNT(x.c2)])
3 - output([:0]), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
explain select count(distinct c1,c3) from nn2;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY | |1 |3 |
|1 |└─TABLE FULL SCAN|nn2 |1 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(nn2.c1, nn2.c3)]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT(nn2.c1, nn2.c3)])
1 - output([nn2.c1], [nn2.c3]), filter(nil), rowset=16
access([nn2.c1], [nn2.c3]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([nn2.c1]), range(MIN ; MAX)always true
create table t1 (libname varchar(21), city varchar(256), primary key (libname));
insert into t1 values ('test1','city1'),('test2','city2');
insert into t1 values ('l', null);
replace into t1 values ('2', null);
replace into t1 values ('test3','city3'),('test4','city4');
create table t2(a int, b varchar(26), c date);
insert into t2 values(0, 'a', '2021-04-08');
insert into t2 values(null, null, null);
insert into t2 values(1, null, null);
explain select count(*);
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |SCALAR GROUP BY| |1 |1 |
|1 |└─EXPRESSION | |1 |1 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(*)]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT(*)])
1 - output([1]), filter(nil)
values({1})
select count(*);
count(*)
1
explain select count(*) from dual;
Query Plan
===============================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------
|0 |SCALAR GROUP BY| |1 |1 |
|1 |└─EXPRESSION | |1 |1 |
===============================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(*)]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT(*)])
1 - output([1]), filter(nil)
values({1})
select count(*) from dual;
count(*)
1
explain select count(*) from t1;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY | |1 |3 |
|1 |└─TABLE FULL SCAN|t1 |6 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
1 - output([T_FUN_COUNT(*)]), filter(nil), rowset=16
access(nil), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.libname]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_COUNT(*)])
select count(*) from t1;
count(*)
6
explain select count(city) from t1;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY | |1 |3 |
|1 |└─TABLE FULL SCAN|t1 |6 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.city))]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(t1.city))])
1 - output([T_FUN_COUNT(t1.city)]), filter(nil), rowset=16
access([t1.city]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t1.libname]), range(MIN ; MAX)always true,
pushdown_aggregation([T_FUN_COUNT(t1.city)])
select count(city) from t1;
count(city)
4
select count(null) from t1;
count(null)
0
select count(1) from t1;
count(1)
6
select count(a),count(b),count(c),count(*) from t2;
count(a) count(b) count(c) count(*)
2 1 1 3
select count(1),count(a),count(b),count(c),count(*) from t2 where a > 0;
count(1) count(a) count(b) count(c) count(*)
1 1 0 0 1
create table t3(a int, b int);
explain select count(distinct a) from t3;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY | |1 |3 |
|1 |└─TABLE FULL SCAN|t3 |1 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(distinct t3.a)]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT(distinct t3.a)])
1 - output([t3.a]), filter(nil), rowset=16
access([t3.a]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t3.__pk_increment]), range(MIN ; MAX)always true
explain select count(distinct a,b) from t3;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY | |1 |3 |
|1 |└─TABLE FULL SCAN|t3 |1 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(distinct t3.a, t3.b)]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT(distinct t3.a, t3.b)])
1 - output([t3.a], [t3.b]), filter(nil), rowset=16
access([t3.a], [t3.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t3.__pk_increment]), range(MIN ; MAX)always true
explain select count(a + b) from t3;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY | |1 |3 |
|1 |└─TABLE FULL SCAN|t3 |1 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(t3.a + t3.b)]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT(t3.a + t3.b)])
1 - output([t3.a], [t3.b]), filter(nil), rowset=16
access([t3.a], [t3.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t3.__pk_increment]), range(MIN ; MAX)always true
explain select a,count(b) from t3 group by a;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |HASH GROUP BY | |1 |3 |
|1 |└─TABLE FULL SCAN|t3 |1 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([t3.a], [T_FUN_COUNT(t3.b)]), filter(nil), rowset=16
group([t3.a]), agg_func([T_FUN_COUNT(t3.b)])
1 - output([t3.a], [t3.b]), filter(nil), rowset=16
access([t3.a], [t3.b]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t3.__pk_increment]), range(MIN ; MAX)always true
explain select count(*) from t3 for update;
Query Plan
=====================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |MATERIAL | |1 |3 |
|1 |└─SCALAR GROUP BY | |1 |3 |
|2 | └─FOR UPDATE | |1 |3 |
|3 | └─TABLE FULL SCAN|t3 |1 |3 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(*)]), filter(nil), rowset=16
1 - output([T_FUN_COUNT(*)]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT(*)])
2 - output(nil), filter(nil), rowset=16
lock tables(t3)
3 - output([t3.__pk_increment]), filter(nil), rowset=16
access([t3.__pk_increment]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t3.__pk_increment]), range(MIN ; MAX)always true
create table t4 (a bigint auto_increment primary key, b bigint, c char(100), d varchar(100), e bigint not null) row_format = compressed block_size = 2048 with column group for all columns, each column;
insert into t4 (a, b, c, d, e) values(1, 9, "a", repeat('a', 10),1);
insert into t4 (a, b, c, d, e) values(2, 2, "ab", repeat("ab", 10),1);
insert into t4 (a, b, c, d, e) values(3, 5, "abcd", repeat("ab", 10),1);
insert into t4 (a, b, c, d, e) values(4, 7, NULL, repeat("abcd", 10),1);
insert into t4 (a, b, c, d, e) values(5, NULL, "ab c ", repeat("a", 10),1);
insert into t4 (a, b, c, d, e) values(6, 9, NULL, repeat("abbb", 10),1);
insert into t4 (a, b, c, d, e) values(7, 1, "abc ", repeat("abcd", 10),1);
insert into t4 (a, b, c, d, e) values(8, 3, "abcde", NULL,1);
insert into t4 (a, b, c, d, e) values(9, 100, "abd", repeat("abc", 10),1);
insert into t4 (a, b, c, d, e) select a * 10 + 6, b + 1, c, d, e from t4;
insert into t4 (a, b, c, d, e) select a * 10 + 5, b + 1, c, d, e from t4;
insert into t4 (a, b, c, d, e) select a * 10 + 4, b + 1, c, d, e from t4;
insert into t4 (a, b, c, d, e) select a * 10 + 3, b + 1, c, d, e from t4;
insert into t4 (a, b, c, d, e) select a * 10 + 2, b + 1, c, d, e from t4;
insert into t4 (a, b, c, d, e) select a * 10 + 1, b + 1, c, d, e from t4;
insert into t4 (a, b, c, d, e) values(123456, 100, "abd", repeat("abc", 10),1);
insert into t4 (a, b, c, d, e) values(10000, 0, "ab c", repeat('ab ', 10),1);
alter system minor freeze tenant = all;
select count(1),count(*) from t4;
count(1) count(*)
578 578
select count(1),count(*),count(a),count(b),count(c),count(d) from t4;
count(1) count(*) count(a) count(b) count(c) count(d)
578 578 578 514 450 514
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > 5 and b is not null;
count(1) count(*) count(a) count(b) count(c) count(d)
510 510 510 510 383 446
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a < 1;
count(1) count(*) count(a) count(b) count(c) count(d)
0 0 0 0 0 0
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a = 123456;
count(1) count(*) count(a) count(b) count(c) count(d)
1 1 1 1 1 1
create table t_default_value(pk int primary key, a char(5));
insert into t_default_value values(1,'a');
alter system major freeze tenant = all;
select count(1),count(*) from t4;
count(1) count(*)
578 578
select count(*) from t4 where b < 1;
count(*)
1
select count(1),count(*),count(a),count(b),count(c),count(d) from t4;
count(1) count(*) count(a) count(b) count(c) count(d)
578 578 578 514 450 514
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > 5 and b is not null;
count(1) count(*) count(a) count(b) count(c) count(d)
510 510 510 510 383 446
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a < 1;
count(1) count(*) count(a) count(b) count(c) count(d)
0 0 0 0 0 0
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a = 123456;
count(1) count(*) count(a) count(b) count(c) count(d)
1 1 1 1 1 1
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > 46912;
count(1) count(*) count(a) count(b) count(c) count(d)
139 139 139 117 110 117
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a/2 > 23456;
count(1) count(*) count(a) count(b) count(c) count(d)
139 139 139 117 110 117
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > b;
count(1) count(*) count(a) count(b) count(c) count(d)
502 502 502 502 376 438
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a - b > 0;
count(1) count(*) count(a) count(b) count(c) count(d)
502 502 502 502 376 438
insert into t4 (a, b, c, d, e) values(10001, 0, "ab c", repeat('ab ', 10),1);
insert into t4 (a, b, c, d, e) values(null, null, null, null,1);
select count(1),count(*) from t4;
count(1) count(*)
580 580
select count(*),count(1),count(a),count(b),count(c),count(d) from t4;
count(*) count(1) count(a) count(b) count(c) count(d)
580 580 580 515 451 515
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > 5 and b is not null;
count(1) count(*) count(a) count(b) count(c) count(d)
511 511 511 511 384 447
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a < 1;
count(1) count(*) count(a) count(b) count(c) count(d)
0 0 0 0 0 0
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a = 123456;
count(1) count(*) count(a) count(b) count(c) count(d)
1 1 1 1 1 1
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a is null;
count(1) count(*) count(a) count(b) count(c) count(d)
0 0 0 0 0 0
select count(1),count(*),count(e) from t4;
count(1) count(*) count(e)
580 580 580
explain select a,b,c,d,count(a),count(b),count(c),count(d) from t4;
Query Plan
========================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
--------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |65 |
|1 |└─COLUMN TABLE FULL SCAN|t4 |580 |27 |
========================================================
Outputs & filters:
-------------------------------------
0 - output([t4.a], [t4.b], [t4.c], [t4.d], [T_FUN_COUNT(t4.a)], [T_FUN_COUNT(t4.b)], [T_FUN_COUNT(t4.c)], [T_FUN_COUNT(t4.d)]), filter(nil), rowset=256
group(nil), agg_func([T_FUN_COUNT(t4.a)], [T_FUN_COUNT(t4.b)], [T_FUN_COUNT(t4.c)], [T_FUN_COUNT(t4.d)])
1 - output([t4.a], [t4.b], [t4.c], [t4.d]), filter(nil), rowset=256
access([t4.a], [t4.b], [t4.c], [t4.d]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t4.a]), range(MIN ; MAX)always true
select a,b,c,d,count(a),count(b),count(c),count(d) from t4;
a b c d count(a) count(b) count(c) count(d)
1 9 a aaaaaaaaaa 580 515 451 515
create table t_empty(a int);
select a,count(*) from t_empty;
a count(*)
NULL 0
select a,b,c,d,count(*),count(a),count(b),count(c),count(d) from t4 where b > 1000000;
a b c d count(*) count(a) count(b) count(c) count(d)
NULL NULL NULL NULL 0 0 0 0 0
create table pt1(a int);
create table pt2(a int, b int, c int) partition by hash(a) partitions 4;
create table pt3(a int, b int, c int) partition by hash(a) partitions 4;
insert into pt1 values(1),(2),(3);
insert into pt2 values(1,1,1),(2,2,2),(3,3,3);
insert into pt3 values (null,null,null),(1,1,1),(2,2,2),(3,3,3);
select a,count(*) from pt2;
a count(*)
1 3
select a,count(*) from pt3;
a count(*)
NULL 4
select/*+ leading(pt1,tt) use_nl(pt1,tt) NO_USE_NL_MATERIALIZATION(tt) */ * from pt1,(select a,count(*) from pt2) as tt where pt1.a=tt.a;
a a count(*)
1 1 3
select/*+ leading(pt1,tt) use_nl(pt1,tt) NO_USE_NL_MATERIALIZATION(tt) */ * from pt1,(select a,count(*) from pt3) as tt where pt1.a=tt.a;
a a count(*)
alter table t_default_value add column b char(10) default 'b';
alter table t_default_value add column c char(10) default null;
select b,count(b) from t_default_value;
b count(b)
b 1
select c,count(c) from t_default_value;
c count(c)
NULL 0
insert into t_default_value values(2, 'aa', 'bb', 'cc');
select b,count(b) from t_default_value;
b count(b)
b 2
select c,count(c) from t_default_value;
c count(c)
NULL 1
SET sql_mode = 'STRICT_ALL_TABLES,PAD_CHAR_TO_FULL_LENGTH';
select char_length(a) from t_default_value;
char_length(a)
5
5
select char_length(a),count(a) from t_default_value;
char_length(a) count(a)
5 2
drop table if exists t1,t2,t3,t4,nn1,nn2,t_default_value,t_empty,pt1,pt2,pt3;
drop table if exists t;
create table t(pk int primary key, a char(5));
insert into t values(1,'a');
insert into t values(2,'b');
alter table t add column b char(10) as(concat(a, '1'));
explain select b,count(b) from t;
Query Plan
=================================================
|ID|OPERATOR |NAME|EST.ROWS|EST.TIME(us)|
-------------------------------------------------
|0 |SCALAR GROUP BY | |1 |3 |
|1 |└─TABLE FULL SCAN|t |2 |3 |
=================================================
Outputs & filters:
-------------------------------------
0 - output([column_conv(CHAR,utf8mb4_general_ci,length:10,NULL,cast(pad(concat(pad(cast(t.a, VARCHAR(1048576)), ' ', 5), '1'), ' ', 10), CHAR(1048576)))],
[T_FUN_COUNT(column_conv(CHAR,utf8mb4_general_ci,length:10,NULL,cast(pad(concat(pad(cast(t.a, VARCHAR(1048576)), ' ', 5), '1'), ' ', 10), CHAR(1048576))))]), filter(nil), rowset=16
group(nil), agg_func([T_FUN_COUNT(column_conv(CHAR,utf8mb4_general_ci,length:10,NULL,cast(pad(concat(pad(cast(t.a, VARCHAR(1048576)), ' ', 5), '1'),
' ', 10), CHAR(1048576))))])
1 - output([column_conv(CHAR,utf8mb4_general_ci,length:10,NULL,cast(pad(concat(pad(cast(t.a, VARCHAR(1048576)), ' ', 5), '1'), ' ', 10), CHAR(1048576)))]), filter(nil), rowset=16
access([t.a]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([t.pk]), range(MIN ; MAX)always true
select b,count(b) from t;
b count(b)
a 1 2
select a,count(b) from t;
a count(b)
a 2
select b,count(a) from t;
b count(a)
a 1 2
drop table t;

View File

@ -0,0 +1,44 @@
create table t1(a int, b varchar(3048), primary key (a), c int) row_format = compressed with column group for all columns, each column;
select count(*) from t1;
count(*)
150
alter system major freeze;
alter table t1 add column c1 int default 0, add column c2 varchar(100);
select count(*) from t1;
count(*)
250
select count(c1) from t1;
count(c1)
250
select count(c2) from t1;
count(c2)
100
select count(c1) from t1 where c1 > 300;
count(c1)
99
select count(c1) from t1 where c1 < 30;
count(c1)
150
select a, c2, count(c1) from t1 where c1 > 480;
a c2 count(c1)
482 482482482482482 9
select c1, c2 from t1 where c1 > 480 and a < 495;
c1 c2
482 482482482482482
484 484484484484484
486 486486486486486
488 488488488488488
490 490490490490490
492 492492492492492
494 494494494494494
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
b c2 count(c1)
49204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920492049204920 492492492492492 2
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
a c1 count(c1)
1 0 10
alter system major freeze;
select count(*) from t1;
count(*)
250
drop table t1;

View File

@ -0,0 +1,22 @@
alter system major freeze tenant all;
select count(1) from t1;
count(1)
32000
select count(1) from t1 where b <> 0;
count(1)
2000
select count(1) from t1 where b <> 0 and b <> 11;
count(1)
1800
select count(1) from t1 where b > 1 and b <> 11;
count(1)
1600
select count(1) from t1 where c = 'a';
count(1)
30000
select count(1) from t1 where c = 'x';
count(1)
1000
select count(1) from t1 where c <> 'a';
count(1)
2000

View File

@ -0,0 +1,359 @@
count(1)
352
alter system major freeze tenant all;
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
select count(1) from t1;
count(1)
357
alter system minor freeze tenant = all;
insert into t1 (b, c, d) values(9, "ab c", repeat('ab ', 300));
insert into t1 (b, c, d) values(NULL, NULL, repeat('abcd', 100));
select sum(a), sum(b) from t1;
sum(a) sum(b)
81642 2214
select avg(b), count(b) from t1;
avg(b) count(b)
7.5306 294
select count(1) from t1 where b is null;
count(1)
65
select count(1) from t1 where b is not null;
count(1)
294
select sum(a + b) from t1 where c is null;
sum(a + b)
7308
select sum(a - b) from t1 where b between 1 and 5;
sum(a - b)
13848
select sum(a + b) from t1 where c < "ab ";
sum(a + b)
7052
select sum(b) from t1 where c = "ab ";
sum(b)
365
select max(d) from t1 where c > "ab ";
max(d)
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd
select sum(b) from t1 where c is null;
sum(b)
240
select sum(b) from t1 where c <> 8;
sum(b)
1974
select max(c) from t1 where b is null;
max(c)
abcd
select max(c) from t1 where b is not null;
max(c)
abd
select sum(a+b) from t1 where c like 'abc%';
sum(a+b)
22244
select concat(d, c) from t1 where b > 4 and c > "ab ";
concat(d, c)
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababcd
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab c
abcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabc
NULL
abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabd
ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab c
select sum(b) from t1 where a < 30 and a > 10 and b > 4 and c > "ab ";
sum(b)
48
select sum(a+b) from t1 where b != 9 and c > "ab " group by c order by c;
sum(a+b)
4641
5524
6819
6981
7608
select max(b) from t1 where b != 2 group by c order by c;
max(b)
10
6
9
11
12
9
13
14
select min(b) from t1 where b is null group by c order by c;
min(b)
NULL
NULL
select max(b) from t1 where b is not null group by c order by c;
max(b)
10
6
9
11
12
9
13
14
select max(a), max(c) from t1 where c > "ab" group by b order by b;
max(a) max(c)
419 abcd
4 abcd
251 abcd
339 abcd
383 abcd
405 abcde
508 abd
407 abd
418 abd
420 abd
421 abd
423 abd
select sum(a), min(c) from t1 where c > "abc" and c < d group by b order by b;
sum(a) min(c)
select sum(a), min(c) from t1 where c < "abc" group by b order by b;
sum(a) min(c)
1 a
468 a
2258 a
4861 a
6090 a
4720 a
2600 ab
2249 ab
5674 ab
1710 ab c
418 ab c
select sum(a+b) from t1 where UPPER(c) < "AB";
sum(a+b)
7052
select avg(b) from t1 where STRCMP(c, d) > 0;
avg(b)
8.8351
select sum(a+b) from t1 where STRCMP(c, d) < 0;
sum(a+b)
31386
select max(c) from t1 where a + b < 20;
max(c)
abcde
select sum(a+b) from t1 where b * 2 > a;
sum(a+b)
94
select a, b, c, d from t1 where STRCMP(c, d) > 0 and b < 10 order by a;
a b c d
4 4 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
6 6 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
11 9 abd abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc
15 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
17 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
30 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
32 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
41 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
43 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
61 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
63 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
72 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
74 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
83 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
85 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
94 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
96 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
124 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
126 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
135 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
137 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
146 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
148 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
157 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
159 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
168 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
170 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
179 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
181 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
190 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
192 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
201 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
251 5 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
253 7 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
262 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
264 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
273 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
275 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
284 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
286 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
295 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
297 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
306 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
308 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
317 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
319 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
328 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
339 6 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
341 8 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
350 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
352 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
361 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
363 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
372 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
383 7 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
385 9 ab c aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
394 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
405 8 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
416 9 abcd abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
508 9 ab c ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab ab
drop table t1;

View File

@ -0,0 +1,81 @@
# owner: fenggu.yh
# description: add_column test for filter pushdown correctness in column_store encoding
--disable_query_log
set global max_allowed_packet=60000000;
set global ob_sql_work_area_percentage=80;
disconnect default;
sleep 1;
connect (default,$OBMYSQL_MS0,admin@mysql,admin,test,$OBMYSQL_PORT);
set @@recyclebin = off;
set ob_query_timeout=1000000000;
set ob_trx_timeout=1000000000;
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (a int auto_increment primary key, b bigint, c char(100), d varchar(1000)) row_format = compressed block_size = 2048 with column group for all columns, each column;
insert into t1 (b, c, d) values(1, "a", repeat('a', 1000));
insert into t1 (b, c, d) values(2, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(3, "ab ", repeat("ab", 500));
insert into t1 (b, c, d) values(4, "abcd", repeat("ab", 500));
insert into t1 (b, c, d) values(5, "ab c ", repeat("a", 1000));
insert into t1 (b, c, d) values(6, "abc ", repeat("abcd", 250));
insert into t1 (b, c, d) values(7, "abcd", repeat("abbb", 250));
insert into t1 (b, c, d) values(8, "abcde", repeat("accc", 250));
--let $loop=3
while($loop > 0)
{
insert into t1 (b, c, d) select b + 1, c, d from t1;
dec $loop;
}
select count(1) from t1;
alter table t1 add column e int;
alter table t1 add column def1 int default 10;
alter table t1 add column def2 int default 20;
insert into t1 (b, c, d) values(100, "abcde", repeat("accc", 250));
insert into t1 (b, c, d) values(101, "abcde", repeat("accc", 250));
insert into t1 (b, c, d) values(102, "abcde", repeat("accc", 250));
insert into t1 (b, c, d) values(103, "abcde", repeat("accc", 250));
insert into t1 (b, c, d) values(104, "abcde", repeat("accc", 250));
insert into t1 (b, c, d) values(105, "abcde", repeat("accc", 250));
--disable_query_log
connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection obsys;
--enable_query_log
alter system minor freeze;
--source mysql_test/include/wait_minor_merge.inc
select count(1) from t1;
select a, b, e from t1 where c > 'ab' order by a;
select a, b, e from t1 where e > 10 order by a;
select a, b, e, def1, def2 from t1 where def1 > 10 order by a;
select a, b, e, def1, def2 from t1 where def2 > 10 order by a;
select a, b, e, def1, def2 from t1 where def2 < def1 order by a;
select a, b, e, def1, def2 from t1 where def2 > def1 order by a;
alter table t1 add column f int generated always as (b*2) virtual;
select a, e, f from t1 where c > 'ab' order by a;
--disable_query_log
connection obsys;
--enable_query_log
alter system major freeze tenant all;
--source mysql_test/include/wait_daily_merge.inc
alter table t1 add column g int;
select a, b, e from t1 where c > 'ab' order by a;
select a, b, f from t1 where c > 'ab' order by a;
select a, b, g from t1 where c > 'ab' order by a;
drop table t1;
--disable_query_log
set global max_allowed_packet=16777216;
set global ob_sql_work_area_percentage=5;
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,159 @@
# owner: fenggu.yh
#tags: optimizer
# description: basic test for filter pushdown correctness in cs encoding
--disable_query_log
set global max_allowed_packet=60000000;
set global ob_sql_work_area_percentage=80;
disconnect default;
sleep 1;
connect (default,$OBMYSQL_MS0,admin@mysql,admin,test,$OBMYSQL_PORT);
set @@recyclebin = off;
set ob_query_timeout=1000000000;
set ob_trx_timeout=1000000000;
--disable_warnings
drop table if exists t1;
drop table if exists t2;
drop table if exists t3;
drop table if exists t4;
--enable_warnings
create table t1 (a int auto_increment primary key, b bigint, c char(100), d varchar(1000)) row_format = compressed block_size = 2048 with column group for all columns, each column;
insert into t1 (b, c, d) values(1, "a", repeat('a', 1000));
insert into t1 (b, c, d) values(2, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(3, "ab ", repeat("ab", 500));
insert into t1 (b, c, d) values(4, "abcd", repeat("ab", 500));
insert into t1 (b, c, d) values(5, "ab c ", repeat("a", 1000));
insert into t1 (b, c, d) values(6, "abc ", repeat("abcd", 250));
insert into t1 (b, c, d) values(7, "abcd", repeat("abbb", 250));
insert into t1 (b, c, d) values(8, "abcde", repeat("accc", 250));
--let $loop=5
while($loop > 0)
{
insert into t1 (b, c, d) select b + 1, c, d from t1;
dec $loop;
}
select count(1) from t1;
# bug
create table t2 (a smallint(94) NOT NULL, b smallint(40) DEFAULT NULL, primary key(a)) row_format = compressed with column group for all columns, each column;
insert into t2 values (39,845), (280,748), (520,693), (531,834), (548,17), (575,81), (576,711), (597,756), (680,594);
insert into t2 values (751,576), (763,941), (797,906), (806,792), (841,320), (888,10), (952,398), (974,321);
create table t3 (a int auto_increment primary key, b bigint, c char(100), d varchar(1000)) row_format = compressed block_size = 2048 with column group for all columns, each column;
insert into t3 (b, c, d) values(1, "a", repeat('a', 1000));
insert into t3 (b, c, d) values(2, "ab", repeat("ab", 500));
insert into t3 (b, c, d) values(3, "ab ", repeat("ab", 500));
insert into t3 (b, c, d) values(4, "abcd", repeat("ab", 500));
insert into t3 (b, c, d) values(5, "ab c ", repeat("a", 1000));
insert into t3 (b, c, d) values(6, "abc ", repeat("abcd", 250));
insert into t3 (b, c, d) values(7, "abcd", repeat("abbb", 250));
--let $loop=23
while($loop > 0)
{
insert into t3 (b, c, d) values(8, "abcde", repeat("accc", 250));
dec $loop;
}
--disable_query_log
connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection obsys;
--enable_query_log
alter system major freeze tenant all;
--source mysql_test/include/wait_daily_merge.inc
--let $loop=5
while($loop > 0)
{
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
dec $loop;
}
select count(1) from t1;
insert into t2 values (700,576);
select * from t2 where a = 700 or a <= 601;
select * from t2 where a = 800 or a <= 601;
connection obsys;
alter system set _rowsets_enabled = true tenant = 'mysql';
alter system flush plan cache global;
connection default;
delete from t3 where a = 2;
insert into t3 (a, b, c, d) values(31, 1, "a", repeat('a', 1000));
create table t4(a int) row_format = compressed with column group for all columns, each column;
insert into t4 values (-1), (0);
explain select /*+ LEADING(t4,t3) USE_NL(t3,t4) NO_USE_NL_MATERIALIZATION(t3) */ t3.a from t4,t3 where (t3.a >= t4.a + 31 and t3.a <= t4.a + 35) or (t3.a >= t4.a + 1 and t3.a <= t4.a + 5) order by t3.a;
select /*+ LEADING(t4,t3) USE_NL(t3,t4) NO_USE_NL_MATERIALIZATION(t3) */ t3.a from t4,t3 where (t3.a >= t4.a + 31 and t3.a <= t4.a + 35) or (t3.a >= t4.a + 1 and t3.a <= t4.a + 5) order by t3.a;
connection obsys;
alter system set _rowsets_enabled = false tenant = 'mysql';
alter system flush plan cache global;
connection obsys;
alter system minor freeze tenant = all;
--source mysql_test/include/wait_minor_merge.inc
insert into t1 (b, c, d) values(9, "ab c", repeat('ab ', 300));
# basic
select count(1) from t1;
select count(1) from t1 where b = 1;
select count(1) from t1 where b != 2;
select count(1) from t1 where b between 1 and 5;
select count(1) from t1 where b > 4 and a > 0;
select b, c from t1 where b = 9;
select 1 as rnd1 from t1 where rand() > 2;
select a, b from t1 where rand() < 2 order by a desc limit 10;
# padding
select count(1) from t1 where c < "ab ";
select count(1) from t1 where c = "ab ";
select count(1) from t1 where c > "ab ";
select count(1) from t1 where c > "ab a";
select count(1) from t1 where c IN ("ab c", "abc");
select count(1) from t1 where c between "abaaa" and "abccc";
select count(1) from t1 where b = 2 and c < "ab ";
select count(1) from t1 where b != 2 and c = "ab ";
select count(1) from t1 where b > 4 and c > "ab ";
select count(1) from t1 where b between 1 and 5 and c > "ab a";
select count(1) from t1 where b = 9 and c IN ("ab c", "abc");
select count(1) from t1 where b * 2 > 10 and c between "abaaa" and "abccc";
select count(1) from t1 where d between "abaaa" and "abccc";
select count(1) from t1 where a > 10 or c between "abaaa" and "abccc";
select count(1) from t1 where a < 30 and b > 4 and c > "ab ";
# sort
select count(1) from t1 where b != 9 and c > "ab " order by b desc;
select count(1) from t1 where b != 2 and c = "ab " order by c desc;
select count(1) from t1 where b between 1 and 5 and c > "ab a" order by c desc;
select count(1) from t1 where a < 100 and b * 2 > 10 and c between "abaaa" and "abccc" order by a;
select count(1) from t1 where d between "abaaa" and "abccc" order by a desc;
select count(1) from t1 where b = 9 order by a desc;
select a, b, c from t1 where c > "ab a" and b < 8 order by a;
select a, b, c from t1 where c > "ab a" and b > 8 order by a desc;
#virtual
select count(1) from t1 where UPPER(c) < "AB";
select count(1) from t1 where STRCMP(c, d) > 0;
select count(1) from t1 where STRCMP(c, d) < 0;
select count(1) from t1 where a = b;
select count(1) from t1 where a + b < 20;
select count(1) from t1 where b * 2 > a;
select a, b, c, d from t1 where STRCMP(c, d) > 0 and b < 10 order by a;
drop table t1;
drop table t2;
drop table t3;
drop table t4;
--disable_query_log
set global max_allowed_packet=16777216;
set global ob_sql_work_area_percentage=5;
set @@recyclebin = on;
--enable_query_log
connection obsys;
alter system set _rowsets_enabled = true tenant = 'mysql';

View File

@ -0,0 +1,68 @@
# owner: fenggu.yh
# description: test for black filter pushdown correctness in column_store encoding
--disable_query_log
set global ob_sql_work_area_percentage=80;
disconnect default;
sleep 1;
connect (default,$OBMYSQL_MS0,admin@mysql,admin,test,$OBMYSQL_PORT);
set @@recyclebin = off;
set ob_query_timeout=1000000000;
set ob_trx_timeout=1000000000;
--disable_warnings
drop table if exists t_black;
--enable_warnings
create table t_black(a int primary key, b int, c date, d text, e text, f text) row_format = compressed block_size = 2048 with column group for all columns, each column;
--let $count = 1
while($count < 101)
{
--let $stmt=insert into t_black(a,b,c,d,e,f) values ($count,$count,'2022-03-10','AAAAAAAAAAAAA', '', 'http://ck.compressed?filmId=REVENGERS');
eval $stmt;
inc $count;
}
while($count < 151)
{
--let $stmt=insert into t_black(a,b,c,d,e,f) values ($count,NULL,'2022-03-11',NULL, 'A1', 'http://ck.compressed?filmId=TTKKYY');
eval $stmt;
inc $count;
}
while($count < 201)
{
--let $stmt=insert into t_black(a,b,c,d,e,f) values ($count,NULL,'2022-03-11',NULL, 'B1', 'http://ck.compressed?filmId=PPCCII');
eval $stmt;
inc $count;
}
while($count < 251)
{
--let $stmt=insert into t_black(a,b,c,d,e,f) values ($count,NULL,'2022-03-11',NULL, 'C1', 'http://ck.compressed?filmId=LLPPRR');
eval $stmt;
inc $count;
}
while($count < 301)
{
--let $stmt=insert into t_black(a,b,c,d,e,f) values ($count,NULL,'2022-03-11',NULL, 'Mill', 'http://ck.compressed?filmId=TOMORROW');
eval $stmt;
inc $count;
}
select count(1) from t_black;
select count(*) from t_black where d like '%AAA%';
select count(*) from t_black where b/2 > 5;
select count(*) from t_black where b/2 > 5 and b/3 < 7;
select a, e, f, count(*) as cnt from t_black where f like '%REVENGE%' and e <> '' group by e order by cnt;
--disable_query_log
connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection obsys;
--enable_query_log
alter system major freeze tenant all;
--source mysql_test/include/wait_daily_merge.inc
drop table t_black;
--disable_query_log
set global ob_sql_work_area_percentage=5;
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,92 @@
# owner: fenggu.yh
# description:
--disable_query_log
--disable_warnings
set @@recyclebin = off;
drop table if exists t1;
drop table if exists t2;
drop table if exists t3;
--enable_warnings
--enable_query_log
create table t1(a int, b varchar(3048), primary key (a)) row_format = compressed with column group for all columns, each column;
create table t2(c0 int, c1 int, c2 int, c3 int, c4 int, c5 int, c6 int, c7 int, c8 int, c9 int, c10 int, c11 int, c12 int) row_format = compressed with column group for all columns, each column;
create table t3(a int, b varchar(3048), primary key (a)) row_format = compressed with column group for all columns, each column;
sleep 10;
insert into t1 values(1, 1);
insert into t2 values(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
insert into t3 values(1, 1);
--disable_query_log
--disable_warnings
--let $count=1
while ($count < 500)
{
eval INSERT INTO t1 VALUES($count * 10 , repeat($count * 10 ,512));
eval INSERT INTO t1 VALUES($count * 10 + 2, repeat($count * 10 + 2,512));
eval INSERT INTO t1 VALUES($count * 10 + 4, repeat($count * 10 + 4,512));
eval INSERT INTO t1 VALUES($count * 10 + 6, repeat($count * 10 + 6,512));
eval INSERT INTO t1 VALUES($count * 10 + 8, repeat($count * 10 + 8,512));
eval INSERT INTO t1 VALUES($count * 20 , repeat($count * 20 ,512));
eval INSERT INTO t1 VALUES($count * 20 + 2, repeat($count * 20 + 2,512));
eval INSERT INTO t1 VALUES($count * 20 + 4, repeat($count * 20 + 3,512));
eval INSERT INTO t1 VALUES($count * 20 + 6, repeat($count * 20 + 6,512));
eval INSERT INTO t1 VALUES($count * 20 + 8, repeat($count * 20 + 8,512));
inc $count;
inc $count;
}
--enable_warnings
--enable_query_log
select count(*) from t1;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
--disable_query_log
--disable_warnings
--let $count=300
while ($count < 400)
{
eval INSERT INTO t1 VALUES($count * 10 + 1, repeat($count * 10 ,512));
eval INSERT INTO t1 VALUES($count * 10 + 3, repeat($count * 10 + 2,512));
eval INSERT INTO t1 VALUES($count * 10 + 5, repeat($count * 10 + 4,512));
eval INSERT INTO t1 VALUES($count * 10 + 7, repeat($count * 10 + 6,512));
eval INSERT INTO t1 VALUES($count * 10 + 9, repeat($count * 10 + 8,512));
eval INSERT INTO t1 VALUES($count * 20 + 1, repeat($count * 20 ,512));
eval INSERT INTO t1 VALUES($count * 20 + 3, repeat($count * 20 + 2,512));
eval INSERT INTO t1 VALUES($count * 20 + 5, repeat($count * 20 + 3,512));
eval INSERT INTO t1 VALUES($count * 20 + 7, repeat($count * 20 + 6,512));
eval INSERT INTO t1 VALUES($count * 20 + 9, repeat($count * 20 + 8,512));
inc $count;
inc $count;
}
alter table t3 add column c int;
insert into t3 values(2, 1, 1);
--enable_warnings
--enable_query_log
select count(*) from t1;
select * from t3;
select c from t3;
select count(c) from t3;
--let $count=12000
eval INSERT INTO t1 VALUES($count, repeat($count,512));
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
select count(*) from t1;
select * from t3;
select c from t3;
drop table t1;
drop table t2;
drop table t3;
--disable_query_log
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,176 @@
# owner: fenggu.yh
# tags: optimizer
# description: pushdown aggregation(count) to storage layer
--disable_query_log
set global ob_sql_work_area_percentage=80;
sleep 1;
connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection default;
set @@recyclebin = off;
set ob_query_timeout=1000000000;
set ob_trx_timeout=1000000000;
--disable_warnings
drop table if exists t1,t2,t3,t4,nn1,nn2,t_default_value,t_empty,pt1,pt2,pt3;
--enable_warnings
--enable_query_log
# bugs in
create table nn1(c1 int, c2 int, c3 varchar(10));
create table nn2 (c1 int primary key, c2 int unique, c3 int);
explain select (select count(x.c2) from nn1 a) as x from nn1 x;
explain select count(distinct c1,c3) from nn2;
# count(*),count(column),count(1),count(null)
create table t1 (libname varchar(21), city varchar(256), primary key (libname));
insert into t1 values ('test1','city1'),('test2','city2');
insert into t1 values ('l', null);
replace into t1 values ('2', null);
replace into t1 values ('test3','city3'),('test4','city4');
create table t2(a int, b varchar(26), c date);
insert into t2 values(0, 'a', '2021-04-08');
insert into t2 values(null, null, null);
insert into t2 values(1, null, null);
explain select count(*);
select count(*);
explain select count(*) from dual;
select count(*) from dual;
explain select count(*) from t1;
select count(*) from t1;
explain select count(city) from t1;
select count(city) from t1;
select count(null) from t1;
select count(1) from t1;
select count(a),count(b),count(c),count(*) from t2;
select count(1),count(a),count(b),count(c),count(*) from t2 where a > 0;
# count(distinct),count(a+b),groupby,for update
create table t3(a int, b int);
explain select count(distinct a) from t3;
explain select count(distinct a,b) from t3;
explain select count(a + b) from t3;
explain select a,count(b) from t3 group by a;
explain select count(*) from t3 for update;
# minor&major freeze
create table t4 (a bigint auto_increment primary key, b bigint, c char(100), d varchar(100), e bigint not null) row_format = compressed block_size = 2048 with column group for all columns, each column;
insert into t4 (a, b, c, d, e) values(1, 9, "a", repeat('a', 10),1);
insert into t4 (a, b, c, d, e) values(2, 2, "ab", repeat("ab", 10),1);
insert into t4 (a, b, c, d, e) values(3, 5, "abcd", repeat("ab", 10),1);
insert into t4 (a, b, c, d, e) values(4, 7, NULL, repeat("abcd", 10),1);
insert into t4 (a, b, c, d, e) values(5, NULL, "ab c ", repeat("a", 10),1);
insert into t4 (a, b, c, d, e) values(6, 9, NULL, repeat("abbb", 10),1);
insert into t4 (a, b, c, d, e) values(7, 1, "abc ", repeat("abcd", 10),1);
insert into t4 (a, b, c, d, e) values(8, 3, "abcde", NULL,1);
insert into t4 (a, b, c, d, e) values(9, 100, "abd", repeat("abc", 10),1);
--let $loop=6
while($loop > 0)
{
eval insert into t4 (a, b, c, d, e) select a * 10 + $loop, b + 1, c, d, e from t4;
dec $loop;
}
insert into t4 (a, b, c, d, e) values(123456, 100, "abd", repeat("abc", 10),1);
insert into t4 (a, b, c, d, e) values(10000, 0, "ab c", repeat('ab ', 10),1);
## minor freeze
connection obsys;
alter system minor freeze tenant = all;
--source mysql_test/include/wait_minor_merge.inc
connection default;
select count(1),count(*) from t4;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > 5 and b is not null;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a < 1;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a = 123456;
create table t_default_value(pk int primary key, a char(5));
insert into t_default_value values(1,'a');
## major freeze
connection obsys;
alter system major freeze tenant = all;
--source mysql_test/include/wait_daily_merge.inc
connection default;
select count(1),count(*) from t4;
select count(*) from t4 where b < 1;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > 5 and b is not null;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a < 1;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a = 123456;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > 46912;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a/2 > 23456;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > b;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a - b > 0;
## memtable
insert into t4 (a, b, c, d, e) values(10001, 0, "ab c", repeat('ab ', 10),1);
insert into t4 (a, b, c, d, e) values(null, null, null, null,1);
connection default;
select count(1),count(*) from t4;
select count(*),count(1),count(a),count(b),count(c),count(d) from t4;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a > 5 and b is not null;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a < 1;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a = 123456;
select count(1),count(*),count(a),count(b),count(c),count(d) from t4 where a is null;
select count(1),count(*),count(e) from t4;
# mysql compatibility
explain select a,b,c,d,count(a),count(b),count(c),count(d) from t4;
select a,b,c,d,count(a),count(b),count(c),count(d) from t4;
create table t_empty(a int);
select a,count(*) from t_empty;
select a,b,c,d,count(*),count(a),count(b),count(c),count(d) from t4 where b > 1000000;
create table pt1(a int);
create table pt2(a int, b int, c int) partition by hash(a) partitions 4;
create table pt3(a int, b int, c int) partition by hash(a) partitions 4;
insert into pt1 values(1),(2),(3);
insert into pt2 values(1,1,1),(2,2,2),(3,3,3);
insert into pt3 values (null,null,null),(1,1,1),(2,2,2),(3,3,3);
select a,count(*) from pt2;
select a,count(*) from pt3;
select/*+ leading(pt1,tt) use_nl(pt1,tt) NO_USE_NL_MATERIALIZATION(tt) */ * from pt1,(select a,count(*) from pt2) as tt where pt1.a=tt.a;
select/*+ leading(pt1,tt) use_nl(pt1,tt) NO_USE_NL_MATERIALIZATION(tt) */ * from pt1,(select a,count(*) from pt3) as tt where pt1.a=tt.a;
# default values & padding
alter table t_default_value add column b char(10) default 'b';
alter table t_default_value add column c char(10) default null;
select b,count(b) from t_default_value;
select c,count(c) from t_default_value;
insert into t_default_value values(2, 'aa', 'bb', 'cc');
select b,count(b) from t_default_value;
select c,count(c) from t_default_value;
SET sql_mode = 'STRICT_ALL_TABLES,PAD_CHAR_TO_FULL_LENGTH';
select char_length(a) from t_default_value;
select char_length(a),count(a) from t_default_value;
# clean
drop table if exists t1,t2,t3,t4,nn1,nn2,t_default_value,t_empty,pt1,pt2,pt3;
## bug:
--disable_warnings
drop table if exists t;
--enable_warnings
create table t(pk int primary key, a char(5));
insert into t values(1,'a');
insert into t values(2,'b');
alter table t add column b char(10) as(concat(a, '1'));
explain select b,count(b) from t;
select b,count(b) from t;
select a,count(b) from t;
select b,count(a) from t;
drop table t;
--disable_query_log
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,63 @@
# owner: fenggu.yh
# description: create column_store encoding table and add column
--disable_query_log
--disable_warnings
set @@recyclebin = off;
drop table if exists t1;
--enable_warnings
--enable_query_log
create table t1(a int, b varchar(3048), primary key (a), c int) row_format = compressed with column group for all columns, each column;
sleep 10;
--disable_query_log
--disable_warnings
--let $count=1
while ($count < 300)
{
eval INSERT INTO t1 VALUES($count, repeat($count * 10, 512), $count * 10);
inc $count;
inc $count;
}
--enable_warnings
--enable_query_log
select count(*) from t1;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
alter table t1 add column c1 int default 0, add column c2 varchar(100);
--disable_query_log
--disable_warnings
--let $count=300
while ($count < 500)
{
eval INSERT INTO t1 VALUES($count, repeat($count * 10, 512), $count * 10, $count, repeat($count, 5));
inc $count;
inc $count;
}
--enable_warnings
--enable_query_log
select count(*) from t1;
select count(c1) from t1;
select count(c2) from t1;
select count(c1) from t1 where c1 > 300;
select count(c1) from t1 where c1 < 30;
select a, c2, count(c1) from t1 where c1 > 480;
select c1, c2 from t1 where c1 > 480 and a < 495;
select b, c2, count(c1) from t1 where c1 > 490 and a < 495;
select a, c1, count(c1) from t1 where a <20 and c1 != 80 and c1 != 6 and c1 < 30;
alter system major freeze;
--source mysql_test/include/wait_daily_merge.inc
select count(*) from t1;
drop table t1;
--disable_query_log
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,56 @@
# owner: fenggu.yh
# description: check correctness of cs white filter when executing const dict encoding
--disable_query_log
set global max_allowed_packet=60000000;
set global ob_sql_work_area_percentage=80;
disconnect default;
sleep 1;
connect (default,$OBMYSQL_MS0,admin@mysql,admin,test,$OBMYSQL_PORT);
set @@recyclebin = off;
set ob_query_timeout=1000000000;
set ob_trx_timeout=1000000000;
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (a int auto_increment primary key, b smallint(6), c varchar(10)) row_format = compressed block_size = 2048 with column group for all columns, each column;
--let $loop=1000
while($loop > 0)
{
insert into t1 (b, c) values(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),
(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),
(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a');
dec $loop;
}
--let $loop=200
while($loop > 0)
{
insert into t1 (b, c) values(1, 'x'),(11, 'x'),(21, 'x'),(31, 'x'),(41, 'x'),(51, 'y'),(61, 'y'),(71, 'y'),(81, 'y'),(91, 'y');
dec $loop;
}
--disable_query_log
connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection obsys;
--enable_query_log
alter system major freeze tenant all;
--source mysql_test/include/wait_daily_merge.inc
select count(1) from t1;
select count(1) from t1 where b <> 0;
select count(1) from t1 where b <> 0 and b <> 11;
select count(1) from t1 where b > 1 and b <> 11;
select count(1) from t1 where c = 'a';
select count(1) from t1 where c = 'x';
select count(1) from t1 where c <> 'a';
#drop table t1;
--disable_query_log
set global max_allowed_packet=16777216;
set global ob_sql_work_area_percentage=5;
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,106 @@
# owner: fenggu.yh
# description: null and aggregation func test for filter pushdown correctness
--disable_query_log
set global max_allowed_packet=60000000;
set global ob_sql_work_area_percentage=80;
disconnect default;
sleep 1;
connect (default,$OBMYSQL_MS0,admin@mysql,admin,test,$OBMYSQL_PORT);
set @@recyclebin = off;
set ob_query_timeout=1000000000;
set ob_trx_timeout=1000000000;
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (a int auto_increment primary key, b bigint, c char(100), d varchar(1000)) row_format = compressed block_size = 2048 with column group for all columns, each column;
insert into t1 (b, c, d) values(1, "a", repeat('a', 1000));
insert into t1 (b, c, d) values(2, "ab", repeat("ab", 500));
insert into t1 (b, c, d) values(3, "ab ", repeat("ab", 500));
insert into t1 (b, c, d) values(4, "abcd", repeat("ab", 500));
insert into t1 (b, c, d) values(5, NULL, repeat("abcd", 250));
insert into t1 (b, c, d) values(6, "ab c ", repeat("a", 1000));
insert into t1 (b, c, d) values(NULL, "abcd", repeat("abbb", 250));
insert into t1 (b, c, d) values(7, "abc ", repeat("abcd", 250));
insert into t1 (b, c, d) values(8, "abcde", NULL);
insert into t1 (b, c, d) values(NULL, NULL, NULL);
insert into t1 (b, c, d) values(9, "abd", repeat("abc", 200));
--let $loop=5
while($loop > 0)
{
insert into t1 (b, c, d) select b + 1, c, d from t1;
dec $loop;
}
select count(1) from t1;
--disable_query_log
connect (obsys,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection obsys;
--enable_query_log
alter system major freeze tenant all;
--source mysql_test/include/wait_daily_merge.inc
--let $loop=5
while($loop > 0)
{
insert into t1 (b, c, d) values(9, "ab", repeat("ab", 500));
dec $loop;
}
select count(1) from t1;
connection obsys;
alter system minor freeze tenant = all;
--source mysql_test/include/wait_minor_merge.inc
insert into t1 (b, c, d) values(9, "ab c", repeat('ab ', 300));
insert into t1 (b, c, d) values(NULL, NULL, repeat('abcd', 100));
# basic
select sum(a), sum(b) from t1;
select avg(b), count(b) from t1;
select count(1) from t1 where b is null;
select count(1) from t1 where b is not null;
select sum(a + b) from t1 where c is null;
select sum(a - b) from t1 where b between 1 and 5;
# padding
select sum(a + b) from t1 where c < "ab ";
select sum(b) from t1 where c = "ab ";
select max(d) from t1 where c > "ab ";
select sum(b) from t1 where c is null;
select sum(b) from t1 where c <> 8;
select max(c) from t1 where b is null;
select max(c) from t1 where b is not null;
select sum(a+b) from t1 where c like 'abc%';
# multi selection
select concat(d, c) from t1 where b > 4 and c > "ab ";
select sum(b) from t1 where a < 30 and a > 10 and b > 4 and c > "ab ";
# group by
select sum(a+b) from t1 where b != 9 and c > "ab " group by c order by c;
select max(b) from t1 where b != 2 group by c order by c;
select min(b) from t1 where b is null group by c order by c;
select max(b) from t1 where b is not null group by c order by c;
select max(a), max(c) from t1 where c > "ab" group by b order by b;
select sum(a), min(c) from t1 where c > "abc" and c < d group by b order by b;
select sum(a), min(c) from t1 where c < "abc" group by b order by b;
#virtual
select sum(a+b) from t1 where UPPER(c) < "AB";
select avg(b) from t1 where STRCMP(c, d) > 0;
select sum(a+b) from t1 where STRCMP(c, d) < 0;
select max(c) from t1 where a + b < 20;
select sum(a+b) from t1 where b * 2 > a;
select a, b, c, d from t1 where STRCMP(c, d) > 0 and b < 10 order by a;
drop table t1;
--disable_query_log
set global max_allowed_packet=16777216;
set global ob_sql_work_area_percentage=5;
set @@recyclebin = on;
--enable_query_log

View File

@ -0,0 +1,101 @@
# owner: fenggu.yh
#tags: optimizer
--result_format 4
--explain_protocol 0
--disable_query_log
connect (syscon, $OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection syscon;
alter system set ob_compaction_schedule_interval = '3s';
set @@recyclebin = off;
--sleep 2
connection default;
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (c1 int auto_increment primary key, c2 bigint, c3 varchar(100)) row_format = compressed block_size = 2048 with column group for all columns, each column;
--let $loop=10
while($loop > 0)
{
eval insert into t1 (c2, c3) values ($loop, concat("abc", $loop));
dec $loop;
}
insert into t1 (c2, c3) values(5, NULL);
--let $loop=9
while($loop > 0)
{
insert into t1 (c2, c3) select c2 + 1, c3 from t1;
dec $loop;
}
insert into t1 (c2, c3) values(NULL, NULL);
select count(1) from t1;
connection syscon;
alter system major freeze tenant all;
--source mysql_test/include/wait_daily_merge.inc
connection default;
--let $loop=5
while($loop > 0)
{
eval insert into t1 (c2, c3) values ($loop, concat("abc", $loop));
dec $loop;
}
select count(1) from t1;
delete from t1 where c1 = 20;
update t1 set c2 = 50 where c1 = 30;
update t1 set c2 = 90 where c1 = 100;
insert into t1 (c2, c3) values (1, " abc "), (1, "ccc"), (1000, " abc "), (1000, "ccc");
select count(1) from t1;
--enable_query_log
# white
select count(1) from t1 where c2 != 10;
select count(1) from t1 where c2 > 10;
select count(1) from t1 where c2 < 10;
select sum(c2) from t1 where c3 is null;
select sum(c2) from t1 where c3 is null;
select sum(c2) from t1 where c3 is not null;
select sum(c1+c2) from t1 where c3 = "abc5";
select sum(c2) from t1 where c3 > "abc5";
select sum(c1+c2) from t1 where c3 < "abc5";
# black
select c1, c2 from t1 where c3 like "%abc5" order by c1;
select sum(c2) from t1 where c3 in ("abc2", "ccc");
select c1, c2 from t1 where (c1 + c2) > 15 order by c1;
# and / or
select sum(c2) from t1 where c2 > 10 and c3 > "abc5";
select sum(c2) from t1 where c2 > 10 or c3 > "abc5";
select sum(c2) from t1 where c2 <= 10 and (c3 > "abc5" or c2 = 50);
select sum(c2) from t1 where c2 > 10 or c3 like "%abc5" or c2 = 5;
select c1, c2 from t1 where (c1, c2) > (9, 9) and (c1, c2) < (15, 15) order by c1;
select c1, c2 from t1 where (c1, c2) > (9, 9) or c3 in ("abc5") order by c1;
select c1, c2 from t1 where (c1, c2) < (9, 9) or (c1, c2) >= (50, 50) or c3 in ("abc7") order by c1;
select c1, c2 from t1 where (c1, c2) > (9, 9) and (c1, c2) < (15, 15) and c3 = "abc1" order by c1;
# group by
select sum(c1) from t1 where c2 > 10 and c3 > "abc5" group by c3 order by c2;
select sum(c1) from t1 where c2 > 10 or c3 > "abc5" group by c2, c3;
select sum(c1) from t1 where c2 <= 10 and (c3 > "abc5" or c2 = 50) group by c3;
select sum(c1) from t1 where c2 > 10 or c3 like "%abc5" or c2 = 5 group by c2;
select sum(c1) from t1 where (c1, c2) > (9, 9) and (c1, c2) < (15, 15) group by c2;
select sum(c1) from t1 where (c1, c2) > (9, 9) or c3 in ("abc5") group by c2;
select sum(c1) from t1 where (c1, c2) < (9, 9) or (c1, c2) >= (50, 50) or c3 in ("abc7") group by c2;
select sum(c1) from t1 where (c1, c2) > (9, 9) and (c1, c2) < (15, 15) and c3 = "abc1" group by c2;
drop table t1;
--disable_query_log
set @@recyclebin = on;
--enable_query_log
--enable_warnings
--disable_query_log
connection syscon;
--enable_query_log

View File

@ -0,0 +1,48 @@
DROP TABLE IF EXISTS a1;
SELECT NULL AND 1, 1 AND NULL, 0 AND NULL, NULL and 0;
NULL AND 1 1 AND NULL 0 AND NULL NULL and 0
NULL NULL 0 0
create table a1 (rowkey_suffix int primary key, price int);
insert into a1(rowkey_suffix, price) values (0,0),(1,1),(2,2);
SELECT * FROM a1 where NOT(price AND 1);
rowkey_suffix price
0 0
SELECT * FROM a1 where NOT(1 AND price);
rowkey_suffix price
0 0
SELECT * FROM a1 where (price AND 1)=false;
rowkey_suffix price
0 0
SELECT * FROM a1 where (1 AND price)=false;
rowkey_suffix price
0 0
SELECT * FROM a1 where (1 AND price)=true;
rowkey_suffix price
1 1
2 2
SELECT * FROM a1 where (1 AND price) IS NULL;
rowkey_suffix price
select * from a1 where not price between 2 and 3;
rowkey_suffix price
0 0
1 1
select * from a1 where not price between 2 and 3;
rowkey_suffix price
0 0
1 1
select rowkey_suffix, price is false, price is true, price is unknown from a1;
rowkey_suffix price is false price is true price is unknown
0 1 0 0
1 0 1 0
2 0 1 0
select rowkey_suffix, price is not false, price is not true, price is not unknown from a1;
rowkey_suffix price is not false price is not true price is not unknown
0 0 1 1
1 1 0 1
2 1 0 1
DROP TABLE a1;
DROP TABLE IF EXISTS ob_new_sql_test;
create table ob_new_sql_test ( c0 varchar(20), c1 int primary key);
insert into ob_new_sql_test (c0, c1) values ('hello', 0);
insert into ob_new_sql_test (c0, c1) values ('hello', 1);
drop table ob_new_sql_test;

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,119 @@
drop table if exists t1,t2,t3,t4;
create table t1(pk1 int, pk2 int, pk3 int, extra int, primary key(pk1));
insert into t1(pk1,pk2,pk3) values(1,1,1),(2,2,2);
select * from t1;
pk1 pk2 pk3 extra
1 1 1 NULL
2 2 2 NULL
insert into t1 values(3,null,null,NULL);
select * from t1;
pk1 pk2 pk3 extra
1 1 1 NULL
2 2 2 NULL
3 NULL NULL NULL
select * from t1 where extra = NULL;
pk1 pk2 pk3 extra
select * from t1 where extra != NULL;
pk1 pk2 pk3 extra
select * from t1 where extra is NULL;
pk1 pk2 pk3 extra
1 1 1 NULL
2 2 2 NULL
3 NULL NULL NULL
select * from t1 where extra is not NULL;
pk1 pk2 pk3 extra
select * from t1 where pk1 is NULL and pk2 is NULL and pk3 is NULL;
pk1 pk2 pk3 extra
select * from t1 where pk1 = NULL and pk3 = NULL and pk3 = NULL;
pk1 pk2 pk3 extra
select * from t1 where pk1 != NULL and pk2 != NULL and pk3 != NULL;
pk1 pk2 pk3 extra
select * from t1 where pk1 is not NULL and pk2 is not NULL and pk3 is not NULL;
pk1 pk2 pk3 extra
1 1 1 NULL
2 2 2 NULL
select * from t1 where pk1 in (NULL) and pk2 in (NULL) and pk3 in (NULL);
pk1 pk2 pk3 extra
select * from t1 where pk1 in (NULL,1) and pk2 in (NULL, 1);
pk1 pk2 pk3 extra
1 1 1 NULL
update t1 set extra=4 where pk1 = NULL and pk2 = NULL and pk3 = NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 NULL
2 2 2 NULL
3 NULL NULL NULL
update t1 set extra=1 where pk1 is NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 NULL
2 2 2 NULL
3 NULL NULL NULL
update t1 set extra=2 where pk1 is NULL and pk2 is NULL and pk3 is NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 NULL
2 2 2 NULL
3 NULL NULL NULL
update t1 set extra=3 where pk1 is not NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 3
2 2 2 3
3 NULL NULL 3
update t1 set extra=4 where pk1 is not NULL and pk2 is not NULL and pk3 is not NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 4
2 2 2 4
3 NULL NULL 3
update t1 set extra=5 where pk1 != NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 4
2 2 2 4
3 NULL NULL 3
update t1 set extra=6 where pk1 != NULL and pk2 != NULL and pk3 != NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 4
2 2 2 4
3 NULL NULL 3
delete from t1 where pk1 != NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 4
2 2 2 4
3 NULL NULL 3
delete from t1 where pk1 != NULL and pk2 != NULL and pk3 != NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 4
2 2 2 4
3 NULL NULL 3
delete from t1 where pk1 = NULL and pk2 = NULL and pk3 = NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 4
2 2 2 4
3 NULL NULL 3
delete from t1 where pk1 is NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 4
2 2 2 4
3 NULL NULL 3
delete from t1 where pk1 is NULL and pk2 is NULL and pk3 is NULL;
select * from t1;
pk1 pk2 pk3 extra
1 1 1 4
2 2 2 4
3 NULL NULL 3
delete from t1 where pk1 is not NULL and pk2 is not NULL and pk3 is not NULL;
select * from t1;
pk1 pk2 pk3 extra
3 NULL NULL 3
delete from t1 where pk1 is not NULL;
select * from t1;
pk1 pk2 pk3 extra
drop table t1;

View File

@ -0,0 +1,208 @@
drop table if exists t1;
create table t1 (c1 int, c2 varchar(1024), c3 int, primary key (c1));
basic case
replace into t1 values (1, 'a', 1), (2, 'b', NULL);
select * from t1;
c1 c2 c3
1 a 1
2 b NULL
delete from t1 where c1=1;
replace into t1 values (1, 'a', 2);
select * from t1;
c1 c2 c3
1 a 2
2 b NULL
replace into t1 values (1, 'a', 3), (1, 'a', 4);
select * from t1;
c1 c2 c3
1 a 4
2 b NULL
only rowkey
replace into t1(c1,c2) values (3, 'c');
select * from t1;
c1 c2 c3
1 a 4
2 b NULL
3 c NULL
type conversion
replace into t1 values ('4', 4, '4'), (5, 'd', '5');
select * from t1;
c1 c2 c3
1 a 4
2 b NULL
3 c NULL
4 4 4
5 d 5
cons rowkey
replace into t1 (c3, c2, c1) values (9, 'a', 8), (7, 'b', 6);
select * from t1;
c1 c2 c3
1 a 4
2 b NULL
3 c NULL
4 4 4
5 d 5
6 b 7
8 a 9
null rowkey
replace into t1 values (10, 1, NULL), (11, NULL, 2), (12, 'ULL', 3);
select * from t1;
c1 c2 c3
1 a 4
2 b NULL
3 c NULL
4 4 4
5 d 5
6 b 7
8 a 9
10 1 NULL
11 NULL 2
12 ULL 3
ps
transaction
start transaction;
replace into t1 values (31, 'x', 13);
select * from t1 where c1 = 31 and c2 = 'x' for update;
c1 c2 c3
31 x 13
rollback;
select * from t1;
c1 c2 c3
1 a 4
2 b NULL
3 c NULL
4 4 4
5 d 5
6 b 7
8 a 9
10 1 NULL
11 NULL 2
12 ULL 3
start transaction;
replace into t1 values (31, 'x', 13);
select * from t1 where c1 = 31 and c2 = 'x' for update;
c1 c2 c3
31 x 13
commit;
select * from t1;
c1 c2 c3
1 a 4
2 b NULL
3 c NULL
4 4 4
5 d 5
6 b 7
8 a 9
10 1 NULL
11 NULL 2
12 ULL 3
31 x 13
set autocommit = 0;
replace into t1 values (32, 'y', 23);
replace into t1 values (32, 'y', 32);
commit;
select * from t1;
c1 c2 c3
1 a 4
2 b NULL
3 c NULL
4 4 4
5 d 5
6 b 7
8 a 9
10 1 NULL
11 NULL 2
12 ULL 3
31 x 13
32 y 32
set autocommit = 1;
NOP
+1 support
CreateTime/ModifyTime columns
drop table if exists t2;
create table t2 (c1 int primary key, ct datetime default now(), mt datetime default now());
replace into t2 values (1, '2013-05-29 10:10:10', '2013-05-29 10:10:10');
replace into t2 (c1) values (2);
select c1 from t2;
c1
1
2
clean up
drop table t1, t2;
not query static data
create table t1(c1 int primary key, c2 int, c3 varchar(10) not null, c4 timestamp not null default '2014-02-20 00:00:00.000');
replace into t1 values(1, 1, 'aaa', '2014-02-21'), (2, 2, 'bbb', '2014-02-22'), (3, 3, 'ccc', '2014-02-23'), (4, 4, 'bbb', '2014-02-24');
select * from t1;
c1 c2 c3 c4
1 1 aaa 2014-02-21 00:00:00
2 2 bbb 2014-02-22 00:00:00
3 3 ccc 2014-02-23 00:00:00
4 4 bbb 2014-02-24 00:00:00
replace into t1(c1, c2, c3) values(5, 5, 'aaa');
select * from t1;
c1 c2 c3 c4
1 1 aaa 2014-02-21 00:00:00
2 2 bbb 2014-02-22 00:00:00
3 3 ccc 2014-02-23 00:00:00
4 4 bbb 2014-02-24 00:00:00
5 5 aaa 2014-02-20 00:00:00
replace into t1(c1, c3) values(1, 'abc'), (2, 'bac'), (3, 'cba');
select * from t1;
c1 c2 c3 c4
1 NULL abc 2014-02-20 00:00:00
2 NULL bac 2014-02-20 00:00:00
3 NULL cba 2014-02-20 00:00:00
4 4 bbb 2014-02-24 00:00:00
5 5 aaa 2014-02-20 00:00:00
drop table if exists t1;
create table t1(
c1 int primary key,
c2 float not null,
c3 varchar(20) not null default 'aaa',
c4 timestamp not null default '2014-02-20');
create index t1_c3 on t1(c3);
query static data
replace into t1(c1, c2) values(1, 2.0), (2, 3.0), (3, 4.0);
select * from t1;
c1 c2 c3 c4
1 2 aaa 2014-02-20 00:00:00
2 3 aaa 2014-02-20 00:00:00
3 4 aaa 2014-02-20 00:00:00
replace into t1(c1, c2) values(1, 3.0);
select * from t1;
c1 c2 c3 c4
1 3 aaa 2014-02-20 00:00:00
2 3 aaa 2014-02-20 00:00:00
3 4 aaa 2014-02-20 00:00:00
test replace default now()
drop table if exists t1;
create table t1(
c1 int primary key,
c2 int,
c3 varchar(20),
c4 timestamp default now());
replace into t1 values(1, 1, 'aa', now());
select * from t1;
c1 c2 c3 c4
1 1 aa time
replace into t1(c1, c2) values(1, 2), (2, 3), (3, 4);
select * from t1;
c1 c2 c3 c4
1 2 NULL time
2 3 NULL time
3 4 NULL time
replace into t1(c1, c4) values(2, date_add(now(), interval 1 minute)), (4, date_add(now(), interval 2 minute));
select * from t1;
c1 c2 c3 c4
1 2 NULL time
2 NULL NULL time
3 4 NULL time
4 NULL NULL time
drop table t1;
create table t1 (c1 int primary key, c2 int, unique key i2 (c2));
replace into t1 values (1, 1);
replace into t1 values (2, 1);
select * from t1;
c1 c2
2 1
drop table t1;

View File

@ -0,0 +1,186 @@
drop table if exists t1, t2;
create table t1 (pk int primary key, v varchar(254));
insert into t1 values (1, 'This is a test ');
insert into t1 values (2, 'Some sample data');
insert into t1 values (3, ' garbage ');
insert into t1 values (4, ' This is a test ');
insert into t1 values (5, 'This is a test');
insert into t1 values (6, 'Hello world');
insert into t1 values (7, 'Foo bar');
insert into t1 values (8, 'This is a test');
insert into t1 values (9, 'MySQL varchar test');
insert into t1 values (10, 'test MySQL varchar');
insert into t1 values (11, 'This is a long string to have some random length data included');
insert into t1 values (12, 'Short string');
insert into t1 values (13, 'VSS');
insert into t1 values (14, 'Some samples');
insert into t1 values (15, 'Bar foo');
insert into t1 values (16, 'Bye');
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples
select * from t1 where v like 'This is a test' order by v;
pk v
5 This is a test
8 This is a test
select * from t1 where v='This is a test' order by v;
pk v
1 This is a test
5 This is a test
8 This is a test
select * from t1 where v like 'S%' order by v;
pk v
12 Short string
2 Some sample data
14 Some samples

View File

@ -0,0 +1,57 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
#### owner: kaizhan.dkz
#### owner group: sql3
#### description: Test of boolean operations with NULL
--enable_abort_on_error
#
# Test of boolean operations with NULL
#
--disable_warnings
DROP TABLE IF EXISTS a1;
--enable_warnings
#SELECT IF(NULL AND 1, 1, 2), IF(1 AND NULL, 1, 2);
SELECT NULL AND 1, 1 AND NULL, 0 AND NULL, NULL and 0;
create table a1 (rowkey_suffix int primary key, price int);
insert into a1(rowkey_suffix, price) values (0,0),(1,1),(2,2);
#SELECT * FROM a1 WHERE IF(price AND 1, 0, 1);
#SELECT * FROM a1 WHERE IF(1 AND price, 0, 1);
SELECT * FROM a1 where NOT(price AND 1);
SELECT * FROM a1 where NOT(1 AND price);
SELECT * FROM a1 where (price AND 1)=false;
SELECT * FROM a1 where (1 AND price)=false;
SELECT * FROM a1 where (1 AND price)=true;
SELECT * FROM a1 where (1 AND price) IS NULL;
# WL#638 - Behaviour of NOT does not follow SQL specification
#set sql_mode='high_not_precedence';
select * from a1 where not price between 2 and 3;
#set sql_mode=default;
select * from a1 where not price between 2 and 3;
# SQL boolean tests
select rowkey_suffix, price is false, price is true, price is unknown from a1;
select rowkey_suffix, price is not false, price is not true, price is not unknown from a1;
# Verify that NULL optimisation works in AND clause:
#SET @a=0, @b=0;
#SELECT * FROM a1 WHERE NULL AND (@a:=@a+1);
#SELECT * FROM a1 WHERE NOT(a>=0 AND NULL AND (@b:=@b+1));
#SELECT * FROM a1 WHERE a=2 OR (NULL AND (@a:=@a+1));
#SELECT * FROM a1 WHERE NOT(a=2 OR (NULL AND (@b:=@b+1)));
DROP TABLE a1;
#
## http://bugfree.corp.taobao.com/bug/200762
#
--disable_warnings
DROP TABLE IF EXISTS ob_new_sql_test;
--enable_warnings
create table ob_new_sql_test ( c0 varchar(20), c1 int primary key);
insert into ob_new_sql_test (c0, c1) values ('hello', 0);
insert into ob_new_sql_test (c0, c1) values ('hello', 1);
drop table ob_new_sql_test;

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,60 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
#### owner: zuojiao.hzj
#### owner group: sql3
#### description: 测试NULL参与运算的一些case
--disable_warnings
drop table if exists t1,t2,t3,t4;
--enable_warnings
create table t1(pk1 int, pk2 int, pk3 int, extra int, primary key(pk1));
insert into t1(pk1,pk2,pk3) values(1,1,1),(2,2,2);
select * from t1;
insert into t1 values(3,null,null,NULL);
select * from t1;
select * from t1 where extra = NULL;
select * from t1 where extra != NULL;
select * from t1 where extra is NULL;
select * from t1 where extra is not NULL;
select * from t1 where pk1 is NULL and pk2 is NULL and pk3 is NULL;
select * from t1 where pk1 = NULL and pk3 = NULL and pk3 = NULL;
select * from t1 where pk1 != NULL and pk2 != NULL and pk3 != NULL;
select * from t1 where pk1 is not NULL and pk2 is not NULL and pk3 is not NULL;
select * from t1 where pk1 in (NULL) and pk2 in (NULL) and pk3 in (NULL);
select * from t1 where pk1 in (NULL,1) and pk2 in (NULL, 1);
update t1 set extra=4 where pk1 = NULL and pk2 = NULL and pk3 = NULL;
select * from t1;
update t1 set extra=1 where pk1 is NULL;
select * from t1;
update t1 set extra=2 where pk1 is NULL and pk2 is NULL and pk3 is NULL;
select * from t1;
update t1 set extra=3 where pk1 is not NULL;
select * from t1;
update t1 set extra=4 where pk1 is not NULL and pk2 is not NULL and pk3 is not NULL;
select * from t1;
update t1 set extra=5 where pk1 != NULL;
select * from t1;
update t1 set extra=6 where pk1 != NULL and pk2 != NULL and pk3 != NULL;
select * from t1;
delete from t1 where pk1 != NULL;
select * from t1;
delete from t1 where pk1 != NULL and pk2 != NULL and pk3 != NULL;
select * from t1;
delete from t1 where pk1 = NULL and pk2 = NULL and pk3 = NULL;
select * from t1;
delete from t1 where pk1 is NULL;
select * from t1;
delete from t1 where pk1 is NULL and pk2 is NULL and pk3 is NULL;
select * from t1;
delete from t1 where pk1 is not NULL and pk2 is not NULL and pk3 is not NULL;
select * from t1;
delete from t1 where pk1 is not NULL;
select * from t1;
drop table t1;

View File

@ -0,0 +1,156 @@
# owner: kaizhan.dkz
# owner group: SQL1
# description:
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 (c1 int, c2 varchar(1024), c3 int, primary key (c1));
--echo basic case
replace into t1 values (1, 'a', 1), (2, 'b', NULL);
select * from t1;
delete from t1 where c1=1;
replace into t1 values (1, 'a', 2);
select * from t1;
replace into t1 values (1, 'a', 3), (1, 'a', 4);
select * from t1;
--echo only rowkey
replace into t1(c1,c2) values (3, 'c');
select * from t1;
--echo type conversion
replace into t1 values ('4', 4, '4'), (5, 'd', '5');
select * from t1;
--echo cons rowkey
replace into t1 (c3, c2, c1) values (9, 'a', 8), (7, 'b', 6);
select * from t1;
--echo null rowkey
#-- affect_rows 3
replace into t1 values (10, 1, NULL), (11, NULL, 2), (12, 'ULL', 3);
select * from t1;
--echo ps
#prepare stmt1 from replace into t1 values (?, ?, ?), (?, ?, ?);
#set @v1 = 11;
#set @v2 = 'a';
#set @v3 = NULL;
#set @v4 = 12;
#set @v5 = 'b';
#execute stmt1 using @v1, @v2, @v3, @v4, @v5, @v4;
#select * from t1;
--echo transaction
start transaction;
replace into t1 values (31, 'x', 13);
select * from t1 where c1 = 31 and c2 = 'x' for update;
rollback;
select * from t1;
start transaction;
replace into t1 values (31, 'x', 13);
select * from t1 where c1 = 31 and c2 = 'x' for update;
commit;
select * from t1;
set autocommit = 0;
replace into t1 values (32, 'y', 23);
replace into t1 values (32, 'y', 32);
commit;
select * from t1;
set autocommit = 1;
--echo NOP
--echo +1 support
--echo CreateTime/ModifyTime columns
--disable_warnings
drop table if exists t2;
--enable_warnings
create table t2 (c1 int primary key, ct datetime default now(), mt datetime default now());
replace into t2 values (1, '2013-05-29 10:10:10', '2013-05-29 10:10:10');
replace into t2 (c1) values (2);
select c1 from t2;
--echo clean up
drop table t1, t2;
--echo not query static data
create table t1(c1 int primary key, c2 int, c3 varchar(10) not null, c4 timestamp not null default '2014-02-20 00:00:00.000');
replace into t1 values(1, 1, 'aaa', '2014-02-21'), (2, 2, 'bbb', '2014-02-22'), (3, 3, 'ccc', '2014-02-23'), (4, 4, 'bbb', '2014-02-24');
select * from t1;
#c4 include not null and default value, not need to query static data
replace into t1(c1, c2, c3) values(5, 5, 'aaa');
select * from t1;
#c3 include not null but don't include default value, if replace specify c3, also not need to query static data
replace into t1(c1, c3) values(1, 'abc'), (2, 'bac'), (3, 'cba');
select * from t1;
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(
c1 int primary key,
c2 float not null,
c3 varchar(20) not null default 'aaa',
c4 timestamp not null default '2014-02-20');
create index t1_c3 on t1(c3);
#if include index, whether index column specified, always query static data
--echo query static data
replace into t1(c1, c2) values(1, 2.0), (2, 3.0), (3, 4.0);
select * from t1;
#query static data, and c2 not allow to be inserted with NULL
#--error 4152
#replace into t1(c1, c3) values(2, 'bbb'), (5, 'ccc');
#select * from t1;
#table include 1, 2.0, so replace use semantic 'UPDATE'
replace into t1(c1, c2) values(1, 3.0);
select * from t1;
#not specify c2, but table has static data (2, 3.0, 'aaa', '2014-02-20'), so replace will succeed
#replace into t1(c1, c3) values(2, 'ccc');
#replace into t1 values(1, 4.0, 'ddd', '2014-02-21');
#select * from t1;
#--echo test replace ps
#prepare stmt1 from replace into t1(c1, c2, c3) values(3, ?, ?);
#set @c2=3.0;
#set @c3='abc';
#execute stmt1 using @c2, @c3;
#select * from t1;
#set @c2=4.0;
#set @c3='ddd';
#execute stmt1 using @c2, @c3;
#select * from t1;
#drop table t1;
--echo test replace default now()
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(
c1 int primary key,
c2 int,
c3 varchar(20),
c4 timestamp default now());
#if replace not specify timestamp default now() column, will query static data
replace into t1 values(1, 1, 'aa', now());
--replace_column 4 time
select * from t1;
replace into t1(c1, c2) values(1, 2), (2, 3), (3, 4);
--replace_column 4 time
select * from t1;
#if replace specify timestamp default now() column, will not query static data
replace into t1(c1, c4) values(2, date_add(now(), interval 1 minute)), (4, date_add(now(), interval 2 minute));
--replace_column 4 time
select * from t1;
drop table t1;
create table t1 (c1 int primary key, c2 int, unique key i2 (c2));
replace into t1 values (1, 1);
replace into t1 values (2, 1);
select * from t1;
drop table t1;

View File

@ -0,0 +1,102 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
# owner: jim.wjh
# owner group: SQL3
# Test of varchar functions
#
--disable_warnings
drop table if exists t1, t2;
--enable_warnings
#
##
## Test with varchar of lengths 254,255,256,258 & 258 to ensure we don't
## have any problems with varchar with one or two byte length_bytes
##
#
create table t1 (pk int primary key, v varchar(254));
insert into t1 values (1, 'This is a test ');
insert into t1 values (2, 'Some sample data');
insert into t1 values (3, ' garbage ');
insert into t1 values (4, ' This is a test ');
insert into t1 values (5, 'This is a test');
insert into t1 values (6, 'Hello world');
insert into t1 values (7, 'Foo bar');
insert into t1 values (8, 'This is a test');
insert into t1 values (9, 'MySQL varchar test');
insert into t1 values (10, 'test MySQL varchar');
insert into t1 values (11, 'This is a long string to have some random length data included');
insert into t1 values (12, 'Short string');
insert into t1 values (13, 'VSS');
insert into t1 values (14, 'Some samples');
insert into t1 values (15, 'Bar foo');
insert into t1 values (16, 'Bye');
let $i= 255;
let $j= 5;
while ($j)
{
select * from t1 where v like 'This is a test' order by v;
select * from t1 where v='This is a test' order by v;
select * from t1 where v like 'S%' order by v;
--replace_regex /Plan signature: [0-9]*/Plan signature/
--disable_result_log
# explain select * from t1 where v like 'This is a test' order by v;
--enable_result_log
--replace_regex /Plan signature: [0-9]*/Plan signature/
--disable_result_log
# explain select * from t1 where v='This is a test' order by v;
--enable_result_log
--replace_regex /Plan signature: [0-9]*/Plan signature/
--disable_result_log
# explain select * from t1 where v like 'S%' order by v;
--enable_result_log
# eval alter table t1 change v v varchar($i);
inc $i;
dec $j;
}
let $i= 258;
let $j= 6;
while ($j)
{
select * from t1 where v like 'This is a test' order by v;
select * from t1 where v='This is a test' order by v;
select * from t1 where v like 'S%' order by v;
--replace_regex /Plan signature: [0-9]*/Plan signature/
--disable_result_log
# explain select * from t1 where v like 'This is a test' order by v;
--enable_result_log
--replace_regex /Plan signature: [0-9]*/Plan signature/
--disable_result_log
# explain select * from t1 where v='This is a test' order by v;
--enable_result_log
--replace_regex /Plan signature: [0-9]*/Plan signature/
--disable_result_log
# explain select * from t1 where v like 'S%' order by v;
--enable_result_log
# eval alter table t1 change v v varchar($i);
dec $i;
dec $j;
}
#alter table t1 change v v varchar(254), drop key v;
#
## Test with length(varchar(1024)) > 256 and key < 256 (to ensure things works with
## different kind of packing
#
#alter table t1 change v v varchar(300), add key (v(10));
select * from t1 where v like 'This is a test' order by v;
select * from t1 where v='This is a test' order by v;
select * from t1 where v like 'S%' order by v;
--replace_regex /Plan signature: [0-9]*/Plan signature/
--disable_result_log
#explain select * from t1 where v like 'This is a test' order by v;
--enable_result_log
--replace_regex /Plan signature: [0-9]*/Plan signature/
--disable_result_log
#explain select * from t1 where v='This is a test' order by v;
--enable_result_log
--replace_regex /Plan signature: [0-9]*/Plan signature/
--disable_result_log
#explain select * from t1 where v like 'S%' order by v;
--enable_result_log
#drop table t1;
#

View File

@ -0,0 +1,66 @@
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 10000000000000;
set GLOBAL ob_trx_idle_timeout = 10000000000;
alter system set _lcl_op_interval = '10ms';
drop table if exists t1;
drop table if exists t2;
set ob_query_timeout = 1000000000;
set ob_trx_timeout = 1000000000;
set ob_trx_idle_timeout = 1000000000;
set ob_query_timeout = 1000000000;
set ob_trx_timeout = 1000000000;
set ob_trx_idle_timeout = 1000000000;
create table t1(a int primary key);
create table t2(a int primary key) partition by hash(a) partitions 4;
insert into t1 values(1);
insert into t1 values(2);
insert into t2 values(1);
insert into t2 values(2);
insert into t2 values(3);
insert into t2 values(4);
commit;
begin;
select * from t1 where a = 1 order by a for update;
a
1
begin;
select * from t1 where a = 2 order by a for update;
a
2
select * from t1 where a = 1 order by a for update;
select * from t1 where a = 2 order by a for update;
ERROR HY000: Deadlock
rollback;
a
2
commit;
select * from t1 order by a;
a
1
2
begin;
select * from t2 where a in (1,2) order by a for update;
a
1
2
begin;
select * from t2 where a in (3,4) for update;
a
4
3
select * from t2 where a in (1,2) order by a for update;
select * from t2 where a in (3,4) order by a for update;
ERROR HY000: Deadlock
rollback;
a
3
4
commit;
select * from t2 order by a;
a
1
2
3
4
drop table t1;
drop table t2;

View File

@ -0,0 +1,102 @@
# owner: xuwang.txw
# owner group: transaction
# description: this case is used for testing basic transactional deadlock detector case
set GLOBAL ob_query_timeout = 1000000000000;
set GLOBAL ob_trx_timeout = 10000000000000;
set GLOBAL ob_trx_idle_timeout = 10000000000;
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connect (conn0,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connection conn0;
alter system set _lcl_op_interval = '10ms';
connection conn1;
--disable_warnings
drop table if exists t1;
drop table if exists t2;
--enable_warnings
connection conn1;
set ob_query_timeout = 1000000000;
set ob_trx_timeout = 1000000000;
set ob_trx_idle_timeout = 1000000000;
connection conn2;
set ob_query_timeout = 1000000000;
set ob_trx_timeout = 1000000000;
set ob_trx_idle_timeout = 1000000000;
# single-partition table
create table t1(a int primary key);
# multi-partition table
create table t2(a int primary key) partition by hash(a) partitions 4;
insert into t1 values(1);
insert into t1 values(2);
insert into t2 values(1);
insert into t2 values(2);
insert into t2 values(3);
insert into t2 values(4);
commit;
# ================= CASE 1: local/remote execution deadlock =================
connection conn1;
begin;
select * from t1 where a = 1 order by a for update;
connection conn2;
sleep 1;
# used for priority reason
begin;
select * from t1 where a = 2 order by a for update;
send select * from t1 where a = 1 order by a for update;
connection conn1;
sleep 1;
send select * from t1 where a = 2 order by a for update;
connection conn2;
--error 1213
reap;
rollback;
connection conn1;
reap;
commit;
select * from t1 order by a;
# ================= CASE 1: distributed execution deadlock =================
connection conn1;
begin;
select * from t2 where a in (1,2) order by a for update;
connection conn2;
# used for priority reason
sleep 1;
begin;
select * from t2 where a in (3,4) for update;
send select * from t2 where a in (1,2) order by a for update;
connection conn1;
send select * from t2 where a in (3,4) order by a for update;
connection conn2;
--error 1213
reap;
rollback;
connection conn1;
reap;
commit;
select * from t2 order by a;
--disable_warnings
connection conn1;
--error 0,942
drop table t1;
--error 0,942
drop table t2;
--enable_warnings

View File

@ -0,0 +1,401 @@
drop table if exists t1, t_part, t_single;
drop table if exists t2;
drop table if exists t3;
drop table if exists t4;
result_format: 4
create table t1(a int primary key, b int);
insert into t1 values(1,0),(2,0),(3,0);
delete from t1;
select * from t1;
+---+------+
| a | b |
+---+------+
+---+------+
insert into t1 values(1,0),(2,0),(3,0);
delete from t1 where a = 1;
delete from t1 where a = 2;
delete from t1 where a = 3;
select * from t1;
+---+------+
| a | b |
+---+------+
+---+------+
insert into t1 values(1,0),(2,0),(3,0);
delete from t1 where a=1;
select * from t1;
+---+------+
| a | b |
+---+------+
| 2 | 0 |
| 3 | 0 |
+---+------+
insert into t1 values(1,0);
replace into t1 values(2,0),(3,0);
delete from t1 where a=1 or a=2 or a=3;
select * from t1;
+---+------+
| a | b |
+---+------+
+---+------+
insert into t1 values(1,0),(2,0);
delete from t1 where a=1;
delete from t1 where a=2;
delete from t1 where a=3;
select * from t1;
+---+------+
| a | b |
+---+------+
+---+------+
drop table t1;
create table t_part (c1 bigint primary key, c2 bigint) partition by hash(c1) partitions 2;
create table t_single(c1 int);
insert into t_part(c1) values(1231346464513131);
insert into t_part values(1, 2), (3, 1);
insert into t_part values(2, 3), (4, 3);
insert into t_part partition(p0, p1) values(5, 6);
insert into t_part values('6', '6'), ('8', '8');
delete from t_part where c1 in (select c1 from t_single);
select * from t_part;
+------------------+------+
| c1 | c2 |
+------------------+------+
| 2 | 3 |
| 4 | 3 |
| 6 | 6 |
| 8 | 8 |
| 1 | 2 |
| 3 | 1 |
| 5 | 6 |
| 1231346464513131 | NULL |
+------------------+------+
drop table t_part, t_single;
create table t2 (p1 int, p2 int, p3 int, p4 int, primary key(p1,p2,p3));
insert into t2 values(1,1,1,0),(2,2,2,0),(3,3,3,0),(4,4,4,0),(5,4,4,0),(6,4,4,0),(7,4,6,0),(8,4,6,0),(9,4,6,0),(10,4,6,0),(11,4,6,0),(12,4,6,0), (13,4,6,0);
delete from t2 where p1 = 1;
select * from t2;
+----+----+----+------+
| p1 | p2 | p3 | p4 |
+----+----+----+------+
| 5 | 4 | 4 | 0 |
| 6 | 4 | 4 | 0 |
| 7 | 4 | 6 | 0 |
| 8 | 4 | 6 | 0 |
| 9 | 4 | 6 | 0 |
| 10 | 4 | 6 | 0 |
| 11 | 4 | 6 | 0 |
| 12 | 4 | 6 | 0 |
| 13 | 4 | 6 | 0 |
+----+----+----+------+
select p1,p3 from t2;
+----+----+
| p1 | p3 |
+----+----+
| 5 | 4 |
| 6 | 4 |
| 7 | 6 |
| 8 | 6 |
| 9 | 6 |
| 10 | 6 |
| 11 | 6 |
| 12 | 6 |
| 13 | 6 |
+----+----+
replace into t2 values(1,1,1,0),(2,2,2,0),(3,3,3,0),(4,4,4,0),(5,4,4,0),(6,4,4,0),(7,4,6,0),(8,4,6,0),(9,4,6,0),(10,4,6,0),(11,4,6,0),(12,4,6,0), (13,4,6,0);
delete from t2 where p1>3 or p3 >=6;
select * from t2;
+----+----+----+------+
| p1 | p2 | p3 | p4 |
+----+----+----+------+
| 1 | 1 | 1 | 0 |
| 2 | 2 | 2 | 0 |
| 3 | 3 | 3 | 0 |
+----+----+----+------+
select p1,p3 from t2;
+----+----+
| p1 | p3 |
+----+----+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+----+----+
delete from t2 where p1=1 and p3 =2;
select * from t2;
+----+----+----+------+
| p1 | p2 | p3 | p4 |
+----+----+----+------+
| 1 | 1 | 1 | 0 |
| 2 | 2 | 2 | 0 |
| 3 | 3 | 3 | 0 |
+----+----+----+------+
select p1,p3 from t2;
+----+----+
| p1 | p3 |
+----+----+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+----+----+
delete from t2 where p1=1 and p2 =1 and p3=1;
select * from t2;
+----+----+----+------+
| p1 | p2 | p3 | p4 |
+----+----+----+------+
| 2 | 2 | 2 | 0 |
| 3 | 3 | 3 | 0 |
+----+----+----+------+
select p1,p3 from t2;
+----+----+
| p1 | p3 |
+----+----+
| 2 | 2 |
| 3 | 3 |
+----+----+
replace into t2 values(1,1,1,0),(2,2,2,0),(3,3,3,0),(4,4,4,0),(5,4,4,0),(6,4,4,0),(7,4,6,0),(8,4,6,0),(9,4,6,0),(10,4,6,0),(11,4,6,0),(12,4,6,0), (13,4,6,0);
delete from t2 where p1 in (1,2,3,6,7,8,12,13,0);
select * from t2;
+----+----+----+------+
| p1 | p2 | p3 | p4 |
+----+----+----+------+
| 4 | 4 | 4 | 0 |
| 5 | 4 | 4 | 0 |
| 9 | 4 | 6 | 0 |
| 10 | 4 | 6 | 0 |
| 11 | 4 | 6 | 0 |
+----+----+----+------+
drop table t2;
create table t3 (p1 int, p2 int, p3 int, primary key(p1,p2));
insert into t3 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,4,4),(6,4,4),(7,4,6),(8,4,6),(9,4,6),(10,4,6),(11,4,6),(12,4,6), (13,4,6);
delete from t3 where p1=1 and p2=1 and p3=1;
select * from t3;
+----+----+------+
| p1 | p2 | p3 |
+----+----+------+
| 2 | 2 | 2 |
| 3 | 3 | 3 |
| 4 | 4 | 4 |
| 5 | 4 | 4 |
| 6 | 4 | 4 |
| 7 | 4 | 6 |
| 8 | 4 | 6 |
| 9 | 4 | 6 |
| 10 | 4 | 6 |
| 11 | 4 | 6 |
| 12 | 4 | 6 |
| 13 | 4 | 6 |
+----+----+------+
select p1,p3 from t3;
+----+------+
| p1 | p3 |
+----+------+
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 4 |
| 6 | 4 |
| 7 | 6 |
| 8 | 6 |
| 9 | 6 |
| 10 | 6 |
| 11 | 6 |
| 12 | 6 |
| 13 | 6 |
+----+------+
replace into t3 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,4,4),(6,4,4),(7,4,6),(8,4,6),(9,4,6),(10,4,6),(11,4,6),(12,4,6), (13,4,6);
delete from t3 where p1>3 or p3 >=6;
select * from t3;
+----+----+------+
| p1 | p2 | p3 |
+----+----+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
+----+----+------+
select p1,p3 from t3;
+----+------+
| p1 | p3 |
+----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+----+------+
delete from t3 where p1=1 and p3 =2;
select * from t3;
+----+----+------+
| p1 | p2 | p3 |
+----+----+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 3 | 3 |
+----+----+------+
select p1,p3 from t3;
+----+------+
| p1 | p3 |
+----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
+----+------+
replace into t3 values(1,1,1),(2,2,2);
delete from t3 where p1=1 and p2 =1 and p3=1;
select * from t3;
+----+----+------+
| p1 | p2 | p3 |
+----+----+------+
| 2 | 2 | 2 |
| 3 | 3 | 3 |
+----+----+------+
select p1,p3 from t3;
+----+------+
| p1 | p3 |
+----+------+
| 2 | 2 |
| 3 | 3 |
+----+------+
replace into t3 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,4,4),(6,4,4),(7,4,6),(8,4,6),(9,4,6),(10,4,6),(11,4,6),(12,4,6),(13,4,6);
delete from t3 where p1 in (1,2,3,6,7,8,12,13,0);
select * from t3;
+----+----+------+
| p1 | p2 | p3 |
+----+----+------+
| 4 | 4 | 4 |
| 5 | 4 | 4 |
| 9 | 4 | 6 |
| 10 | 4 | 6 |
| 11 | 4 | 6 |
+----+----+------+
drop table t3;
create table t4 (p1 varchar(100), p2 int, p3 datetime(6), p4 int, primary key(p1,p2,p3));
insert into t4 values('a', 41, '2012-10-23 17:14:00',0), ('b', 42, '2012-10-23 17:15:00',0), ('c', 43, '2012-10-23 17:16:00',0);
delete from t4 where p3='2012-10-23 17:14:00';
select * from t4;
+----+----+----------------------------+------+
| p1 | p2 | p3 | p4 |
+----+----+----------------------------+------+
| b | 42 | 2012-10-23 17:15:00.000000 | 0 |
| c | 43 | 2012-10-23 17:16:00.000000 | 0 |
+----+----+----------------------------+------+
replace into t4 values('a', 41, '2012-10-23 17:14:00',0), ('b', 42, '2012-10-23 17:15:00',0), ('c', 43, '2012-10-23 17:16:00',0);
delete from t4 where p2='42';
select * from t4;
+----+----+----------------------------+------+
| p1 | p2 | p3 | p4 |
+----+----+----------------------------+------+
| a | 41 | 2012-10-23 17:14:00.000000 | 0 |
| c | 43 | 2012-10-23 17:16:00.000000 | 0 |
+----+----+----------------------------+------+
replace into t4 values('a', 41, '2012-10-23 17:14:00',0), ('b', 42, '2012-10-23 17:15:00',0), ('c', 43, '2012-10-23 17:16:00',0);
delete from t4 where p2<'401' and p1='c';
select * from t4;
+----+----+----------------------------+------+
| p1 | p2 | p3 | p4 |
+----+----+----------------------------+------+
| a | 41 | 2012-10-23 17:14:00.000000 | 0 |
| b | 42 | 2012-10-23 17:15:00.000000 | 0 |
+----+----+----------------------------+------+
delete from t4 where p1='a' and p2=41 and p3='2012-10-23 17:14:00';
select * from t4;
+----+----+----------------------------+------+
| p1 | p2 | p3 | p4 |
+----+----+----------------------------+------+
| b | 42 | 2012-10-23 17:15:00.000000 | 0 |
+----+----+----------------------------+------+
drop table t4;
create table t2(c1 int primary key, c2 int, c3 int);
create table t3 (c1 int, c2 int, c3 int);
insert into t2 values (1, 1, 1);
insert into t2 values (2, 2, 2);
insert into t2 values (3, 2, 3);
insert into t2 values (4, 6, 4);
insert into t2 values (5, 4, 3);
insert into t2 values (6, 4, 2);
insert into t3 values(2, 2, 2);
insert into t3 values(3, 3, 3);
insert into t3 values(4, 4, 4);
insert into t3 values(5, 5, 5);
delete t3 from t3, t2 where t3.c1 = t2.c2;
delete t3 from t3, t2 where t3.c1 = t2.c1;
delete t3, t33 from t3 left join t3 as t33 on t3.c1 = t33.c1;
ERROR 0A000: multiple aliases to same table not supported
select * from t3;
+------+------+------+
| c1 | c2 | c3 |
+------+------+------+
+------+------+------+
select * from t2;
+----+------+------+
| c1 | c2 | c3 |
+----+------+------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| 3 | 2 | 3 |
| 4 | 6 | 4 |
| 5 | 4 | 3 |
| 6 | 4 | 2 |
+----+------+------+
drop table t2;
drop table t3;
drop table if exists dns_inner_resource_record_info;
CREATE TABLE `dns_inner_resource_record_info`(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`owner` varchar(256) NOT NULL COMMENT '资源',
`cluster_name` varchar(20) NOT NULL COMMENT '所属集群 冗余字段',
`zone_name` varchar(255) NOT NULL DEFAULT '' COMMENT 'ZONE NAME',
`view_group_name` varchar(60) DEFAULT '' COMMENT 'VIEW GRP name',
`domain_group_name` varchar(60) DEFAULT NULL COMMENT '域名组',
`idc_id` varchar(20) DEFAULT NULL COMMENT 'IDC ID',
`rr_type` varchar(10) NOT NULL COMMENT '资源类型',
`ttl` varchar(20) NOT NULL DEFAULT '' COMMENT 'TTL',
`rr_class` varchar(12) NOT NULL DEFAULT '' COMMENT 'RECODR 类型',
`data` varchar(500) NOT NULL COMMENT '数据',
`status` varchar(10) DEFAULT NULL COMMENT '状态',
`gmt_create` datetime NOT NULL COMMENT '创建时间',
`gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
KEY `rrdata` (`data`(383)) BLOCK_SIZE 16384 GLOBAL,
KEY `rrtype` (`rr_type`) BLOCK_SIZE 16384 GLOBAL,
KEY `owner` (`owner`) BLOCK_SIZE 16384 GLOBAL,
KEY `cluster` (`cluster_name`) BLOCK_SIZE 16384 GLOBAL,
KEY `zonename` (`zone_name`) BLOCK_SIZE 16384 GLOBAL,
KEY `viewgroupname` (`view_group_name`) BLOCK_SIZE 16384 GLOBAL,
KEY `domain_group_name` (`domain_group_name`) BLOCK_SIZE 16384 GLOBAL,
KEY `idc_id` (`idc_id`) BLOCK_SIZE 16384 GLOBAL
) COMMENT = 'dns 内网集群资源记录表';
delete from dns_inner_resource_record_info WHERE cluster_name = "1";
set binlog_row_image='MINIMAL';
delete from dns_inner_resource_record_info WHERE cluster_name = "1";
drop table dns_inner_resource_record_info;

View File

@ -0,0 +1,166 @@
can't determine a row
drop table if exists t1;
create table t1(c1 int, c2 int, primary key(c1));
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c1 in(1);
select * from t1;
c1 c2
2 2
3 3
delete from t1 where c1 in(1,2);
select * from t1;
c1 c2
3 3
delete from t1 where c1>=3;
select * from t1;
c1 c2
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c1<=1;
select * from t1;
c1 c2
2 2
3 3
delete from t1 where 1>=c1;
select * from t1;
c1 c2
2 2
3 3
delete from t1 where 3<=c1;
select * from t1;
c1 c2
2 2
delete from t1 where 2<=c1;
select * from t1;
c1 c2
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c1>1 and c1<3;
select * from t1;
c1 c2
1 1
3 3
delete from t1 where c1=1 or c1=2;
select * from t1;
c1 c2
3 3
delete from t1 where c1<1 or c1<2;
select * from t1;
c1 c2
3 3
delete from t1 where c1=1 and c1=2;
select * from t1;
c1 c2
3 3
delete from t1 where c1>1 and c1=2;
select * from t1;
c1 c2
3 3
drop table if exists t1;
create table t1(c1 int, c2 int, primary key(c1));
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c2 in(1);
select * from t1;
c1 c2
2 2
3 3
delete from t1 where c2 in(1,2);
select * from t1;
c1 c2
3 3
delete from t1 where c2>=3;
select * from t1;
c1 c2
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c2<=1;
select * from t1;
c1 c2
2 2
3 3
delete from t1 where 1>=c2;
select * from t1;
c1 c2
2 2
3 3
delete from t1 where 3<=c2;
select * from t1;
c1 c2
2 2
delete from t1 where c2>1 and c2<3;
select * from t1;
c1 c2
delete from t1 where c2=1 or c2=2;
select * from t1;
c1 c2
delete from t1 where c2<1 or c2<2;
select * from t1;
c1 c2
delete from t1 where c2=1 and c2=2;
select * from t1;
c1 c2
delete from t1 where c2>1 and c2=2;
select * from t1;
c1 c2
drop table if exists t1;
create table t1(c1 int, c2 int, primary key(c1));
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where (c1,c2) in((1,1));
select * from t1;
c1 c2
2 2
3 3
delete from t1 where (c1,c2) in((1,1),(2,2));
select * from t1;
c1 c2
3 3
delete from t1 where (c2,c1) in((1,1));
select * from t1;
c1 c2
3 3
delete from t1 where (c2,c1) in((1,1),(2,2));
select * from t1;
c1 c2
3 3
delete from t1 where c1 > 1 and c2 >10 and c1=1;
select * from t1;
c1 c2
3 3
delete from t1 where c1 > 1 or c2 >10 and c1=1;
select * from t1;
c1 c2
drop table if exists t1;
create table t1(c1 int, c2 int, primary key(c1));
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c2<=1;
select * from t1;
c1 c2
2 2
3 3
delete from t1 where 1>=c2;
select * from t1;
c1 c2
2 2
3 3
delete from t1 where 3<=c2;
select * from t1;
c1 c2
2 2
delete from t1 where c2>1 and c2<3;
select * from t1;
c1 c2
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c2=1 or c2=2;
select * from t1;
c1 c2
3 3
delete from t1 where c2<1 or c2<2;
select * from t1;
c1 c2
3 3
delete from t1 where c2=1 and c2=2;
select * from t1;
c1 c2
3 3
delete from t1 where c2>1 and c2=2;
select * from t1;
c1 c2
3 3
drop table if exists t1;

View File

@ -0,0 +1,258 @@
drop table if exists t1;
create table t1 (a int, b int, primary key (a));
insert into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a=1;
delete from t1 where a>0;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a<5;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a>1;
select * from t1;
a b
1 1
replace into t1(a,b) values(2,1),(3,1),(4,1);
delete from t1 where a<4;
select * from t1;
a b
4 1
replace into t1(a,b) values(1,1),(2,1),(3,1);
delete from t1 where a>=1;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a<=5;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a>0 and a<2;
delete from t1 where a>=2 and a<3;
delete from t1 where a>=3 and a<=4;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a=1 or a=2 or a=3 or a=4;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b>0;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b<6;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b>1;
select * from t1;
a b
1 1
replace into t1(a,b) values(2,2),(3,3),(4,4);
delete from t1 where b<5;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b>=1;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b<=7;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b>0 and b<2;
delete from t1 where b>=2 and b<3;
delete from t1 where b>=3 and b<=4;
select * from t1;
a b
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b=1 or b=2 or b=3 or b=4;
select * from t1;
a b
drop table if exists t1;
create table t1(a int, b int, c int, primary key(a));
replace into t1(a,b) values(1,1),(2,2),(3,1),(4,2);
delete from t1 where a>0 and b>1;
delete from t1 where a<5 and b<2;
select * from t1;
a b c
replace into t1(a,b) values(1,1),(2,2),(3,1),(4,2);
delete from t1 where a>=0 and b<=1;
delete from t1 where a<=5 and b>=2;
select * from t1;
a b c
replace into t1(a,b) values(1,1),(2,2),(3,1),(4,2);
delete from t1 where a=0 or a=1 or a=2 or b=1;
select * from t1;
a b c
4 2 NULL
replace into t1(a,b) values(1,1),(2,2),(3,1),(4,2);
delete from t1 where b=2 or a=1 or a=2;
select * from t1;
a b c
3 1 NULL
replace into t1(a,b,c) values(1,1,NULL),(2,2,NULL),(3,3,NULL),(4,4,NULL);
delete from t1 where a<=1 or b>=4;
select * from t1;
a b c
2 2 NULL
3 3 NULL
replace into t1(a,b,c) values(1,1,NULL),(2,2,NULL),(3,3,NULL),(4,4,NULL);
delete from t1 where a>1 or b<4;
select * from t1;
a b c
drop table if exists t1;
create table t1(a int, b int, c int, d int, primary key(a,b));
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) > (0,0);
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) < (4,4);
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) >= (1,1);
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) <= (1,1);
select * from t1;
a b c d
2 2 1 1
3 3 1 1
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) in ((NULL,NULL),(0,0),(1,1),(2,2),(3,3),(4,4));
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b)=(1,1) or (a,b)=(2,2) or (a,b)=(3,3);
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) in ((1,1),(2,2),(3,3));
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b,c,d) >= (1,1,1,1);
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b,c,d) <= (3,3,3,3);
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b,c,d)=(1,1,1,1) or (a,b,c,d)=(2,2,1,1) or (a,b,c,d)=(3,3,3,3);
select * from t1;
a b c d
3 3 1 1
drop table if exists t1;
create table t1(a int, b int, c int, d int, primary key(a,b));
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a = 1;
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a > 0;
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a >=1 ;
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a < 4;
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a <= 1;
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a=1 or a=2 or a=3;
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where (a=1 or a=2 or a=3) and (b=1 or b=2);
select * from t1;
a b c d
1 3 1 1
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a>=1 and b>=2;
select * from t1;
a b c d
1 1 1 1
drop table if exists t1;
create table t1(a int, b int, c int, d int, primary key(a,b));
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a,b)>=(1,1) and c=1;
select * from t1;
a b c d
2 2 2 1
3 3 3 1
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a,b)>=(1,1) and c=3;
select * from t1;
a b c d
1 1 1 1
2 2 2 1
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a=1 or a=2 or a=3) and c>=1;
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a=1 or a=2 or a=3) and c<1;
select * from t1;
a b c d
1 1 1 1
2 2 2 1
3 3 3 1
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a=1 or a=2 or a=3) and (b=2 or b=3);
select * from t1;
a b c d
1 1 1 1
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a=1 or a=2 or a=3) and (b=2 or b=3) and c=3;
select * from t1;
a b c d
1 1 1 1
2 2 2 1
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where a>=0 and a<=3 and b>1 and b<3;
select * from t1;
a b c d
1 1 1 1
3 3 3 1
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (c,d)>=(1,1);
select * from t1;
a b c d
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (b,a) > (1,1);
select * from t1;
a b c d
1 1 1 1
drop table if exists t1, t2, t3;
create table t1(a int, b int, c int, d int, primary key(a,b,c));
insert into t1(a,b,c) values (1,1,1),(2,2,2),(3,3,3);
delete from t1 where (a,b,c)>(0,0,0) and (a,b,c)<=(3,3,3);
select * from t1;
a b c d
create table t2(a varchar(128), b varchar(128), c varchar(128), d varchar(128), primary key(a,b,c));
insert into t2(a,b,c) values ('a','a','a'),('b','b','b'),('c','c','c');
delete from t2 where (a,b,c)>=('a','a','b') and (a,b,c)<('b','b','c');
select * from t2;
a b c d
a a a NULL
c c c NULL
create table t3(a int, b varchar(128), c timestamp(6) default "2012-01-01 12:00:00", d int, primary key(a,b,c));
insert into t3(a,b,c) values (1,'a','2014-02-17'),(2,'b','2014-02-17'),(3,'c','2014-02-18');
delete from t3 where (a,b,c)>=(1,'a','2014-02-17 00:00:00') and (a,b,c)<=(2,'b','2014-02-18');
select * from t3;
a b c d
3 c 2014-02-18 00:00:00.000000 NULL
drop table if exists t1, t2, t3;

View File

@ -0,0 +1,209 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
# owner: yuchen.wyc
# owner group: sql1
# 测试delete stmt
# tags: delete,dml
--disable_warnings
drop table if exists t1, t_part, t_single;
--enable_warnings
--disable_warnings
drop table if exists t2;
--enable_warnings
--disable_warnings
drop table if exists t3;
--enable_warnings
--disable_warnings
drop table if exists t4;
--enable_warnings
--result_format 4
#--explain_protocol 2
#single column rowkey
create table t1(a int primary key, b int);
insert into t1 values(1,0),(2,0),(3,0);
delete from t1;
select * from t1;
insert into t1 values(1,0),(2,0),(3,0);
delete from t1 where a = 1;
delete from t1 where a = 2;
delete from t1 where a = 3;
select * from t1;
insert into t1 values(1,0),(2,0),(3,0);
delete from t1 where a=1;
select * from t1;
insert into t1 values(1,0);
replace into t1 values(2,0),(3,0);
delete from t1 where a=1 or a=2 or a=3;
select * from t1;
insert into t1 values(1,0),(2,0);
delete from t1 where a=1;
delete from t1 where a=2;
delete from t1 where a=3;
select * from t1;
drop table t1;
create table t_part (c1 bigint primary key, c2 bigint) partition by hash(c1) partitions 2;
create table t_single(c1 int);
insert into t_part(c1) values(1231346464513131);
insert into t_part values(1, 2), (3, 1);
insert into t_part values(2, 3), (4, 3);
insert into t_part partition(p0, p1) values(5, 6);
insert into t_part values('6', '6'), ('8', '8');
delete from t_part where c1 in (select c1 from t_single);
select * from t_part;
drop table t_part, t_single;
# multi-column rowkey
create table t2 (p1 int, p2 int, p3 int, p4 int, primary key(p1,p2,p3));
insert into t2 values(1,1,1,0),(2,2,2,0),(3,3,3,0),(4,4,4,0),(5,4,4,0),(6,4,4,0),(7,4,6,0),(8,4,6,0),(9,4,6,0),(10,4,6,0),(11,4,6,0),(12,4,6,0), (13,4,6,0);
delete from t2 where p1 = 1;
--disable_query_log
--let $p=13
while($p>1)
{
eval delete from t2 where p1=$p and p2 = $p and p3=$p;
dec $p;
}
--enable_query_log
select * from t2;
select p1,p3 from t2;
replace into t2 values(1,1,1,0),(2,2,2,0),(3,3,3,0),(4,4,4,0),(5,4,4,0),(6,4,4,0),(7,4,6,0),(8,4,6,0),(9,4,6,0),(10,4,6,0),(11,4,6,0),(12,4,6,0), (13,4,6,0);
delete from t2 where p1>3 or p3 >=6;
select * from t2;
select p1,p3 from t2;
delete from t2 where p1=1 and p3 =2;
select * from t2;
select p1,p3 from t2;
delete from t2 where p1=1 and p2 =1 and p3=1;
select * from t2;
select p1,p3 from t2;
replace into t2 values(1,1,1,0),(2,2,2,0),(3,3,3,0),(4,4,4,0),(5,4,4,0),(6,4,4,0),(7,4,6,0),(8,4,6,0),(9,4,6,0),(10,4,6,0),(11,4,6,0),(12,4,6,0), (13,4,6,0);
delete from t2 where p1 in (1,2,3,6,7,8,12,13,0);
select * from t2;
drop table t2;
# mix common column and rowkey column
create table t3 (p1 int, p2 int, p3 int, primary key(p1,p2));
insert into t3 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,4,4),(6,4,4),(7,4,6),(8,4,6),(9,4,6),(10,4,6),(11,4,6),(12,4,6), (13,4,6);
delete from t3 where p1=1 and p2=1 and p3=1;
select * from t3;
select p1,p3 from t3;
replace into t3 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,4,4),(6,4,4),(7,4,6),(8,4,6),(9,4,6),(10,4,6),(11,4,6),(12,4,6), (13,4,6);
delete from t3 where p1>3 or p3 >=6;
select * from t3;
select p1,p3 from t3;
delete from t3 where p1=1 and p3 =2;
select * from t3;
select p1,p3 from t3;
replace into t3 values(1,1,1),(2,2,2);
delete from t3 where p1=1 and p2 =1 and p3=1;
select * from t3;
select p1,p3 from t3;
replace into t3 values(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,4,4),(6,4,4),(7,4,6),(8,4,6),(9,4,6),(10,4,6),(11,4,6),(12,4,6),(13,4,6);
delete from t3 where p1 in (1,2,3,6,7,8,12,13,0);
select * from t3;
drop table t3;
# where clause
create table t4 (p1 varchar(100), p2 int, p3 datetime(6), p4 int, primary key(p1,p2,p3));
insert into t4 values('a', 41, '2012-10-23 17:14:00',0), ('b', 42, '2012-10-23 17:15:00',0), ('c', 43, '2012-10-23 17:16:00',0);
delete from t4 where p3='2012-10-23 17:14:00';
select * from t4;
replace into t4 values('a', 41, '2012-10-23 17:14:00',0), ('b', 42, '2012-10-23 17:15:00',0), ('c', 43, '2012-10-23 17:16:00',0);
delete from t4 where p2='42';
select * from t4;
replace into t4 values('a', 41, '2012-10-23 17:14:00',0), ('b', 42, '2012-10-23 17:15:00',0), ('c', 43, '2012-10-23 17:16:00',0);
delete from t4 where p2<'401' and p1='c';
select * from t4;
delete from t4 where p1='a' and p2=41 and p3='2012-10-23 17:14:00';
select * from t4;
drop table t4;
create table t2(c1 int primary key, c2 int, c3 int);
create table t3 (c1 int, c2 int, c3 int);
insert into t2 values (1, 1, 1);
insert into t2 values (2, 2, 2);
insert into t2 values (3, 2, 3);
insert into t2 values (4, 6, 4);
insert into t2 values (5, 4, 3);
insert into t2 values (6, 4, 2);
insert into t3 values(2, 2, 2);
insert into t3 values(3, 3, 3);
insert into t3 values(4, 4, 4);
insert into t3 values(5, 5, 5);
delete t3 from t3, t2 where t3.c1 = t2.c2;
delete t3 from t3, t2 where t3.c1 = t2.c1;
--error 1235
delete t3, t33 from t3 left join t3 as t33 on t3.c1 = t33.c1;
select * from t3;
select * from t2;
drop table t2;
drop table t3;
--disable_warnings
drop table if exists dns_inner_resource_record_info;
--enable_warnings
CREATE TABLE `dns_inner_resource_record_info`(
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
`owner` varchar(256) NOT NULL COMMENT '资源',
`cluster_name` varchar(20) NOT NULL COMMENT '所属集群 冗余字段',
`zone_name` varchar(255) NOT NULL DEFAULT '' COMMENT 'ZONE NAME',
`view_group_name` varchar(60) DEFAULT '' COMMENT 'VIEW GRP name',
`domain_group_name` varchar(60) DEFAULT NULL COMMENT '域名组',
`idc_id` varchar(20) DEFAULT NULL COMMENT 'IDC ID',
`rr_type` varchar(10) NOT NULL COMMENT '资源类型',
`ttl` varchar(20) NOT NULL DEFAULT '' COMMENT 'TTL',
`rr_class` varchar(12) NOT NULL DEFAULT '' COMMENT 'RECODR 类型',
`data` varchar(500) NOT NULL COMMENT '数据',
`status` varchar(10) DEFAULT NULL COMMENT '状态',
`gmt_create` datetime NOT NULL COMMENT '创建时间',
`gmt_modified` datetime DEFAULT NULL COMMENT '修改时间',
PRIMARY KEY (`id`),
KEY `rrdata` (`data`(383)) BLOCK_SIZE 16384 GLOBAL,
KEY `rrtype` (`rr_type`) BLOCK_SIZE 16384 GLOBAL,
KEY `owner` (`owner`) BLOCK_SIZE 16384 GLOBAL,
KEY `cluster` (`cluster_name`) BLOCK_SIZE 16384 GLOBAL,
KEY `zonename` (`zone_name`) BLOCK_SIZE 16384 GLOBAL,
KEY `viewgroupname` (`view_group_name`) BLOCK_SIZE 16384 GLOBAL,
KEY `domain_group_name` (`domain_group_name`) BLOCK_SIZE 16384 GLOBAL,
KEY `idc_id` (`idc_id`) BLOCK_SIZE 16384 GLOBAL
) COMMENT = 'dns 内网集群资源记录表';
delete from dns_inner_resource_record_info WHERE cluster_name = "1";
set binlog_row_image='MINIMAL';
delete from dns_inner_resource_record_info WHERE cluster_name = "1";
drop table dns_inner_resource_record_info;

View File

@ -0,0 +1,126 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
# owner: xiaoyi.xy
# owner group: SQL3
# description: 测试where比较条件的delete stmt, 单行删除
# tags: delete,dml
--disable_abort_on_error
--echo can't determine a row
##case1
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(c1 int, c2 int, primary key(c1));
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c1 in(1);
select * from t1;
delete from t1 where c1 in(1,2);
select * from t1;
delete from t1 where c1>=3;
select * from t1;
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c1<=1;
select * from t1;
delete from t1 where 1>=c1;
select * from t1;
delete from t1 where 3<=c1;
select * from t1;
delete from t1 where 2<=c1;
select * from t1;
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c1>1 and c1<3;
select * from t1;
delete from t1 where c1=1 or c1=2;
select * from t1;
delete from t1 where c1<1 or c1<2;
select * from t1;
delete from t1 where c1=1 and c1=2;
select * from t1;
delete from t1 where c1>1 and c1=2;
select * from t1;
##case2
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(c1 int, c2 int, primary key(c1));
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c2 in(1);
select * from t1;
delete from t1 where c2 in(1,2);
select * from t1;
delete from t1 where c2>=3;
select * from t1;
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c2<=1;
select * from t1;
delete from t1 where 1>=c2;
select * from t1;
delete from t1 where 3<=c2;
select * from t1;
delete from t1 where c2>1 and c2<3;
select * from t1;
delete from t1 where c2=1 or c2=2;
select * from t1;
delete from t1 where c2<1 or c2<2;
select * from t1;
delete from t1 where c2=1 and c2=2;
select * from t1;
delete from t1 where c2>1 and c2=2;
select * from t1;
##case3
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(c1 int, c2 int, primary key(c1));
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where (c1,c2) in((1,1));
select * from t1;
delete from t1 where (c1,c2) in((1,1),(2,2));
select * from t1;
delete from t1 where (c2,c1) in((1,1));
select * from t1;
delete from t1 where (c2,c1) in((1,1),(2,2));
select * from t1;
delete from t1 where c1 > 1 and c2 >10 and c1=1;
select * from t1;
delete from t1 where c1 > 1 or c2 >10 and c1=1;
select * from t1;
##case4
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(c1 int, c2 int, primary key(c1));
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c2<=1;
select * from t1;
delete from t1 where 1>=c2;
select * from t1;
delete from t1 where 3<=c2;
select * from t1;
delete from t1 where c2>1 and c2<3;
select * from t1;
insert into t1 values(1,1),(2,2),(3,3);
delete from t1 where c2=1 or c2=2;
select * from t1;
delete from t1 where c2<1 or c2<2;
select * from t1;
delete from t1 where c2=1 and c2=2;
select * from t1;
delete from t1 where c2>1 and c2=2;
select * from t1;
--disable_warnings
drop table if exists t1;
--enable_warnings

View File

@ -0,0 +1,264 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
# owner: xiaoyi.xy
# owner group: SQL3
# description: 本case是为了测试delete 一个range内的数据
# tags: delete,dml
####TITLE: range delete
--disable_warnings
drop table if exists t1;
--enable_warnings
####CASE: single rowkey, using rowkey, >,>=,<,<=
create table t1 (a int, b int, primary key (a));
insert into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a=1;
delete from t1 where a>0;
select * from t1;
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a<5;
select * from t1;
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a>1;
select * from t1;
replace into t1(a,b) values(2,1),(3,1),(4,1);
delete from t1 where a<4;
select * from t1;
replace into t1(a,b) values(1,1),(2,1),(3,1);
delete from t1 where a>=1;
select * from t1;
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a<=5;
select * from t1;
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a>0 and a<2;
delete from t1 where a>=2 and a<3;
delete from t1 where a>=3 and a<=4;
select * from t1;
replace into t1(a,b) values(1,1),(2,1),(3,1),(4,1);
delete from t1 where a=1 or a=2 or a=3 or a=4;
select * from t1;
####CASE: single rowkey, using non_rowkey, >, >=, <, <=
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b>0;
select * from t1;
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b<6;
select * from t1;
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b>1;
select * from t1;
replace into t1(a,b) values(2,2),(3,3),(4,4);
delete from t1 where b<5;
select * from t1;
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b>=1;
select * from t1;
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b<=7;
select * from t1;
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b>0 and b<2;
delete from t1 where b>=2 and b<3;
delete from t1 where b>=3 and b<=4;
select * from t1;
replace into t1(a,b) values(1,1),(2,2),(3,3),(4,4);
delete from t1 where b=1 or b=2 or b=3 or b=4;
select * from t1;
####CASE: single rowkey: using rowkey + non_rowkey, >, >=, <,<=, or
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(a int, b int, c int, primary key(a));
replace into t1(a,b) values(1,1),(2,2),(3,1),(4,2);
delete from t1 where a>0 and b>1;
delete from t1 where a<5 and b<2;
select * from t1;
replace into t1(a,b) values(1,1),(2,2),(3,1),(4,2);
delete from t1 where a>=0 and b<=1;
delete from t1 where a<=5 and b>=2;
select * from t1;
replace into t1(a,b) values(1,1),(2,2),(3,1),(4,2);
delete from t1 where a=0 or a=1 or a=2 or b=1;
select * from t1;
replace into t1(a,b) values(1,1),(2,2),(3,1),(4,2);
delete from t1 where b=2 or a=1 or a=2;
select * from t1;
replace into t1(a,b,c) values(1,1,NULL),(2,2,NULL),(3,3,NULL),(4,4,NULL);
delete from t1 where a<=1 or b>=4;
select * from t1;
replace into t1(a,b,c) values(1,1,NULL),(2,2,NULL),(3,3,NULL),(4,4,NULL);
delete from t1 where a>1 or b<4;
select * from t1;
####CASE: two rowkeys, using rowkey, >, >=, <, <=
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(a int, b int, c int, d int, primary key(a,b));
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) > (0,0);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) < (4,4);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) >= (1,1);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) <= (1,1);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) in ((NULL,NULL),(0,0),(1,1),(2,2),(3,3),(4,4));
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b)=(1,1) or (a,b)=(2,2) or (a,b)=(3,3);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b) in ((1,1),(2,2),(3,3));
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b,c,d) >= (1,1,1,1);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b,c,d) <= (3,3,3,3);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,1,1),(3,3,1,1);
delete from t1 where (a,b,c,d)=(1,1,1,1) or (a,b,c,d)=(2,2,1,1) or (a,b,c,d)=(3,3,3,3);
select * from t1;
####CASE: two rowkeys, using one of rowkey, =, >, >=, <, <=
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(a int, b int, c int, d int, primary key(a,b));
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a = 1;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a > 0;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a >=1 ;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a < 4;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a <= 1;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a=1 or a=2 or a=3;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where (a=1 or a=2 or a=3) and (b=1 or b=2);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(1,2,1,1),(1,3,1,1);
delete from t1 where a>=1 and b>=2;
select * from t1;
####CASE:two rowkeys, using rowkey + non_rowkey, >, >=, <, <=, =
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1(a int, b int, c int, d int, primary key(a,b));
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a,b)>=(1,1) and c=1;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a,b)>=(1,1) and c=3;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a=1 or a=2 or a=3) and c>=1;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a=1 or a=2 or a=3) and c<1;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a=1 or a=2 or a=3) and (b=2 or b=3);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (a=1 or a=2 or a=3) and (b=2 or b=3) and c=3;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where a>=0 and a<=3 and b>1 and b<3;
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (c,d)>=(1,1);
select * from t1;
replace into t1(a,b,c,d) values(1,1,1,1),(2,2,2,1),(3,3,3,1);
delete from t1 where (b,a) > (1,1);
select * from t1;
####CASE:multi rowkeys
--disable_warnings
drop table if exists t1, t2, t3;
--enable_warnings
#int
create table t1(a int, b int, c int, d int, primary key(a,b,c));
insert into t1(a,b,c) values (1,1,1),(2,2,2),(3,3,3);
delete from t1 where (a,b,c)>(0,0,0) and (a,b,c)<=(3,3,3);
select * from t1;
#varchar
create table t2(a varchar(128), b varchar(128), c varchar(128), d varchar(128), primary key(a,b,c));
insert into t2(a,b,c) values ('a','a','a'),('b','b','b'),('c','c','c');
delete from t2 where (a,b,c)>=('a','a','b') and (a,b,c)<('b','b','c');
select * from t2;
#timestamp
create table t3(a int, b varchar(128), c timestamp(6) default "2012-01-01 12:00:00", d int, primary key(a,b,c));
insert into t3(a,b,c) values (1,'a','2014-02-17'),(2,'b','2014-02-17'),(3,'c','2014-02-18');
delete from t3 where (a,b,c)>=(1,'a','2014-02-17 00:00:00') and (a,b,c)<=(2,'b','2014-02-18');
select * from t3;
--disable_warnings
drop table if exists t1, t2, t3;
--enable_warnings

View File

@ -0,0 +1,13 @@
connect (obsys_for_load_data,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connection obsys_for_load_data;
--disable_query_log
let $HOST_IP = query_get_value('select host_ip()',host_ip(), 1);
let $DATA_FOLDER_NAME = data_for_mysqltest_direct_loaddata;
let $SCP_CMD = ssh $HOST_IP 'mkdir -p "$OBSERVER_DIR/$DATA_FOLDER_NAME"' && scp -r $PWD/mysql_test/test_suite/direct_load_data/data/* $HOST_IP:"$OBSERVER_DIR/$DATA_FOLDER_NAME";
exec $SCP_CMD;
--enable_query_log
disconnect obsys_for_load_data;
connection default;

View File

@ -0,0 +1,36 @@
use test;
drop table if exists lineitem;
create table lineitem(
l_orderkey bigint NOT NULL ,
l_partkey bigint NOT NULL ,
l_suppkey bigint NOT NULL ,
l_linenumber bigint NOT NULL ,
l_quantity bigint NOT NULL ,
l_extendedprice decimal(10,2) NOT NULL ,
l_discount decimal(10,2) NOT NULL ,
l_tax decimal(10,2) NOT NULL ,
l_returnflag char(1) ,
l_linestatus char(1) ,
l_shipdate date ,
l_commitdate date ,
l_receiptdate date ,
l_shipinstruct char(25) ,
l_shipmode char(10) ,
l_comment varchar(44),
primary key(L_ORDERKEY, L_LINENUMBER)
) partition by hash(l_orderkey) partitions 10;
set @@ob_query_timeout = 1000000*60*60*10, @@ob_trx_timeout=1000000*60*60*10;
select count(*) from lineitem;
count(*)
100000
truncate table lineitem;
set autocommit = off;
insert into lineitem values (1,1,1,1,1,0,0,0,'a','b',0,0,0,1,1,'c');
set @@ob_query_timeout = 1000000*30, @@ob_trx_timeout=1000000*30;
ERROR HY000: Timeout
rollback;
set @@ob_query_timeout = 1000000*60*60*10, @@ob_trx_timeout=1000000*60*60*10;
select count(*) from lineitem;
count(*)
100000
drop table lineitem;

View File

@ -0,0 +1,25 @@
use test;
drop table if exists lineitem;
create table lineitem(
l_orderkey bigint NOT NULL ,
l_partkey bigint NOT NULL ,
l_suppkey bigint NOT NULL ,
l_linenumber bigint NOT NULL ,
l_quantity bigint NOT NULL ,
l_extendedprice decimal(10,2) NOT NULL ,
l_discount decimal(10,2) NOT NULL ,
l_tax decimal(10,2) NOT NULL ,
l_returnflag char(1) ,
l_linestatus char(1) ,
l_shipdate date ,
l_commitdate date ,
l_receiptdate date ,
l_shipinstruct char(25) ,
l_shipmode char(10) ,
l_comment varchar(44)
) partition by hash(l_orderkey) partitions 10;
set @@ob_query_timeout = 1000000*60*60*10, @@ob_trx_timeout=1000000*60*60*10;
select count(*) from lineitem;
count(*)
100000
drop table lineitem;

View File

@ -0,0 +1,77 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
# owner: yuya.yu
# owner group: Cloud Storage
# description: direct load data
--source mysql_test/test_suite/direct_load_data/include/copy_data_for_direct_load.inc
connect (conn_query,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
--disable_warnings
connection default;
--enable_query_log
use test;
# Create table
--disable_warnings
drop table if exists lineitem;
--enable_warnings
create table lineitem(
l_orderkey bigint NOT NULL ,
l_partkey bigint NOT NULL ,
l_suppkey bigint NOT NULL ,
l_linenumber bigint NOT NULL ,
l_quantity bigint NOT NULL ,
l_extendedprice decimal(10,2) NOT NULL ,
l_discount decimal(10,2) NOT NULL ,
l_tax decimal(10,2) NOT NULL ,
l_returnflag char(1) ,
l_linestatus char(1) ,
l_shipdate date ,
l_commitdate date ,
l_receiptdate date ,
l_shipinstruct char(25) ,
l_shipmode char(10) ,
l_comment varchar(44),
primary key(L_ORDERKEY, L_LINENUMBER)
) partition by hash(l_orderkey) partitions 10;
set @@ob_query_timeout = 1000000*60*60*10, @@ob_trx_timeout=1000000*60*60*10;
# Start load data
--disable_query_log
eval load data /*+ direct(true,0) parallel(2) load_batch_size(100) */ infile "$OBSERVER_DIR/$DATA_FOLDER_NAME/lineitem/lineitem-100k.tbl" into table lineitem fields terminated by '|' enclosed by '' lines starting by '' terminated by '\n';
--enable_query_log
# Query table
select count(*) from lineitem;
# Parallel dml and load data
truncate table lineitem;
connection conn1;
set autocommit = off;
insert into lineitem values (1,1,1,1,1,0,0,0,'a','b',0,0,0,1,1,'c');
connection default;
set @@ob_query_timeout = 1000000*30, @@ob_trx_timeout=1000000*30;
--disable_query_log
--error 4012
eval load data /*+ direct(true,0) parallel(2) load_batch_size(100) */ infile "$OBSERVER_DIR/$DATA_FOLDER_NAME/lineitem/lineitem-100k.tbl" into table lineitem fields terminated by '|' enclosed by '' lines starting by '' terminated by '\n';
--enable_query_log
connection conn1;
rollback;
connection default;
--disable_query_log
eval load data /*+ direct(true,0) parallel(2) load_batch_size(100) */ infile "$OBSERVER_DIR/$DATA_FOLDER_NAME/lineitem/lineitem-100k.tbl" into table lineitem fields terminated by '|' enclosed by '' lines starting by '' terminated by '\n';
--enable_query_log
set @@ob_query_timeout = 1000000*60*60*10, @@ob_trx_timeout=1000000*60*60*10;
select count(*) from lineitem;
disconnect conn_query;
# Clean Up
drop table lineitem;

View File

@ -0,0 +1,53 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
# owner: yuya.yu
# owner group: Cloud Storage
# description: direct load data to heap table
--source mysql_test/test_suite/direct_load_data/include/copy_data_for_direct_load.inc
connect (conn_query,$OBMYSQL_MS0,admin,$OBMYSQL_PWD,oceanbase,$OBMYSQL_PORT);
--disable_warnings
connection default;
--enable_query_log
use test;
# Create table
--disable_warnings
drop table if exists lineitem;
--enable_warnings
create table lineitem(
l_orderkey bigint NOT NULL ,
l_partkey bigint NOT NULL ,
l_suppkey bigint NOT NULL ,
l_linenumber bigint NOT NULL ,
l_quantity bigint NOT NULL ,
l_extendedprice decimal(10,2) NOT NULL ,
l_discount decimal(10,2) NOT NULL ,
l_tax decimal(10,2) NOT NULL ,
l_returnflag char(1) ,
l_linestatus char(1) ,
l_shipdate date ,
l_commitdate date ,
l_receiptdate date ,
l_shipinstruct char(25) ,
l_shipmode char(10) ,
l_comment varchar(44)
) partition by hash(l_orderkey) partitions 10;
set @@ob_query_timeout = 1000000*60*60*10, @@ob_trx_timeout=1000000*60*60*10;
# Start load data
--disable_query_log
eval load data /*+ direct(false,0) parallel(2) load_batch_size(100) */ infile "$OBSERVER_DIR/$DATA_FOLDER_NAME/lineitem/lineitem-100k.tbl" into table lineitem fields terminated by '|' enclosed by '' lines starting by '' terminated by '\n';
--enable_query_log
# Query table
select count(*) from lineitem;
disconnect conn_query;
# Clean Up
drop table lineitem;

View File

@ -0,0 +1,300 @@
drop database if exists duptable_database;
create database duptable_database;
use duptable_database;
drop table if exists t1;
drop table if exists t2;
drop table if exists dup_t1;
drop table if exists dup_t2;
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1, c2)) duplicate_scope='cluster';
create table dup_t2 (d1 int, d2 int, d3 int, primary key(d1, d2)) duplicate_scope='cluster';
create table t1 (c1 int, c2 int, c3 int, primary key(c1, c2));
create table t2 (d1 int, d2 int, d3 int, primary key(d1, d2));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`, `c2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`d1` int(11) NOT NULL,
`d2` int(11) NOT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`, `d2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
show create table dup_t1;
Table Create Table
dup_t1 CREATE TABLE `dup_t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`, `c2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
show create table dup_t2;
Table Create Table
dup_t2 CREATE TABLE `dup_t2` (
`d1` int(11) NOT NULL,
`d2` int(11) NOT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`, `d2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
insert into t1 values(1, 1, 1);
insert into t1 values(2, 2, 2);
insert into t1 values(3, 3, 3);
insert into t2 values(1, 1, 1);
insert into t2 values(2, 2, 2);
insert into t2 values(4, 4, 4);
insert into dup_t1 select * from t1;
insert into dup_t2 select * from t2;
select * from t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
select * from dup_t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
select * from t2;
d1 d2 d3
1 1 1
2 2 2
4 4 4
select * from dup_t2;
d1 d2 d3
1 1 1
2 2 2
4 4 4
duplicate_scope
1
duplicate_scope
1
duplicate_scope
0
duplicate_scope
0
准备: 将复制表的leader和普通表的leader分开
ls_state
LEADER
ls_state
LEADER
t1 语句查询普通表和复制表的场景
select * from t1, dup_t1 where t1.c1 = dup_t1.c1;
c1 c2 c3 c1 c2 c3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
select * from t2, dup_t2 where t2.d1 = dup_t2.d1;
d1 d2 d3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
4 4 4 4 4 4
t2 复制表插入然后再做多表查询
begin;
insert into dup_t1 values (11, 11, 11);
insert into dup_t2 values (11, 11, 11);
select * from dup_t1, dup_t2 where dup_t1.c1 = dup_t2.d1;
c1 c2 c3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
11 11 11 11 11 11
select * from dup_t1, t1 where dup_t1.c1 = t1.c1;
c1 c2 c3 c1 c2 c3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
select * from dup_t2, t2 where dup_t2.d1 = t2.d1;
d1 d2 d3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
4 4 4 4 4 4
commit;
t3 复制表先查询,在做插入
begin;
select * from dup_t1, dup_t2 where dup_t1.c1 = dup_t2.d1;
c1 c2 c3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
11 11 11 11 11 11
select * from dup_t1, t1 where dup_t1.c1 = t1.c1;
c1 c2 c3 c1 c2 c3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
select * from dup_t2, t2 where dup_t2.d1 = t2.d1;
d1 d2 d3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
4 4 4 4 4 4
insert into dup_t1 values (22, 22, 22);
insert into dup_t2 values (22, 22, 22);
commit;
t4 复制表先查询,后插入,再查询
begin;
select * from dup_t1, dup_t2 where dup_t1.c1 = dup_t2.d1;
c1 c2 c3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
11 11 11 11 11 11
22 22 22 22 22 22
select * from dup_t1, t1 where dup_t1.c1 = t1.c1;
c1 c2 c3 c1 c2 c3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
select * from dup_t2, t2 where dup_t2.d1 = t2.d1;
d1 d2 d3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
4 4 4 4 4 4
insert into dup_t1 values (33, 33, 33);
insert into dup_t2 values (33, 33, 33);
insert into t1 values (33, 33, 33);
insert into t2 values (33, 33, 33);
select * from dup_t1, dup_t2 where dup_t1.c1 = dup_t2.d1;
c1 c2 c3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
11 11 11 11 11 11
22 22 22 22 22 22
33 33 33 33 33 33
select * from dup_t1, t1 where dup_t1.c1 = t1.c1;
c1 c2 c3 c1 c2 c3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
33 33 33 33 33 33
select * from dup_t2, t2 where dup_t2.d1 = t2.d1;
d1 d2 d3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
4 4 4 4 4 4
33 33 33 33 33 33
commit;
t5 单表查询
begin;
select * from t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
33 33 33
select * from dup_t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
11 11 11
22 22 22
33 33 33
select * from t2;
d1 d2 d3
1 1 1
2 2 2
4 4 4
33 33 33
select * from dup_t2;
d1 d2 d3
1 1 1
2 2 2
4 4 4
11 11 11
22 22 22
33 33 33
commit;
t6 测试单分区事务在执行的过程中,查询复制表的场景
begin;
insert into t1 values(44, 44, 44);
select * from t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
33 33 33
44 44 44
select * from dup_t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
11 11 11
22 22 22
33 33 33
commit;
t7 测试单分区事务在执行过程中,和复制表做join的场景
begin;
insert into t1 values(55, 55, 55);
select * from t1, dup_t1 where t1.c1 = dup_t1.c1;
c1 c2 c3 c1 c2 c3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
33 33 33 33 33 33
commit;
将普通表leader切回来
ls_state
LEADER
ls_state
LEADER
use duptable_database;
t6 测试一阶段提交
begin;
insert into t1 values(66, 66, 66);
insert into dup_t1 values(66, 66, 66);
insert into t2 values(66, 66, 66);
commit;
select * from t1, dup_t1 where t1.c1 = dup_t1.c1;
c1 c2 c3 c1 c2 c3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
33 33 33 33 33 33
66 66 66 66 66 66
begin;
insert into t1 values(77, 77, 77);
select * from dup_t2;
d1 d2 d3
1 1 1
2 2 2
4 4 4
11 11 11
22 22 22
33 33 33
select * from t1, dup_t1 where t1.c1 = dup_t1.c1;
c1 c2 c3 c1 c2 c3
1 1 1 1 1 1
2 2 2 2 2 2
3 3 3 3 3 3
33 33 33 33 33 33
66 66 66 66 66 66
insert into t2 values(77, 77, 77);
select * from t2, dup_t2 where dup_t2.d1 = t2.d1;
d1 d2 d3 d1 d2 d3
1 1 1 1 1 1
2 2 2 2 2 2
4 4 4 4 4 4
33 33 33 33 33 33
commit;
use duptable_database;
drop table if exists tt2;
drop table if exists dup2;
CREATE TABLE `tt2` (
`x` int(11) DEFAULT NULL,
`y` int(11) DEFAULT NULL
) partition by hash(x) partitions 2;
CREATE TABLE `dup2` (
`x` int(11) DEFAULT NULL,
`y` int(11) DEFAULT NULL
) duplicate_scope='cluster';
insert into tt2 values(1,2),(3,4);
insert into dup2 select * from tt2;
select * from dup2 order by 1;
x y
1 2
3 4
drop table if exists tt2;
drop table if exists dup2;

View File

@ -0,0 +1,64 @@
set @@session.recyclebin=off;
create database duptable_database;
use duptable_database;
drop table if exists t1;
drop table if exists t2;
drop table if exists dup_t1;
drop table if exists dup_t2;
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1, c2)) duplicate_scope='cluster';
create table dup_t2 (d1 int, d2 int, d3 int, primary key(d1, d2)) duplicate_scope='cluster';
create table t1 (c1 int, c2 int, c3 int, primary key(c1, c2));
create table t2 (d1 int, d2 int, d3 int, primary key(d1, d2));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`, `c2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`d1` int(11) NOT NULL,
`d2` int(11) NOT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`, `d2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
show create table dup_t1;
Table Create Table
dup_t1 CREATE TABLE `dup_t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`, `c2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
show create table dup_t2;
Table Create Table
dup_t2 CREATE TABLE `dup_t2` (
`d1` int(11) NOT NULL,
`d2` int(11) NOT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`, `d2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
duplicate_scope
1
duplicate_scope
1
duplicate_scope
0
duplicate_scope
0
准备: 将复制表的leader和普通表的leader分开
count(*)
1
count(*)
1
ls_state
LEADER
ls_state
LEADER
count(*)
1
count(*)
1

View File

@ -0,0 +1,164 @@
alter system set_tp tp_name = ERRSIM_DUP_TABLE_GC_RIGHT_NOW, error_code = 4016, frequency = 0;
alter system set_tp tp_name = ERRSIM_DUP_TABLE_GC_RIGHT_NOW, error_code = 4016, frequency = 1;
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1, c2)) duplicate_scope='cluster';
create table dup_t2 (d1 int, d2 int, d3 int, primary key(d1, d2)) duplicate_scope='cluster';
create table dup_t3 (d1 int, d2 int, d3 int, primary key(d1)) duplicate_scope='cluster' PARTITION BY HASH(d1) PARTITIONS 5;
create table dup_t4 (d1 int, d2 int, d3 int, primary key(d1)) duplicate_scope='cluster' PARTITION BY HASH(d1) PARTITIONS 30;
create table t1 (c1 int, c2 int, c3 int, primary key(c1, c2));
create table t2 (d1 int, d2 int, d3 int, primary key(d1, d2));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`, `c2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`d1` int(11) NOT NULL,
`d2` int(11) NOT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`, `d2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
show create table dup_t1;
Table Create Table
dup_t1 CREATE TABLE `dup_t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`, `c2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
show create table dup_t2;
Table Create Table
dup_t2 CREATE TABLE `dup_t2` (
`d1` int(11) NOT NULL,
`d2` int(11) NOT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`, `d2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
show create table dup_t3;
Table Create Table
dup_t3 CREATE TABLE `dup_t3` (
`d1` int(11) NOT NULL,
`d2` int(11) DEFAULT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
partition by hash(d1)
(partition `p0`,
partition `p1`,
partition `p2`,
partition `p3`,
partition `p4`)
show create table dup_t4;
Table Create Table
dup_t4 CREATE TABLE `dup_t4` (
`d1` int(11) NOT NULL,
`d2` int(11) DEFAULT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
partition by hash(d1)
(partition `p0`,
partition `p1`,
partition `p2`,
partition `p3`,
partition `p4`,
partition `p5`,
partition `p6`,
partition `p7`,
partition `p8`,
partition `p9`,
partition `p10`,
partition `p11`,
partition `p12`,
partition `p13`,
partition `p14`,
partition `p15`,
partition `p16`,
partition `p17`,
partition `p18`,
partition `p19`,
partition `p20`,
partition `p21`,
partition `p22`,
partition `p23`,
partition `p24`,
partition `p25`,
partition `p26`,
partition `p27`,
partition `p28`,
partition `p29`)
insert into t1 values(1, 1, 1);
insert into t1 values(2, 2, 2);
insert into t1 values(3, 3, 3);
insert into t2 values(1, 1, 1);
insert into t2 values(2, 2, 2);
insert into t2 values(4, 4, 4);
insert into dup_t1 select * from t1;
insert into dup_t2 select * from t2;
insert into dup_t3 select * from t1;
insert into dup_t4 select * from t2;
select * from t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
select * from dup_t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
select * from t2;
d1 d2 d3
1 1 1
2 2 2
4 4 4
select * from dup_t2;
d1 d2 d3
1 1 1
2 2 2
4 4 4
select * from dup_t3;
d1 d2 d3
1 1 1
2 2 2
3 3 3
select * from dup_t4;
d1 d2 d3
1 1 1
2 2 2
4 4 4
duplicate_scope
1
duplicate_scope
1
duplicate_scope
1
duplicate_scope
1
duplicate_scope
0
duplicate_scope
0
count(*)
1
count(*)
1
count(*)
5
count(*)
30
count(*)
0
ls_state
LEADER
sum(count)
37
sum(count)
37
count(*)
0
drop tenant duptable_tenant1 force;

View File

@ -0,0 +1,177 @@
set @@recyclebin=off;
drop table if exists t1;
drop table if exists t2;
drop table if exists dup_t1;
drop table if exists dup_t2;
drop table if exists dup_t3;
drop table if exists dup_t4;
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1, c2)) duplicate_scope='cluster';
create table dup_t2 (d1 int, d2 int, d3 int, primary key(d1, d2)) duplicate_scope='cluster';
create table dup_t3 (d1 int, d2 int, d3 int, primary key(d1)) duplicate_scope='cluster' PARTITION BY HASH(d1) PARTITIONS 5;
create table dup_t4 (d1 int, d2 int, d3 int, primary key(d1)) duplicate_scope='cluster' PARTITION BY HASH(d1) PARTITIONS 30;
create table t1 (c1 int, c2 int, c3 int, primary key(c1, c2));
create table t2 (d1 int, d2 int, d3 int, primary key(d1, d2));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`, `c2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`d1` int(11) NOT NULL,
`d2` int(11) NOT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`, `d2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
show create table dup_t1;
Table Create Table
dup_t1 CREATE TABLE `dup_t1` (
`c1` int(11) NOT NULL,
`c2` int(11) NOT NULL,
`c3` int(11) DEFAULT NULL,
PRIMARY KEY (`c1`, `c2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
show create table dup_t2;
Table Create Table
dup_t2 CREATE TABLE `dup_t2` (
`d1` int(11) NOT NULL,
`d2` int(11) NOT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`, `d2`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
show create table dup_t3;
Table Create Table
dup_t3 CREATE TABLE `dup_t3` (
`d1` int(11) NOT NULL,
`d2` int(11) DEFAULT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
partition by hash(d1)
(partition `p0`,
partition `p1`,
partition `p2`,
partition `p3`,
partition `p4`)
show create table dup_t4;
Table Create Table
dup_t4 CREATE TABLE `dup_t4` (
`d1` int(11) NOT NULL,
`d2` int(11) DEFAULT NULL,
`d3` int(11) DEFAULT NULL,
PRIMARY KEY (`d1`)
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10 DUPLICATE_SCOPE = 'CLUSTER'
partition by hash(d1)
(partition `p0`,
partition `p1`,
partition `p2`,
partition `p3`,
partition `p4`,
partition `p5`,
partition `p6`,
partition `p7`,
partition `p8`,
partition `p9`,
partition `p10`,
partition `p11`,
partition `p12`,
partition `p13`,
partition `p14`,
partition `p15`,
partition `p16`,
partition `p17`,
partition `p18`,
partition `p19`,
partition `p20`,
partition `p21`,
partition `p22`,
partition `p23`,
partition `p24`,
partition `p25`,
partition `p26`,
partition `p27`,
partition `p28`,
partition `p29`)
insert into t1 values(1, 1, 1);
insert into t1 values(2, 2, 2);
insert into t1 values(3, 3, 3);
insert into t2 values(1, 1, 1);
insert into t2 values(2, 2, 2);
insert into t2 values(4, 4, 4);
insert into dup_t1 select * from t1;
insert into dup_t2 select * from t2;
insert into dup_t3 select * from t1;
insert into dup_t4 select * from t2;
select * from t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
select * from dup_t1;
c1 c2 c3
1 1 1
2 2 2
3 3 3
select * from t2;
d1 d2 d3
1 1 1
2 2 2
4 4 4
select * from dup_t2;
d1 d2 d3
1 1 1
2 2 2
4 4 4
select * from dup_t3;
d1 d2 d3
1 1 1
2 2 2
3 3 3
select * from dup_t4;
d1 d2 d3
1 1 1
2 2 2
4 4 4
count(*)
37
duplicate_scope
1
duplicate_scope
1
duplicate_scope
1
duplicate_scope
1
duplicate_scope
0
duplicate_scope
0
count(*)
1
count(*)
1
count(*)
5
count(*)
30
ls_state
LEADER
ls_state
LEADER
count(*)
1
count(*)
1
count(*)
5
count(*)
30
count(*)
37
count(*)
37
drop tenant duptable_tenant1 force;

View File

@ -0,0 +1,164 @@
drop database if exists duptable_database;
create database duptable_database;
use duptable_database;
drop table if exists t1;
drop table if exists t2;
drop table if exists dup_t1;
drop table if exists dup_t2;
drop table if exists dup_t3;
create table t1 (c1 int, c2 int, c3 int, primary key(c1));
create table t2 (c1 int, c2 int, c3 int, primary key(c1));
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1)) duplicate_scope='cluster';
create table dup_t2 (c1 int, c2 int, c3 int, primary key(c1)) duplicate_scope='cluster';
create table dup_t3 (c1 int, c2 int, c3 int) duplicate_scope='cluster';
insert into t1 values(1, 1, 1);
insert into t1 values(2, 2, 2);
insert into t1 values(3, 3, 3);
insert into t2 values(1, 1, 1);
insert into t2 values(2, 2, 2);
insert into t2 values(4, 4, 4);
insert into dup_t1 select * from t1;
insert into dup_t2 select * from t2;
insert into t1 values(5, 5, 5);
insert into t2 values(5, 5, 5);
insert into dup_t1 values(5, 5, 5);
insert into dup_t2 values(5, 5, 5);
commit;
insert into t1 values(6, 6, 6);
insert into t2 values(6, 6, 6);
insert into dup_t1 values(6, 6, 6);
insert into dup_t2 values(6, 6, 6);
commit;
insert into t1 values(7, 7, 7);
insert into t2 values(7, 7, 7);
insert into dup_t1 values(7, 7, 7);
insert into dup_t2 values(7, 7, 7);
commit;
insert into t1 values(8, 8, 8);
insert into t2 values(8, 8, 8);
insert into dup_t1 values(8, 8, 8);
insert into dup_t2 values(8, 8, 8);
commit;
insert into t1 values(9, 9, 9);
insert into t2 values(9, 9, 9);
insert into dup_t1 values(9, 9, 9);
insert into dup_t2 values(9, 9, 9);
commit;
insert into t1 values(10, 10, 10);
insert into t2 values(10, 10, 10);
insert into dup_t1 values(10, 10, 10);
insert into dup_t2 values(10, 10, 10);
commit;
insert into t1 values(11, 11, 11);
insert into t2 values(11, 11, 11);
insert into dup_t1 values(11, 11, 11);
insert into dup_t2 values(11, 11, 11);
commit;
insert into t1 values(12, 12, 12);
insert into t2 values(12, 12, 12);
insert into dup_t1 values(12, 12, 12);
insert into dup_t2 values(12, 12, 12);
commit;
insert into t1 values(13, 13, 13);
insert into t2 values(13, 13, 13);
insert into dup_t1 values(13, 13, 13);
insert into dup_t2 values(13, 13, 13);
commit;
insert into t1 values(14, 14, 14);
insert into t2 values(14, 14, 14);
insert into dup_t1 values(14, 14, 14);
insert into dup_t2 values(14, 14, 14);
commit;
insert into t1 values(15, 15, 15);
insert into t2 values(15, 15, 15);
insert into dup_t1 values(15, 15, 15);
insert into dup_t2 values(15, 15, 15);
commit;
insert into t1 values(16, 16, 16);
insert into t2 values(16, 16, 16);
insert into dup_t1 values(16, 16, 16);
insert into dup_t2 values(16, 16, 16);
commit;
insert into t1 values(17, 17, 17);
insert into t2 values(17, 17, 17);
insert into dup_t1 values(17, 17, 17);
insert into dup_t2 values(17, 17, 17);
commit;
insert into t1 values(18, 18, 18);
insert into t2 values(18, 18, 18);
insert into dup_t1 values(18, 18, 18);
insert into dup_t2 values(18, 18, 18);
commit;
insert into t1 values(19, 19, 19);
insert into t2 values(19, 19, 19);
insert into dup_t1 values(19, 19, 19);
insert into dup_t2 values(19, 19, 19);
commit;
insert into t1 values(20, 20, 20);
insert into t2 values(20, 20, 20);
insert into dup_t1 values(20, 20, 20);
insert into dup_t2 values(20, 20, 20);
commit;
insert into t1 values(21, 21, 21);
insert into t2 values(21, 21, 21);
insert into dup_t1 values(21, 21, 21);
insert into dup_t2 values(21, 21, 21);
commit;
insert into t1 values(22, 22, 22);
insert into t2 values(22, 22, 22);
insert into dup_t1 values(22, 22, 22);
insert into dup_t2 values(22, 22, 22);
commit;
insert into t1 values(23, 23, 23);
insert into t2 values(23, 23, 23);
insert into dup_t1 values(23, 23, 23);
insert into dup_t2 values(23, 23, 23);
commit;
insert into t1 values(24, 24, 24);
insert into t2 values(24, 24, 24);
insert into dup_t1 values(24, 24, 24);
insert into dup_t2 values(24, 24, 24);
commit;
ls_state
LEADER
ls_state
LEADER
ls_state
LEADER
ls_state
LEADER
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
ls_state
LEADER
ls_state
LEADER
ls_state
LEADER
ls_state
LEADER
count(*)
23
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
use duptable_database;
insert into dup_t3 select * from dup_t2;
select count(*) from dup_t3;
count(*)
46
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3
c1 c2 c3 c1 c2 c3

View File

@ -0,0 +1,264 @@
# owner: weixiaoxian.wxx
# owner group: transaction
# test_no: 04001
# tags: 4.x dup table
# description: test 4.x basic dup table read write, test case same as "test_duplicate_table.test"
## build connect
connect (obsys, $OBMYSQL_MS0, root@sys, "", oceanbase, $OBMYSQL_PORT);
######## create duptable tenant
connection obsys;
--disable_warnings
--disable_query_log
--source mysql_test/include/check_tenant_sync.inc
--enable_query_log
--enable_warnings
####### begin test dup table
connect (conn0,$OBMYSQL_MS0,root@mysql,,test,$OBMYSQL_PORT);
connect (conn1,$OBMYSQL_MS0,root@mysql,,test,$OBMYSQL_PORT);
connection conn0;
--disable_warnings
drop database if exists duptable_database;
create database duptable_database;
use duptable_database;
--error 0,942
drop table if exists t1;
--error 0,942
drop table if exists t2;
--error 0,942
drop table if exists dup_t1;
--error 0,942
drop table if exists dup_t2;
--enable_warnings
## create dup table
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1, c2)) duplicate_scope='cluster';
create table dup_t2 (d1 int, d2 int, d3 int, primary key(d1, d2)) duplicate_scope='cluster';
## create table
create table t1 (c1 int, c2 int, c3 int, primary key(c1, c2));
create table t2 (d1 int, d2 int, d3 int, primary key(d1, d2));
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table t1;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table t2;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t1;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t2;
insert into t1 values(1, 1, 1);
insert into t1 values(2, 2, 2);
insert into t1 values(3, 3, 3);
insert into t2 values(1, 1, 1);
insert into t2 values(2, 2, 2);
insert into t2 values(4, 4, 4);
insert into dup_t1 select * from t1;
insert into dup_t2 select * from t2;
select * from t1;
select * from dup_t1;
select * from t2;
select * from dup_t2;
sleep 15;
connection obsys;
let $tenant_id = query_get_value(select tenant_id from __all_tenant where tenant_name = 'mysql', tenant_id, 1);
let $database_id = query_get_value(select database_id from __all_virtual_database where database_name = 'duptable_database' and tenant_id = $tenant_id, database_id, 1);
## check duplicate scope
--disable_query_log
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t1' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t2' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 't1' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 't2' and tenant_id = $tenant_id and database_id = $database_id;
--enable_query_log
--echo 准备: 将复制表的leader和普通表的leader分开
## get table id
let $t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
## get ls id of dup table
let $dup_t1_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t1_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $dup_t2_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t2_table_id and tenant_id = $tenant_id, LS_ID, 1);
## get the ip:port of dup table follower
let $dup_t1_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_IP, 1);
let $dup_t1_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_PORT, 1);
let $dup_t2_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $dup_t2_ls_id ORDER BY SVR_PORT, SVR_IP, 1);
let $dup_t2_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $dup_t2_ls_id ORDER BY SVR_PORT, SVR_PORT, 1);
## get the ip:port of dup table leader
let $dup_t1_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_IP, 1);
let $dup_t1_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_PORT, 1);
let $dup_t2_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t2_ls_id, SVR_IP, 1);
let $dup_t2_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t2_ls_id, SVR_PORT, 1);
## switch leader to dup table follower server
--disable_query_log
eval alter system switch replica leader ls=$dup_t1_ls_id server='$dup_t1_follow_ip:$dup_t1_follow_port' tenant='mysql';
eval alter system switch replica leader ls=$dup_t2_ls_id server='$dup_t2_follow_ip:$dup_t2_follow_port' tenant='mysql';
--enable_query_log
## sleep 20s wait for switch
sleep 20;
## check switch leader succ
--disable_query_log
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t1_ls_id and SVR_IP = '$dup_t1_follow_ip' and SVR_PORT = '$dup_t1_follow_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t2_ls_id and SVR_IP = '$dup_t2_follow_ip' and SVR_PORT = '$dup_t2_follow_port' and tenant_id = $tenant_id;
--enable_query_log
--echo t1 语句查询普通表和复制表的场景
connection conn0;
select * from t1, dup_t1 where t1.c1 = dup_t1.c1;
select * from t2, dup_t2 where t2.d1 = dup_t2.d1;
--echo t2 复制表插入然后再做多表查询
begin;
insert into dup_t1 values (11, 11, 11);
insert into dup_t2 values (11, 11, 11);
select * from dup_t1, dup_t2 where dup_t1.c1 = dup_t2.d1;
select * from dup_t1, t1 where dup_t1.c1 = t1.c1;
select * from dup_t2, t2 where dup_t2.d1 = t2.d1;
commit;
--echo t3 复制表先查询,在做插入
begin;
select * from dup_t1, dup_t2 where dup_t1.c1 = dup_t2.d1;
select * from dup_t1, t1 where dup_t1.c1 = t1.c1;
select * from dup_t2, t2 where dup_t2.d1 = t2.d1;
insert into dup_t1 values (22, 22, 22);
insert into dup_t2 values (22, 22, 22);
commit;
--echo t4 复制表先查询,后插入,再查询
begin;
select * from dup_t1, dup_t2 where dup_t1.c1 = dup_t2.d1;
select * from dup_t1, t1 where dup_t1.c1 = t1.c1;
select * from dup_t2, t2 where dup_t2.d1 = t2.d1;
insert into dup_t1 values (33, 33, 33);
insert into dup_t2 values (33, 33, 33);
insert into t1 values (33, 33, 33);
insert into t2 values (33, 33, 33);
select * from dup_t1, dup_t2 where dup_t1.c1 = dup_t2.d1;
select * from dup_t1, t1 where dup_t1.c1 = t1.c1;
select * from dup_t2, t2 where dup_t2.d1 = t2.d1;
commit;
--echo t5 单表查询
begin;
select * from t1;
select * from dup_t1;
select * from t2;
select * from dup_t2;
commit;
--echo t6 测试单分区事务在执行的过程中,查询复制表的场景
begin;
insert into t1 values(44, 44, 44);
select * from t1;
select * from dup_t1;
commit;
--echo t7 测试单分区事务在执行过程中,和复制表做join的场景
begin;
insert into t1 values(55, 55, 55);
select * from t1, dup_t1 where t1.c1 = dup_t1.c1;
commit;
--echo 将普通表leader切回来
connection obsys;
--disable_query_log
eval alter system switch replica leader ls=$dup_t1_ls_id server='$dup_t1_leader_ip:$dup_t1_leader_port' tenant='mysql';
eval alter system switch replica leader ls=$dup_t2_ls_id server='$dup_t2_leader_ip:$dup_t2_leader_port' tenant='mysql';
--enable_query_log
sleep 20;
## check switch leader succ
--disable_query_log
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t1_ls_id and SVR_IP = '$dup_t1_leader_ip' and SVR_PORT = '$dup_t1_leader_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t2_ls_id and SVR_IP = '$dup_t1_leader_ip' and SVR_PORT = '$dup_t2_leader_port' and tenant_id = $tenant_id;
--enable_query_log
connection conn1;
use duptable_database;
--echo t6 测试一阶段提交
begin;
insert into t1 values(66, 66, 66);
insert into dup_t1 values(66, 66, 66);
insert into t2 values(66, 66, 66);
commit;
select * from t1, dup_t1 where t1.c1 = dup_t1.c1;
begin;
insert into t1 values(77, 77, 77);
select * from dup_t2;
select * from t1, dup_t1 where t1.c1 = dup_t1.c1;
insert into t2 values(77, 77, 77);
select * from t2, dup_t2 where dup_t2.d1 = t2.d1;
commit;
connection conn0;
use duptable_database;
--disable_warnings
--error 0,942
drop table if exists tt2;
--error 0,942
drop table if exists dup2;
--enable_warnings
#
#[复制表]使用insert into select 语句插入数据会进入重试死循环
CREATE TABLE `tt2` (
`x` int(11) DEFAULT NULL,
`y` int(11) DEFAULT NULL
) partition by hash(x) partitions 2;
CREATE TABLE `dup2` (
`x` int(11) DEFAULT NULL,
`y` int(11) DEFAULT NULL
) duplicate_scope='cluster';
###此处应该连备机
insert into tt2 values(1,2),(3,4);
insert into dup2 select * from tt2;
sleep 10;
select * from dup2 order by 1;
drop table if exists tt2;
drop table if exists dup2;
connection conn0;
--disable_query_log
--disable_warnings
--error 0,942
drop table if exists t1;
--error 0,942
drop table if exists t2;
--error 0,942
drop table if exists dup_t1;
--error 0,942
drop table if exists dup_t2;
--error 0,942
drop table if exists dup_t3;
--enable_warnings
drop database duptable_database;
--enable_query_log
disconnect conn0;
disconnect conn1;
disconnect obsys;

View File

@ -0,0 +1,143 @@
# owner: weixiaoxian.wxx
# owner group: transaction
# test_no: 04002
# tags: 4.x dup table
# description: test 4.x dup table basic lease, test normal and after switch leader, follower can get lease
## build connect
connect (obsys, $OBMYSQL_MS0, root@sys, "", oceanbase, $OBMYSQL_PORT);
connection obsys;
--disable_warnings
--disable_query_log
--source mysql_test/include/check_tenant_sync.inc
--enable_query_log
--enable_warnings
connect (conn0,$OBMYSQL_MS0,root@mysql,,test,$OBMYSQL_PORT);
connect (conn1,$OBMYSQL_MS0,root@mysql,,test,$OBMYSQL_PORT);
connection conn0;
## close recyclebin
set @@session.recyclebin=off;
create database duptable_database;
use duptable_database;
--disable_warnings
--error 0,942
drop table if exists t1;
--error 0,942
drop table if exists t2;
--error 0,942
drop table if exists dup_t1;
--error 0,942
drop table if exists dup_t2;
--enable_warnings
## create dup table
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1, c2)) duplicate_scope='cluster';
create table dup_t2 (d1 int, d2 int, d3 int, primary key(d1, d2)) duplicate_scope='cluster';
## create table
create table t1 (c1 int, c2 int, c3 int, primary key(c1, c2));
create table t2 (d1 int, d2 int, d3 int, primary key(d1, d2));
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table t1;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table t2;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t1;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t2;
connection obsys;
let $tenant_id = query_get_value(select tenant_id from __all_tenant where tenant_name = 'mysql', tenant_id, 1);
let $database_id = query_get_value(select database_id from __all_virtual_database where database_name = 'duptable_database' and tenant_id = $tenant_id, database_id, 1);
## check duplicate scope
--disable_query_log
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t1' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t2' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 't1' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 't2' and tenant_id = $tenant_id and database_id = $database_id;
--enable_query_log
--echo 准备: 将复制表的leader和普通表的leader分开
## get table id
let $t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
## get ls id of dup table
let $dup_t1_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t1_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $dup_t2_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t2_table_id and tenant_id = $tenant_id, LS_ID, 1);
## get the ip:port of dup table follower
let $dup_t1_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_IP, 1);
let $dup_t1_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_PORT, 1);
let $dup_t2_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $dup_t2_ls_id ORDER BY SVR_PORT, SVR_IP, 1);
let $dup_t2_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $dup_t2_ls_id ORDER BY SVR_PORT, SVR_PORT, 1);
## get the ip:port of dup table leader
let $dup_t1_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_IP, 1);
let $dup_t1_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_PORT, 1);
let $dup_t2_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t2_ls_id, SVR_IP, 1);
let $dup_t2_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t2_ls_id, SVR_PORT, 1);
sleep 20;
## check dup_t1 lease virtual table
--disable_query_log
eval select count(*) from oceanbase.__all_virtual_dup_ls_lease_mgr where svr_ip = '$dup_t1_leader_ip' and svr_port = $dup_t1_leader_port and follower_ip = '$dup_t1_follow_ip' and follower_port = $dup_t1_follow_port and tenant_id = $tenant_id;
eval select count(*) from oceanbase.__all_virtual_dup_ls_lease_mgr where svr_ip = '$dup_t2_leader_ip' and svr_port = $dup_t2_leader_port and follower_ip = '$dup_t2_follow_ip' and follower_port = $dup_t2_follow_port and tenant_id = $tenant_id;
--enable_query_log
## switch leader to dup table follower server
--disable_query_log
eval alter system switch replica leader ls=$dup_t1_ls_id server='$dup_t1_follow_ip:$dup_t1_follow_port' tenant='mysql';
eval alter system switch replica leader ls=$dup_t2_ls_id server='$dup_t2_follow_ip:$dup_t2_follow_port' tenant='mysql';
--enable_query_log
## sleep 20s wait for switch leader
sleep 20;
## check switch leader succ
--disable_query_log
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t1_ls_id and SVR_IP = '$dup_t1_follow_ip' and SVR_PORT = '$dup_t1_follow_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t2_ls_id and SVR_IP = '$dup_t2_follow_ip' and SVR_PORT = '$dup_t2_follow_port' and tenant_id = $tenant_id;
--enable_query_log
## check follower can get lease after switch leader
--disable_query_log
eval select count(*) from oceanbase.__all_virtual_dup_ls_lease_mgr where svr_ip = '$dup_t1_follow_ip' and svr_port = $dup_t1_follow_port and follower_ip = '$dup_t1_leader_ip' and follower_port = $dup_t1_leader_port and tenant_id = $tenant_id;
eval select count(*) from oceanbase.__all_virtual_dup_ls_lease_mgr where svr_ip = '$dup_t2_follow_ip' and svr_port = $dup_t2_follow_port and follower_ip = '$dup_t2_leader_ip' and follower_port = $dup_t2_leader_port and tenant_id = $tenant_id;
--enable_query_log
connection conn0;
--disable_query_log
--disable_warnings
--error 0,942
drop table if exists t1;
--error 0,942
drop table if exists t2;
--error 0,942
drop table if exists dup_t1;
--error 0,942
drop table if exists dup_t2;
--error 0,942
drop table if exists dup_t3;
--enable_warnings
drop database duptable_database;
--enable_query_log
disconnect conn0;
disconnect conn1;
disconnect obsys;

View File

@ -0,0 +1,205 @@
# owner: weixiaoxian.wxx
# owner group: transaction
# test_no: 04003
# tags: 4.x dup table
# description: test basic add and remove duplicate tablet
## build connect
connect (obsys, $OBMYSQL_MS0, root@sys, "", oceanbase, $OBMYSQL_PORT);
connection obsys;
--disable_warnings
--disable_query_log
--source mysql_test/include/check_tenant_sync.inc
--enable_query_log
--enable_warnings
let $cpu = 1;
let $memory = '2G';
--disable_query_log
--disable_warnings
drop tenant if exists duptable_tenant1 force;
DROP RESOURCE POOL IF EXISTS duptable_pool1;
DROP RESOURCE UNIT IF EXISTS duptable_unit1;
--enable_warnings
sleep 5;
eval CREATE RESOURCE UNIT duptable_unit1 MAX_CPU=$cpu, MEMORY_SIZE=$memory;
eval CREATE RESOURCE POOL duptable_pool1 UNIT='duptable_unit1', UNIT_NUM=1, ZONE_LIST=('zone1', 'zone2');
CREATE TENANT duptable_tenant1 REPLICA_NUM = 2, RESOURCE_POOL_LIST = ('duptable_pool1') set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql', lower_case_table_names = 0;
alter tenant duptable_tenant1 set variables ob_tcp_invited_nodes='%';
--enable_query_log
## set errsim to invoke gc
alter system set_tp tp_name = ERRSIM_DUP_TABLE_GC_RIGHT_NOW, error_code = 4016, frequency = 0;
sleep 1;
alter system set_tp tp_name = ERRSIM_DUP_TABLE_GC_RIGHT_NOW, error_code = 4016, frequency = 1;
####### begin test dup table
connect (conn0,$OBMYSQL_MS0,root@duptable_tenant1,,test,$OBMYSQL_PORT);
connect (conn1,$OBMYSQL_MS0,root@duptable_tenant1,,test,$OBMYSQL_PORT);
connection conn0;
## create dup table
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1, c2)) duplicate_scope='cluster';
create table dup_t2 (d1 int, d2 int, d3 int, primary key(d1, d2)) duplicate_scope='cluster';
## create partition dup table
create table dup_t3 (d1 int, d2 int, d3 int, primary key(d1)) duplicate_scope='cluster' PARTITION BY HASH(d1) PARTITIONS 5;
create table dup_t4 (d1 int, d2 int, d3 int, primary key(d1)) duplicate_scope='cluster' PARTITION BY HASH(d1) PARTITIONS 30;
## create table
create table t1 (c1 int, c2 int, c3 int, primary key(c1, c2));
create table t2 (d1 int, d2 int, d3 int, primary key(d1, d2));
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table t1;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table t2;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t1;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t2;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t3;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t4;
sleep 15;
insert into t1 values(1, 1, 1);
insert into t1 values(2, 2, 2);
insert into t1 values(3, 3, 3);
insert into t2 values(1, 1, 1);
insert into t2 values(2, 2, 2);
insert into t2 values(4, 4, 4);
insert into dup_t1 select * from t1;
insert into dup_t2 select * from t2;
insert into dup_t3 select * from t1;
insert into dup_t4 select * from t2;
select * from t1;
select * from dup_t1;
select * from t2;
select * from dup_t2;
select * from dup_t3;
select * from dup_t4;
connection obsys;
let $tenant_id = query_get_value(select tenant_id from __all_tenant where tenant_name = 'duptable_tenant1', tenant_id, 1);
let $database_id = query_get_value(select database_id from __all_virtual_database where database_name = 'test' and tenant_id = $tenant_id, database_id, 1);
## check duplicate scope
--disable_query_log
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t1' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t2' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t3' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t4' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 't1' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 't2' and tenant_id = $tenant_id and database_id = $database_id;
--enable_query_log
# --echo switch leader
## get table id
#############
# /* for debug */ select table_id from oceanbase.__all_virtual_table where table_name = 'dup_t1' or table_name = 'dup_t2' or table_name = 'dup_t3' or table_name = 'dup_t4'and tenant_id = 1004;
#############
let $t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t3_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t3' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t4_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t4' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
## get ls id of dup table
let $dup_t1_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t1_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $dup_t2_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t2_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $dup_t3_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t3_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $dup_t4_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t4_table_id and tenant_id = $tenant_id, LS_ID, 1);
## get the ip:port of dup table follower
let $dup_t1_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_IP, 1);
let $dup_t1_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_PORT, 1);
## get the ip:port of dup table leader
let $dup_t1_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_IP, 1);
let $dup_t1_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_PORT, 1);
connection conn0;
## check all_tablet_to_ls;
--disable_query_log
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t1_ls_id and table_id = $dup_t1_table_id;
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t2_ls_id and table_id = $dup_t2_table_id;
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t3_ls_id and table_id = $dup_t3_table_id;
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t4_ls_id and table_id = $dup_t4_table_id;
--enable_query_log
## check tablet_set hold all dup tablets
--disable_query_log
# eval select sum(b.count) = count(a.tablet_id) from oceanbase.__all_tablet_to_ls as a, oceanbase.__all_virtual_dup_ls_tablet_set as b where b.ls_state = 'LEADER' and a.table_id = $dup_t1_table_id
# or a.table_id = $dup_t2_table_id or a.table_id = $dup_t3_table_id or a.table_id = $dup_t4_table_id;
## check tabelt_set count follower equal to leader
# eval select sum(count) from oceanbase.__all_virtual_dup_ls_tablet_set where attribute = 'READABLE' and ls_state = 'LEADER';
# eval select sum(count) from oceanbase.__all_virtual_dup_ls_tablet_set where attribute = 'READABLE' and ls_state = 'FOLLOWER' limit 1;
## check readable_set, follower uid equal to leader
eval select count(*) from (select unique_id not in
(select unique_id from oceanbase.__all_virtual_dup_ls_tablet_set
where ls_state='LEADER' and attribute ='READABLE') as res
from oceanbase.__all_virtual_dup_ls_tablet_set
where ls_state='FOLLOWER' and attribute='READABLE' and
svr_ip = '$dup_t1_follow_ip' and SVR_PORT = '$dup_t1_follow_port')
where res <> FALSE;
--enable_query_log
connection obsys;
## switch leader to dup table follower server
--disable_query_log
eval alter system switch replica leader ls=$dup_t1_ls_id server='$dup_t1_follow_ip:$dup_t1_follow_port' tenant='duptable_tenant1';
--enable_query_log
## sleep 10s wait for switch
sleep 10;
## check switch leader succ
--disable_query_log
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t1_ls_id and SVR_IP = '$dup_t1_follow_ip' and SVR_PORT = '$dup_t1_follow_port' and tenant_id = $tenant_id;
--enable_query_log
sleep 10;
connection conn0;
## check all_tablet_to_ls;
--disable_query_log
## check tabelt_set count follower equal to leader in mysql tenant
eval select sum(count) from oceanbase.__all_virtual_dup_ls_tablet_set where attribute = 'READABLE' and ls_state = 'LEADER';
eval select sum(count) from oceanbase.__all_virtual_dup_ls_tablet_set where attribute = 'READABLE' and svr_ip = '$dup_t1_leader_ip' and svr_port = '$dup_t1_leader_port';
## check follower readable_set uid equal to leader
eval select count(*) from (select unique_id not in
(select unique_id from oceanbase.__all_virtual_dup_ls_tablet_set
where ls_state='LEADER' and attribute ='READABLE') as res
from oceanbase.__all_virtual_dup_ls_tablet_set
where ls_state='FOLLOWER' and attribute='READABLE' and
svr_ip = '$dup_t1_leader_ip' and SVR_PORT = '$dup_t1_leader_port')
where res <> FALSE;
--enable_query_log
connection obsys;
## clean tenant
drop tenant duptable_tenant1 force;
disconnect conn0;
disconnect conn1;
disconnect obsys;

View File

@ -0,0 +1,208 @@
# owner: weixiaoxian.wxx
# owner group: transaction
# test_no: 04003
# tags: 4.x dup table
# description: test basic add and remove duplicate tablet
## build connect
connect (obsys, $OBMYSQL_MS0, root@sys, "", oceanbase, $OBMYSQL_PORT);
connection obsys;
--disable_warnings
--disable_query_log
--source mysql_test/include/check_tenant_sync.inc
--enable_query_log
--enable_warnings
let $cpu = 1;
let $memory = '2G';
--disable_query_log
--disable_warnings
drop tenant if exists duptable_tenant1 force;
DROP RESOURCE POOL IF EXISTS duptable_pool1;
DROP RESOURCE UNIT IF EXISTS duptable_unit1;
--enable_warnings
sleep 5;
eval CREATE RESOURCE UNIT duptable_unit1 MAX_CPU=$cpu, MEMORY_SIZE=$memory;
eval CREATE RESOURCE POOL duptable_pool1 UNIT='duptable_unit1', UNIT_NUM=1, ZONE_LIST=('zone1', 'zone2');
CREATE TENANT duptable_tenant1 REPLICA_NUM = 2, RESOURCE_POOL_LIST = ('duptable_pool1') set ob_tcp_invited_nodes='%', ob_compatibility_mode='mysql', lower_case_table_names = 0;
alter tenant duptable_tenant1 set variables ob_tcp_invited_nodes='%';
--enable_query_log
####### begin test dup table
connect (conn0,$OBMYSQL_MS0,root@duptable_tenant1,,test,$OBMYSQL_PORT);
connect (conn1,$OBMYSQL_MS0,root@duptable_tenant1,,test,$OBMYSQL_PORT);
connection conn0;
set @@recyclebin=off;
--disable_warnings
--error 0,942
drop table if exists t1;
--error 0,942
drop table if exists t2;
--error 0,942
drop table if exists dup_t1;
--error 0,942
drop table if exists dup_t2;
--error 0,942
drop table if exists dup_t3;
--error 0,942
drop table if exists dup_t4;
--enable_warnings
## create dup table
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1, c2)) duplicate_scope='cluster';
create table dup_t2 (d1 int, d2 int, d3 int, primary key(d1, d2)) duplicate_scope='cluster';
## create partition dup table
create table dup_t3 (d1 int, d2 int, d3 int, primary key(d1)) duplicate_scope='cluster' PARTITION BY HASH(d1) PARTITIONS 5;
create table dup_t4 (d1 int, d2 int, d3 int, primary key(d1)) duplicate_scope='cluster' PARTITION BY HASH(d1) PARTITIONS 30;
## create table
create table t1 (c1 int, c2 int, c3 int, primary key(c1, c2));
create table t2 (d1 int, d2 int, d3 int, primary key(d1, d2));
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table t1;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table t2;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t1;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t2;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t3;
--source mysql_test/include/show_create_table_old_version_replica2.inc
show create table dup_t4;
insert into t1 values(1, 1, 1);
insert into t1 values(2, 2, 2);
insert into t1 values(3, 3, 3);
insert into t2 values(1, 1, 1);
insert into t2 values(2, 2, 2);
insert into t2 values(4, 4, 4);
insert into dup_t1 select * from t1;
insert into dup_t2 select * from t2;
insert into dup_t3 select * from t1;
insert into dup_t4 select * from t2;
select * from t1;
select * from dup_t1;
select * from t2;
select * from dup_t2;
select * from dup_t3;
select * from dup_t4;
sleep 15;
## check tablets count equal to tablet_to_ls table
--disable_query_log
eval select count(*) from oceanbase.__all_tablet_to_ls as ls_tablet, oceanbase.__all_virtual_dup_ls_tablets as ls_dup_tablet
where ls_dup_tablet.ls_state = 'LEADER' and ls_tablet.tablet_id = ls_dup_tablet.tablet_id and ls_tablet.ls_id = ls_dup_tablet.ls_id;
--enable_query_log
connection obsys;
let $tenant_id = query_get_value(select tenant_id from __all_tenant where tenant_name = 'duptable_tenant1', tenant_id, 1);
let $database_id = query_get_value(select database_id from __all_virtual_database where database_name = 'test' and tenant_id = $tenant_id, database_id, 1);
## check duplicate scope
--disable_query_log
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t1' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t2' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t3' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 'dup_t4' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 't1' and tenant_id = $tenant_id and database_id = $database_id;
eval select duplicate_scope from __all_virtual_table where table_name = 't2' and tenant_id = $tenant_id and database_id = $database_id;
--enable_query_log
# --echo 准备: 将复制表的leader和普通表的leader分开
## get table id
let $t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t3_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t3' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t4_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t4' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
## get ls id of dup table
let $dup_t1_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t1_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $dup_t2_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t2_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $dup_t3_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t3_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $dup_t4_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t4_table_id and tenant_id = $tenant_id, LS_ID, 1);
## get the ip:port of dup table follower
let $dup_t1_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_IP, 1);
let $dup_t1_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_PORT, 1);
let $dup_t2_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $dup_t2_ls_id ORDER BY SVR_PORT, SVR_IP, 1);
let $dup_t2_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $dup_t2_ls_id ORDER BY SVR_PORT, SVR_PORT, 1);
## get the ip:port of dup table leader
let $dup_t1_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_IP, 1);
let $dup_t1_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_PORT, 1);
let $dup_t2_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t2_ls_id, SVR_IP, 1);
let $dup_t2_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t2_ls_id, SVR_PORT, 1);
## get duplicate ls id
let $dup_ls_id = query_get_value(select ls_id from oceanbase.__all_virtual_ls where flag like "%DUPLICATE%" and tenant_id = $tenant_id, ls_id, 1);
connection conn0;
## check all_tablet_to_ls;
--disable_query_log
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t1_ls_id and table_id = $dup_t1_table_id;
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t2_ls_id and table_id = $dup_t2_table_id;
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t3_ls_id and table_id = $dup_t3_table_id;
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t4_ls_id and table_id = $dup_t4_table_id;
--enable_query_log
connection obsys;
## switch leader to dup table follower server
--disable_query_log
eval alter system switch replica leader ls=$dup_t1_ls_id server='$dup_t1_follow_ip:$dup_t1_follow_port' tenant='duptable_tenant1';
eval alter system switch replica leader ls=$dup_t2_ls_id server='$dup_t2_follow_ip:$dup_t2_follow_port' tenant='duptable_tenant1';
--enable_query_log
## sleep 20s wait for switch
sleep 20;
## check switch leader succ
--disable_query_log
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t1_ls_id and SVR_IP = '$dup_t1_follow_ip' and SVR_PORT = '$dup_t1_follow_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t2_ls_id and SVR_IP = '$dup_t2_follow_ip' and SVR_PORT = '$dup_t2_follow_port' and tenant_id = $tenant_id;
--enable_query_log
connection conn0;
## check all_tablet_to_ls;
--disable_query_log
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t1_ls_id and table_id = $dup_t1_table_id;
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t2_ls_id and table_id = $dup_t2_table_id;
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t3_ls_id and table_id = $dup_t3_table_id;
eval select count(*) from oceanbase.__all_tablet_to_ls where ls_id= $dup_t4_ls_id and table_id = $dup_t4_table_id;
--enable_query_log
## check tablets count equal to tablet_to_ls table
--disable_query_log
eval select count(*) from oceanbase.__all_tablet_to_ls as ls_tablet, oceanbase.__all_virtual_dup_ls_tablets as ls_dup_tablet
where ls_dup_tablet.ls_state = 'LEADER' and ls_tablet.tablet_id = ls_dup_tablet.tablet_id and ls_tablet.ls_id = ls_dup_tablet.ls_id;
eval select count(*) from oceanbase.__all_virtual_dup_ls_tablets where ls_id = $dup_ls_id and tenant_id = $tenant_id and ls_state = 'LEADER';
--enable_query_log
### should use errsim test gc handler
connection obsys;
drop tenant duptable_tenant1 force;
disconnect conn0;
disconnect conn1;
disconnect obsys;

View File

@ -0,0 +1,232 @@
# owner: weixiaoxian.wxx
# owner group: transaction
# test_no: 04005
# tags: 4.x dup table
# description: test duplicate join, insert form select
## build connect
connect (obsys, $OBMYSQL_MS0, root@sys, "", oceanbase, $OBMYSQL_PORT);
connection obsys;
--disable_warnings
--disable_query_log
--source mysql_test/include/check_tenant_sync.inc
--enable_query_log
--enable_warnings
####### begin test dup table
connect (conn0,$OBMYSQL_MS0,root@mysql,,test,$OBMYSQL_PORT);
connect (conn1,$OBMYSQL_MS0,root@mysql,,test,$OBMYSQL_PORT);
connection conn0;
--disable_warnings
drop database if exists duptable_database;
create database duptable_database;
use duptable_database;
--error 0,942
drop table if exists t1;
--error 0,942
drop table if exists t2;
--error 0,942
drop table if exists dup_t1;
--error 0,942
drop table if exists dup_t2;
--error 0,942
drop table if exists dup_t3;
--enable_warnings
## create table
create table t1 (c1 int, c2 int, c3 int, primary key(c1));
create table t2 (c1 int, c2 int, c3 int, primary key(c1));
## create dup table
create table dup_t1 (c1 int, c2 int, c3 int, primary key(c1)) duplicate_scope='cluster';
create table dup_t2 (c1 int, c2 int, c3 int, primary key(c1)) duplicate_scope='cluster';
create table dup_t3 (c1 int, c2 int, c3 int) duplicate_scope='cluster';
insert into t1 values(1, 1, 1);
insert into t1 values(2, 2, 2);
insert into t1 values(3, 3, 3);
insert into t2 values(1, 1, 1);
insert into t2 values(2, 2, 2);
insert into t2 values(4, 4, 4);
insert into dup_t1 select * from t1;
insert into dup_t2 select * from t2;
let $test_count = 20;
let $v_c1 = 5;
while ($test_count > 0)
{
connection conn0;
eval insert into t1 values($v_c1, $v_c1, $v_c1);
eval insert into t2 values($v_c1, $v_c1, $v_c1);
eval insert into dup_t1 values($v_c1, $v_c1, $v_c1);
eval insert into dup_t2 values($v_c1, $v_c1, $v_c1);
inc $v_c1;
dec $test_count;
commit;
}
## ensure normal table and dup table in one leader
connection obsys;
sleep 6;
let $tenant_id = query_get_value(select tenant_id from __all_tenant where tenant_name = 'mysql', tenant_id, 1);
let $database_id = query_get_value(select database_id from __all_virtual_database where database_name = 'duptable_database' and tenant_id = $tenant_id, database_id, 1);
## get table id
let $t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 't2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t1_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t1' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
let $dup_t2_table_id = query_get_value(select table_id from __all_virtual_table where table_name = 'dup_t2' and tenant_id = $tenant_id and database_id = $database_id, table_id, 1);
## get ls id
let $dup_t1_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t1_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $dup_t2_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $dup_t2_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $t1_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $t1_table_id and tenant_id = $tenant_id, LS_ID, 1);
let $t2_ls_id = query_get_value(select LS_ID from __all_virtual_tablet_to_ls where table_id = $t2_table_id and tenant_id = $tenant_id, LS_ID, 1);
##########################################
## get the ip:port of dup table follower
let $dup_t1_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_IP, 1);
let $dup_t1_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $dup_t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_PORT, 1);
let $dup_t2_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $dup_t2_ls_id ORDER BY SVR_PORT, SVR_IP, 1);
let $dup_t2_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $dup_t2_ls_id ORDER BY SVR_PORT, SVR_PORT, 1);
## get the ip:port of dup table leader
let $dup_t1_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_IP, 1);
let $dup_t1_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t1_ls_id, SVR_PORT, 1);
let $dup_t2_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t2_ls_id, SVR_IP, 1);
let $dup_t2_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $dup_t2_ls_id, SVR_PORT, 1);
###########################################
## get the ip:port of normal table follower
let $t1_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_IP, 1);
let $t1_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_id = $t1_ls_id and ls_state = 'FOLLOWER' ORDER BY SVR_PORT, SVR_PORT, 1);
let $t2_follow_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $t2_ls_id ORDER BY SVR_PORT, SVR_IP, 1);
let $t2_follow_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'FOLLOWER' and ls_id = $t2_ls_id ORDER BY SVR_PORT, SVR_PORT, 1);
## get the ip:port of normal table leader
let $t1_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $t1_ls_id, SVR_IP, 1);
let $t1_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $t1_ls_id, SVR_PORT, 1);
let $t2_leader_ip = query_get_value(select SVR_IP from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $t2_ls_id, SVR_IP, 1);
let $t2_leader_port = query_get_value(select SVR_PORT from __all_virtual_ls_info where tenant_id = $tenant_id and ls_state = 'LEADER' and ls_id = $t2_ls_id, SVR_PORT, 1);
##### switch all table leader to t1 leader
--disable_query_log
eval alter system switch replica leader ls=$t1_ls_id server='$t1_leader_ip:$t1_leader_port' tenant='mysql';
eval alter system switch replica leader ls=$t2_ls_id server='$t1_leader_ip:$t1_leader_port' tenant='mysql';
eval alter system switch replica leader ls=$dup_t1_ls_id server='$t1_leader_ip:$t1_leader_port' tenant='mysql';
eval alter system switch replica leader ls=$dup_t2_ls_id server='$t1_leader_ip:$t1_leader_port' tenant='mysql';
--enable_query_log
sleep 20;
##### check all table leader to t1 leader
--disable_query_log
eval select ls_state from __all_virtual_ls_info where ls_id = $t1_ls_id and SVR_IP = '$t1_leader_ip' and SVR_PORT = '$t1_leader_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $t2_ls_id and SVR_IP = '$t1_leader_ip' and SVR_PORT = '$t1_leader_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t1_ls_id and SVR_IP = '$t1_leader_ip' and SVR_PORT = '$t1_leader_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t2_ls_id and SVR_IP = '$t1_leader_ip' and SVR_PORT = '$t1_leader_port' and tenant_id = $tenant_id;
--disable_query_log
### join test
############################ nature join
############################ inner join
############################ left join
############################ right join
connection conn1;
use duptable_database;
--disable_query_log
select * from t1 join t2 on t1.c1 = t2.c1 where not exists (select * from t1 join dup_t2 on t1.c1 = dup_t2.c1);
select * from t1 inner join t2 on t1.c1 = t2.c1 where not exists (select * from t1 inner join dup_t2 on t1.c1 = dup_t2.c1);
select * from t1 left join t2 on t1.c1 = t2.c1 where not exists (select * from t1 left join dup_t2 on t1.c1 = dup_t2.c1);
select * from t1 right join t2 on t1.c1 = t2.c1 where not exists (select * from t1 right join dup_t2 on t1.c1 = dup_t2.c1);
--enable_query_log
connection obsys;
##### switch dup table leader to t1 follower
--disable_query_log
eval alter system switch replica leader ls=$t1_ls_id server='$t1_leader_ip:$t1_leader_port' tenant='mysql';
eval alter system switch replica leader ls=$t2_ls_id server='$t1_leader_ip:$t1_leader_port' tenant='mysql';
eval alter system switch replica leader ls=$dup_t1_ls_id server='$t1_follow_ip:$t1_follow_port' tenant='mysql';
eval alter system switch replica leader ls=$dup_t2_ls_id server='$t1_follow_ip:$t1_follow_port' tenant='mysql';
--enable_query_log
sleep 20;
##### check dup table leader to t1 follower
--disable_query_log
eval select ls_state from __all_virtual_ls_info where ls_id = $t1_ls_id and SVR_IP = '$t1_leader_ip' and SVR_PORT = '$t1_leader_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $t2_ls_id and SVR_IP = '$t1_leader_ip' and SVR_PORT = '$t1_leader_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t1_ls_id and SVR_IP = '$t1_follow_ip' and SVR_PORT = '$t1_follow_port' and tenant_id = $tenant_id;
eval select ls_state from __all_virtual_ls_info where ls_id = $dup_t2_ls_id and SVR_IP = '$t1_follow_ip' and SVR_PORT = '$t1_follow_port' and tenant_id = $tenant_id;
--disable_query_log
connection conn1;
use duptable_database;
insert into dup_t3 select * from dup_t1;
select count(*) from dup_t3;
--disable_query_log
select * from t1 join t2 on t1.c1 = t2.c1 where not exists (select * from t1 join dup_t2 on t1.c1 = dup_t2.c1);
select * from t1 inner join t2 on t1.c1 = t2.c1 where not exists (select * from t1 inner join dup_t2 on t1.c1 = dup_t2.c1);
select * from t1 left join t2 on t1.c1 = t2.c1 where not exists (select * from t1 left join dup_t2 on t1.c1 = dup_t2.c1);
select * from t1 right join t2 on t1.c1 = t2.c1 where not exists (select * from t1 right join dup_t2 on t1.c1 = dup_t2.c1);
--enable_query_log
connection conn0;
use duptable_database;
insert into dup_t3 select * from dup_t2;
select count(*) from dup_t3;
--disable_query_log
#### normal join dup
select * from t1 join t2 on t1.c1 = t2.c1 where not exists (select * from t1 join dup_t2 on t1.c1 = dup_t2.c1);
select * from t1 inner join t2 on t1.c1 = t2.c1 where not exists (select * from t1 inner join dup_t2 on t1.c1 = dup_t2.c1);
select * from t1 left join t2 on t1.c1 = t2.c1 where not exists (select * from t1 left join dup_t2 on t1.c1 = dup_t2.c1);
select * from t1 right join t2 on t1.c1 = t2.c1 where not exists (select * from t1 right join dup_t2 on t1.c1 = dup_t2.c1);
--enable_query_log
--disable_query_log
#### dup join normal
select * from t1 join t2 on t1.c1 = t2.c1 where not exists (select * from dup_t2 join t1 on t1.c1 = dup_t2.c1);
select * from t1 inner join t2 on t1.c1 = t2.c1 where not exists (select * from dup_t2 inner join t1 on t1.c1 = dup_t2.c1);
select * from t1 left join t2 on t1.c1 = t2.c1 where not exists (select * from dup_t2 left join t1 on t1.c1 = dup_t2.c1);
select * from t1 right join t2 on t1.c1 = t2.c1 where not exists (select * from dup_t2 right join t1 on t1.c1 = dup_t2.c1);
#### dup join dup
select * from t1 join t2 on t1.c1 = t2.c1 where not exists (select * from dup_t2 join dup_t1 on t1.c1 = dup_t2.c1);
select * from t1 inner join t2 on t1.c1 = t2.c1 where not exists (select * from dup_t2 inner join dup_t1 on t1.c1 = dup_t2.c1);
select * from t1 left join t2 on t1.c1 = t2.c1 where not exists (select * from dup_t2 left join dup_t1 on t1.c1 = dup_t2.c1);
select * from t1 right join t2 on t1.c1 = t2.c1 where not exists (select * from dup_t2 right join dup_t1 on t1.c1 = dup_t2.c1);
--enable_query_log
connection conn0;
--disable_query_log
--disable_warnings
--error 0,942
drop table if exists t1;
--error 0,942
drop table if exists t2;
--error 0,942
drop table if exists dup_t1;
--error 0,942
drop table if exists dup_t2;
--error 0,942
drop table if exists dup_t3;
--enable_warnings
drop database duptable_database;
--enable_query_log
disconnect conn0;
disconnect conn1;
disconnect obsys;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,16 @@
drop table if exists t_single, t_part;
create table t_single (pk int primary key, c1 int);
create table t_part (pk int primary key, c1 int) partition by hash(pk) partitions 2;
insert into t_single values (1, 20), (2, 20);
insert into t_part values (1, 2), (2, 2);
begin;
select * from t_single for update;
pk c1
1 20
2 20
select /*+INDEX(INFO PRIMARY) READ_CONSISTENCY(WEAK) */ * from t_single t1 join t_part t2 on t1.pk = t2.c1 order by t2.pk;
pk c1 pk c1
2 20 1 2
2 20 2 2
rollback;
drop table t_single, t_part;

View File

@ -0,0 +1,211 @@
# owner: yibo.tyf
# owner group: SQL3
# tags: optimizer
--source mysql_test/test_suite/executor/include/cleanup.inc
--source mysql_test/test_suite/executor/include/load_data.inc
--result_format 4
--explain_protocol 2
--disable_abort_on_error
################################
# basic
# all kinds of receive.
# fifo receive
select b, sum(a) from t_h3_01_20 group by b having sum(a) between 5 and 16 order by b;
select b, sum(a) from t_h5_09_28 group by b having sum(a) between 13 and 24 order by b desc;
select b, sum(a) from t_r4_01_20 group by b having sum(a) between 5 and 16 order by b;
select b, sum(a) from t_r5_09_28 group by b having sum(a) between 13 and 24 order by b desc;
select b, sum(a) from t_h3_r4_01_20 group by b having sum(a) between 5 and 16 order by b;
select b, sum(a) from t_h3_r5_09_28 group by b having sum(a) between 13 and 24 order by b desc;
select b, sum(a) from t_h5_r4_01_20 group by b having sum(a) between 5 and 16 order by b;
select b, sum(a) from t_h5_r5_09_28 group by b having sum(a) between 13 and 24 order by b desc;
# task order receive
select a, b from t_r4_01_20 where a between 5 and 16 order by a;
select a, b from t_r4_09_28 where a between 13 and 24 order by a desc;
select a, b from t_r5_01_20 where a between 5 and 16 order by a;
select a, b from t_r5_09_28 where a between 13 and 24 order by a desc;
select a, b from t_h3_r4_01_20 where a = 12 order by b;
select a, b from t_h3_r5_09_28 where a = 12 order by b desc;
select a, b from t_h5_r4_01_20 where a = 12 order by b;
select a, b from t_h5_r5_09_28 where a = 12 order by b desc;
# merge sort receive
select a, b from t_h3_01_20 where a between 5 and 16 order by b;
select a, b from t_h5_09_28 where a between 13 and 24 order by b desc;
select a, b from t_r4_01_20 where a between 5 and 16 order by b;
select a, b from t_r4_09_28 where a between 13 and 24 order by b desc;
select a, b from t_h3_r4_01_20 where a between 5 and 16 order by b;
select a, b from t_h3_r5_09_28 where a between 13 and 24 order by b desc;
select a, b from t_h5_r4_01_20 where a between 5 and 16 order by b;
select a, b from t_h5_r5_09_28 where a between 13 and 24 order by b desc;
## check if result_type_classes of join_keys are the same when repart
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.aa;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.a;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.b;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.c;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.d;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.e;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.aa;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.a;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.b;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.c;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.d;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.e;
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.a;
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.b;
--sorted_result
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.c;
--sorted_result
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.d;
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.e;
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.a;
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.b;
--sorted_result
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.c;
--sorted_result
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.d;
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.e;
#bug:
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.a;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.aa;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.b;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.bb;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.c;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.d;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.e;
select * from t_r4_int t1, t_r4_int as t2 where t1.a = t2.a;
select * from t_r4_int t1, t_r4_date as t2 where t1.a = t2.c;
select * from t_r4_int t1, t_r4_datetime as t2 where t1.a = t2.c;
select * from t_r4_int t1, t_r4_timestamp as t2 where t1.a = t2.c;
select * from t_r4_date t1, t_r4_int as t2 where t1.c = t2.a;
select * from t_r4_date t1, t_r4_date as t2 where t1.c = t2.c;
select * from t_r4_date t1, t_r4_datetime as t2 where t1.c = t2.c;
select * from t_r4_date t1, t_r4_timestamp as t2 where t1.c = t2.c;
select * from t_r4_datetime t1, t_r4_int as t2 where t1.c = t2.a;
select * from t_r4_datetime t1, t_r4_date as t2 where t1.c = t2.c;
select * from t_r4_datetime t1, t_r4_datetime as t2 where t1.c = t2.c;
select * from t_r4_datetime t1, t_r4_timestamp as t2 where t1.c = t2.c;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.aa;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.a;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.b;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.c;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.d;
select * from t_h5_int t1, t_refered as t2 where t1.a = t2.e;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.aa;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.a;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.b;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.c;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.d;
select * from t_r4_int t1, t_refered as t2 where t1.a = t2.e;
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.a;
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.b;
--sorted_result
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.c;
--sorted_result
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.d;
select * from t_r4_date t1, t_refered as t2 where t1.c = t2.e;
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.a;
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.b;
--sorted_result
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.c;
--sorted_result
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.d;
select * from t_r4_datetime t1, t_refered as t2 where t1.c = t2.e;
select * from t_h5_r4_int_int t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a;
select * from t_h5_r4_int_int t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.aa;
select * from t_h5_r4_int_int t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.b;
select * from t_h5_r4_int_int t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.c;
select * from t_h5_r4_int_int t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.d;
select * from t_h5_r4_int_int t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.e;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.a;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.aa;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.b;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.bb;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.c;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.d;
select * from t_h5_r4_int_int_datetime t1, t_refered as t2 where t1.a = t2.a and t1.b=t2.a and t1.c = t2.e;
select * from t_r4_int t1, t_r4_int as t2 where t1.a = t2.a;
select * from t_r4_int t1, t_r4_date as t2 where t1.a = t2.c;
select * from t_r4_int t1, t_r4_datetime as t2 where t1.a = t2.c;
select * from t_r4_int t1, t_r4_timestamp as t2 where t1.a = t2.c;
select * from t_r4_date t1, t_r4_int as t2 where t1.c = t2.a;
select * from t_r4_date t1, t_r4_date as t2 where t1.c = t2.c;
select * from t_r4_date t1, t_r4_datetime as t2 where t1.c = t2.c;
select * from t_r4_date t1, t_r4_timestamp as t2 where t1.c = t2.c;
select * from t_r4_datetime t1, t_r4_int as t2 where t1.c = t2.a;
select * from t_r4_datetime t1, t_r4_date as t2 where t1.c = t2.c;
select * from t_r4_datetime t1, t_r4_datetime as t2 where t1.c = t2.c;
select * from t_r4_datetime t1, t_r4_timestamp as t2 where t1.c = t2.c;
# additional case for task order with many range part.
select min(a) from t_many_range_part where a >= 1;
select min(a) from t_many_range_part where a >= 6;
select min(a) from t_many_range_part where a >= 11;
select min(a) from t_many_range_part where a >= 16;
select min(a) from t_many_range_part where a >= 21;
select min(a) from t_many_range_part where a >= 26;
select min(a) from t_many_range_part where a >= 31;
select min(a) from t_many_range_part where a >= 36;
select min(a) from t_many_range_part where a >= 41;
select min(a) from t_many_range_part where a >= 46;
select max(a) from t_many_range_part where a >= 1;
select max(a) from t_many_range_part where a >= 6;
select max(a) from t_many_range_part where a >= 11;
select max(a) from t_many_range_part where a >= 16;
select max(a) from t_many_range_part where a >= 21;
select max(a) from t_many_range_part where a >= 26;
select max(a) from t_many_range_part where a >= 31;
select max(a) from t_many_range_part where a >= 36;
select max(a) from t_many_range_part where a >= 41;
select max(a) from t_many_range_part where a >= 46;
select a from t_many_range_part where a >= 1 order by a asc limit 10;
select a from t_many_range_part where a >= 6 order by a asc limit 10;
select a from t_many_range_part where a >= 11 order by a asc limit 10;
select a from t_many_range_part where a >= 16 order by a asc limit 10;
select a from t_many_range_part where a >= 21 order by a asc limit 10;
select a from t_many_range_part where a >= 26 order by a asc limit 10;
select a from t_many_range_part where a >= 31 order by a asc limit 10;
select a from t_many_range_part where a >= 36 order by a asc limit 10;
select a from t_many_range_part where a >= 41 order by a asc limit 10;
select a from t_many_range_part where a >= 46 order by a asc limit 10;
select a from t_many_range_part where a >= 1 order by a desc limit 10;
select a from t_many_range_part where a >= 6 order by a desc limit 10;
select a from t_many_range_part where a >= 11 order by a desc limit 10;
select a from t_many_range_part where a >= 16 order by a desc limit 10;
select a from t_many_range_part where a >= 21 order by a desc limit 10;
select a from t_many_range_part where a >= 26 order by a desc limit 10;
select a from t_many_range_part where a >= 31 order by a desc limit 10;
select a from t_many_range_part where a >= 36 order by a desc limit 10;
select a from t_many_range_part where a >= 41 order by a desc limit 10;
select a from t_many_range_part where a >= 46 order by a desc limit 10;
--source mysql_test/test_suite/executor/include/cleanup.inc

View File

@ -0,0 +1,33 @@
# owner: yuchen.wyc
# owner group: SQL1
# tags: optimizer
connect (conn1,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
connect (conn2,$OBMYSQL_MS0,$OBMYSQL_USR,$OBMYSQL_PWD,test,$OBMYSQL_PORT);
###
# root job need start participant
###
connection conn1;
--disable_warnings
drop table if exists t_single, t_part;
--enable_warnings
create table t_single (pk int primary key, c1 int);
create table t_part (pk int primary key, c1 int) partition by hash(pk) partitions 2;
insert into t_single values (1, 20), (2, 20);
insert into t_part values (1, 2), (2, 2);
begin;
select * from t_single for update;
connection conn2;
sleep 4;
#本机不一定有副本,所以形状可能会变,所以不能explain,所以这里只有一定的概率拦住不调start_participant的错误
#explain basic select /*+INDEX(INFO PRIMARY) READ_CONSISTENCY(WEAK) */ * from t_single t1 join t_part t2 on t1.pk = t2.c1;
select /*+INDEX(INFO PRIMARY) READ_CONSISTENCY(WEAK) */ * from t_single t1 join t_part t2 on t1.pk = t2.c1 order by t2.pk;
connection conn1;
rollback;
drop table t_single, t_part;

View File

@ -1,287 +0,0 @@
================ expression convert_tz ================
SELECT CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00');
CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00')
2021-01-01 20:00:00.000000
SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+08:00');
CONVERT_TZ('2021-01-01 12:00:00','+01:00','+08:00')
2021-01-01 19:00:00.000000
SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+06:30');
CONVERT_TZ('2021-01-01 12:00:00','+01:00','+06:30')
2021-01-01 17:30:00.000000
SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+10:10');
CONVERT_TZ('2021-01-01 12:00:00','+01:00','+10:10')
2021-01-01 21:10:00.000000
SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:30','+13:00');
CONVERT_TZ('2021-01-01 12:00:00','+01:30','+13:00')
2021-01-01 23:30:00.000000
SELECT CONVERT_TZ('2021-01-01 12:00:00','-11:30','+13:00');
CONVERT_TZ('2021-01-01 12:00:00','-11:30','+13:00')
2021-01-02 12:30:00.000000
SELECT CONVERT_TZ('2021-01-01 12:00:00','-12:00','+13:00');
CONVERT_TZ('2021-01-01 12:00:00','-12:00','+13:00')
2021-01-02 13:00:00.000000
SELECT CONVERT_TZ('2021-01-01 00:00:00','-12:00','+13:00');
CONVERT_TZ('2021-01-01 00:00:00','-12:00','+13:00')
2021-01-02 01:00:00.000000
SELECT CONVERT_TZ('2021-01-01 23:59:59','-12:00','+13:00');
CONVERT_TZ('2021-01-01 23:59:59','-12:00','+13:00')
2021-01-03 00:59:59.000000
SELECT CONVERT_TZ('2021-01-01 13:19:38','-10:38','+10:12');
CONVERT_TZ('2021-01-01 13:19:38','-10:38','+10:12')
2021-01-02 10:09:38.000000
SELECT CONVERT_TZ('2021-01-01 12:23:35','-09:23','-11:11');
CONVERT_TZ('2021-01-01 12:23:35','-09:23','-11:11')
2021-01-01 10:35:35.000000
SELECT CONVERT_TZ('2021-01-01 00:01:00','+10:00','-11:00');
CONVERT_TZ('2021-01-01 00:01:00','+10:00','-11:00')
2020-12-31 03:01:00.000000
SELECT CONVERT_TZ('2021-01-01 00:11:00','+00:00','-11:00');
CONVERT_TZ('2021-01-01 00:11:00','+00:00','-11:00')
2020-12-31 13:11:00.000000
SELECT CONVERT_TZ('2021-03-01 00:11:00','+00:00','-11:00');
CONVERT_TZ('2021-03-01 00:11:00','+00:00','-11:00')
2021-02-28 13:11:00.000000
SELECT CONVERT_TZ('2021-06-01 00:11:00','+00:00','-11:00');
CONVERT_TZ('2021-06-01 00:11:00','+00:00','-11:00')
2021-05-31 13:11:00.000000
SELECT CONVERT_TZ('2020-03-01 00:11:00','+00:00','-11:00');
CONVERT_TZ('2020-03-01 00:11:00','+00:00','-11:00')
2020-02-29 13:11:00.000000
SELECT CONVERT_TZ('2020-02-28 23:11:00','-00:00','+11:00');
CONVERT_TZ('2020-02-28 23:11:00','-00:00','+11:00')
2020-02-29 10:11:00.000000
SELECT CONVERT_TZ('2020-12-31 23:11:00','-05:00','+11:00');
CONVERT_TZ('2020-12-31 23:11:00','-05:00','+11:00')
2021-01-01 15:11:00.000000
SELECT CONVERT_TZ('2020-12-31 23:11:00',null,'+11:00');
CONVERT_TZ('2020-12-31 23:11:00',null,'+11:00')
NULL
SELECT CONVERT_TZ('2020-12-31 23:11:00','+11:00', null);
CONVERT_TZ('2020-12-31 23:11:00','+11:00', null)
NULL
SELECT CONVERT_TZ(null,'-13:00','+11:00');
CONVERT_TZ(null,'-13:00','+11:00')
NULL
SELECT CONVERT_TZ(null, null,'+11:00');
CONVERT_TZ(null, null,'+11:00')
NULL
SELECT CONVERT_TZ(null, null, null);
CONVERT_TZ(null, null, null)
NULL
SELECT CONVERT_TZ('2020-12-31 23:11:00','America/Merida','Asia/Tokyo');
CONVERT_TZ('2020-12-31 23:11:00','America/Merida','Asia/Tokyo')
2021-01-01 14:11:00.000000
SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Australia/Darwin');
CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Australia/Darwin')
2021-01-01 15:41:00.000000
SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Europe/Amsterdam');
CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Europe/Amsterdam')
2021-01-01 07:11:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','America/Merida');
CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','America/Merida')
2021-01-01 00:11:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','Libya');
CONVERT_TZ('2021-01-01 07:11:00','MET','Libya')
2021-01-01 08:11:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','MST');
CONVERT_TZ('2021-01-01 07:11:00','MET','MST')
2020-12-31 23:11:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','MST');
CONVERT_TZ('2021-01-01 07:11:00','PRC','MST')
2020-12-31 16:11:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','ROC');
CONVERT_TZ('2021-01-01 07:11:00','PRC','ROC')
2021-01-01 07:11:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00','UCT','ROC');
CONVERT_TZ('2021-01-01 07:11:00','UCT','ROC')
2021-01-01 15:11:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00','Universal','ROC');
CONVERT_TZ('2021-01-01 07:11:00','Universal','ROC')
2021-01-01 15:11:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00','Pacific/Marquesas','ROC');
CONVERT_TZ('2021-01-01 07:11:00','Pacific/Marquesas','ROC')
2021-01-02 00:41:00.000000
SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','ROC');
CONVERT_TZ('2021-02-28 17:11:00','GMT+0','ROC')
2021-03-01 01:11:00.000000
SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','Singapore');
CONVERT_TZ('2021-02-28 17:11:00','GMT+0','Singapore')
2021-03-01 01:11:00.000000
SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan','ROC');
CONVERT_TZ('2021-02-28 17:11:00','US/Michigan','ROC')
2021-03-01 06:11:00.000000
SELECT CONVERT_TZ('2021-02-28 17:11:00', null,'ROC');
CONVERT_TZ('2021-02-28 17:11:00', null,'ROC')
NULL
SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', null);
CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', null)
NULL
SELECT CONVERT_TZ('2021-02-28 17:11:00', null, null);
CONVERT_TZ('2021-02-28 17:11:00', null, null)
NULL
SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','ROC');
CONVERT_TZ('2021-02-28 17:11:00', '+00:00','ROC')
2021-03-01 01:11:00.000000
SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','US/Michigan');
CONVERT_TZ('2021-02-28 17:11:00', '+00:00','US/Michigan')
2021-02-28 12:11:00.000000
SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+00:00');
CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+00:00')
2021-02-28 09:11:00.000000
SELECT CONVERT_TZ('2021-02-28 17:11:00', 'US/Michigan', '+00:00');
CONVERT_TZ('2021-02-28 17:11:00', 'US/Michigan', '+00:00')
2021-02-28 22:11:00.000000
SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+12:58');
CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+12:58')
2021-02-28 22:09:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00', 'UCT','-12:58');
CONVERT_TZ('2021-01-01 07:11:00', 'UCT','-12:58')
2020-12-31 18:13:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','UCT');
CONVERT_TZ('2021-01-01 07:11:00', '-12:58','UCT')
2021-01-01 20:09:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','US/Michigan');
CONVERT_TZ('2021-01-01 07:11:00', '-12:58','US/Michigan')
2021-01-01 15:09:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00', '+05:12','MET');
CONVERT_TZ('2021-01-01 07:11:00', '+05:12','MET')
2021-01-01 02:59:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00', '+03:32','PRC');
CONVERT_TZ('2021-01-01 07:11:00', '+03:32','PRC')
2021-01-01 11:39:00.000000
SELECT CONVERT_TZ('2021-01-01 07:11:00', '+11:32','PRC');
CONVERT_TZ('2021-01-01 07:11:00', '+11:32','PRC')
2021-01-01 03:39:00.000000
SELECT CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00');
CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00')
NULL
SELECT CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00');
CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00')
NULL
SELECT CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC');
CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC')
NULL
SELECT CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK');
CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK')
NULL
drop table if exists t;
create table t(c1 timestamp);
insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00'));
insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00'));
insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC'));
insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK'));
select * from t;
c1
NULL
NULL
NULL
NULL
delete from t;
select convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00');
convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00')
NULL
select convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00');
convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00')
NULL
insert into t values(convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00'));
insert into t values(convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00'));
select * from t;
c1
NULL
NULL
SELECT CONVERT_TZ(123456,'-12:00','+10:00');
CONVERT_TZ(123456,'-12:00','+10:00')
NULL
SELECT CONVERT_TZ('','-12:00','+10:00');
CONVERT_TZ('','-12:00','+10:00')
NULL
SELECT CONVERT_TZ('aa','-12:00','+10:00');
CONVERT_TZ('aa','-12:00','+10:00')
NULL
SELECT CONVERT_TZ('张三','-12:00','+10:00');
CONVERT_TZ('张三','-12:00','+10:00')
NULL
SELECT CONVERT_TZ('1asd561ad','-12:00','+10:00');
CONVERT_TZ('1asd561ad','-12:00','+10:00')
NULL
SELECT CONVERT_TZ('¥¥%……&*¥','-12:00','+10:00');
CONVERT_TZ('¥¥%……&*¥','-12:00','+10:00')
NULL
drop table t;
create table t(c1 year);
insert into t values('1901'),('2155'), ('0000'), ('0001');
SELECT c1, CONVERT_TZ(c1,'+00:00','+00:00') from t;
c1 CONVERT_TZ(c1,'+00:00','+00:00')
1901 NULL
2155 NULL
0000 NULL
2001 NULL
drop table t;
create table t(a1 int,a2 year,c1 timestamp,c2 timestamp);
insert into t values(1,'1998','1998-12-12 12:12:12','2038-01-19 03:14:07');
insert into t values(2,'2002','2002-02-02 10:00:00','2034-02-22 00:50:20');
insert into t values(3,'2006','2006-04-15 06:06:20','2038-01-19 03:14:07');
insert into t values(4,'2012','2012-12-12 12:12:12','2030-08-16 14:05:50');
select c1,c2 ,case c1 when convert_tz(c1,'+06:00','+00:00')<'2006-04-15 06:06:20' then convert_tz('2020-02-02 02:02:02','+00:00','+00:00') else convert_tz('1999-09-09 09:09:09','+00:00','+00:00') end as c1 from t;
c1 c2 c1
1998-12-12 12:12:12 2038-01-19 03:14:07 1999-09-09 09:09:09.000000
2002-02-02 10:00:00 2034-02-22 00:50:20 1999-09-09 09:09:09.000000
2006-04-15 06:06:20 2038-01-19 03:14:07 1999-09-09 09:09:09.000000
2012-12-12 12:12:12 2030-08-16 14:05:50 1999-09-09 09:09:09.000000
drop table t;
create table t(c1 timestamp(0), c2 timestamp(3), c3 decimal(20,4));
insert into t values('2020-01-01 12:00:00.123456', '2020-01-01 12:00:00.123456', '20200101120000.123456');
select c1, convert_tz(c1, '+00:00', '+08:00') from t;
c1 convert_tz(c1, '+00:00', '+08:00')
2020-01-01 12:00:00 2020-01-01 20:00:00
select c2, convert_tz(c2, '+00:00', '+08:00') from t;
c2 convert_tz(c2, '+00:00', '+08:00')
2020-01-01 12:00:00.123 2020-01-01 20:00:00.123
select c3, convert_tz(c3, '+00:00', '+08:00') from t;
c3 convert_tz(c3, '+00:00', '+08:00')
20200101120000.1235 2020-01-01 20:00:00.1235
drop table t;
SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') AS time1,
CONVERT_TZ('2007-03-11 2:00:01','US/Eastern','US/Central') AS time2,
CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') AS time3,
CONVERT_TZ('2007-03-11 3:00:01','US/Eastern','US/Central') AS time4;
time1 time2 time3 time4
NULL NULL 2007-03-11 01:00:00.000000 2007-03-11 01:00:01.000000
SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','+00:00') AS time1,
CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','+00:00') AS time2,
CONVERT_TZ('2007-03-11 3:00:01','US/Eastern','+00:00') AS time3;
time1 time2 time3
NULL 2007-03-11 07:00:00.000000 2007-03-11 07:00:01.000000
SELECT CONVERT_TZ('2007-11-04 01:00:00','US/Eastern','+00:00') AS time1,
CONVERT_TZ('2007-11-04 01:00:01','US/Eastern','+00:00') AS time2,
CONVERT_TZ('2007-11-04 02:00:00','US/Eastern','+00:00') AS time3,
CONVERT_TZ('2007-11-04 02:00:01','US/Eastern','+00:00') AS time4;
time1 time2 time3 time4
2007-11-04 05:00:00.000000 2007-11-04 05:00:01.000000 2007-11-04 07:00:00.000000 2007-11-04 07:00:01.000000
create table t(c1 datetime);
insert into t values('2007-03-11 2:00:00'), ('2007-03-11 2:00:01'), ('2007-03-11 3:00:00'), ('2007-03-11 3:00:01');
insert into t values('2007-11-04 1:00:00'), ('2007-11-04 1:00:01'), ('2007-11-04 2:00:00'), ('2007-11-04 2:00:01');
select convert_tz(c1, 'US/Eastern', '+00:00') from t;
convert_tz(c1, 'US/Eastern', '+00:00')
NULL
NULL
2007-03-11 07:00:00
2007-03-11 07:00:01
2007-11-04 05:00:00
2007-11-04 05:00:01
2007-11-04 07:00:00
2007-11-04 07:00:01
drop table t;
create table t(c1 timestamp);
insert into t values('2007-03-11 1:59:59'), ('2007-03-11 3:00:00'), ('2007-03-11 3:00:01');
insert into t values('2007-11-04 1:00:00'), ('2007-11-04 1:00:01'), ('2007-11-04 2:00:00'), ('2007-11-04 2:00:01');
select convert_tz(c1, 'US/Eastern', '+00:00') from t;
convert_tz(c1, 'US/Eastern', '+00:00')
2007-03-11 06:59:59
2007-03-11 07:00:00
2007-03-11 07:00:01
2007-11-04 05:00:00
2007-11-04 05:00:01
2007-11-04 07:00:00
2007-11-04 07:00:01
drop table t;

View File

@ -1,584 +0,0 @@
result_format: 4
================ expression export_set ================
select export_set(0,"Y","N","-",5);
+-----------------------------+
| export_set(0,"Y","N","-",5) |
+-----------------------------+
| N-N-N-N-N |
+-----------------------------+
select export_set(7,"Y","N","-",5);
+-----------------------------+
| export_set(7,"Y","N","-",5) |
+-----------------------------+
| Y-Y-Y-N-N |
+-----------------------------+
select export_set(11,"Y","N","-",5);
+------------------------------+
| export_set(11,"Y","N","-",5) |
+------------------------------+
| Y-Y-N-Y-N |
+------------------------------+
select export_set(20,"Y","N","-",5);
+------------------------------+
| export_set(20,"Y","N","-",5) |
+------------------------------+
| N-N-Y-N-Y |
+------------------------------+
select export_set(9,"","","-",5);
+---------------------------+
| export_set(9,"","","-",5) |
+---------------------------+
| ---- |
+---------------------------+
select export_set(9,"Y","N","-",5);
+-----------------------------+
| export_set(9,"Y","N","-",5) |
+-----------------------------+
| Y-N-N-Y-N |
+-----------------------------+
select export_set(9,"左","右","-",5);
+---------------------------------+
| export_set(9,"左","右","-",5) |
+---------------------------------+
| 左-右-右-左-右 |
+---------------------------------+
select export_set(9,"上","下","-",5);
+---------------------------------+
| export_set(9,"上","下","-",5) |
+---------------------------------+
| 上-下-下-上-下 |
+---------------------------------+
select export_set(5,"Y","N",".",5);
+-----------------------------+
| export_set(5,"Y","N",".",5) |
+-----------------------------+
| Y.N.Y.N.N |
+-----------------------------+
select export_set(5,"Y","N","=",5);
+-----------------------------+
| export_set(5,"Y","N","=",5) |
+-----------------------------+
| Y=N=Y=N=N |
+-----------------------------+
select export_set(5,"Y","N","????????",5);
+---------------------------------------+
| export_set(5,"Y","N","????????",5) |
+---------------------------------------+
| Y????????N????????Y????????N????????N |
+---------------------------------------+
select export_set(100,"Y","N",".",3);
+-------------------------------+
| export_set(100,"Y","N",".",3) |
+-------------------------------+
| N.N.Y |
+-------------------------------+
select export_set(100,"Y","N",".",5);
+-------------------------------+
| export_set(100,"Y","N",".",5) |
+-------------------------------+
| N.N.Y.N.N |
+-------------------------------+
select export_set(100,"Y","N",".",7);
+-------------------------------+
| export_set(100,"Y","N",".",7) |
+-------------------------------+
| N.N.Y.N.N.Y.Y |
+-------------------------------+
select export_set(100,"Y","N",".",10);
+--------------------------------+
| export_set(100,"Y","N",".",10) |
+--------------------------------+
| N.N.Y.N.N.Y.Y.N.N.N |
+--------------------------------+
select export_set(null,"Y","N",".",5);
+--------------------------------+
| export_set(null,"Y","N",".",5) |
+--------------------------------+
| NULL |
+--------------------------------+
select export_set(0,"Y","N",".",5);
+-----------------------------+
| export_set(0,"Y","N",".",5) |
+-----------------------------+
| N.N.N.N.N |
+-----------------------------+
select export_set(5,null,"N",".",5);
+------------------------------+
| export_set(5,null,"N",".",5) |
+------------------------------+
| NULL |
+------------------------------+
select export_set(5,'',"N",".",5);
+----------------------------+
| export_set(5,'',"N",".",5) |
+----------------------------+
| .N..N.N |
+----------------------------+
select export_set(5,"Y",null,".",5);
+------------------------------+
| export_set(5,"Y",null,".",5) |
+------------------------------+
| NULL |
+------------------------------+
select export_set(5,"Y",'',".",5);
+----------------------------+
| export_set(5,"Y",'',".",5) |
+----------------------------+
| Y..Y.. |
+----------------------------+
select export_set(5,"Y","N",null,5);
+------------------------------+
| export_set(5,"Y","N",null,5) |
+------------------------------+
| NULL |
+------------------------------+
select export_set(5,"Y","N",'',5);
+----------------------------+
| export_set(5,"Y","N",'',5) |
+----------------------------+
| YNYNN |
+----------------------------+
select export_set(5,"Y","N",".",null);
+--------------------------------+
| export_set(5,"Y","N",".",null) |
+--------------------------------+
| NULL |
+--------------------------------+
select export_set(5,"Y","N",".",0);
+-----------------------------+
| export_set(5,"Y","N",".",0) |
+-----------------------------+
| |
+-----------------------------+
select export_set(55555555555555,"YY","NN",".",0);
+--------------------------------------------+
| export_set(55555555555555,"YY","NN",".",0) |
+--------------------------------------------+
| |
+--------------------------------------------+
select export_set(55555555555555,"YY","NN",".......",0);
+--------------------------------------------------+
| export_set(55555555555555,"YY","NN",".......",0) |
+--------------------------------------------------+
| |
+--------------------------------------------------+
select export_set(100,'',1);
+------------------------------------------------------------------------------------------------------------------------------+
| export_set(100,'',1) |
+------------------------------------------------------------------------------------------------------------------------------+
| 1,1,,1,1,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
+------------------------------------------------------------------------------------------------------------------------------+
select export_set(100,1,'');
+--------------------------------------------------------------------+
| export_set(100,1,'') |
+--------------------------------------------------------------------+
| ,,1,,,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, |
+--------------------------------------------------------------------+
select export_set(100,1,0,'');
+------------------------------------------------------------------+
| export_set(100,1,0,'') |
+------------------------------------------------------------------+
| 0010011000000000000000000000000000000000000000000000000000000000 |
+------------------------------------------------------------------+
select export_set(1000,'',1);
+---------------------------------------------------------------------------------------------------------------------------+
| export_set(1000,'',1) |
+---------------------------------------------------------------------------------------------------------------------------+
| 1,1,1,,1,,,,,,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 |
+---------------------------------------------------------------------------------------------------------------------------+
select export_set(1000,1,'');
+-----------------------------------------------------------------------+
| export_set(1000,1,'') |
+-----------------------------------------------------------------------+
| ,,,1,,1,1,1,1,1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, |
+-----------------------------------------------------------------------+
select export_set(1000,1,0,'');
+------------------------------------------------------------------+
| export_set(1000,1,0,'') |
+------------------------------------------------------------------+
| 0001011111000000000000000000000000000000000000000000000000000000 |
+------------------------------------------------------------------+
select export_set(8,"Y","N");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(8,"Y","N") |
+---------------------------------------------------------------------------------------------------------------------------------+
| N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(88,"Y","N");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(88,"Y","N") |
+---------------------------------------------------------------------------------------------------------------------------------+
| N,N,N,Y,Y,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(888,"Y","N");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(888,"Y","N") |
+---------------------------------------------------------------------------------------------------------------------------------+
| N,N,N,Y,Y,Y,Y,N,Y,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(8888,"Y","N");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(8888,"Y","N") |
+---------------------------------------------------------------------------------------------------------------------------------+
| N,N,N,Y,Y,Y,N,Y,N,Y,N,N,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(8,"1","0");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(8,"1","0") |
+---------------------------------------------------------------------------------------------------------------------------------+
| 0,0,0,1,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,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 export_set(8,"X","Y");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(8,"X","Y") |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,X,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(8,"Y","N",'+');
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(8,"Y","N",'+') |
+---------------------------------------------------------------------------------------------------------------------------------+
| N+N+N+Y+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N+N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(8,"1","0",'*');
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(8,"1","0",'*') |
+---------------------------------------------------------------------------------------------------------------------------------+
| 0*0*0*1*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*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 export_set(8,"X","Y",'*');
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(8,"X","Y",'*') |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y*Y*Y*X*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y*Y |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(7,1,0,"-",5);
+-------------------------+
| export_set(7,1,0,"-",5) |
+-------------------------+
| 1-1-1-0-0 |
+-------------------------+
select export_set(7,11,00,"-",5);
+---------------------------+
| export_set(7,11,00,"-",5) |
+---------------------------+
| 11-11-11-0-0 |
+---------------------------+
select export_set(7,111,000,"-",5);
+-----------------------------+
| export_set(7,111,000,"-",5) |
+-----------------------------+
| 111-111-111-0-0 |
+-----------------------------+
select export_set(7,111,000,5,5);
+---------------------------+
| export_set(7,111,000,5,5) |
+---------------------------+
| 111511151115050 |
+---------------------------+
select export_set(true,1,0);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(true,1,0) |
+---------------------------------------------------------------------------------------------------------------------------------+
| 1,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,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 export_set(true,"1","0");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(true,"1","0") |
+---------------------------------------------------------------------------------------------------------------------------------+
| 1,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,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 export_set(false,1,0);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(false,1,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,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 export_set(false,"1","0");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(false,"1","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,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 export_set(1.4,1,0);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(1.4,1,0) |
+---------------------------------------------------------------------------------------------------------------------------------+
| 1,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,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 export_set(2.4,1,0);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(2.4,1,0) |
+---------------------------------------------------------------------------------------------------------------------------------+
| 0,1,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,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 export_set(1.4,"y","n");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(1.4,"y","n") |
+---------------------------------------------------------------------------------------------------------------------------------+
| y,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(2.4,"y","n");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(2.4,"y","n") |
+---------------------------------------------------------------------------------------------------------------------------------+
| n,y,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(9223372036854775808,"Y","N");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(9223372036854775808,"Y","N") |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(9223372036854775809,"Y","N");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(9223372036854775809,"Y","N") |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(-9223372036854775808,"Y","N");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(-9223372036854775808,"Y","N") |
+---------------------------------------------------------------------------------------------------------------------------------+
| N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,Y |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(18446744073709551615,"Y","N");
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(18446744073709551615,"Y","N") |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(9223372036854775808,"Y","N",",",92233720368547758080000000000);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(9223372036854775808,"Y","N",",",92233720368547758080000000000) |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(9223372036854775808,"Y","N",",",9223372036854775808);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(9223372036854775808,"Y","N",",",9223372036854775808) |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(9223372036854775809,"Y","N",",",9223372036854775809);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(9223372036854775809,"Y","N",",",9223372036854775809) |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(9223372036854775809,"Y","N",",",9223372036854775809000000000000);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(9223372036854775809,"Y","N",",",9223372036854775809000000000000) |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(-9223372036854775808,"Y","N",",",-9223372036854775808);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(-9223372036854775808,"Y","N",",",-9223372036854775808) |
+---------------------------------------------------------------------------------------------------------------------------------+
| N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,Y |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(-9223372036854775808,"Y","N",",",-9223372036854775808000000000);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(-9223372036854775808,"Y","N",",",-9223372036854775808000000000) |
+---------------------------------------------------------------------------------------------------------------------------------+
| N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,Y |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(18446744073709551615,"Y","N",",",18446744073709551615);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(18446744073709551615,"Y","N",",",18446744073709551615) |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(18446744073709551615,"Y","N",",",1844674407370955161500000000000);
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(18446744073709551615,"Y","N",",",1844674407370955161500000000000) |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,Y,N |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set();
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set(1);
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set(1,2);
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set("");
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set("","");
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set(5,5);
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set(a,2,3);
ERROR 42S22: Unknown column 'a' in 'field list'
select export_set(1,2,3,a);
ERROR 42S22: Unknown column 'a' in 'field list'
select export_set(1,2,3,4,a);
ERROR 42S22: Unknown column 'a' in 'field list'
drop table if exists test;
create table test(c1 int, c2 varchar(20), c3 varchar(20), c4 varchar(20), c5 int);
insert into test values(11,"Y","N",",",10);
insert into test values(null,"Y","N",",",10);
insert into test values(11,null,"N",",",10);
insert into test values(11,"Y",null,",",10);
insert into test values(11,"Y","N",null,10);
insert into test values(11,"Y","N",",",null);
insert into test values(null,null,null,null,null);
select export_set(c1,c2,c3,c4,c5) from test;
+----------------------------+
| export_set(c1,c2,c3,c4,c5) |
+----------------------------+
| Y,Y,N,Y,N,N,N,N,N,N |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
| NULL |
+----------------------------+
select export_set(c1,c2,c3,c4) from test;
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(c1,c2,c3,c4) |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
| NULL |
| NULL |
| NULL |
| NULL |
| Y,Y,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
| NULL |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(c1,c2,c3) from test;
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(c1,c2,c3) |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
| NULL |
| NULL |
| NULL |
| Y,Y,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
| Y,Y,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
| NULL |
+---------------------------------------------------------------------------------------------------------------------------------+
insert into test values(100000,"+","-",",",1000000);
insert into test values(55555555,"+","-",",",100000);
insert into test values(7777777,"+","-",",",10000);
select export_set(c1,c2,c3,c4,5) from test;
+---------------------------+
| export_set(c1,c2,c3,c4,5) |
+---------------------------+
| Y,Y,N,Y,N |
| NULL |
| NULL |
| NULL |
| NULL |
| Y,Y,N,Y,N |
| NULL |
| -,-,-,-,- |
| +,+,-,-,- |
| +,-,-,-,+ |
+---------------------------+
select export_set(c1,c2,c3,'??',5) from test;
+-----------------------------+
| export_set(c1,c2,c3,'??',5) |
+-----------------------------+
| Y??Y??N??Y??N |
| NULL |
| NULL |
| NULL |
| Y??Y??N??Y??N |
| Y??Y??N??Y??N |
| NULL |
| -??-??-??-??- |
| +??+??-??-??- |
| +??-??-??-??+ |
+-----------------------------+
select export_set(c1,c2,c3) from test;
+---------------------------------------------------------------------------------------------------------------------------------+
| export_set(c1,c2,c3) |
+---------------------------------------------------------------------------------------------------------------------------------+
| Y,Y,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
| NULL |
| NULL |
| NULL |
| Y,Y,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
| Y,Y,N,Y,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N |
| NULL |
| -,-,-,-,-,+,-,+,-,+,+,-,-,-,-,+,+,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- |
| +,+,-,-,-,+,+,+,+,-,+,-,+,+,-,+,+,+,+,+,-,-,+,-,+,+,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- |
| +,-,-,-,+,+,+,+,+,-,+,+,-,+,-,+,-,+,+,-,+,+,+,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,-,- |
+---------------------------------------------------------------------------------------------------------------------------------+
select export_set(c1) from test;
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set(c1,c2) from test;
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
select export_set() from test;
ERROR 42000: Incorrect parameter count in the call to native function 'export_set'
drop table test;
drop table if exists t1;
create table t1 as select export_set(0,"Y","N","-",5);
desc t1;
+-----------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------------+--------------+------+-----+---------+-------+
| export_set(0,"Y","N","-",5) | varchar(127) | YES | | NULL | |
+-----------------------------+--------------+------+-----+---------+-------+
drop table t1;
create table t1 as select export_set(99,"YYY","NX","---",77);
desc t1;
+------------------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------------------+--------------+------+-----+---------+-------+
| export_set(99,"YYY","NX","---",77) | varchar(381) | YES | | NULL | |
+------------------------------------+--------------+------+-----+---------+-------+
drop table t1;
create table t1 as select export_set(99,"1","11","111",77);
desc t1;
+----------------------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------------------------+--------------+------+-----+---------+-------+
| export_set(99,"1","11","111",77) | varchar(317) | YES | | NULL | |
+----------------------------------+--------------+------+-----+---------+-------+
drop table t1;
## bugfix#
drop table if exists T_36895309;
CREATE TABLE T_36895309(A_0 INT,A_1 INT,A_2 VARCHAR(20),A_3 FLOAT,A_4 DATE);
INSERT INTO T_36895309 VALUES(1,1,'A',1.23,'1999-09-09'),(2,-1,'nb',3.21,'1111-11-11'),(3,0,'#',6666.6666,'11-11-11'),(4,NULL,NULL,NULL,NULL);
SELECT EXPORT_SET(A_2,'Y','N',',',5) FROM T_36895309 ;
+-------------------------------+
| EXPORT_SET(A_2,'Y','N',',',5) |
+-------------------------------+
| N,N,N,N,N |
| N,N,N,N,N |
| N,N,N,N,N |
| NULL |
+-------------------------------+
SELECT EXPORT_SET(A_3,'Y','N',',',5) FROM T_36895309 ;
+-------------------------------+
| EXPORT_SET(A_3,'Y','N',',',5) |
+-------------------------------+
| Y,N,N,N,N |
| Y,Y,N,N,N |
| Y,Y,N,Y,N |
| NULL |
+-------------------------------+
SELECT EXPORT_SET(A_4,'Y','N',',',5) FROM T_36895309 ;
+-------------------------------+
| EXPORT_SET(A_4,'Y','N',',',5) |
+-------------------------------+
| Y,N,Y,Y,Y |
| Y,Y,Y,N,N |
| Y,Y,Y,N,N |
| NULL |
+-------------------------------+
drop table T_36895309;

File diff suppressed because it is too large Load Diff

View File

@ -1,155 +0,0 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=on;
--enable_query_log
# owner: dachuan.sdc
# owner group: SQL2
# Test of functions convert_tz
--echo ================ expression convert_tz ================
--source mysql_test/test_suite/otimestamp/t/otimestamp_import_time_zone_mysql.inc
# 直接时刻类型
SELECT CONVERT_TZ('2021-01-01 12:00:00','+00:00','+08:00');
SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+08:00');
SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+06:30');
SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:00','+10:10');
SELECT CONVERT_TZ('2021-01-01 12:00:00','+01:30','+13:00');
SELECT CONVERT_TZ('2021-01-01 12:00:00','-11:30','+13:00');
SELECT CONVERT_TZ('2021-01-01 12:00:00','-12:00','+13:00');
SELECT CONVERT_TZ('2021-01-01 00:00:00','-12:00','+13:00');
SELECT CONVERT_TZ('2021-01-01 23:59:59','-12:00','+13:00');
SELECT CONVERT_TZ('2021-01-01 13:19:38','-10:38','+10:12');
SELECT CONVERT_TZ('2021-01-01 12:23:35','-09:23','-11:11');
SELECT CONVERT_TZ('2021-01-01 00:01:00','+10:00','-11:00');
SELECT CONVERT_TZ('2021-01-01 00:11:00','+00:00','-11:00');
SELECT CONVERT_TZ('2021-03-01 00:11:00','+00:00','-11:00');
SELECT CONVERT_TZ('2021-06-01 00:11:00','+00:00','-11:00');
SELECT CONVERT_TZ('2020-03-01 00:11:00','+00:00','-11:00');
SELECT CONVERT_TZ('2020-02-28 23:11:00','-00:00','+11:00');
SELECT CONVERT_TZ('2020-12-31 23:11:00','-05:00','+11:00');
#直接时刻类型异常
SELECT CONVERT_TZ('2020-12-31 23:11:00',null,'+11:00');
SELECT CONVERT_TZ('2020-12-31 23:11:00','+11:00', null);
SELECT CONVERT_TZ(null,'-13:00','+11:00');
SELECT CONVERT_TZ(null, null,'+11:00');
SELECT CONVERT_TZ(null, null, null);
#时区类型
SELECT CONVERT_TZ('2020-12-31 23:11:00','America/Merida','Asia/Tokyo');
SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Australia/Darwin');
SELECT CONVERT_TZ('2021-01-01 00:11:00','America/Merida','Europe/Amsterdam');
SELECT CONVERT_TZ('2021-01-01 07:11:00','Europe/Amsterdam','America/Merida');
SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','Libya');
SELECT CONVERT_TZ('2021-01-01 07:11:00','MET','MST');
SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','MST');
SELECT CONVERT_TZ('2021-01-01 07:11:00','PRC','ROC');
SELECT CONVERT_TZ('2021-01-01 07:11:00','UCT','ROC');
SELECT CONVERT_TZ('2021-01-01 07:11:00','Universal','ROC');
SELECT CONVERT_TZ('2021-01-01 07:11:00','Pacific/Marquesas','ROC');
SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','ROC');
SELECT CONVERT_TZ('2021-02-28 17:11:00','GMT+0','Singapore');
SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan','ROC');
#时区类型异常
SELECT CONVERT_TZ('2021-02-28 17:11:00', null,'ROC');
SELECT CONVERT_TZ('2021-02-28 17:11:00','US/Michigan', null);
SELECT CONVERT_TZ('2021-02-28 17:11:00', null, null);
#混合类型
SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','ROC');
SELECT CONVERT_TZ('2021-02-28 17:11:00', '+00:00','US/Michigan');
SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+00:00');
SELECT CONVERT_TZ('2021-02-28 17:11:00', 'US/Michigan', '+00:00');
SELECT CONVERT_TZ('2021-02-28 17:11:00', 'ROC','+12:58');
SELECT CONVERT_TZ('2021-01-01 07:11:00', 'UCT','-12:58');
SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','UCT');
SELECT CONVERT_TZ('2021-01-01 07:11:00', '-12:58','US/Michigan');
SELECT CONVERT_TZ('2021-01-01 07:11:00', '+05:12','MET');
SELECT CONVERT_TZ('2021-01-01 07:11:00', '+03:32','PRC');
SELECT CONVERT_TZ('2021-01-01 07:11:00', '+11:32','PRC');
##bugfix:
SELECT CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00');
SELECT CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00');
SELECT CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC');
SELECT CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK');
--disable_warnings
drop table if exists t;
--enable_warnings
create table t(c1 timestamp);
insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-13:00','+10:00'));
insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-12:00','+14:00'));
insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-13:00','ABC'));
insert into t values(CONVERT_TZ('2004-01-01 12:00:00','-12:00','OK'));
select * from t;
delete from t;
## test result out of range
select convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00');
select convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00');
insert into t values(convert_tz('9999-12-31 20:00:00', '+02:00', '+06:00'));
insert into t values(convert_tz('0000-01-01 01:00:00', '+00:00', '-02:00'));
select * from t;
##bugfix:
SELECT CONVERT_TZ(123456,'-12:00','+10:00');
SELECT CONVERT_TZ('','-12:00','+10:00');
SELECT CONVERT_TZ('aa','-12:00','+10:00');
SELECT CONVERT_TZ('张三','-12:00','+10:00');
SELECT CONVERT_TZ('1asd561ad','-12:00','+10:00');
SELECT CONVERT_TZ('¥¥%……&*¥','-12:00','+10:00');
##bugfix:
drop table t;
create table t(c1 year);
insert into t values('1901'),('2155'), ('0000'), ('0001');
SELECT c1, CONVERT_TZ(c1,'+00:00','+00:00') from t;
##bugfix:
drop table t;
create table t(a1 int,a2 year,c1 timestamp,c2 timestamp);
insert into t values(1,'1998','1998-12-12 12:12:12','2038-01-19 03:14:07');
insert into t values(2,'2002','2002-02-02 10:00:00','2034-02-22 00:50:20');
insert into t values(3,'2006','2006-04-15 06:06:20','2038-01-19 03:14:07');
insert into t values(4,'2012','2012-12-12 12:12:12','2030-08-16 14:05:50');
select c1,c2 ,case c1 when convert_tz(c1,'+06:00','+00:00')<'2006-04-15 06:06:20' then convert_tz('2020-02-02 02:02:02','+00:00','+00:00') else convert_tz('1999-09-09 09:09:09','+00:00','+00:00') end as c1 from t;
drop table t;
create table t(c1 timestamp(0), c2 timestamp(3), c3 decimal(20,4));
insert into t values('2020-01-01 12:00:00.123456', '2020-01-01 12:00:00.123456', '20200101120000.123456');
select c1, convert_tz(c1, '+00:00', '+08:00') from t;
select c2, convert_tz(c2, '+00:00', '+08:00') from t;
select c3, convert_tz(c3, '+00:00', '+08:00') from t;
drop table t;
##bugfix:
SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','US/Central') AS time1,
CONVERT_TZ('2007-03-11 2:00:01','US/Eastern','US/Central') AS time2,
CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central') AS time3,
CONVERT_TZ('2007-03-11 3:00:01','US/Eastern','US/Central') AS time4;
SELECT CONVERT_TZ('2007-03-11 2:00:00','US/Eastern','+00:00') AS time1,
CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','+00:00') AS time2,
CONVERT_TZ('2007-03-11 3:00:01','US/Eastern','+00:00') AS time3;
SELECT CONVERT_TZ('2007-11-04 01:00:00','US/Eastern','+00:00') AS time1,
CONVERT_TZ('2007-11-04 01:00:01','US/Eastern','+00:00') AS time2,
CONVERT_TZ('2007-11-04 02:00:00','US/Eastern','+00:00') AS time3,
CONVERT_TZ('2007-11-04 02:00:01','US/Eastern','+00:00') AS time4;
create table t(c1 datetime);
insert into t values('2007-03-11 2:00:00'), ('2007-03-11 2:00:01'), ('2007-03-11 3:00:00'), ('2007-03-11 3:00:01');
insert into t values('2007-11-04 1:00:00'), ('2007-11-04 1:00:01'), ('2007-11-04 2:00:00'), ('2007-11-04 2:00:01');
select convert_tz(c1, 'US/Eastern', '+00:00') from t;
drop table t;
create table t(c1 timestamp);
insert into t values('2007-03-11 1:59:59'), ('2007-03-11 3:00:00'), ('2007-03-11 3:00:01');
insert into t values('2007-11-04 1:00:00'), ('2007-11-04 1:00:01'), ('2007-11-04 2:00:00'), ('2007-11-04 2:00:01');
select convert_tz(c1, 'US/Eastern', '+00:00') from t;
drop table t;

View File

@ -1,172 +0,0 @@
--disable_query_log
set @@session.explicit_defaults_for_timestamp=off;
--enable_query_log
# owner: dachuan.sdc
# owner group: SQL2
# test for export_set function in mysql mode
--result_format 4
--echo ================ expression export_set ================
# 基本检查
select export_set(0,"Y","N","-",5);
select export_set(7,"Y","N","-",5);
select export_set(11,"Y","N","-",5);
select export_set(20,"Y","N","-",5);
select export_set(9,"","","-",5);
select export_set(9,"Y","N","-",5);
select export_set(9,"左","右","-",5);
select export_set(9,"上","下","-",5);
select export_set(5,"Y","N",".",5);
select export_set(5,"Y","N","=",5);
select export_set(5,"Y","N","????????",5);
select export_set(100,"Y","N",".",3);
select export_set(100,"Y","N",".",5);
select export_set(100,"Y","N",".",7);
select export_set(100,"Y","N",".",10);
# 参数NULL检查
select export_set(null,"Y","N",".",5);
select export_set(0,"Y","N",".",5);
select export_set(5,null,"N",".",5);
select export_set(5,'',"N",".",5);
select export_set(5,"Y",null,".",5);
select export_set(5,"Y",'',".",5);
select export_set(5,"Y","N",null,5);
select export_set(5,"Y","N",'',5);
select export_set(5,"Y","N",".",null);
select export_set(5,"Y","N",".",0);
select export_set(55555555555555,"YY","NN",".",0);
select export_set(55555555555555,"YY","NN",".......",0);
select export_set(100,'',1);
select export_set(100,1,'');
select export_set(100,1,0,'');
select export_set(1000,'',1);
select export_set(1000,1,'');
select export_set(1000,1,0,'');
# 默认参数检查
select export_set(8,"Y","N");
select export_set(88,"Y","N");
select export_set(888,"Y","N");
select export_set(8888,"Y","N");
select export_set(8,"1","0");
select export_set(8,"X","Y");
select export_set(8,"Y","N",'+');
select export_set(8,"1","0",'*');
select export_set(8,"X","Y",'*');
# 参数类型不同
select export_set(7,1,0,"-",5);
select export_set(7,11,00,"-",5);
select export_set(7,111,000,"-",5);
select export_set(7,111,000,5,5);
select export_set(true,1,0);
select export_set(true,"1","0");
select export_set(false,1,0);
select export_set(false,"1","0");
select export_set(1.4,1,0);
select export_set(2.4,1,0);
select export_set(1.4,"y","n");
select export_set(2.4,"y","n");
# 边界检查
# 超过uint64的上界,int64的下界,ob对溢出的处理和mysql不同,这是mysql的bug,不兼容
# 目前保证-9223372036854775808到18446744073709551615与mysql兼容
# select export_set(1111111111111111111111111111111111111111111111111111,"Y","N");
select export_set(9223372036854775808,"Y","N");
select export_set(9223372036854775809,"Y","N");
select export_set(-9223372036854775808,"Y","N");
select export_set(18446744073709551615,"Y","N");
select export_set(9223372036854775808,"Y","N",",",92233720368547758080000000000);
select export_set(9223372036854775808,"Y","N",",",9223372036854775808);
select export_set(9223372036854775809,"Y","N",",",9223372036854775809);
select export_set(9223372036854775809,"Y","N",",",9223372036854775809000000000000);
select export_set(-9223372036854775808,"Y","N",",",-9223372036854775808);
select export_set(-9223372036854775808,"Y","N",",",-9223372036854775808000000000);
select export_set(18446744073709551615,"Y","N",",",18446744073709551615);
select export_set(18446744073709551615,"Y","N",",",1844674407370955161500000000000);
# 参数错误检查
--error 1582
select export_set();
--error 1582
select export_set(1);
--error 1582
select export_set(1,2);
--error 1582
select export_set("");
--error 1582
select export_set("","");
--error 1582
select export_set(5,5);
--error 1054
select export_set(a,2,3);
--error 1054
select export_set(1,2,3,a);
--error 1054
select export_set(1,2,3,4,a);
# 用表数据做参数
--disable_warnings
drop table if exists test;
--enable_warnings
create table test(c1 int, c2 varchar(20), c3 varchar(20), c4 varchar(20), c5 int);
sleep 1;
insert into test values(11,"Y","N",",",10);
insert into test values(null,"Y","N",",",10);
insert into test values(11,null,"N",",",10);
insert into test values(11,"Y",null,",",10);
insert into test values(11,"Y","N",null,10);
insert into test values(11,"Y","N",",",null);
insert into test values(null,null,null,null,null);
select export_set(c1,c2,c3,c4,c5) from test;
select export_set(c1,c2,c3,c4) from test;
select export_set(c1,c2,c3) from test;
insert into test values(100000,"+","-",",",1000000);
insert into test values(55555555,"+","-",",",100000);
insert into test values(7777777,"+","-",",",10000);
select export_set(c1,c2,c3,c4,5) from test;
select export_set(c1,c2,c3,'??',5) from test;
select export_set(c1,c2,c3) from test;
--error 1582
select export_set(c1) from test;
--error 1582
select export_set(c1,c2) from test;
--error 1582
select export_set() from test;
drop table test;
# ctas cases
--disable_warnings
drop table if exists t1;
--enable_warnings
create table t1 as select export_set(0,"Y","N","-",5);
sleep 1;
desc t1;
drop table t1;
create table t1 as select export_set(99,"YYY","NX","---",77);
sleep 1;
desc t1;
drop table t1;
create table t1 as select export_set(99,"1","11","111",77);
sleep 1;
desc t1;
drop table t1;
## bugfix#
--disable_warnings
drop table if exists T_36895309;
--enable_warnings
CREATE TABLE T_36895309(A_0 INT,A_1 INT,A_2 VARCHAR(20),A_3 FLOAT,A_4 DATE);
INSERT INTO T_36895309 VALUES(1,1,'A',1.23,'1999-09-09'),(2,-1,'nb',3.21,'1111-11-11'),(3,0,'#',6666.6666,'11-11-11'),(4,NULL,NULL,NULL,NULL);
SELECT EXPORT_SET(A_2,'Y','N',',',5) FROM T_36895309 ;
SELECT EXPORT_SET(A_3,'Y','N',',',5) FROM T_36895309 ;
SELECT EXPORT_SET(A_4,'Y','N',',',5) FROM T_36895309 ;
drop table T_36895309;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,763 @@
set foreign_key_checks=on;
drop table if exists t6, t5, t4, t3, t2, t1;
create table t1(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a));
create table t2(pk int, a int, b int, primary key (pk), unique key uk_a_b (a, b), constraint fake_name_2 foreign key (a, b) references t1 (b, a) on update CASCADE on delete CASCADE);
create table t3(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_3 foreign key (a, b) references t2 (a, b) on update CASCADE on delete CASCADE);
create table t4(pk int, a int, b int, primary key (pk), unique key uk_a_b (a, b), constraint fake_name_4 foreign key (a, b) references t3 (b, a) on update CASCADE on delete CASCADE);
insert into t1 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52), (60, 61, 62), (70, 71, 72), (80, 81, 82);
insert into t2 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61), (70, 72, 71);
insert into t3 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61);
insert into t4 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52);
insert into t2 values (80, 82, 81), (90, 92, 91);
insert into t3 values (70, 72, 71), (80, 82, 81);
insert into t4 values (60, 61, 62), (70, 71, 72);
select * from t1 order by pk;
pk a b
10 11 12
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
select * from t2 order by pk;
pk a b
10 12 11
20 22 21
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
select * from t3 order by pk;
pk a b
10 12 11
20 22 21
30 32 31
40 42 41
50 52 51
60 62 61
select * from t4 order by pk;
pk a b
10 11 12
20 21 22
30 31 32
40 41 42
50 51 52
update t1 set a = 91, b = 92 where pk = 10;
update t2 set a = 82, b = 81 where pk = 20;
update t3 set a = 72, b = 71 where pk = 30;
update t4 set a = 61, b = 62 where pk = 40;
update t2 set a = a * 10 where pk = 70;
update t3 set a = a * 10 where pk = 60;
update t4 set a = a * 10 where pk = 50;
create table t5(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_5 foreign key (a, b) references t4 (a, b) on update RESTRICT);
insert into t5 values (10, 91, 92), (20, 81, 82), (30, 71, 72), (40, 61, 62);
update t1 set a = 11, b = 12 where pk = 10;
update t2 set a = 22, b = 21 where pk = 20;
update t3 set a = 32, b = 31 where pk = 30;
update t4 set a = 41, b = 42 where pk = 40;
update t1 set pk = pk * 10 where pk = 10;
update t2 set pk = pk * 10 where pk = 20;
update t3 set pk = pk * 10 where pk = 30;
update t4 set pk = pk * 10 where pk = 40;
select * from t1 order by pk;
pk a b
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
100 91 92
select * from t2 order by pk;
pk a b
10 92 91
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
200 82 81
select * from t3 order by pk;
pk a b
10 92 91
20 82 81
40 42 41
50 52 51
60 62 61
300 72 71
select * from t4 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
50 51 52
400 61 62
select * from t5 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
40 61 62
drop table if exists t5;
delete from t1 where pk = 10;
delete from t2 where pk = 20;
delete from t3 where pk = 30;
delete from t4 where pk = 40;
select * from t1 order by pk;
pk a b
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
100 91 92
select * from t2 order by pk;
pk a b
10 92 91
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
200 82 81
select * from t3 order by pk;
pk a b
10 92 91
20 82 81
40 42 41
50 52 51
60 62 61
300 72 71
select * from t4 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
50 51 52
400 61 62
create table t5(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_5 foreign key (a, b) references t4 (a, b) on delete NO ACTION);
insert into t5 values (50, 51, 52);
delete from t1 where pk = 50;
delete from t2 where pk = 50;
delete from t3 where pk = 50;
delete from t4 where pk = 50;
select * from t1 order by pk;
pk a b
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
100 91 92
select * from t2 order by pk;
pk a b
10 92 91
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
200 82 81
select * from t3 order by pk;
pk a b
10 92 91
20 82 81
40 42 41
50 52 51
60 62 61
300 72 71
select * from t4 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
50 51 52
400 61 62
select * from t5 order by pk;
pk a b
50 51 52
drop table if exists t5;
delete from t1;
select * from t1 order by pk;
pk a b
select * from t2 order by pk;
pk a b
select * from t3 order by pk;
pk a b
select * from t4 order by pk;
pk a b
replace into t1 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52), (60, 61, 62), (70, 71, 72), (80, 81, 82);
replace into t2 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61), (70, 72, 71);
replace into t3 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61);
replace into t4 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52);
replace into t2 values (80, 82, 81), (90, 92, 91);
replace into t3 values (70, 72, 71), (80, 82, 81);
replace into t4 values (60, 61, 62), (70, 71, 72);
select * from t1 order by pk;
pk a b
10 11 12
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
select * from t2 order by pk;
pk a b
10 12 11
20 22 21
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
select * from t3 order by pk;
pk a b
10 12 11
20 22 21
30 32 31
40 42 41
50 52 51
60 62 61
select * from t4 order by pk;
pk a b
10 11 12
20 21 22
30 31 32
40 41 42
50 51 52
replace into t1 values (10, 91, 92);
replace into t2 values (20, 82, 81);
replace into t3 values (30, 72, 71);
replace into t4 values (40, 61, 62);
select * from t1 order by pk;
pk a b
10 91 92
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
select * from t2 order by pk;
pk a b
20 82 81
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
select * from t3 order by pk;
pk a b
30 72 71
40 42 41
50 52 51
60 62 61
select * from t4 order by pk;
pk a b
40 61 62
50 51 52
create table t5(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_5 foreign key (a, b) references t4 (a, b));
replace into t5 values (50, 51, 52);
replace into t1 values (50, 11, 12);
replace into t2 values (50, 22, 21);
replace into t3 values (50, 32, 31);
replace into t4 values (50, 41, 42);
select * from t1 order by pk;
pk a b
10 91 92
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
select * from t2 order by pk;
pk a b
20 82 81
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
select * from t3 order by pk;
pk a b
30 72 71
40 42 41
50 52 51
60 62 61
select * from t4 order by pk;
pk a b
40 61 62
50 51 52
select * from t5 order by pk;
pk a b
50 51 52
drop table if exists t5;
delete from t1;
select * from t1 order by pk;
pk a b
select * from t2 order by pk;
pk a b
select * from t3 order by pk;
pk a b
select * from t4 order by pk;
pk a b
insert into t1 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52), (60, 61, 62), (70, 71, 72), (80, 81, 82);
insert into t2 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61), (70, 72, 71);
insert into t3 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61);
insert into t4 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52);
select * from t1 order by pk;
pk a b
10 11 12
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
select * from t2 order by pk;
pk a b
10 12 11
20 22 21
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
select * from t3 order by pk;
pk a b
10 12 11
20 22 21
30 32 31
40 42 41
50 52 51
60 62 61
select * from t4 order by pk;
pk a b
10 11 12
20 21 22
30 31 32
40 41 42
50 51 52
insert into t1 values (10, 101, 102) on duplicate key update a = 91, b = 92;
insert into t2 values (20, 92, 91) on duplicate key update a = 82, b = 81;
insert into t3 values (30, 82, 81) on duplicate key update a = 72, b = 71;
insert into t4 values (40, 71, 72) on duplicate key update a = 61, b = 62;
select * from t1 order by pk;
pk a b
10 91 92
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
select * from t2 order by pk;
pk a b
10 92 91
20 82 81
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
select * from t3 order by pk;
pk a b
10 92 91
20 82 81
30 72 71
40 42 41
50 52 51
60 62 61
select * from t4 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
40 61 62
50 51 52
insert into t2 values (20, 0, 0) on duplicate key update a = a * 10;
insert into t3 values (30, 0, 0) on duplicate key update a = a * 10;
insert into t4 values (40, 0, 0) on duplicate key update a = a * 10;
create table t5(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_5 foreign key (a, b) references t4 (a, b));
insert into t5 values (10, 91, 92), (20, 81, 82), (30, 71, 72), (40, 61, 62);
insert into t1 values (10, 101, 102) on duplicate key update a = 101, b = 102;
insert into t1 values (100, 101, 102);
insert into t2 values (20, 102, 101) on duplicate key update a = 102, b = 101;
insert into t2 values (100, 102, 101);
insert into t3 values (30, 102, 101) on duplicate key update a = 102, b = 101;
insert into t3 values (100, 102, 101);
insert into t4 values (40, 101, 102) on duplicate key update a = 101, b = 102;
insert into t4 values (100, 101, 102);
select * from t1 order by pk;
pk a b
10 91 92
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
100 101 102
select * from t2 order by pk;
pk a b
10 92 91
20 82 81
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
100 102 101
select * from t3 order by pk;
pk a b
10 92 91
20 82 81
30 72 71
40 42 41
50 52 51
60 62 61
100 102 101
select * from t4 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
40 61 62
50 51 52
100 101 102
select * from t5 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
40 61 62
insert into t1 values (0, 101, 102) on duplicate key update a = 101, b = 102;
insert into t2 values (0, 102, 101) on duplicate key update a = 102, b = 101;
insert into t3 values (0, 102, 101) on duplicate key update a = 102, b = 101;
insert into t4 values (0, 101, 102) on duplicate key update a = 101, b = 102;
select * from t1 order by pk;
pk a b
10 91 92
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
100 101 102
select * from t2 order by pk;
pk a b
10 92 91
20 82 81
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
100 102 101
select * from t3 order by pk;
pk a b
10 92 91
20 82 81
30 72 71
40 42 41
50 52 51
60 62 61
100 102 101
select * from t4 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
40 61 62
50 51 52
100 101 102
select * from t5 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
40 61 62
insert into t1 values (0, 21, 22) on duplicate key update pk = 1000;
insert into t2 values (0, 32, 31) on duplicate key update pk = 1010;
insert into t3 values (0, 42, 41) on duplicate key update pk = 1020;
insert into t4 values (0, 51, 52) on duplicate key update pk = 1030;
select * from t1 order by pk;
pk a b
10 91 92
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
100 101 102
1000 21 22
select * from t2 order by pk;
pk a b
10 92 91
20 82 81
40 42 41
50 52 51
60 62 61
70 72 71
100 102 101
1010 32 31
select * from t3 order by pk;
pk a b
10 92 91
20 82 81
30 72 71
50 52 51
60 62 61
100 102 101
1020 42 41
select * from t4 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
40 61 62
100 101 102
1030 51 52
select * from t5 order by pk;
pk a b
10 91 92
20 81 82
30 71 72
40 61 62
drop table if exists t5, t4, t3, t2, t1;
create table t1(pk int, a varchar(16), b datetime(6), primary key (pk), unique key uk_a_b (b, a));
create table t2(pk int, a datetime(6), b varchar(16), primary key (pk), unique key uk_a_b (a, b), foreign key (a, b) references t1 (b, a) on update CASCADE on delete CASCADE);
insert into t1 values (10, 'abc', '2018-03-31 12:00:00'),
(20, 'DEF', '2018-03-31 13:00:00'),
(30, 'ghi', '2018-03-31 14:00:00'),
(40, 'JKL', '2018-03-31 15:00:00'),
(50, 'mno', '2018-03-31 16:00:00'),
(60, 'PQR', '2018-03-31 17:00:00');
insert into t2 values (10, '2018-03-31 12:00:00', 'ABC'),
(20, '2018-03-31 13:00:00', 'def'),
(30, '2018-03-31 14:00:00', 'GHI'),
(40, '2018-03-31 15:00:00', 'jkl'),
(50, '2018-03-31 00:00:00', NULL),
(60, NULL, NULL);
delete from t1 where pk = 10;
update t1 set a = 'stu', b = '2018-03-31 19:00:00' where pk = 20;
update t1 set a = NULL where pk = 30;
select * from t1 order by pk;
pk a b
20 stu 2018-03-31 19:00:00.000000
30 NULL 2018-03-31 14:00:00.000000
40 JKL 2018-03-31 15:00:00.000000
50 mno 2018-03-31 16:00:00.000000
60 PQR 2018-03-31 17:00:00.000000
select * from t2 order by pk;
pk a b
20 2018-03-31 19:00:00.000000 stu
30 2018-03-31 14:00:00.000000 NULL
40 2018-03-31 15:00:00.000000 jkl
50 2018-03-31 00:00:00.000000 NULL
60 NULL NULL
delete from t1 where pk = 30;
update t2 set a = NULL, b = 'vwx' where pk = 20;
select * from t1 order by pk;
pk a b
20 stu 2018-03-31 19:00:00.000000
40 JKL 2018-03-31 15:00:00.000000
50 mno 2018-03-31 16:00:00.000000
60 PQR 2018-03-31 17:00:00.000000
select * from t2 order by pk;
pk a b
20 NULL vwx
30 2018-03-31 14:00:00.000000 NULL
40 2018-03-31 15:00:00.000000 jkl
50 2018-03-31 00:00:00.000000 NULL
60 NULL NULL
create table t3(pk int, a datetime(6), b varchar(16), primary key (pk), unique key uk_a_b (a, b), foreign key (a, b) references t1 (b, a));
insert into t3 values (40, '2018-03-31 15:00:00', 'jkl');
update t2 set b = 'hello' where pk = 20;
select * from t2 order by pk;
pk a b
20 NULL hello
30 2018-03-31 14:00:00.000000 NULL
40 2018-03-31 15:00:00.000000 jkl
50 2018-03-31 00:00:00.000000 NULL
60 NULL NULL
select * from t3 order by pk;
pk a b
40 2018-03-31 15:00:00.000000 jkl
delete from t2 where pk = 20;
select * from t2 order by pk;
pk a b
30 2018-03-31 14:00:00.000000 NULL
40 2018-03-31 15:00:00.000000 jkl
50 2018-03-31 00:00:00.000000 NULL
60 NULL NULL
select * from t3 order by pk;
pk a b
40 2018-03-31 15:00:00.000000 jkl
insert into t3 values (10, '2018-03-31 12:00:00', 'ABC');
update t1 set a = 'hello' where pk = 40;
delete from t1 where pk = 40;
drop table if exists t3, t2, t1;
create table t1(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a));
create table t2(pk int, a int, b int, primary key (pk), unique key uk_a_b (a, b), constraint fake_name_2 foreign key (a, b) references t1 (b, a));
set foreign_key_checks=on;
insert into t1 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52), (60, 61, 62), (70, 71, 72), (80, 81, 82);
insert into t2 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61), (70, 72, 71);
insert into t2 values (80, 82, 81), (90, 92, 91);
update t1 set a = 101, b = 102 where pk = 10;
delete from t1 where pk = 20;
select * from t1 order by pk;
pk a b
10 11 12
20 21 22
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
select * from t2 order by pk;
pk a b
10 12 11
20 22 21
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
set foreign_key_checks=off;
insert into t2 values (80, 82, 81), (90, 92, 91);
update t1 set a = 101, b = 102 where pk = 10;
delete from t1 where pk = 20;
select * from t1 order by pk;
pk a b
10 101 102
30 31 32
40 41 42
50 51 52
60 61 62
70 71 72
80 81 82
select * from t2 order by pk;
pk a b
10 12 11
20 22 21
30 32 31
40 42 41
50 52 51
60 62 61
70 72 71
80 82 81
90 92 91
set foreign_key_checks=on;
drop table if exists t3, t2, t1;
create table t1(pk int, a int, b int, c int, d int, primary key (a, b), constraint fake_name_1 foreign key (c, d) references t1 (a, b) on update CASCADE on delete CASCADE);
insert into t1 values (10, 11, 12, NULL, NULL), (20, 13, 14, NULL, NULL);
insert into t1 values (30, 21, 22, 11, 12), (40, 23, 24, 11, 12);
insert into t1 values (50, 31, 32, 21, 22), (60, 33, 34, 21, 22), (70, 35, 36, 23, 24), (80, 37, 38, 23, 24);
insert into t1 values (90, 41, 42, 31, 32), (100, 43, 44, 33, 34), (110, 45, 46, 35, 36), (120, 47, 48, 37, 38);
insert into t1 values (130, 51, 52, 41, 42), (140, 53, 54, 49, 50);
update t1 set c = 15, d = 16 where pk = 30;
select * from t1 order by pk;
pk a b c d
10 11 12 NULL NULL
20 13 14 NULL NULL
30 21 22 11 12
40 23 24 11 12
50 31 32 21 22
60 33 34 21 22
70 35 36 23 24
80 37 38 23 24
90 41 42 31 32
100 43 44 33 34
110 45 46 35 36
120 47 48 37 38
delete from t1 where pk = 50;
select * from t1 order by pk;
pk a b c d
10 11 12 NULL NULL
20 13 14 NULL NULL
30 21 22 11 12
40 23 24 11 12
60 33 34 21 22
70 35 36 23 24
80 37 38 23 24
100 43 44 33 34
110 45 46 35 36
120 47 48 37 38
drop table if exists t1;
drop table if exists t2, t1;
create table t1(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a));
create table t2(pk int, a int, b int, primary key (pk), unique key uk_a_b (a, b), constraint cst_name foreign key (a, b) references t1 (b, a) on update CASCADE on delete CASCADE);
insert into t1 values (10, 11, 12), (20, 21, 22);
insert into t2 values (10, 12, 11), (20, 22, 21);
insert into t2 values (30, 32, 31);
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails
drop table t1;
ERROR HY000: Cannot drop table 't1' referenced by a foreign key constraint 'cst_name' on table 't2'
alter table t2 drop foreign key cst_name;
insert into t2 values (30, 32, 31);
drop table t1;
select * from t2 order by pk;
pk a b
10 12 11
20 22 21
30 32 31
drop table if exists jx_t1;
create table jx_t1(pk int, a int, b int, primary key (pk), unique key uk_b (b), foreign key (a) references jx_t1 (b) on update RESTRICT on delete RESTRICT);
insert into jx_t1 values (1, 2, 3);
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails
replace into jx_t1 values (1, NULL, 1);
insert into jx_t1 values (2, NULL, 2);
update jx_t1 set b=22 where pk=2;
select * from jx_t1;
pk a b
1 NULL 1
2 NULL 22
insert into jx_t1 values (3, 4, 4);
# BUG#29775335 - 修复外键指向自身时删除数据失败
delete from jx_t1 where pk = 3;
drop table jx_t1;
create table jx_t1(pk int, a int, b int, c int, d int, primary key (pk), unique key uk_b (a, b), foreign key (c, d) references jx_t1 (a, b) on update RESTRICT on delete RESTRICT);
insert into jx_t1 values(1, 2, 2, 2, 2);
# BUG#29775335 - 修复外键指向自身时删除数据失败
update jx_t1 set a =3, c = 3 where pk = 1;
# BUG#29775335 - 修复外键指向自身时删除数据失败
update jx_t1 set c =3, a = 3 where pk = 1;
drop table jx_t1;
drop table if exists child, parent;
create table parent (id int not null, name varchar(228), primary key (id));
create table child (id int, name varchar(228), parent_id int,
foreign key (parent_id) references parent(id) on delete cascade);
insert into parent value ('1', 'test');
insert into child value ('1', 'test', '1');
select * from parent;
id name
1 test
select * from child;
id name parent_id
1 test 1
delete from parent;
select * from parent;
id name
select * from child;
id name parent_id

View File

@ -0,0 +1,366 @@
#### owner: yuchen.wyc
#### owner group: sql2
#### description: foreign key
--disable_warnings
set foreign_key_checks=on;
#drop tablegroup if exists fk_group;
#create tablegroup fk_group;
drop table if exists t6, t5, t4, t3, t2, t1;
create table t1(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a));
create table t2(pk int, a int, b int, primary key (pk), unique key uk_a_b (a, b), constraint fake_name_2 foreign key (a, b) references t1 (b, a) on update CASCADE on delete CASCADE);
create table t3(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_3 foreign key (a, b) references t2 (a, b) on update CASCADE on delete CASCADE);
create table t4(pk int, a int, b int, primary key (pk), unique key uk_a_b (a, b), constraint fake_name_4 foreign key (a, b) references t3 (b, a) on update CASCADE on delete CASCADE);
## insert.
insert into t1 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52), (60, 61, 62), (70, 71, 72), (80, 81, 82);
insert into t2 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61), (70, 72, 71);
insert into t3 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61);
insert into t4 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52);
--disable_result_log
--error ER_NO_REFERENCED_ROW_2
insert into t2 values (80, 82, 81), (90, 92, 91);
--error ER_NO_REFERENCED_ROW_2
insert into t3 values (70, 72, 71), (80, 82, 81);
--error ER_NO_REFERENCED_ROW_2
insert into t4 values (60, 61, 62), (70, 71, 72);
--enable_result_log
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
## update.
update t1 set a = 91, b = 92 where pk = 10;
update t2 set a = 82, b = 81 where pk = 20;
update t3 set a = 72, b = 71 where pk = 30;
update t4 set a = 61, b = 62 where pk = 40;
--disable_result_log
--error ER_NO_REFERENCED_ROW_2
update t2 set a = a * 10 where pk = 70;
--error ER_NO_REFERENCED_ROW_2
update t3 set a = a * 10 where pk = 60;
--error ER_NO_REFERENCED_ROW_2
update t4 set a = a * 10 where pk = 50;
--enable_result_log
create table t5(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_5 foreign key (a, b) references t4 (a, b) on update RESTRICT);
insert into t5 values (10, 91, 92), (20, 81, 82), (30, 71, 72), (40, 61, 62);
--disable_result_log
--error ER_ROW_IS_REFERENCED_2
update t1 set a = 11, b = 12 where pk = 10;
--error ER_ROW_IS_REFERENCED_2
update t2 set a = 22, b = 21 where pk = 20;
--error ER_ROW_IS_REFERENCED_2
update t3 set a = 32, b = 31 where pk = 30;
--error ER_ROW_IS_REFERENCED_2
update t4 set a = 41, b = 42 where pk = 40;
--enable_result_log
# update column unconcerned with foreign key.
update t1 set pk = pk * 10 where pk = 10;
update t2 set pk = pk * 10 where pk = 20;
update t3 set pk = pk * 10 where pk = 30;
update t4 set pk = pk * 10 where pk = 40;
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
select * from t5 order by pk;
drop table if exists t5;
# delete.
delete from t1 where pk = 10;
delete from t2 where pk = 20;
delete from t3 where pk = 30;
delete from t4 where pk = 40;
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
create table t5(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_5 foreign key (a, b) references t4 (a, b) on delete NO ACTION);
insert into t5 values (50, 51, 52);
--disable_result_log
--error ER_ROW_IS_REFERENCED_2
delete from t1 where pk = 50;
--error ER_ROW_IS_REFERENCED_2
delete from t2 where pk = 50;
--error ER_ROW_IS_REFERENCED_2
delete from t3 where pk = 50;
--error ER_ROW_IS_REFERENCED_2
delete from t4 where pk = 50;
--enable_result_log
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
select * from t5 order by pk;
drop table if exists t5;
delete from t1;
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
# replace.
replace into t1 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52), (60, 61, 62), (70, 71, 72), (80, 81, 82);
replace into t2 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61), (70, 72, 71);
replace into t3 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61);
replace into t4 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52);
--disable_result_log
--error ER_NO_REFERENCED_ROW_2
replace into t2 values (80, 82, 81), (90, 92, 91);
--error ER_NO_REFERENCED_ROW_2
replace into t3 values (70, 72, 71), (80, 82, 81);
--error ER_NO_REFERENCED_ROW_2
replace into t4 values (60, 61, 62), (70, 71, 72);
--enable_result_log
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
replace into t1 values (10, 91, 92);
replace into t2 values (20, 82, 81);
replace into t3 values (30, 72, 71);
replace into t4 values (40, 61, 62);
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
create table t5(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_5 foreign key (a, b) references t4 (a, b));
replace into t5 values (50, 51, 52);
--disable_result_log
--error ER_ROW_IS_REFERENCED_2
replace into t1 values (50, 11, 12);
--error ER_ROW_IS_REFERENCED_2
replace into t2 values (50, 22, 21);
--error ER_ROW_IS_REFERENCED_2
replace into t3 values (50, 32, 31);
--error ER_ROW_IS_REFERENCED_2
replace into t4 values (50, 41, 42);
--enable_result_log
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
select * from t5 order by pk;
drop table if exists t5;
delete from t1;
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
# insert on dup.
insert into t1 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52), (60, 61, 62), (70, 71, 72), (80, 81, 82);
insert into t2 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61), (70, 72, 71);
insert into t3 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61);
insert into t4 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52);
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
insert into t1 values (10, 101, 102) on duplicate key update a = 91, b = 92;
insert into t2 values (20, 92, 91) on duplicate key update a = 82, b = 81;
insert into t3 values (30, 82, 81) on duplicate key update a = 72, b = 71;
insert into t4 values (40, 71, 72) on duplicate key update a = 61, b = 62;
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
--disable_result_log
--error ER_NO_REFERENCED_ROW_2
insert into t2 values (20, 0, 0) on duplicate key update a = a * 10;
--error ER_NO_REFERENCED_ROW_2
insert into t3 values (30, 0, 0) on duplicate key update a = a * 10;
--error ER_NO_REFERENCED_ROW_2
insert into t4 values (40, 0, 0) on duplicate key update a = a * 10;
--enable_result_log
create table t5(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a), constraint fake_name_5 foreign key (a, b) references t4 (a, b));
insert into t5 values (10, 91, 92), (20, 81, 82), (30, 71, 72), (40, 61, 62);
--disable_result_log
--error ER_ROW_IS_REFERENCED_2
insert into t1 values (10, 101, 102) on duplicate key update a = 101, b = 102;
insert into t1 values (100, 101, 102);
--error ER_ROW_IS_REFERENCED_2
insert into t2 values (20, 102, 101) on duplicate key update a = 102, b = 101;
insert into t2 values (100, 102, 101);
--error ER_ROW_IS_REFERENCED_2
insert into t3 values (30, 102, 101) on duplicate key update a = 102, b = 101;
insert into t3 values (100, 102, 101);
--error ER_ROW_IS_REFERENCED_2
insert into t4 values (40, 101, 102) on duplicate key update a = 101, b = 102;
insert into t4 values (100, 101, 102);
--enable_result_log
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
select * from t5 order by pk;
# update column concerned with foreign key but old value is equal to new value.
insert into t1 values (0, 101, 102) on duplicate key update a = 101, b = 102;
insert into t2 values (0, 102, 101) on duplicate key update a = 102, b = 101;
insert into t3 values (0, 102, 101) on duplicate key update a = 102, b = 101;
insert into t4 values (0, 101, 102) on duplicate key update a = 101, b = 102;
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
select * from t5 order by pk;
# update column unconcerned with foreign key.
insert into t1 values (0, 21, 22) on duplicate key update pk = 1000;
insert into t2 values (0, 32, 31) on duplicate key update pk = 1010;
insert into t3 values (0, 42, 41) on duplicate key update pk = 1020;
insert into t4 values (0, 51, 52) on duplicate key update pk = 1030;
select * from t1 order by pk;
select * from t2 order by pk;
select * from t3 order by pk;
select * from t4 order by pk;
select * from t5 order by pk;
drop table if exists t5, t4, t3, t2, t1;
## more datatypes, especially datetime, varchar, and NULL.
create table t1(pk int, a varchar(16), b datetime(6), primary key (pk), unique key uk_a_b (b, a));
create table t2(pk int, a datetime(6), b varchar(16), primary key (pk), unique key uk_a_b (a, b), foreign key (a, b) references t1 (b, a) on update CASCADE on delete CASCADE);
insert into t1 values (10, 'abc', '2018-03-31 12:00:00'),
(20, 'DEF', '2018-03-31 13:00:00'),
(30, 'ghi', '2018-03-31 14:00:00'),
(40, 'JKL', '2018-03-31 15:00:00'),
(50, 'mno', '2018-03-31 16:00:00'),
(60, 'PQR', '2018-03-31 17:00:00');
insert into t2 values (10, '2018-03-31 12:00:00', 'ABC'),
(20, '2018-03-31 13:00:00', 'def'),
(30, '2018-03-31 14:00:00', 'GHI'),
(40, '2018-03-31 15:00:00', 'jkl'),
(50, '2018-03-31 00:00:00', NULL),
(60, NULL, NULL);
delete from t1 where pk = 10;
update t1 set a = 'stu', b = '2018-03-31 19:00:00' where pk = 20;
update t1 set a = NULL where pk = 30;
select * from t1 order by pk;
select * from t2 order by pk;
delete from t1 where pk = 30;
update t2 set a = NULL, b = 'vwx' where pk = 20;
select * from t1 order by pk;
select * from t2 order by pk;
create table t3(pk int, a datetime(6), b varchar(16), primary key (pk), unique key uk_a_b (a, b), foreign key (a, b) references t1 (b, a));
insert into t3 values (40, '2018-03-31 15:00:00', 'jkl');
update t2 set b = 'hello' where pk = 20;
select * from t2 order by pk;
select * from t3 order by pk;
delete from t2 where pk = 20;
select * from t2 order by pk;
select * from t3 order by pk;
--disable_result_log
--error ER_NO_REFERENCED_ROW_2
insert into t3 values (10, '2018-03-31 12:00:00', 'ABC');
--error ER_ROW_IS_REFERENCED_2
update t1 set a = 'hello' where pk = 40;
--error ER_ROW_IS_REFERENCED_2
delete from t1 where pk = 40;
--enable_result_log
drop table if exists t3, t2, t1;
## foreign_key_checks on/off.
create table t1(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a));
create table t2(pk int, a int, b int, primary key (pk), unique key uk_a_b (a, b), constraint fake_name_2 foreign key (a, b) references t1 (b, a));
set foreign_key_checks=on;
insert into t1 values (10, 11, 12), (20, 21, 22), (30, 31, 32), (40, 41, 42), (50, 51, 52), (60, 61, 62), (70, 71, 72), (80, 81, 82);
insert into t2 values (10, 12, 11), (20, 22, 21), (30, 32, 31), (40, 42, 41), (50, 52, 51), (60, 62, 61), (70, 72, 71);
--disable_result_log
--error ER_NO_REFERENCED_ROW_2
insert into t2 values (80, 82, 81), (90, 92, 91);
--error ER_ROW_IS_REFERENCED_2
update t1 set a = 101, b = 102 where pk = 10;
--error ER_ROW_IS_REFERENCED_2
delete from t1 where pk = 20;
--enable_result_log
select * from t1 order by pk;
select * from t2 order by pk;
set foreign_key_checks=off;
insert into t2 values (80, 82, 81), (90, 92, 91);
update t1 set a = 101, b = 102 where pk = 10;
delete from t1 where pk = 20;
select * from t1 order by pk;
select * from t2 order by pk;
set foreign_key_checks=on;
drop table if exists t3, t2, t1;
## self reference.
create table t1(pk int, a int, b int, c int, d int, primary key (a, b), constraint fake_name_1 foreign key (c, d) references t1 (a, b) on update CASCADE on delete CASCADE);
insert into t1 values (10, 11, 12, NULL, NULL), (20, 13, 14, NULL, NULL);
insert into t1 values (30, 21, 22, 11, 12), (40, 23, 24, 11, 12);
insert into t1 values (50, 31, 32, 21, 22), (60, 33, 34, 21, 22), (70, 35, 36, 23, 24), (80, 37, 38, 23, 24);
insert into t1 values (90, 41, 42, 31, 32), (100, 43, 44, 33, 34), (110, 45, 46, 35, 36), (120, 47, 48, 37, 38);
--disable_result_log
--error ER_NO_REFERENCED_ROW_2
insert into t1 values (130, 51, 52, 41, 42), (140, 53, 54, 49, 50);
--error ER_NO_REFERENCED_ROW_2
update t1 set c = 15, d = 16 where pk = 30;
--enable_result_log
select * from t1 order by pk;
# mysql will return ER_ROW_IS_REFERENCED_2, maybe bug.
# update t1 set a = 25, b = 26 where pk = 40;
delete from t1 where pk = 50;
select * from t1 order by pk;
drop table if exists t1;
drop table if exists t2, t1;
create table t1(pk int, a int, b int, primary key (pk), unique key uk_a_b (b, a));
create table t2(pk int, a int, b int, primary key (pk), unique key uk_a_b (a, b), constraint cst_name foreign key (a, b) references t1 (b, a) on update CASCADE on delete CASCADE);
insert into t1 values (10, 11, 12), (20, 21, 22);
insert into t2 values (10, 12, 11), (20, 22, 21);
--error ER_NO_REFERENCED_ROW_2
insert into t2 values (30, 32, 31);
--error 3730
drop table t1;
alter table t2 drop foreign key cst_name;
insert into t2 values (30, 32, 31);
drop table t1;
select * from t2 order by pk;
#bug:
drop table if exists jx_t1;
create table jx_t1(pk int, a int, b int, primary key (pk), unique key uk_b (b), foreign key (a) references jx_t1 (b) on update RESTRICT on delete RESTRICT);
--error ER_NO_REFERENCED_ROW_2
insert into jx_t1 values (1, 2, 3);
replace into jx_t1 values (1, NULL, 1);
insert into jx_t1 values (2, NULL, 2);
update jx_t1 set b=22 where pk=2;
select * from jx_t1;
insert into jx_t1 values (3, 4, 4);
--echo # BUG#29775335 - 修复外键指向自身时删除数据失败
delete from jx_t1 where pk = 3;
drop table jx_t1;
create table jx_t1(pk int, a int, b int, c int, d int, primary key (pk), unique key uk_b (a, b), foreign key (c, d) references jx_t1 (a, b) on update RESTRICT on delete RESTRICT);
insert into jx_t1 values(1, 2, 2, 2, 2);
--echo # BUG#29775335 - 修复外键指向自身时删除数据失败
update jx_t1 set a =3, c = 3 where pk = 1;
--echo # BUG#29775335 - 修复外键指向自身时删除数据失败
update jx_t1 set c =3, a = 3 where pk = 1;
drop table jx_t1;
# issue/18132630
drop table if exists child, parent;
create table parent (id int not null, name varchar(228), primary key (id));
create table child (id int, name varchar(228), parent_id int,
foreign key (parent_id) references parent(id) on delete cascade);
insert into parent value ('1', 'test');
insert into child value ('1', 'test', '1');
select * from parent;
select * from child;
delete from parent;
select * from parent;
select * from child;
--enable_warnings

View File

@ -0,0 +1,28 @@
# ----------------------------------------------------------------------
# Create spatial index test of GEOMETRY spatial index.
# ----------------------------------------------------------------------
DROP TABLE IF EXISTS tab;
CREATE TABLE tab(c1 int NOT NULL PRIMARY KEY,c2 GEOMETRY NOT NULL SRID 0,
c3 GEOMETRY NOT NULL SRID 0,c4 GEOMETRY NOT NULL SRID 0,c5 GEOMETRY NOT NULL SRID 0);
CREATE SPATIAL INDEX idx1 on tab(c2);
CREATE SPATIAL INDEX idx2 on tab(c3 ASC) COMMENT 'wl6968';
ERROR HY000: Incorrect usage of spatial/fulltext/hash index and explicit index order.
CREATE SPATIAL INDEX idx2 on tab(c3 DESC) COMMENT 'wl6968';
ERROR HY000: Incorrect usage of spatial/fulltext/hash index and explicit index order.
CREATE SPATIAL INDEX idx3 on tab(c4);
CREATE SPATIAL INDEX idx4 on tab(c5 DESC) COMMENT 'Spatial index on Geometry type column';
ERROR HY000: Incorrect usage of spatial/fulltext/hash index and explicit index order.
SHOW INDEXES FROM tab;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
tab 0 PRIMARY 1 c1 A NULL NULL NULL BTREE available YES NULL
tab 1 idx1 1 c2 A NULL NULL NULL SPATIAL available YES NULL
tab 1 idx3 1 c4 A NULL NULL NULL SPATIAL available YES NULL
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(1,ST_GeomFromText('POINT(10 10)'),ST_GeomFromText('LINESTRING(5 5,20 20,30 30)'),
ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'),
ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(3,ST_GeomFromText('POINT(4 4)'),ST_GeomFromText('LINESTRING(130 130,140 140,150 150)'),
ST_GeomFromText('POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))'),
ST_GeomFromText('POLYGON((4 -2,5 -4,6 -5,7 -4,7 2,4 -2))'));
DROP TABLE tab;

View File

@ -0,0 +1,585 @@
# ----------------------------------------------------------------------
# Base test of geometry ddl.
# ----------------------------------------------------------------------
set @g = point(1, 1);
select length(@g);
length(@g)
25
drop table if exists geo_table, tt1, T_GEO, tab, FF01, gis_point_plancache;
CREATE TABLE geo_table(
k int primary key,
geom geometry NOT NULL,
SPATIAL INDEX (geom)
);
INSERT INTO geo_table VALUES
(1, ST_GeomFromText('POINT(1.0 1.0)')),
(2, ST_GeomFromText('LINESTRING(1.0 1.0, 2.0 2.0)')),
(3, ST_GeomFromText('POINT(3.0 3.0)')),
(4, ST_GeomFromText('LINESTRING(4.0 4.0, 5.0 5.0)')),
(5, ST_GeomFromText('LINESTRING(40.0 40.0, 41.0 41.0)')),
(6, ST_GeomFromText('POLYGON((1.0 1.0, 5.0 1.0, 5.0 5.0, 1.0 5.0, 1.0 1.0))'));
SELECT k FROM geo_table WHERE ST_Intersects(ST_GeomFromText('POINT(3.0 3.0)'), geom) ORDER BY k;
k
3
6
drop table geo_table;
CREATE TABLE geo_table(
k int primary key,
geom geometry NOT NULL srid 4326,
SPATIAL INDEX (geom) local
);
INSERT INTO geo_table VALUES (1, ST_GeomFromText('POINT(1.0 1.0)', 4326));
SELECT k FROM geo_table WHERE ST_Intersects(ST_GeomFromText('POINT(1.0 1.0)', 0), geom) ORDER BY k;
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 0, but the SRID of the column is 4326. Consider changing the SRID of the geometry or the SRID property of the column.
drop table geo_table;
create table tt1(g GEOMETRY check(g=ST_GeomFromText('point(10 20)')));
insert into tt1 values(ST_GeomFromText('point(10 20)',26918));
ERROR HY000: check constraint violated
insert into tt1 values(st_geomfromwkb(x'01040000000300000001010000000000000000c067400000000000805b4001010000000000000000c06240000000000080514001010000000000000000c06c400000000000805140'));
ERROR HY000: check constraint violated
insert into tt1 values(ST_GeomFromText('point(10 20)'));
drop table tt1;
create table T_GEO (GID int auto_increment primary key, geo_c geometrycollection,geo geometry);
select * from T_GEO group by geo;
GID geo_c geo
select * from T_GEO order by geo_c;
GID geo_c geo
drop table T_GEO;
CREATE TABLE tab(c1 int NOT NULL PRIMARY KEY,c2 POINT NOT NULL SRID 0,
c3 LINESTRING NOT NULL SRID 0,c4 POLYGON NOT NULL SRID 0,c5 GEOMETRY NOT NULL SRID 0)
ENGINE=InnoDB;
Warnings:
Warning 1286 Unknown storage engine 'InnoDB'
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(1,ST_GeomFromText('POINT(10 10)'),ST_GeomFromText('LINESTRING(5 5,20 20,30 30)'),
ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'),
ST_GeomFromText('POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(2,ST_GeomFromText('POINT(20 20)'),ST_GeomFromText('LINESTRING(20 20,30 30,40 40)'),
ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'),
ST_GeomFromText('POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(3,ST_GeomFromText('POINT(4 4)'),ST_GeomFromText('LINESTRING(130 130,140 140,150 150)'),
ST_GeomFromText('POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))'),
ST_GeomFromText('POLYGON((4 -2,5 -4,6 -5,7 -4,7 2,4 -2))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(4,ST_GeomFromText('POINT(50 50)'),ST_GeomFromText('LINESTRING(200 200,300 300,400 400)'),
ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))'),
ST_GeomFromText('POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(5,ST_GeomFromText('POINT(3 3)'),ST_GeomFromText('LINESTRING(400 400,500 500,600 700)'),
ST_GeomFromText('POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))'),
ST_GeomFromText('POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(6,ST_GeomFromText('POINT(3 3)'),ST_GeomFromText('LINESTRING(40 40,50 50,60 70)'),
ST_GeomFromText('POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))'),
ST_GeomFromText('POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(7,ST_GeomFromText('POINT(60 70)'),ST_GeomFromText('LINESTRING(40 40,50 50,60 70)'),
ST_GeomFromText('POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))'),
ST_GeomFromText('POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(8,ST_GeomFromText('POINT(0 0)'),ST_GeomFromText('LINESTRING(40 40,50 50,60 70)'),
ST_GeomFromText('POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))'),
ST_GeomFromText('POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(9,ST_GeomFromText('POINT(120 120)'),ST_GeomFromText('LINESTRING(100 100,110 110,120 120)'),
ST_GeomFromText('POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))'),
ST_GeomFromText('POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))'));
INSERT INTO tab(c1,c2,c3,c4,c5)
VALUES(10,ST_GeomFromText('POINT(160 160)'),ST_GeomFromText('LINESTRING(140 140,150 150,160 160)'),
ST_GeomFromText('POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))'),
ST_GeomFromText('POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))'));
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab ORDER BY c1;
c1 ST_Astext(c2) ST_Astext(c4)
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
6 POINT(3 3) POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))
7 POINT(60 70) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
8 POINT(0 0) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab ORDER BY c2;
c1 ST_Astext(c2) ST_Astext(c4)
8 POINT(0 0) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
6 POINT(3 3) POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
7 POINT(60 70) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab ORDER BY c3;
c1 ST_Astext(c2) ST_Astext(c4)
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
6 POINT(3 3) POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))
7 POINT(60 70) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
8 POINT(0 0) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab ORDER BY c4;
c1 ST_Astext(c2) ST_Astext(c4)
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
6 POINT(3 3) POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))
7 POINT(60 70) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
8 POINT(0 0) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab ORDER BY c5;
c1 ST_Astext(c2) ST_Astext(c4)
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
6 POINT(3 3) POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))
7 POINT(60 70) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
8 POINT(0 0) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab GROUP BY c1;
c1 ST_Astext(c2) ST_Astext(c4)
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
6 POINT(3 3) POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))
7 POINT(60 70) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
8 POINT(0 0) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab GROUP BY c2;
c1 ST_Astext(c2) ST_Astext(c4)
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
7 POINT(60 70) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
8 POINT(0 0) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab GROUP BY c3;
c1 ST_Astext(c2) ST_Astext(c4)
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
6 POINT(3 3) POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab GROUP BY c4;
c1 ST_Astext(c2) ST_Astext(c4)
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
6 POINT(3 3) POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))
7 POINT(60 70) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab GROUP BY c5;
c1 ST_Astext(c2) ST_Astext(c4)
1 POINT(10 10) POLYGON((30 30,40 40,50 50,30 50,30 40,30 30))
2 POINT(20 20) POLYGON((40 50,40 70,50 100,70 100,80 80,70 50,40 50))
3 POINT(4 4) POLYGON((7 1,6 2,6 3,10 3,10 1,7 1))
4 POINT(50 50) POLYGON((300 300,400 400,500 500,300 500,300 400,300 300))
5 POINT(3 3) POLYGON((1010 1010,1020 1020,1030 1030,1040 1030,1020 1010,1010 1010))
6 POINT(3 3) POLYGON((2010 2010,2020 2020,2030 2030,2040 2030,2020 2010,2010 2010))
7 POINT(60 70) POLYGON((3010 3010,3020 3020,3030 3030,3040 3030,3020 3010,3010 3010))
9 POINT(120 120) POLYGON((4010 4010,4020 4020,4030 4030,4040 4030,4020 4010,4010 4010))
10 POINT(160 160) POLYGON((5010 5010,5020 5020,5030 5030,5040 5030,5020 5010,5010 5010))
SET sql_mode = 'ONLY_FULL_GROUP_BY';
SELECT c1,ST_Astext(c2),ST_Astext(c4) FROM tab GROUP BY c2;
ERROR 42000: 'test.tab.c1' is not in GROUP BY
SET sql_mode = ' ';
drop table tab;
CREATE TABLE FF01 (A INT,B GEOMETRY);
INSERT INTO FF01 VALUES (1,NULL);
INSERT INTO FF01 VALUES (2,POINT(1,2));
INSERT INTO FF01 VALUES (3,POINT(-1,-2));
SELECT ST_ASTEXT(B) FROM FF01 WHERE B = SOME (SELECT B FROM FF01 WHERE A=1);
ST_ASTEXT(B)
SELECT ST_ASTEXT(B) FROM FF01 WHERE B = SOME (SELECT A FROM FF01 WHERE B=POINT(1,2));
ST_ASTEXT(B)
SELECT ST_ASTEXT(B) FROM FF01 WHERE B IN (SELECT B FROM FF01 WHERE B=POINT(1,2));
ST_ASTEXT(B)
POINT(1 2)
SELECT ST_ASTEXT(B) FROM FF01 WHERE B LIKE (SELECT B FROM FF01 WHERE B=POINT(1,2));
ERROR HY000: Invalid argument
SELECT ST_ASTEXT(B) FROM FF01 WHERE B NOT IN (SELECT B FROM FF01 WHERE B=POINT(1,2));
ST_ASTEXT(B)
POINT(-1 -2)
SELECT ST_ASTEXT(B) FROM FF01 WHERE B = ANY (SELECT A FROM FF01 WHERE B=POINT(1,2));
ST_ASTEXT(B)
SELECT ST_ASTEXT(B) FROM FF01 WHERE B = ALL (SELECT A FROM FF01 WHERE B=POINT(1,2));
ST_ASTEXT(B)
drop table FF01;
create table FF01 (gid int auto_increment primary key, geo geometry SRID 4326,geo_c GEOMETRYCOLLECTION SRID 26918,poi point SRID 4326,lin linestring SRID 26918,pol polygon SRID 4326,M_POI MULTIPOINT SRID 26918,M_LIN MULTILINESTRING SRID 4326 ,M_POL MULTIPOLYGON SRID 26918);
SELECT ST_ASTEXT(POL) FROM FF01 WHERE (GEO,GEO_C) = (SELECT GEO,GEO_C FROM FF01 WHERE GID=1);
ST_ASTEXT(POL)
drop table FF01;
create table FF01 (gid int auto_increment primary key, M_POI MULTIPOINT SRID 26918);
create table FF02 (gid int auto_increment primary key, geo geometry SRID 4326);
SELECT ST_ASTEXT(M_POI) FROM FF01 WHERE M_POI <=> (SELECT M_POI FROM FF02 WHERE GID=1);
ST_ASTEXT(M_POI)
drop table FF01;
drop table FF02;
alter system flush plan cache;
create table gis_point_plancache (x double, y double, poi geometry);
insert into gis_point_plancache (x,y,poi) values (88.9200873939389,-70.01650134265074,st_srid(point(88.9200873939389,-70.01650134265074),4326)),(-131.96607164968344,70.74339201768984,st_srid(point(-131.96607164968344,70.74339201768984),4326));
insert into gis_point_plancache (x,y,poi) values (66.70676602312597,68.49638658511424,st_srid(point(66.70676602312597,68.49638658511424),4326)),(38.2111204280196,-84.97214528175294,st_srid(point(38.2111204280196,-84.97214528175294),4326));
insert into gis_point_plancache (x,y,poi) values (-135.24378902766549,-45.111689570279204,st_srid(point(-135.24378902766549,-45.111689570279204),4326)),(54.43574907318134,11.87557381602113,st_srid(point(54.43574907318134,11.87557381602113),4326));
insert into gis_point_plancache (x,y,poi) values (-51.28971091880538,-16.112290993511024,st_srid(point(-51.28971091880538,-16.112290993511024),4326)),(26.793719900045886,38.22676013634444,st_srid(point(26.793719900045886,38.22676013634444),4326));
insert into gis_point_plancache (x,y,poi) values (1.1, 1.2, st_srid(linestring(point(1.1, 1.2), point(1.2, 1.3)), 4326));
insert into gis_point_plancache (x,y,poi) values (1.111, 1.211, st_srid(linestring(point(1.111, 1.211), point(1.211, 1.311)), 4326));
insert into gis_point_plancache (x,y,poi) values (1.111111, 1.211111, st_srid(linestring(point(1.111111, 1.211111), point(1.211111, 1.311111)), 4326));
select x,y,st_astext(poi) from gis_point_plancache;
x y st_astext(poi)
88.9200873939389 -70.01650134265074 POINT(-70.01650134265074 88.9200873939389)
-131.96607164968344 70.74339201768984 POINT(70.74339201768984 -131.96607164968344)
66.70676602312597 68.49638658511424 POINT(68.49638658511424 66.70676602312597)
38.2111204280196 -84.97214528175294 POINT(-84.97214528175294 38.2111204280196)
-135.24378902766549 -45.111689570279204 POINT(-45.111689570279204 -135.24378902766549)
54.43574907318134 11.87557381602113 POINT(11.87557381602113 54.43574907318134)
-51.28971091880538 -16.112290993511024 POINT(-16.112290993511024 -51.28971091880538)
26.793719900045886 38.22676013634444 POINT(38.22676013634444 26.793719900045886)
1.1 1.2 LINESTRING(1.2 1.1,1.3 1.2)
1.111 1.211 LINESTRING(1.211 1.111,1.311 1.211)
1.111111 1.211111 LINESTRING(1.211111 1.111111,1.311111 1.211111)
select executions, hit_count, substring(query_sql, 1, 100) as sql_text from oceanbase.GV$OB_PLAN_CACHE_PLAN_STAT where query_sql like '%x,y,poi%' order by plan_size desc limit 10;
executions hit_count sql_text
0 0 select executions, hit_count, substring(query_sql, 1, 100) as sql_text from oceanbase.GV$OB_PLAN_CAC
1 0 insert into gis_point_plancache (x,y,poi) values (88.9200873939389,-70.01650134265074,st_srid(point(
1 0 insert into gis_point_plancache (x,y,poi) values (-51.28971091880538,-16.112290993511024,st_srid(poi
1 0 insert into gis_point_plancache (x,y,poi) values (66.70676602312597,68.49638658511424,st_srid(point(
1 0 insert into gis_point_plancache (x,y,poi) values (-135.24378902766549,-45.111689570279204,st_srid(po
1 0 insert into gis_point_plancache (x,y,poi) values (1.1, 1.2, st_srid(linestring(point(1.1, 1.2), poin
1 0 insert into gis_point_plancache (x,y,poi) values (1.111, 1.211, st_srid(linestring(point(1.111, 1.21
1 0 insert into gis_point_plancache (x,y,poi) values (1.111111, 1.211111, st_srid(linestring(point(1.111
drop table gis_point_plancache;
select json_array(1.1, 1.1, 1.1);
json_array(1.1, 1.1, 1.1)
[1.1, 1.1, 1.1]
select json_array(1.1111, 1.1, 1.1);
json_array(1.1111, 1.1, 1.1)
[1.1111, 1.1, 1.1]
select json_array(1.111111111, 1.1, 1.1);
json_array(1.111111111, 1.1, 1.1)
[1.111111111, 1.1, 1.1]
select st_astext(point(cast(1.11 as double), 1.1)) as plancache_not_share;
plancache_not_share
POINT(1.11 1.1)
select st_astext(point(cast(1.1111 as double), 1.1111)) as plancache_not_share;
plancache_not_share
POINT(1.1111 1.1111)
select cast(1.11 as double), st_astext(point(1.1, 1.1)) as plancache_not_share;
cast(1.11 as double) plancache_not_share
1.11 POINT(1.1 1.1)
select cast(1.11111 as double), st_astext(point(1.1, 1.1111)) as plancache_not_share;
cast(1.11111 as double) plancache_not_share
1.11111 POINT(1.1 1.1111)
select executions, hit_count, substring(query_sql, 1, 100) as sql_text from oceanbase.GV$OB_PLAN_CACHE_PLAN_STAT where query_sql like '%plancache_not_share%' and query_sql not like '%OB_PLAN_CACHE_PLAN_STAT%' order by plan_size desc limit 10;
executions hit_count sql_text
1 0 select st_astext(point(cast(1.11 as double), 1.1)) as plancache_not_share
1 0 select st_astext(point(cast(1.1111 as double), 1.1111)) as plancache_not_share
1 0 select cast(1.11 as double), st_astext(point(1.1, 1.1)) as plancache_not_share
1 0 select cast(1.11111 as double), st_astext(point(1.1, 1.1111)) as plancache_not_share
drop table if exists tt2;
create table tt2(g GEOMETRY);
insert into tt2 values(ST_GeomFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)'));
ALTER TABLE tt2 ADD CONSTRAINT qq CHECK(g=ST_GeomFromText('point(10 20)'));
ERROR HY000: check constraint violated
ALTER TABLE tt2 ADD CONSTRAINT qq CHECK(g=ST_GeomFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)'));
drop table tt2;
SELECT ST_CONTAINS(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(2 0,2 0))'),ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(2 0))')) A;
A
1
SELECT ST_CONTAINS(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(LINESTRING(2 0,2 0))', 4326),ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(2 0))', 4326)) A;
A
1
SELECT ST_CONTAINS(ST_GEOMETRYFROMTEXT('POLYGON((2 0,0 0,0 0,2 0))'),ST_GEOMETRYFROMTEXT('GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,1 1,1 0,0 1,0 0))))'));
ERROR 22023: Invalid GIS data provided to function.
SELECT ST_CONTAINS(
ST_GEOMFROMTEXT('MULTIPOLYGON(((0 1e+19,0 0,0 0,0 1e+19)))'),
ST_GEOMFROMTEXT('POLYGON((0 0,0 0,0 0,0 0))'));
ERROR 22003: coordinate value is out of range in 'st_contains'
SELECT ST_CONTAINS(
ST_GEOMFROMTEXT('MULTIPOLYGON(((0 9.22e+18,0 0,0 0,0 9.22e+18)))'),
ST_GEOMFROMTEXT('POLYGON((0 0,0 0,0 0,0 0))'));
ST_CONTAINS(
ST_GEOMFROMTEXT('MULTIPOLYGON(((0 9.22e+18,0 0,0 0,0 9.22e+18)))'),
ST_GEOMFROMTEXT('POLYGON((0 0,0 0,0 0,0 0))'))
0
SELECT ST_CONTAINS(
ST_GEOMFROMTEXT('MULTIPOLYGON(((0 -9.22e+18,0 0,0 0,0 -9.22e+18)))'),
ST_GEOMFROMTEXT('POLYGON((0 0,0 0,0 0,0 0))'));
ST_CONTAINS(
ST_GEOMFROMTEXT('MULTIPOLYGON(((0 -9.22e+18,0 0,0 0,0 -9.22e+18)))'),
ST_GEOMFROMTEXT('POLYGON((0 0,0 0,0 0,0 0))'))
0
create table tt1(id int,p point);
alter table tt1 change p p polygon;
ERROR 0A000: Change geometry type not supported
desc tt1;
Field Type Null Key Default Extra
id int(11) YES NULL
p point YES NULL
drop table tt1;
create table tt2(a blob);
insert into tt2 values('E6100000010100000000000000000034400000000000002440');
select cast(a as point) from tt2;
ERROR SR001: There's no spatial reference system with SRID 808531525.
drop table tt2;
select hex(st_aswkb(x'E61000000108000000000000000e0066C00000000000A06640'));
ERROR 22023: Invalid GIS data provided to function st_aswkb.
select hex(st_asbinary(x'E61000000108000000000000000e0066C00000000000A06640'));
ERROR 22023: Invalid GIS data provided to function st_asbinary.
drop table if exists tt1,t1;
CREATE TABLE tt1 (
id INT NOT NULL ,
g GEOMETRY not null srid 4236,
p point not null srid 0,
l LINESTRING not null srid 26918,
po POLYGON not null srid 4236,
mu MULTIPOINT not null,
ml MULTILINESTRING not null srid 0,
mp MULTIPOLYGON not null srid 26918,
ge GEOMETRYCOLLECTION not null srid 4236
);
CREATE INDEX idx02 ON tt1(mu);
CREATE INDEX idx03 ON tt1(ml);
CREATE INDEX idx05 ON tt1(ge);
insert into tt1 values(1,ST_GeomFromText('POINT(15 20)',4236),ST_GeomFromText('POINT(15 20)',0),ST_GeomFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)',26918),ST_GeomFromText('POLYGON((0 1,10 0,9 10,0 10,0 1),(5 5,7 5,8 7,5 7, 5 5))',4236),ST_GeomFromText('MULTIPOINT(0 1, -20 25, 60 -60)'),
ST_GeomFromText('MULTILINESTRING((11 10, 20 -20), (-15 20, 30 15))',0),ST_GeomFromText('MULTIPOLYGON(((0 0,10 0,10 11,0 10,0 0)),((-5 -6,7 5,7 7,5 7, -5 -6)))',26918),
ST_GeomFromText('GEOMETRYCOLLECTION(POINT(11 10), POINT(30 -30), LINESTRING(-15 15, -20 20))',4236));
insert into tt1 values(1,ST_GeomFromText('POINT(15 20)',4236),ST_GeomFromText('POINT(15 20)',0),ST_GeomFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)',26918),ST_GeomFromText('POLYGON((0 1,10 0,9 10,0 10,0 1),(5 5,7 5,8 7,5 7, 5 5))',4236),ST_GeomFromText('MULTIPOINT(0 1, -20 25, 60 -60)'),
ST_GeomFromText('MULTILINESTRING((11 10, 20 -20), (-15 20, 30 15))',0),ST_GeomFromText('MULTIPOLYGON(((0 0,10 0,10 11,0 10,0 0)),((-5 -6,7 5,7 7,5 7, -5 -6)))',26918),
ST_GeomFromText('GEOMETRYCOLLECTION(POINT(11 10), POINT(30 -30), LINESTRING(-15 15, -20 20))',4236));
insert into tt1 values(2,ST_GeomFromText('POINT(15 20)',4236),ST_GeomFromText('POINT(15 20)',0),ST_GeomFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)',26918),ST_GeomFromText('POLYGON((0 1,10 0,9 10,0 10,0 1),(5 5,7 5,8 7,5 7, 5 5))',4236),ST_GeomFromText('MULTIPOINT(0 1, -20 25, 60 -60)'),
ST_GeomFromText('MULTILINESTRING((11 10, 20 -20), (-15 20, 30 15))',0),ST_GeomFromText('MULTIPOLYGON(((0 0,10 0,10 11,0 10,0 0)),((-5 -6,7 5,7 7,5 7, -5 -6)))',26918),
ST_GeomFromText('GEOMETRYCOLLECTION(POINT(11 10), POINT(30 -30), LINESTRING(-15 15, -20 20))',4236));
insert into tt1 values(2,ST_GeomFromText('POINT(15 20)',4236),ST_GeomFromText('POINT(15 20)',0),ST_GeomFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)',26918),ST_GeomFromText('POLYGON((0 1,10 0,9 10,0 10,0 1),(5 5,7 5,8 7,5 7, 5 5))',4236),ST_GeomFromText('MULTIPOINT(0 1, -20 25, 60 -60)'),
ST_GeomFromText('MULTILINESTRING((11 10, 20 -20), (-15 20, 30 15))',0),ST_GeomFromText('MULTIPOLYGON(((1 1,10 0,10 11,0 10,1 1)),((-5 -6,7 5,7 7,5 7, -5 -6)))',26918),
ST_GeomFromText('GEOMETRYCOLLECTION(POINT(11 10), POINT(30 -30), LINESTRING(-15 15, -20 20))',4236));
insert into tt1 values(1,ST_GeomFromText('POINT(15 20)',4236),ST_GeomFromText('POINT(15 20)',0),ST_GeomFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)',26918),ST_GeomFromText('POLYGON((0 1,10 0,9 10,0 10,0 1),(5 5,7 5,8 7,5 7, 5 5))',4236),ST_GeomFromText('MULTIPOINT(0 1, -20 25, 60 -60)'),
ST_GeomFromText('MULTILINESTRING((11 10, 20 -20), (-15 20, 30 15))',0),ST_GeomFromText('MULTIPOLYGON(((0 0,10 0,10 11,0 10,0 0)),((5 6,7 5,7 7,5 7, 5 6)))',26918),
ST_GeomFromText('GEOMETRYCOLLECTION(POINT(11 10), POINT(30 -30), LINESTRING(-15 15, -20 20))',4236));
insert into tt1 values(1,ST_GeomFromText('POINT(15 20)',4236),ST_GeomFromText('POINT(15 20)',0),ST_GeomFromText('LINESTRING(0 0, 10 10, 20 25, 50 60)',26918),ST_GeomFromText('POLYGON((0 1,10 0,9 10,0 10,0 1),(5 5,7 5,8 7,5 7, 5 5))',4236),ST_GeomFromText('MULTIPOINT(0 1, -20 25, 60 -60)'),
ST_GeomFromText('MULTILINESTRING((11 10, 20 -20), (-15 20, 30 15))',0),ST_GeomFromText('MULTIPOLYGON(((0 0,10 0,10 11,0 10,0 0)),((-5 -6,7 5,7 7,5 7, -5 -6)))',26918),
ST_GeomFromText('GEOMETRYCOLLECTION(POINT(11 10), POINT(30 -30), LINESTRING(-15 15, -20 20))',4236));
explain select id from tt1 where ST_Intersects(ge,ST_GeomFromText('POINT(15 20)',4236));
Query Plan
=====================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-----------------------------------------------------
|0 |TABLE FULL SCAN|tt1(idx05)|1 |299 |
=====================================================
Outputs & filters:
-------------------------------------
0 - output([tt1.id]), filter([ST_Intersects(tt1.ge, ST_GeomFromText('POINT(15 20)', 4236))])
access([tt1.__pk_increment], [tt1.ge], [tt1.id]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([tt1.__cellid_24], [tt1.__mbr_24], [tt1.__pk_increment]), range(1240640185631322861,MIN,MIN ; 1240640185631322861,MAX,MAX), (1240640185631322860,
MIN,MIN ; 1240640185631322860,MAX,MAX), (1240640185631322864,MIN,MIN ; 1240640185631322864,MAX,MAX), (1240640185631322816,MIN,MIN ; 1240640185631322816,
MAX,MAX), (1240640185631322880,MIN,MIN ; 1240640185631322880,MAX,MAX), (1240640185631323136,MIN,MIN ; 1240640185631323136,MAX,MAX), (1240640185631322112,
MIN,MIN ; 1240640185631322112,MAX,MAX), (1240640185631326208,MIN,MIN ; 1240640185631326208,MAX,MAX), (1240640185631309824,MIN,MIN ; 1240640185631309824,
MAX,MAX), (1240640185631506432,MIN,MIN ; 1240640185631506432,MAX,MAX), (1240640185632292864,MIN,MIN ; 1240640185632292864,MAX,MAX), (1240640185633341440,
MIN,MIN ; 1240640185633341440,MAX,MAX), (1240640185637535744,MIN,MIN ; 1240640185637535744,MAX,MAX), (1240640185587204096,MIN,MIN ; 1240640185587204096,
MAX,MAX), (1240640185520095232,MIN,MIN ; 1240640185520095232,MAX,MAX), (1240640184714788864,MIN,MIN ; 1240640184714788864,MAX,MAX), (1240640185788530688,
MIN,MIN ; 1240640185788530688,MAX,MAX), (1240640181493563392,MIN,MIN ; 1240640181493563392,MAX,MAX), (1240640198673432576,MIN,MIN ; 1240640198673432576,
MAX,MAX), (1240640267392909312,MIN,MIN ; 1240640267392909312,MAX,MAX), (1240639442759188480,MIN,MIN ; 1240639442759188480,MAX,MAX), (1240640542270816256,
MIN,MIN ; 1240640542270816256,MAX,MAX), (1240653736410349568,MIN,MIN ; 1240653736410349568,MAX,MAX), (1240671328596393984,MIN,MIN ; 1240671328596393984,
MAX,MAX), (1240460222363860992,MIN,MIN ; 1240460222363860992,MAX,MAX), (1239615797433729024,MIN,MIN ; 1239615797433729024,MAX,MAX), (1238489897526886400,
MIN,MIN ; 1238489897526886400,MAX,MAX), (1242993497154256896,MIN,MIN ; 1242993497154256896,MAX,MAX), (1224979098644774912,MIN,MIN ; 1224979098644774912,
MAX,MAX), (1441151880758558720,MIN,MIN ; 1441151880758558720,MAX,MAX), (1152921504606846976,MIN,MIN ; 1152921504606846976,MAX,MAX)
drop table tt1;
create table t1 (a geometry not null, spatial index(a)) row_format=dynamic;
INSERT IGNORE INTO t1 VALUES (NULL);
ERROR 23000: Column 'a' cannot be null
drop table t1;
drop table if exists t;
create table t1(g geometry NOT NULL SRID 3294);
create index idx on t1 (g);
INSERT INTO t1 (g) VALUES
(ST_GeomFromText('POINT(0 0)', 3294)),
(ST_GeomFromText('POINT(1 1)', 3294)),
(ST_GeomFromText('POINT(2 2)', 3294)),
(ST_GeomFromText('POINT(3 3)', 3294)),
(ST_GeomFromText('POINT(4 4)', 3294)),
(ST_GeomFromText('POINT(5 5.5)', 3294)),
(ST_GeomFromText('POINT(6 6)', 3294)),
(ST_GeomFromText('POINT(7 7)', 3294)),
(ST_GeomFromText('LINESTRING(0 0, 3 3)',3294));
explain select st_astext(a.g), st_astext(b.g) from t1 a join t1 b where _st_covers(a.g, b.g);
Query Plan
===============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |27 |345 |
|1 |├─TABLE FULL SCAN |a |9 |3 |
|2 |└─DISTRIBUTED TABLE FULL SCAN|b(idx)|3 |38 |
===============================================================
Outputs & filters:
-------------------------------------
0 - output([st_astext(a.g)], [st_astext(b.g)]), filter(nil)
conds(nil), nl_params_([a.g(:0)]), use_batch=false
1 - output([a.g]), filter(nil)
access([a.g]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
2 - output([b.g]), filter([_st_covers(:0, b.g)])
access([b.__pk_increment], [b.g]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([b.__cellid_16], [b.__mbr_16], [b.__pk_increment]), range(MIN ; MAX)
explain select st_astext(a.g), st_astext(b.g) from t1 a join t1 b where st_contains(a.g, b.g);
Query Plan
===============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |27 |345 |
|1 |├─TABLE FULL SCAN |a |9 |3 |
|2 |└─DISTRIBUTED TABLE FULL SCAN|b(idx)|3 |38 |
===============================================================
Outputs & filters:
-------------------------------------
0 - output([st_astext(a.g)], [st_astext(b.g)]), filter(nil)
conds(nil), nl_params_([a.g(:0)]), use_batch=false
1 - output([a.g]), filter(nil)
access([a.g]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
2 - output([b.g]), filter([st_contains(:0, b.g)])
access([b.__pk_increment], [b.g]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([b.__cellid_16], [b.__mbr_16], [b.__pk_increment]), range(MIN ; MAX)
explain select st_astext(a.g), st_astext(b.g) from t1 a join t1 b where st_within(a.g, b.g);
Query Plan
===============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |27 |345 |
|1 |├─TABLE FULL SCAN |a |9 |3 |
|2 |└─DISTRIBUTED TABLE FULL SCAN|b(idx)|3 |38 |
===============================================================
Outputs & filters:
-------------------------------------
0 - output([st_astext(a.g)], [st_astext(b.g)]), filter(nil)
conds(nil), nl_params_([a.g(:0)]), use_batch=false
1 - output([a.g]), filter(nil)
access([a.g]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
2 - output([b.g]), filter([st_within(:0, b.g)])
access([b.__pk_increment], [b.g]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([b.__cellid_16], [b.__mbr_16], [b.__pk_increment]), range(MIN ; MAX)
explain select st_astext(a.g), st_astext(b.g) from t1 a join t1 b where _st_dwithin(a.g, b.g, 0.1);
Query Plan
===============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |27 |345 |
|1 |├─TABLE FULL SCAN |a |9 |3 |
|2 |└─DISTRIBUTED TABLE FULL SCAN|b(idx)|3 |38 |
===============================================================
Outputs & filters:
-------------------------------------
0 - output([st_astext(a.g)], [st_astext(b.g)]), filter(nil)
conds(nil), nl_params_([a.g(:0)]), use_batch=false
1 - output([a.g]), filter(nil)
access([a.g]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([a.__pk_increment]), range(MIN ; MAX)always true
2 - output([b.g]), filter([_st_dwithin(:0, b.g, cast(0.1, DOUBLE(-1, -1)))])
access([b.__pk_increment], [b.g]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([b.__cellid_16], [b.__mbr_16], [b.__pk_increment]), range(MIN ; MAX)
select st_astext(a.g), st_astext(b.g) from t1 a join t1 b where _st_covers(a.g, b.g);
st_astext(a.g) st_astext(b.g)
POINT(0 0) POINT(0 0)
POINT(1 1) POINT(1 1)
POINT(2 2) POINT(2 2)
POINT(3 3) POINT(3 3)
POINT(4 4) POINT(4 4)
POINT(5 5.5) POINT(5 5.5)
POINT(6 6) POINT(6 6)
POINT(7 7) POINT(7 7)
LINESTRING(0 0,3 3) POINT(0 0)
LINESTRING(0 0,3 3) POINT(1 1)
LINESTRING(0 0,3 3) POINT(2 2)
LINESTRING(0 0,3 3) POINT(3 3)
LINESTRING(0 0,3 3) LINESTRING(0 0,3 3)
select st_astext(a.g), st_astext(b.g) from t1 a join t1 b where st_contains(a.g, b.g);
st_astext(a.g) st_astext(b.g)
POINT(0 0) POINT(0 0)
POINT(1 1) POINT(1 1)
POINT(2 2) POINT(2 2)
POINT(3 3) POINT(3 3)
POINT(4 4) POINT(4 4)
POINT(5 5.5) POINT(5 5.5)
POINT(6 6) POINT(6 6)
POINT(7 7) POINT(7 7)
LINESTRING(0 0,3 3) POINT(1 1)
LINESTRING(0 0,3 3) POINT(2 2)
LINESTRING(0 0,3 3) LINESTRING(0 0,3 3)
select st_astext(a.g), st_astext(b.g) from t1 a join t1 b where st_within(a.g, b.g);
st_astext(a.g) st_astext(b.g)
POINT(0 0) POINT(0 0)
POINT(1 1) POINT(1 1)
POINT(1 1) LINESTRING(0 0,3 3)
POINT(2 2) POINT(2 2)
POINT(2 2) LINESTRING(0 0,3 3)
POINT(3 3) POINT(3 3)
POINT(4 4) POINT(4 4)
POINT(5 5.5) POINT(5 5.5)
POINT(6 6) POINT(6 6)
POINT(7 7) POINT(7 7)
LINESTRING(0 0,3 3) LINESTRING(0 0,3 3)
select st_astext(a.g), st_astext(b.g) from t1 a join t1 b where _st_dwithin(a.g, b.g, 0.1);
st_astext(a.g) st_astext(b.g)
POINT(0 0) POINT(0 0)
POINT(0 0) LINESTRING(0 0,3 3)
POINT(1 1) POINT(1 1)
POINT(1 1) LINESTRING(0 0,3 3)
POINT(2 2) POINT(2 2)
POINT(2 2) LINESTRING(0 0,3 3)
POINT(3 3) POINT(3 3)
POINT(3 3) LINESTRING(0 0,3 3)
POINT(4 4) POINT(4 4)
POINT(5 5.5) POINT(5 5.5)
POINT(6 6) POINT(6 6)
POINT(7 7) POINT(7 7)
LINESTRING(0 0,3 3) POINT(0 0)
LINESTRING(0 0,3 3) POINT(1 1)
LINESTRING(0 0,3 3) POINT(2 2)
LINESTRING(0 0,3 3) POINT(3 3)
LINESTRING(0 0,3 3) LINESTRING(0 0,3 3)
select st_astext(g) from t1 where st_within(ST_GeomFromText('POINT(2.5 2.5)', 3294),st_buffer(g, 0));
st_astext(g)
LINESTRING(0 0,3 3)
drop table if exists FF01;
CREATE TABLE FF01 (A INT,B GEOMETRY);
INSERT INTO FF01 VALUES (1,NULL);
INSERT INTO FF01 VALUES (2,POINT(1,2));
INSERT INTO FF01 VALUES (3,POINT(-1,-2));
SELECT ST_ASTEXT(B) FROM FF01 WHERE B NOT IN (SELECT /*+no_unnest*/B FROM FF01 WHERE B=POINT(1,2));
ST_ASTEXT(B)
POINT(-1 -2)
drop table FF01;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,284 @@
# ----------------------------------------------------------------------
# Test of GEOMETRY filter.
# ----------------------------------------------------------------------
drop table if exists matrix;
create table matrix (TinyIntType tinyint(1),SmallIntType smallint(2),MediumIntType mediumint(3),Int32Type int(4),IntType bigint(5),UTinyIntType tinyint(1) unsigned,USmallIntType smallint(2) unsigned,UMediumIntType mediumint(3) unsigned,UInt32Type int(4) unsigned,UInt64Type bigint(5) unsigned,FloatType float,DoubleType double,UFloatType float unsigned,UDoubleType double unsigned,NumberType decimal(8,2),UNumberType decimal(8,2) unsigned,DateTimeType datetime,TimestampType timestamp,DateType date,TimeType time,YearType year,VarcharType varchar(9),CharType char(10),VarbinaryType varbinary(11),BinaryType binary(12),ExtendType int(13),TinyTextType TINYTEXT, TextType TEXT,MediumTextType MEDIUMTEXT, LongTextType LONGTEXT CHARSET utf8, BitType BIT(63),EnumType ENUM('a', 'b', 'c') default 'a',SetType SET('a', 'b', 'c') default 'b',JsonType json, GeometryType geometry);
insert into matrix values (-1, -2, -3, -4, -5, 1, 2, 3, 4, 5, -1.1, -1.2, 1.1, 1.2, -1.3, 1.3, '2014-01-01 12:12:12', '2014-01-01 12:12:12', '2014-01-01', '12:12:12', 2014, 'varchar', 'char', 'varbinary', 'binary', 0,'tinytext','text','mediumtext','longtext',b'01010101010101','a','c','"jsonstring"', ST_GeomFromText('POINT(1 1)'));
select * from matrix where ST_GeomFromText('POINT(1 1)') = TinyIntType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = SmallIntType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = MediumIntType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = Int32Type;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = IntType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = UTinyIntType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = USmallIntType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = UMediumIntType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = UInt32Type;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = UInt64Type;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = FloatType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = DoubleType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = UFloatType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = UDoubleType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = NumberType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = UNumberType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = DateTimeType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') = TimestampType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') = DateType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') = TimeType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = YearType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = VarcharType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = CharType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = VarbinaryType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = BinaryType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select st_astext(GeometryType) from matrix where ST_GeomFromText('POINT(1 1)') = ExtendType;
st_astext(GeometryType)
POINT(1 1)
select * from matrix where ST_GeomFromText('POINT(1 1)') = TinyTextType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') = TextType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') = MediumTextType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') = LongTextType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') = BitType;
TinyIntType SmallIntType MediumIntType Int32Type IntType UTinyIntType USmallIntType UMediumIntType UInt32Type UInt64Type FloatType DoubleType UFloatType UDoubleType NumberType UNumberType DateTimeType TimestampType DateType TimeType YearType VarcharType CharType VarbinaryType BinaryType ExtendType TinyTextType TextType MediumTextType LongTextType BitType EnumType SetType JsonType GeometryType
select * from matrix where ST_GeomFromText('POINT(1 1)') = EnumType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') = SetType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') = JsonType;
ERROR 0A000: geomerty, json not supported
select st_astext(GeometryType) from matrix where ST_GeomFromText('POINT(1 1)') = GeometryType;
st_astext(GeometryType)
POINT(1 1)
select * from matrix where ST_GeomFromText('POINT(1 1)') > TinyIntType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') < SmallIntType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > MediumIntType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') < Int32Type;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > IntType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') < UTinyIntType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > USmallIntType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') <= UMediumIntType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') >= UInt32Type;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') <= UInt64Type;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') >= FloatType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') <= DoubleType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') >= UFloatType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') <= UDoubleType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') >= NumberType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') <= UNumberType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > DateTimeType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') < TimestampType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > DateType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') < TimeType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') >= YearType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') < VarcharType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') >= CharType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') < VarbinaryType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') >= BinaryType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') <= ExtendType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > TinyTextType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') <= TextType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > MediumTextType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') <= LongTextType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > BitType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') <= EnumType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > SetType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') < JsonType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') > GeometryType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') | IntType;
ERROR HY000: Invalid argument
select * from matrix where ST_GeomFromText('POINT(1 1)') | GeometryType;
ERROR HY000: Invalid argument
select * from matrix where ~GeometryType;
ERROR HY000: Invalid argument
select * from matrix where GeometryType^IntType;
ERROR HY000: Invalid argument
select * from matrix where GeometryType&IntType;
ERROR HY000: Invalid argument
select * from matrix where GeometryType>>1;
ERROR HY000: Invalid argument
select * from matrix where GeometryType<<1;
ERROR HY000: Invalid argument
select * from matrix where GeometryType like 'a';
ERROR HY000: Invalid argument
select * from matrix where GeometryType between ST_GeomFromText('POINT(1 1)') and ST_GeomFromText('POINT(2 2)');
ERROR HY000: Invalid argument
select MIN(GeometryType) from matrix;
ERROR HY000: Invalid argument
select MAX(GeometryType) from matrix;
ERROR HY000: Invalid argument
select LEAST(st_geomfromtext('POINT(0 0)'), st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
select GREATEST(st_geomfromtext('POINT(0 0)'), st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
select st_geomfromtext('POINT(0 0)') + st_geomfromtext('POINT(1 1)');
ERROR 22000: Invalid data type for the operation
select st_geomfromtext('POINT(0 0)') - st_geomfromtext('POINT(1 1)');
ERROR 22000: Invalid data type for the operation
select st_geomfromtext('POINT(0 0)') * st_geomfromtext('POINT(1 1)');
ERROR 22000: Invalid data type for the operation
select st_geomfromtext('POINT(0 0)') / st_geomfromtext('POINT(1 1)');
ERROR 22000: Invalid data type for the operation
select st_geomfromtext('POINT(0 0)') DIV st_geomfromtext('POINT(1 1)');
ERROR 22000: Invalid data type for the operation
select st_geomfromtext('POINT(0 0)') % st_geomfromtext('POINT(1 1)');
ERROR 22000: Invalid data type for the operation
SELECT EXP(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT lOG2(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT lOG10(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT LN(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT lOG(3, st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT POW(3, st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT POW(3, GeometryType) from matrix;
ERROR HY000: Invalid argument
SELECT sqrt(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT acos(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT asin(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT atan(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT cos(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT sin(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT tan(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT cot(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT round(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT round(st_geomfromtext('POINT(1 1)'), 1);
ERROR HY000: Invalid argument
SELECT round(st_geomfromtext('POINT(1 1)'), -1);
ERROR HY000: Invalid argument
SELECT truncate(st_geomfromtext('POINT(1 1)'),1);
ERROR HY000: Invalid argument
SELECT truncate(GeometryType ,1) from matrix;
ERROR HY000: Invalid argument
SELECT ceiling(st_geomfromtext('POINT(1 1)'));
ERROR HY000: Invalid argument
SELECT ceiling(GeometryType) from matrix;
ERROR HY000: Invalid argument
SELECT abs(GeometryType) from matrix;
ERROR HY000: Invalid argument
SELECT abs(st_geomfromtext('POINT(1 1)')) from matrix;
ERROR HY000: Invalid argument
SELECT -GeometryType from matrix;
ERROR HY000: Invalid argument
SELECT -st_geomfromtext('POINT(1 1)') from matrix;
ERROR HY000: Invalid argument
SELECT rand(GeometryType) from matrix;
ERROR HY000: Invalid argument
SELECT rand(st_geomfromtext('POINT(1 1)')) from matrix;
ERROR HY000: Invalid argument
SELECT sign(GeometryType) from matrix;
ERROR HY000: Invalid argument
SELECT sign(st_geomfromtext('POINT(1 1)')) from matrix;
ERROR HY000: Invalid argument
SELECT degrees(GeometryType) from matrix;
ERROR HY000: Invalid argument
SELECT degrees(st_geomfromtext('POINT(1 1)')) from matrix;
ERROR HY000: Invalid argument
SELECT radians(GeometryType) from matrix;
ERROR HY000: Invalid argument
SELECT radians(st_geomfromtext('POINT(1 1)')) from matrix;
ERROR HY000: Invalid argument
SELECT format(GeometryType, 2) from matrix;
ERROR HY000: Invalid argument
SELECT format(st_geomfromtext('POINT(1 1)'), 2) from matrix;
ERROR HY000: Invalid argument
SELECT conv(st_geomfromtext('POINT(1 1)'), 1, 2) from dual;
ERROR HY000: Invalid argument
SELECT conv(-1, st_geomfromtext('POINT(1 1)'), 2) from dual;
ERROR HY000: Invalid argument
SELECT conv(-1, 1, st_geomfromtext('POINT(1 1)')) from dual;
ERROR HY000: Invalid argument
SELECT conv(GeometryType, 1, 1) from matrix;
ERROR HY000: Invalid argument
drop table if exists FF01;
CREATE TABLE FF01(A INT, B GEOMETRY);
INSERT INTO FF01 VALUES (1, NULL);
INSERT INTO FF01 VALUES (1, ST_GeomFromText('POINT(0 0)'));
SELECT A FROM FF01 WHERE B <=> NULL;
A
1
SELECT A FROM FF01 GROUP BY B HAVING AVG(B) IS NULL;
ERROR HY000: Invalid argument
SELECT A FROM FF01 GROUP BY B HAVING SUM(B) IS NULL;
ERROR HY000: Invalid argument
SELECT A FROM FF01 GROUP BY B HAVING STD(B) IS NULL;
ERROR HY000: Invalid argument
SELECT A FROM FF01 GROUP BY B HAVING STDDEV_POP(B) IS NULL;
ERROR HY000: Invalid argument
SELECT A FROM FF01 GROUP BY B HAVING VARIANCE(B) IS NULL;
ERROR HY000: Invalid argument
DROP TABLE FF01;

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,494 @@
# ----------------------------------------------------------------------
# Base test of geometry ddl.
# ----------------------------------------------------------------------
# Create a table with three columns:
# 1) Normal POINT column without SRID specification
# 2) Normal POINT column with SRID 0
# 3) Normal POINT column with SRID 4326
drop table if exists t1,tt1;
CREATE TABLE t1 (no_srid POINT DEFAULT NULL,
srid_0 POINT SRID 0 DEFAULT NULL,
srid_4326 POINT SRID 4326 DEFAULT NULL);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`no_srid` point DEFAULT NULL,
`srid_0` point /*!80003 SRID 0 */ DEFAULT NULL,
`srid_4326` point /*!80003 SRID 4326 */ DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
# Insert some data with correct SRID into these columns
INSERT INTO t1 (no_srid, srid_0, srid_4326)
VALUES (ST_GeomFromText('POINT(0 0)', 0),
ST_GeomFromText('POINT(0 0)', 0),
ST_GeomFromText('POINT(0 0)', 4326));
INSERT INTO t1 (no_srid, srid_0, srid_4326)
VALUES (ST_GeomFromText('POINT(1 1)', 4326),
ST_GeomFromText('POINT(1 1)', 0),
ST_GeomFromText('POINT(1 1)', 4326));
# Insert data with wrong SRID, which should fail.
INSERT INTO t1 (srid_0) VALUES (ST_GeomFromText('POINT(1 1)', 4326));
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 4326, but the SRID of the column is 0. Consider changing the SRID of the geometry or the SRID property of the column.
INSERT INTO t1 (srid_4326) VALUES (ST_GeomFromText('POINT(1 1)', 0));
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 0, but the SRID of the column is 4326. Consider changing the SRID of the geometry or the SRID property of the column.
INSERT INTO t1 (srid_4326) VALUES (POINT(0, 0));
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 0, but the SRID of the column is 4326. Consider changing the SRID of the geometry or the SRID property of the column.
# Try to alter the SRID of the columns, which should fail for all columns
# now since they already contain data.
ALTER TABLE t1 CHANGE COLUMN no_srid no_srid POINT SRID 0 DEFAULT NULL;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN srid_0 srid_0 POINT SRID 4326 DEFAULT NULL;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN srid_4326 srid_4326 POINT SRID 0 DEFAULT NULL;
ERROR 0A000: not support alter srid not supported
# Removing the SRID specification from a column should work just fine.
# Setting the SRID to a non-existing SRID should not work.
ALTER TABLE t1 CHANGE COLUMN srid_4326 srid_1 POINT SRID 1 DEFAULT NULL;
ERROR SR001: There's no spatial reference system with SRID 1.
DROP TABLE t1;
# Creating a geometry column with a non-existing SRID should not work
CREATE TABLE t1 (col1 POINT SRID 1);
ERROR SR001: There's no spatial reference system with SRID 1.
# Try to create a table without the SRID property, insert data with
# different SRIDs and then add the SRID property (which should not work).
CREATE TABLE t1 (col1 POINT);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col1` point DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
INSERT INTO t1 VALUES (ST_GeomFromText('POINT(1 1)', 4326)),
(ST_GeomFromText('POINT(2 2)', 0)),
(ST_GeomFromText('POINT(3 3)', 4326)),
(ST_GeomFromText('POINT(4 4)', 0)),
(ST_GeomFromText('POINT(5 5)', 4326)),
(ST_GeomFromText('POINT(6 6)', 0));
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT SRID 4326;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT SRID 4326;
ERROR 0A000: not support alter srid not supported
DROP TABLE t1;
# Creating a column with SRID property on a MyISAM table should only
# be supported if the SRID represents a cartesian coordinate system.
drop table if exists t1, t2;
CREATE TABLE t1 (col1 POINT SRID 0) ENGINE = MyISAM;
Warnings:
Warning 1286 Unknown storage engine 'MyISAM'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col1` point /*!80003 SRID 0 */ DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
CREATE TABLE t2 (col1 POINT SRID 2000) ENGINE = MyISAM;
Warnings:
Warning 1286 Unknown storage engine 'MyISAM'
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col1` point /*!80003 SRID 0 */ DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
DROP TABLE t1, t2;
# It should not be possible to use the SRID property with any other types
# than geometric types.
CREATE TABLE t1 (col1 DOUBLE SRID 0);
ERROR HY000: Incorrect usage of srid.
CREATE TABLE t1 (col1 BLOB SRID 0);
ERROR HY000: Incorrect usage of srid.
CREATE TABLE t1 (col1 VARCHAR(255) SRID 0);
ERROR HY000: Incorrect usage of srid.
# Check that any indexes on SRID-less columns are ignored by the
# optimizer
CREATE TABLE t1 (col1 POINT NOT NULL, SPATIAL INDEX (col1));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col1` point NOT NULL,
SPATIAL KEY `col1` (`col1`) BLOCK_SIZE 16384 LOCAL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
INSERT INTO t1 VALUES (POINT(0, 0)), (POINT(0.5, 0.5)), (POINT(1, 1));
# The following query plan should NOT use the index on "col1", since
# the column does not have the SRID property defined.
SELECT ST_ASTEXT(col1) FROM t1;
ST_ASTEXT(col1)
POINT(0 0)
POINT(0.5 0.5)
POINT(1 1)
DROP TABLE t1;
# Check that we print error message for misuse of SRID with non-geometric
# data type instead of "SRID not found"
CREATE TABLE t1 (a INTEGER SRID 1);
ERROR HY000: Incorrect usage of srid.
CREATE TABLE t1 (a INTEGER);
ALTER TABLE t1 MODIFY COLUMN a INTEGER SRID 1;
ERROR HY000: Incorrect usage of srid.
DROP TABLE t1;
#
# Bug#26594499 WL#8592:ALTER TABLE ADD SPATIAL INDEX RETURNS CANNOT GET
# GEOMETRY OBJECT ERROR
#
CREATE TABLE t1 (
g1 geometry NOT NULL,
g3 geometry SRID 2000 NOT NULL,
g4 geometry SRID 4326 NOT NULL
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`g1` geometry NOT NULL,
`g3` geometry NOT NULL /*!80003 SRID 2000 */,
`g4` geometry NOT NULL /*!80003 SRID 4326 */
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
INSERT INTO t1 VALUES (ST_GeomFromText('POINT(0 0)'),
ST_GeomFromText('POINT(0 0)', 2000), ST_GeomFromText('POINT(0 0)', 4326));
ALTER TABLE t1 add spatial index idx1(g4);
ALTER TABLE t1 add spatial index idx3(g3);
DROP TABLE t1;
CREATE TABLE t1 (col1 POINT SRID 4294967296);
ERROR 22003: srid value is out of range in 'UINT32_MAX'
#
# Check that adding, modifying and removing spatial indexes works well
# with SRID columns
#
drop table if exists t1;
CREATE TABLE t1 (col_no_srid POINT NOT NULL,
col_srid_0 POINT SRID 0 NOT NULL,
col_srid_4326 POINT SRID 4326 NOT NULL);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col_no_srid` point NOT NULL,
`col_srid_0` point NOT NULL /*!80003 SRID 0 */,
`col_srid_4326` point NOT NULL /*!80003 SRID 4326 */
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
INSERT INTO t1 VALUES (
ST_GeomFromText("POINT(0 0)", 0),
ST_GeomFromText("POINT(0 0)", 0),
ST_GeomFromText("POINT(0 0)", 4326));
INSERT INTO t1 VALUES (
ST_GeomFromText("POINT(1 1)", 4326),
ST_GeomFromText("POINT(1 1)", 0),
ST_GeomFromText("POINT(1 1)", 4326));
ALTER TABLE t1 ADD SPATIAL INDEX idx1 (col_no_srid);
ALTER TABLE t1 ADD SPATIAL INDEX idx2 (col_srid_0);
ALTER TABLE t1 ADD SPATIAL INDEX idx3 (col_srid_4326);
ALTER TABLE t1 DROP INDEX idx2;
ALTER TABLE t1 DROP INDEX idx3;
ALTER TABLE t1 DROP INDEX idx1;
CREATE SPATIAL INDEX idx1 ON t1 (col_srid_4326);
CREATE SPATIAL INDEX idx2 ON t1 (col_no_srid);
CREATE SPATIAL INDEX idx3 ON t1 (col_srid_0);
DROP INDEX idx1 ON t1;
DROP INDEX idx2 ON t1;
DROP INDEX idx3 ON t1;
DROP TABLE t1;
CREATE TABLE t1 (col_no_srid POINT NOT NULL,
col_srid_0 POINT SRID 0 NOT NULL,
col_srid_4326 POINT SRID 4326 NOT NULL,
SPATIAL INDEX idx1 (col_no_srid),
SPATIAL INDEX idx2 (col_srid_0),
SPATIAL INDEX idx3 (col_srid_4326));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col_no_srid` point NOT NULL,
`col_srid_0` point NOT NULL /*!80003 SRID 0 */,
`col_srid_4326` point NOT NULL /*!80003 SRID 4326 */,
SPATIAL KEY `idx1` (`col_no_srid`) BLOCK_SIZE 16384 LOCAL,
SPATIAL KEY `idx2` (`col_srid_0`) BLOCK_SIZE 16384 LOCAL,
SPATIAL KEY `idx3` (`col_srid_4326`) BLOCK_SIZE 16384 LOCAL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
INSERT INTO t1 VALUES (
ST_GeomFromText("POINT(0 0)", 0),
ST_GeomFromText("POINT(0 0)", 0),
ST_GeomFromText("POINT(0 0)", 4326));
INSERT INTO t1 VALUES (
ST_GeomFromText("POINT(1 1)", 4326),
ST_GeomFromText("POINT(1 1)", 0),
ST_GeomFromText("POINT(1 1)", 4326));
DROP INDEX idx3 ON t1;
DROP INDEX idx2 ON t1;
DROP INDEX idx1 ON t1;
DROP TABLE t1;
#
# Altering the SRID specification should not be allowed if there is a
# spatial index on the column.
#
CREATE TABLE t1 (col1 POINT NOT NULL SRID 4326,
SPATIAL INDEX idx1 (col1));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col1` point NOT NULL /*!80003 SRID 4326 */,
SPATIAL KEY `idx1` (`col1`) BLOCK_SIZE 16384 LOCAL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT NOT NULL SRID 0;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT NOT NULL;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT NOT NULL SRID 0;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT NOT NULL;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT NOT NULL SRID 0;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT NOT NULL;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT NOT NULL SRID 0;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT NOT NULL;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col2 POINT NOT NULL SRID 0;
ERROR 0A000: not support alter srid not supported
ALTER TABLE t1 CHANGE COLUMN col1 col2 POINT NOT NULL;
ERROR 0A000: not support alter srid not supported
DROP TABLE t1;
#
# Bug#26594499 WL#8592: CANNOT GET GEOMETRY OBJECT ERROR
#
CREATE TABLE t1 (
g1 geometry NOT NULL,
g3 geometry SRID 2000 NOT NULL,
g4 geometry SRID 4326 NOT NULL
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`g1` geometry NOT NULL,
`g3` geometry NOT NULL /*!80003 SRID 2000 */,
`g4` geometry NOT NULL /*!80003 SRID 4326 */
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
INSERT INTO t1 VALUES (ST_GeomFromText('POINT(0 0)'),
ST_GeomFromText('POINT(0 0)', 2000), ST_GeomFromText('POINT(0 0)', 4326));
ALTER TABLE t1 add spatial index idx1(g4);
ALTER TABLE t1 add spatial index idx3(g3);
DROP TABLE t1;
#
# Bug#27015964 USELESS SPATIAL INDEX CAN BE CREATED WITHOUT WARNING
#
# Creating a table with a spatial index on a SRID-less column should
# raise a warning.
CREATE TABLE t1 (
g1 POINT NOT NULL
, g2 POINT NOT NULL
, g3 POINT NOT NULL SRID 0
, SPATIAL INDEX idx1 (g1)
, SPATIAL INDEX idx2 (g2)
, SPATIAL INDEX idx3 (g3));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`g1` point NOT NULL,
`g2` point NOT NULL,
`g3` point NOT NULL /*!80003 SRID 0 */,
SPATIAL KEY `idx1` (`g1`) BLOCK_SIZE 16384 LOCAL,
SPATIAL KEY `idx2` (`g2`) BLOCK_SIZE 16384 LOCAL,
SPATIAL KEY `idx3` (`g3`) BLOCK_SIZE 16384 LOCAL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
DROP INDEX idx1 ON t1;
DROP INDEX idx2 ON t1;
DROP INDEX idx3 ON t1;
# Verify that we get the same warning when using CREATE INDEX syntax.
CREATE SPATIAL INDEX idx1 ON t1 (g1);
CREATE SPATIAL INDEX idx2 ON t1 (g2);
CREATE SPATIAL INDEX idx3 ON t1 (g3);
DROP INDEX idx1 ON t1;
DROP INDEX idx2 ON t1;
DROP INDEX idx3 ON t1;
# Verify that we get the same warning when using ALTER TABLE syntax.
ALTER TABLE t1 ADD SPATIAL INDEX idx1 (g1);
ALTER TABLE t1 ADD SPATIAL INDEX idx2 (g2);
ALTER TABLE t1 ADD SPATIAL INDEX idx3 (g3);
DROP TABLE t1;
#
# Bug#27220467 SERVER HANGS WHILE CREATING A NEW SRS WHICH IS USED IN
# ANOTHER CLIENT
#
# Try to create a point column using a SRID that doesn't exist
CREATE TABLE t1 (col1 POINT SRID 4326, col2 POINT SRID 1000000000);
ERROR SR001: There's no spatial reference system with SRID 1000000000.
# Force the error to happen after all the columns are contextualized.
# Verify the same behavior for ALTER TABLE as well.
CREATE TABLE t1 (col1 INT);
ALTER TABLE t1 ADD COLUMN col2 POINT SRID 1000000000;
ERROR SR001: There's no spatial reference system with SRID 1000000000.
DROP TABLE t1;
CREATE TABLE t1 (col_no_srid POINT NOT NULL,
col_srid_0 POINT SRID 0 NOT NULL,
col_srid_4326 POINT SRID 4326 NOT NULL,
SPATIAL INDEX idx1 (col_no_srid),
SPATIAL INDEX idx2 (col_srid_0),
SPATIAL INDEX idx3 (col_srid_4326));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
`col_no_srid` point NOT NULL,
`col_srid_0` point NOT NULL /*!80003 SRID 0 */,
`col_srid_4326` point NOT NULL /*!80003 SRID 4326 */,
SPATIAL KEY `idx1` (`col_no_srid`) BLOCK_SIZE 16384 LOCAL,
SPATIAL KEY `idx2` (`col_srid_0`) BLOCK_SIZE 16384 LOCAL,
SPATIAL KEY `idx3` (`col_srid_4326`) BLOCK_SIZE 16384 LOCAL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
DROP TABLE t1;
create table tt1(p POINT SRID -1);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '-1)' at line 1
create table tt1(p POINT SRID 'test');
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ''test')' at line 1
create table tt1(p POINT SRID 0.7);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '0.7)' at line 1
create table tt1(p POINT SRID null);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near 'null)' at line 1
create table tt1(p POINT SRID '');
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ''')' at line 1
create table tt1(p POINT SRID 4294967295);
DROP TABLE tt1;
create table tt1(g GEOMETRY primary key);
ERROR HY000: Spatial indexes can't be primary or unique indexes.
create table tt1(g geometry, primary key (g));
ERROR HY000: Spatial indexes can't be primary or unique indexes.
create table tt2(p point unique key);
ERROR HY000: Spatial indexes can't be primary or unique indexes.
create table tt2(p point, unique key (p));
ERROR HY000: Spatial indexes can't be primary or unique indexes.
create table child(i int primary key, g geometry not null srid 4326);
create table parent(i int primary key, g geometry not null srid 4326, constraint g1_fk foreign key(g) references child(g));
ERROR HY000: Cannot add foreign key constraint
drop table child;
drop table if exists T_GEO;
drop view if exists V_T_GEO;
create table T_GEO (gid int auto_increment primary key, geometry geometry not null srid 4326);
create view V_T_GEO AS SELECT * FROM T_GEO;
desc V_T_GEO;
Field Type Null Key Default Extra
gid int(11) NO NULL
geometry geometry NO NULL
drop view V_T_GEO;
drop table T_GEO;
create table T_GEO (gid int auto_increment primary key, geo geometry ,geo_c GEOMETRYCOLLECTION,poi point,lin linestring ,pol polygon,M_POI MULTIPOINT,M_LIN MULTILINESTRING ,M_POL MULTIPOLYGON );
create view V_T_GEO AS SELECT * FROM T_GEO;
insert into V_T_GEO(POI) VALUES (ST_GEOMFROMTEXT('POLYGON((0 0,1 1,1 0,0 1,0 0)) '));
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
SELECT ST_ASTEXT(poi) FROM V_T_GEO;
ST_ASTEXT(poi)
SELECT ST_ASTEXT(poi) FROM T_GEO;
ST_ASTEXT(poi)
drop view V_T_GEO;
DROP TABLE T_GEO;
create table tt4(id int, g GEOMETRY);
alter table tt4 add g1 GEOMETRY not null;
ERROR 22004: Invalid use of NULL value
show create table tt4;
Table Create Table
tt4 CREATE TABLE `tt4` (
`id` int(11) DEFAULT NULL,
`g` geometry DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
alter table tt4 add g2 GEOMETRY null;
show create table tt4;
Table Create Table
tt4 CREATE TABLE `tt4` (
`id` int(11) DEFAULT NULL,
`g` geometry DEFAULT NULL,
`g2` geometry DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 COMPRESSION = 'lz4_1.0' REPLICA_NUM = NUM BLOCK_SIZE = SIZE USE_BLOOM_FILTER = FALSE TABLET_SIZE = SIZE PCTFREE = 10
insert into tt4(id, g2) values (1, point(1,1));
select id,st_astext(g2) from tt4 order by id;
id st_astext(g2)
1 POINT(1 1)
drop table tt4;
drop table if exists test;
create table test(p point srid 4326);
alter table test modify p MULTIPOINT;
ERROR 0A000: Modify geometry type not supported
alter table test change p p1 MULTIPOINT;
ERROR 0A000: Change geometry type not supported
alter table test modify p POINT SRID 0;
ERROR 0A000: Modify geometry srid not supported
alter table test change p p1 point srid 0;
ERROR 0A000: not support alter srid not supported
alter table test change p p1 point;
ERROR 0A000: not support alter srid not supported
alter table test change p p1 point srid 4326;
desc test;
Field Type Null Key Default Extra
p1 point YES NULL
drop table test;
create table tt1(id int);
insert into tt1 values(1);
alter table tt1 add g GEOMETRY not null;
ERROR 22004: Invalid use of NULL value
drop table tt1;
create table tt1(id int);
alter table tt1 add g GEOMETRY not null;
ERROR 22004: Invalid use of NULL value
drop table tt1;
create table tt1(id int);
alter table tt1 add g GEOMETRY;
drop table tt1;
create table tt1(id int);
insert into tt1 values(1);
alter table tt1 add g GEOMETRY;
drop table tt1;
create table tt1(id int);
alter table tt1 add g GEOMETRY;
insert into tt1 values (1, point(0,0));
alter table tt1 modify column g geometry not null;
drop table tt1;
create table tt1(g geometry);
alter table tt1 modify column g geometry not null;
drop table tt1;
create table tt1(g geometry);
insert into tt1(g) value (null);
alter table tt1 modify column g geometry not null;
ERROR 22004: Invalid use of NULL value
drop table tt1;
drop table if exists T_GEO;
drop table if exists t;
drop view if exists V_T_GEO;
create table T_GEO (poi point);
insert into T_GEO values (ST_GEOMFROMTEXT('POINT(0 0)', 4267));
create view V_T_GEO AS SELECT * FROM T_GEO;
REPLACE INTO V_T_GEO(poi) VALUES (ST_GEOMFROMTEXT('POLYGON((0 0,1 1,1 0,0 1,0 0))'));
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
insert into T_GEO values (ST_GEOMFROMTEXT('point(0 0)'));
create table t as select st_buffer(T_GEO.poi, 1) from T_GEO;
drop table t;
drop table if exists T_GEO;
drop table if exists t;
create table T_GEO (poly polygon);
insert into T_GEO values (ST_GEOMFROMTEXT('polygon((0 0, 0 1, 1 1,0 0))', 4267));
create table t as select st_area(T_GEO.poly) from T_GEO;
select * from t;
st_area(T_GEO.poly)
6154457959.759597
drop table T_GEO;
drop table t;
drop view if exists V_T_GEO;
create or replace view vv as select st_aswkb(x'00000000010100000000000000000034C00000000000004940') a;
desc vv;
Field Type Null Key Default Extra
a longblob YES NULL
create or replace view vv as select st_geomfromwkb(x'0106000000010000000103000000010000000500000000000000008056400000000000C0564000000000000024400000000000A066C0000000000000244000000000000024400000000000000000000000000000244000000000008056400000000000C05640');
desc vv;
Field Type Null Key Default Extra
Name_exp_1 geometry YES NULL
create or replace view vv as select Point(0,0);
desc vv;
Field Type Null Key Default Extra
Point(0,0) point YES NULL
drop table if exists geometries;
drop table if exists t1;
CREATE TABLE geometries ( g GEOMETRY, pt POINT, ls LINESTRING, py POLYGON, mpt MULTIPOINT, mls MULTILINESTRING, mpy MULTIPOLYGON, gc GEOMETRYCOLLECTION);
SET @c1 = ST_GEOMFROMTEXT('POINT(10 10)');
SET @c2 = ST_GEOMFROMTEXT('LINESTRING(10 10,20 20,30 30)');
SET @c3 = ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))');
SET @c4 = ST_GEOMFROMTEXT('MULTIPOINT(0 0,5 5,10 10,20 20)');
SET @c5 = ST_GEOMFROMTEXT('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))');
SET @c6 = ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))');
SET @c7 = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))');
INSERT INTO geometries VALUES (@c1, @c1, @c2, @c3, @c4, @c5, @c6, @c7);
CREATE TABLE t1 SELECT a FROM (SELECT pt AS a FROM geometries UNION SELECT mls FROM geometries) t;
select st_astext(a) from t1;
st_astext(a)
POINT(10 10)
MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))
drop table geometries;
drop table t1;

View File

@ -0,0 +1,425 @@
# ----------------------------------------------------------------------
# Base test of GEOMETRY dml.
# ----------------------------------------------------------------------
alter system set _enable_defensive_check = 1;
DROP TABLE IF EXISTS spatial_index_dml_constraint, tt1;
CREATE TABLE spatial_index_dml_constraint (i INT, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i));
SET @v1=ST_GEOMFROMTEXT('POINT(0 0)', 4326);
SET @v2=ST_GEOMFROMTEXT('LINESTRING(0 0,10 10)', 4326);
SET @v3=ST_GEOMFROMTEXT('POLYGON((0 0, 0 8, 8 8, 8 10, -10 10, -10 0, 0 0))', 4326);
SET @v4=ST_GEOMFROMTEXT('MULTIPOINT(1 1, 11 11, 11 21, 21 21)', 4326);
SET @v5=ST_GEOMFROMTEXT('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))', 4326);
SET @v6=ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))', 4326);
SET @v7=ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(9 9),LINESTRING(1 5,0 0),POLYGON((2 2,2 8,8 8,8 2,2 2)))', 4326);
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
INSERT INTO spatial_index_dml_constraint VALUES (2, @v2);
INSERT INTO spatial_index_dml_constraint VALUES (3, @v3);
INSERT INTO spatial_index_dml_constraint VALUES (4, @v4);
INSERT INTO spatial_index_dml_constraint VALUES (5, @v5);
INSERT INTO spatial_index_dml_constraint VALUES (6, @v6);
INSERT INTO spatial_index_dml_constraint VALUES (7, @v7);
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i INT, g POINT NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
INSERT INTO spatial_index_dml_constraint VALUES (2, @v2);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (3, @v3);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (4, @v4);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (5, @v5);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (6, @v6);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (7, @v7);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i INT, g LINESTRING NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (2, @v2);
INSERT INTO spatial_index_dml_constraint VALUES (3, @v3);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (4, @v4);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (5, @v5);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (6, @v6);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (7, @v7);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i INT, g POLYGON NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (2, @v2);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (3, @v3);
INSERT INTO spatial_index_dml_constraint VALUES (4, @v4);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (5, @v5);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (6, @v6);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (7, @v7);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i INT, g MULTIPOINT NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (2, @v2);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (3, @v3);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (4, @v4);
INSERT INTO spatial_index_dml_constraint VALUES (5, @v5);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (6, @v6);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (7, @v7);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i INT, g MULTILINESTRING NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (2, @v2);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (3, @v3);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (4, @v4);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (5, @v5);
INSERT INTO spatial_index_dml_constraint VALUES (6, @v6);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (7, @v7);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i INT, g MULTIPOLYGON NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (2, @v2);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (3, @v3);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (4, @v4);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (5, @v5);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (6, @v6);
INSERT INTO spatial_index_dml_constraint VALUES (7, @v7);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i INT, g GEOMETRYCOLLECTION NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (2, @v2);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (3, @v3);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
INSERT INTO spatial_index_dml_constraint VALUES (4, @v4);
INSERT INTO spatial_index_dml_constraint VALUES (5, @v5);
INSERT INTO spatial_index_dml_constraint VALUES (6, @v6);
INSERT INTO spatial_index_dml_constraint VALUES (7, @v7);
DROP TABLE spatial_index_dml_constraint;
DROP TABLE IF EXISTS spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
INSERT INTO spatial_index_dml_constraint VALUES (2, @v2);
INSERT INTO spatial_index_dml_constraint VALUES (3, @v3);
INSERT INTO spatial_index_dml_constraint VALUES (4, @v4);
INSERT INTO spatial_index_dml_constraint VALUES (5, @v5);
INSERT INTO spatial_index_dml_constraint VALUES (6, @v6);
INSERT INTO spatial_index_dml_constraint VALUES (7, @v7);
UPDATE spatial_index_dml_constraint SET g=@v1 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v2 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v3 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v4 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v5 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v6 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v7 WHERE i = 1;
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i int, g POINT NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v1);
UPDATE spatial_index_dml_constraint SET g=@v1 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v2 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v3 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v4 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v5 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v6 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v7 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i int, g LINESTRING NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v2);
UPDATE spatial_index_dml_constraint SET g=@v1 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v2 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v3 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v4 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v5 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v6 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v7 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i int, g POLYGON NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v3);
UPDATE spatial_index_dml_constraint SET g=@v1 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v2 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v3 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v4 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v5 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v6 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v7 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i int, g MULTIPOINT NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v4);
UPDATE spatial_index_dml_constraint SET g=@v1 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v2 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v3 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v4 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v5 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v6 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v7 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i int, g MULTILINESTRING NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v5);
UPDATE spatial_index_dml_constraint SET g=@v1 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v2 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v3 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v4 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v5 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v6 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v7 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i int, g MULTIPOLYGON NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v6);
UPDATE spatial_index_dml_constraint SET g=@v1 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v2 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v3 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v4 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v5 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v6 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v7 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE spatial_index_dml_constraint (i int, g GEOMETRYCOLLECTION NOT NULL SRID 4326, PRIMARY KEY (i));
INSERT INTO spatial_index_dml_constraint VALUES (1, @v7);
UPDATE spatial_index_dml_constraint SET g=@v1 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v2 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v3 WHERE i = 1;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
UPDATE spatial_index_dml_constraint SET g=@v4 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v5 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v6 WHERE i = 1;
UPDATE spatial_index_dml_constraint SET g=@v7 WHERE i = 1;
DROP TABLE spatial_index_dml_constraint;
CREATE TABLE t(p POINT);
INSERT INTO t VALUES(1);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE t;
create table T_GEO (gid int auto_increment primary key,geo geometry );
replace into T_GEO VALUES (1,st_geomfromtext('point(90 90)'));
select st_astext(geo) from T_GEO;
st_astext(geo)
POINT(90 90)
replace into T_GEO VALUES (1,st_geomfromtext('point(80 80)'));
select st_astext(geo) from T_GEO;
st_astext(geo)
POINT(80 80)
replace into T_GEO VALUES (1,st_geomfromtext('point(80 80)'));
select st_astext(geo) from T_GEO;
st_astext(geo)
POINT(80 80)
drop table T_GEO;
create table T_GEO (gid int auto_increment primary key,g point srid 4326);
replace into T_GEO VALUES (1,st_geomfromtext('point(90 90)', 0));
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 0, but the SRID of the column is 4326. Consider changing the SRID of the geometry or the SRID property of the column.
replace into T_GEO VALUES (1,st_geomfromtext('LINESTRING(90 90, 1 1)', 0));
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
replace into T_GEO VALUES (1,st_geomfromtext('point(90 90)', 4326));
select st_astext(g) from T_GEO;
st_astext(g)
POINT(90 90)
drop table T_GEO;
create table T_GEO (gid int auto_increment primary key,g point);
replace into T_GEO VALUES (1,st_geomfromtext('point(90 90)', 0));
replace into T_GEO VALUES (2,st_geomfromtext('point(90 90)', 4326));
replace into T_GEO VALUES (3,st_geomfromtext('LINESTRING(90 90, 1 1)', 0));
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
select st_astext(g) from T_GEO;
st_astext(g)
POINT(90 90)
POINT(90 90)
drop table T_GEO;
create table T_GEO (gid int auto_increment primary key, geo geometry ,geo_c GEOMETRYCOLLECTION,poi point,lin linestring ,pol polygon,M_POI MULTIPOINT,M_LIN MULTILINESTRING ,M_POL MULTIPOLYGON);
REPLACE INTO T_GEO(geo) VALUES ( st_geomfromtext('point(90 90)'));
select st_astext(geo) from T_GEO;
st_astext(geo)
POINT(90 90)
drop table T_GEO;
create table T_GEO (gid int auto_increment primary key, geo geometry ,geo_c GEOMETRYCOLLECTION,poi point,lin linestring ,pol polygon,M_POI MULTIPOINT,M_LIN MULTILINESTRING ,M_POL MULTIPOLYGON );
INSERT INTO T_GEO VALUES (1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
UPDATE T_GEO SET GEO=0;
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
drop table T_GEO;
create table tt1(id int , g geometry not null srid 4236 , spatial index(g));
insert into tt1(g) values(st_geomfromtext('POINT(0 0)', 4236));
select id ,st_astext(g) from tt1 where ST_Intersects(ST_GeomFromText('point(10 20)',426),g);
ERROR SR001: There's no spatial reference system with SRID 426.
drop table tt1;
DROP TABLE IF EXISTS gis_line;
CREATE TABLE `gis_line` (`id` bigint(20) NOT NULL AUTO_INCREMENT,
`num` bigint(18) DEFAULT NULL,
`lin` linestring NOT NULL /*!80003 SRID 4326 */,
PRIMARY KEY (`id`), SPATIAL KEY `lin_index` (`lin`) BLOCK_SIZE 16384 LOCAL );
insert into gis_line values(1,0, st_geomfromtext('LINESTRING(1 1, 2 2)', 4326));
select /*+index (gis_line lin_index)*/ * from gis_line where _st_covers(lin, ST_GeomFromText('point(15.830728278409012 10.534231407596138,,,,)', 4326));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
select /*+index (gis_line lin_index)*/ st_astext(lin) from gis_line where _st_covers(lin, ST_GeomFromText('point(1 1)', 4326));
st_astext(lin)
LINESTRING(1 1,2 2)
drop table gis_line;
DROP TABLE IF EXISTS gis_point;
CREATE TABLE `gis_point` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `x` decimal(19,16) DEFAULT NULL, `y` decimal(19,16) DEFAULT NULL, `poi` point NOT NULL /*!80003 SRID 4326 */, PRIMARY KEY (`id`), KEY `xy_index` (`x`, `y`) BLOCK_SIZE 16384 LOCAL, SPATIAL KEY `poi_index` (`poi`) BLOCK_SIZE 16384 LOCAL ) AUTO_INCREMENT = 1196000001 DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 3 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0;
select concat((select st_astext(poi) from gis_point order by id desc limit 1),(select st_astext(poi) from gis_point order by id desc limit 1)) ;
concat((select st_astext(poi) from gis_point order by id desc limit 1),(select st_astext(poi) from gis_point order by id desc limit 1))
NULL
drop table gis_point;
DROP TABLE IF EXISTS spatial_index;
CREATE TABLE spatial_index (i INT, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i), SPATIAL KEY (g));
INSERT INTO spatial_index VALUES (1, ST_GEOMFROMTEXT('POLYGON((1 1, 1 8, 8 8, 8 10, -10 10, -10 1, 1 1))', 4326));
INSERT INTO spatial_index VALUES (2, ST_GEOMFROMTEXT('LINESTRING(0 0,1 1)', 4326));
select i, st_astext(g) from spatial_index where ST_Intersects(g, ST_GEOMFROMTEXT('POINT(1 1)', 4326));
i st_astext(g)
1 POLYGON((1 1,1 8,8 8,8 10,-10 10,-10 1,1 1))
2 LINESTRING(0 0,1 1)
update spatial_index set g=ST_GEOMFROMTEXT('POINT(2 2)', 4326) where i=1;
select i, st_astext(g) from spatial_index where ST_Intersects(g, ST_GEOMFROMTEXT('POINT(2 2)', 4326));
i st_astext(g)
1 POINT(2 2)
DROP TABLE IF EXISTS t3;
create table t3(id int, g1 geometry not null srid 2284);
create spatial index spidx3 on t3(g1);
insert into t3 values(13, ST_GeomFromText('GEOMETRYCOLLECTION EMPTY', 2284));
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where _st_covers(ST_GeomFromText('GEOMETRYCOLLECTION EMPTY', 2284), g1);
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where st_intersects(ST_GeomFromText('GEOMETRYCOLLECTION EMPTY', 2284), g1);
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where st_within(ST_GeomFromText('GEOMETRYCOLLECTION EMPTY', 2284), g1);
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where st_contains(ST_GeomFromText('GEOMETRYCOLLECTION EMPTY', 2284), g1);
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where st_intersects(ST_GeomFromText('POINT(1 1)', 2284), g1);
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where _st_covers(ST_GeomFromText('POINT(1 1)', 2284), g1);
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where st_within(ST_GeomFromText('POINT(1 1)', 2284), g1);
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where st_contains(ST_GeomFromText('POINT(1 1)', 2284), g1);
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where st_intersects(g1, ST_GeomFromText('POINT(1 1)', 2284));
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where _st_covers(g1, ST_GeomFromText('POINT(1 1)', 2284));
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where st_within(g1, ST_GeomFromText('POINT(1 1)', 2284));
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where st_contains(g1, ST_GeomFromText('POINT(1 1)', 2284));
st_astext(g1)
select /*+index(t3 spidx3)*/ st_astext(g1) from t3 where _st_dwithin(ST_GeomFromText('GEOMETRYCOLLECTION EMPTY', 2284), g1, 0.1);
st_astext(g1)
drop table t3;
DROP TABLE IF EXISTS t_geo, cities;
CREATE TABLE `cities` (
`CityId` int(11) NOT NULL AUTO_INCREMENT,
`Name` longtext DEFAULT NULL,
`Location` geometry DEFAULT NULL,
PRIMARY KEY (`CityId`)
);
insert into cities(Name,Location) values("Berlin", 0xE61000000101000000CEC4742156CF2A407558E1968F424A40),
("Seattle", 0xE61000000101000000387DE2A540955EC02383DC4598CD4740),
("Warsaw", 0xE6100000010100000013109370210335408A56EE05661D4A40),
("Shenzhen", 0xE61000000102000000020000000000000000002E400000000000002E4000000000000034400000000000003440),
("Guangzhou", 0xE610000001030000000100000007000000000000000000F03F000000000000F03F0000000000002040000000000000F03F0000000000002040000000000000204000000000000024400000000000002040000000000000244000000000000024C0000000000000F03F00000000000024C0000000000000F03F000000000000F03F),
("Emptycollection", 0xE6100000010700000000000000);
select st_astext(cast(0xE61000000101000000CEC4742156CF2A407558E1968F424A40 as point));
st_astext(cast(0xE61000000101000000CEC4742156CF2A407558E1968F424A40 as point))
POINT(52.520007 13.404954)
select Location from cities;
Location
���t!V�*@uXᖏBJ@
�8}��@�^�#��E��G@
��p!5@�V�fJ@
�.@.@4@4@
��?�? @�? @ @$@ @$@$��?$��?�?
�
select hex(Location) from cities;
hex(Location)
E61000000101000000CEC4742156CF2A407558E1968F424A40
E61000000101000000387DE2A540955EC02383DC4598CD4740
E6100000010100000013109370210335408A56EE05661D4A40
E61000000102000000020000000000000000002E400000000000002E4000000000000034400000000000003440
E610000001030000000100000007000000000000000000F03F000000000000F03F0000000000002040000000000000F03F0000000000002040000000000000204000000000000024400000000000002040000000000000244000000000000024C0000000000000F03F00000000000024C0000000000000F03F000000000000F03F
E6100000010700000000000000
select st_astext(Location) from cities;
st_astext(Location)
POINT(52.520007 13.404954)
POINT(47.6062095 -122.3320708)
POINT(52.229676 21.012229)
LINESTRING(15 15,20 20)
POLYGON((1 1,1 8,8 8,8 10,-10 10,-10 1,1 1))
GEOMETRYCOLLECTION EMPTY
drop table cities;
CREATE TABLE `t_geo` (
`geo` geometry NOT NULL,
SPATIAL KEY `SP_GEO` (`geo`) BLOCK_SIZE 16384 LOCAL
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0;
insert into t_geo values(st_geomfromtext('POINT(1.2345678987654322e24 -1.2345678998765433e25)'));
insert into t_geo values(st_geomfromtext('GEOMETRYCOLLECTION(MULTIPOINT((2 -1),(11831.743318109031 -63273.949623278015),(0 -1)))'));
insert into t_geo values(st_geomfromtext('GEOMETRYCOLLECTION EMPTY'));
select st_astext(geo) from t_geo;
st_astext(geo)
POINT(1.2345678987654322e24 -1.2345678998765433e25)
GEOMETRYCOLLECTION(MULTIPOINT((2 -1),(11831.743318109031 -63273.949623278015),(0 -1)))
GEOMETRYCOLLECTION EMPTY
UPDATE T_GEO SET GEO=ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))');
select st_astext(geo) from t_geo;
st_astext(geo)
GEOMETRYCOLLECTION(POINT(10 10),POINT(30 30),LINESTRING(15 15,20 20))
GEOMETRYCOLLECTION(POINT(10 10),POINT(30 30),LINESTRING(15 15,20 20))
GEOMETRYCOLLECTION(POINT(10 10),POINT(30 30),LINESTRING(15 15,20 20))
alter system set _enable_defensive_check = 0;
drop table t_geo;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,215 @@
# ----------------------------------------------------------------------
# Base test of GEOMETRY function.
# ----------------------------------------------------------------------
SELECT ST_ASTEXT(POINT(1));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '))' at line 1
SELECT ST_ASTEXT(POINT(1,1,1));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near ',1))' at line 1
SELECT ST_ASTEXT(POINT(1, 1));
ST_ASTEXT(POINT(1, 1))
POINT(1 1)
SELECT ST_ASTEXT(POINT('1', '1'));
ST_ASTEXT(POINT('1', '1'))
POINT(1 1)
SELECT ST_ASTEXT(POINT('a', 'a'));
ST_ASTEXT(POINT('a', 'a'))
POINT(0 0)
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'a'
Warning 1292 Truncated incorrect DOUBLE value: 'a'
SELECT ST_ASTEXT(POINT(' ', ' '));
ST_ASTEXT(POINT(' ', ' '))
POINT(0 0)
SELECT ST_ASTEXT(POINT(12345, ''));
ST_ASTEXT(POINT(12345, ''))
POINT(12345 0)
SELECT ST_ASTEXT(POINT(NULL, NULL));
ST_ASTEXT(POINT(NULL, NULL))
NULL
SELECT ST_ASTEXT(POINT(1, NULL));
ST_ASTEXT(POINT(1, NULL))
NULL
SELECT ST_ASTEXT(POINT(NULL, 1));
ST_ASTEXT(POINT(NULL, 1))
NULL
SELECT ST_ASTEXT(POINT('NULL', 1));
ST_ASTEXT(POINT('NULL', 1))
POINT(0 1)
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'NULL'
SELECT ST_ASTEXT(LINESTRING(1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(LINESTRING(1,1,1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(LINESTRING('1', '1'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(LINESTRING(NULL, NULL));
ERROR 22007: Illegal non geometric 'NULL' value found during parsing
SELECT ST_ASTEXT(LINESTRING('NULL', 'NULL'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(LINESTRING(POINT(0,0)));
ERROR 22023: Invalid GIS data provided to function linestring.
SELECT ST_ASTEXT(LINESTRING(LINESTRING(POINT(0,0),POINT(1,0))));
ERROR HY000: Incorrect arguments to linestring
SELECT ST_ASTEXT(LINESTRING(POINT(0,0),POINT(1,0)));
ST_ASTEXT(LINESTRING(POINT(0,0),POINT(1,0)))
LINESTRING(0 0,1 0)
SELECT ST_ASTEXT(LINESTRING(POINT(0,0),POINT(1,0),POINT(0,0)));
ST_ASTEXT(LINESTRING(POINT(0,0),POINT(1,0),POINT(0,0)))
LINESTRING(0 0,1 0,0 0)
SELECT ST_ASTEXT(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1), POINT(0,0)));
ST_ASTEXT(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1), POINT(0,0)))
LINESTRING(0 0,1 0,1 1,0 0)
SELECT ST_ASTEXT(MULTIPOINT(1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(MULTIPOINT(1,1,1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(MULTIPOINT('1', '1'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(MULTIPOINT(NULL, NULL));
ERROR 22007: Illegal non geometric 'NULL' value found during parsing
SELECT ST_ASTEXT(MULTIPOINT('NULL', 'NULL'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(MULTIPOINT(LINESTRING(POINT(0,0),POINT(1,0))));
ERROR HY000: Incorrect arguments to multipoint
SELECT ST_ASTEXT(MULTIPOINT(POINT(0,0)));
ST_ASTEXT(MULTIPOINT(POINT(0,0)))
MULTIPOINT((0 0))
SELECT ST_ASTEXT(MULTIPOINT(POINT(0,0),POINT(1,1)));
ST_ASTEXT(MULTIPOINT(POINT(0,0),POINT(1,1)))
MULTIPOINT((0 0),(1 1))
SELECT ST_ASTEXT(MULTILINESTRING(1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(MULTILINESTRING(1,1,1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(MULTILINESTRING('1', '1'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(MULTILINESTRING(NULL, NULL));
ERROR 22007: Illegal non geometric 'NULL' value found during parsing
SELECT ST_ASTEXT(MULTILINESTRING('NULL', 'NULL'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(MULTILINESTRING(POINT(0,0)));
ERROR HY000: Incorrect arguments to multilinestring
SELECT ST_ASTEXT(MULTILINESTRING(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0)),POINT(1,1)));
ERROR HY000: Incorrect arguments to multilinestring
SELECT ST_ASTEXT(MULTILINESTRING(LINESTRING(POINT(0,0),POINT(1,0))));
ST_ASTEXT(MULTILINESTRING(LINESTRING(POINT(0,0),POINT(1,0))))
MULTILINESTRING((0 0,1 0))
SELECT ST_ASTEXT(MULTILINESTRING(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0))));
ST_ASTEXT(MULTILINESTRING(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0))))
MULTILINESTRING((0 0,1 0),(0 0,1 0))
SELECT ST_ASTEXT(POLYGON(1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(POLYGON(1,1,1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(POLYGON('1', '1'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(POLYGON(NULL, NULL));
ERROR 22007: Illegal non geometric 'NULL' value found during parsing
SELECT ST_ASTEXT(POLYGON('NULL', 'NULL'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(POLYGON(POINT(0,0)));
ERROR HY000: Incorrect arguments to polygon
SELECT ST_ASTEXT(POLYGON(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0)),POINT(1,1)));
ERROR 22023: Invalid GIS data provided to function polygon.
SELECT ST_ASTEXT(POLYGON(LINESTRING(POINT(0,0),POINT(1,0))));
ERROR 22023: Invalid GIS data provided to function polygon.
SELECT ST_ASTEXT(POLYGON(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0))));
ERROR 22023: Invalid GIS data provided to function polygon.
SELECT ST_ASTEXT(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0)), POINT(1,1)));
ERROR HY000: Incorrect arguments to polygon
SELECT ST_ASTEXT(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))));
ST_ASTEXT(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))))
POLYGON((0 0,1 0,1 1,0 1,0 0))
SELECT ST_ASTEXT(MULTIPOLYGON(1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(MULTIPOLYGON(1,1,1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(MULTIPOLYGON('1', '1'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(MULTIPOLYGON(NULL, NULL));
ERROR 22007: Illegal non geometric 'NULL' value found during parsing
SELECT ST_ASTEXT(MULTIPOLYGON('NULL', 'NULL'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(MULTIPOLYGON(POINT(0,0)));
ERROR HY000: Incorrect arguments to multipolygon
SELECT ST_ASTEXT(MULTIPOLYGON(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0))));
ERROR HY000: Incorrect arguments to multipolygon
SELECT ST_ASTEXT(MULTIPOLYGON(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0))));
ERROR HY000: Incorrect arguments to multipolygon
SELECT ST_ASTEXT(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))), POINT(1,1)));
ERROR HY000: Incorrect arguments to multipolygon
SELECT ST_ASTEXT(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0)))));
ST_ASTEXT(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0)))))
MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)))
SELECT ST_ASTEXT(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))),
POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0)))));
ST_ASTEXT(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))),
POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0)))))
MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)),((0 0,1 0,1 1,0 1,0 0)))
SELECT ST_ASTEXT(GEOMETRYCOLLECTION(1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(GEOMETRYCOLLECTION(1,1,1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(GEOMETRYCOLLECTION('1', '1'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(GEOMETRYCOLLECTION(NULL, NULL));
ERROR 22007: Illegal non geometric 'NULL' value found during parsing
SELECT ST_ASTEXT(GEOMETRYCOLLECTION('NULL', 'NULL'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(GEOMETRYCOLLECTION());
ST_ASTEXT(GEOMETRYCOLLECTION())
GEOMETRYCOLLECTION EMPTY
SELECT ST_ASTEXT(GEOMETRYCOLLECTION(POINT(0,0)));
ST_ASTEXT(GEOMETRYCOLLECTION(POINT(0,0)))
GEOMETRYCOLLECTION(POINT(0 0))
SELECT ST_ASTEXT(GEOMETRYCOLLECTION(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0))));
ST_ASTEXT(GEOMETRYCOLLECTION(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0))))
GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(0 0,1 0))
SELECT ST_ASTEXT(GEOMETRYCOLLECTION(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0)))));
ST_ASTEXT(GEOMETRYCOLLECTION(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0)))))
GEOMETRYCOLLECTION(POLYGON((0 0,1 0,1 1,0 1,0 0)))
SELECT ST_ASTEXT(GEOMETRYCOLLECTION(MULTIPOINT(POINT(0,0),POINT(1,1))));
ST_ASTEXT(GEOMETRYCOLLECTION(MULTIPOINT(POINT(0,0),POINT(1,1))))
GEOMETRYCOLLECTION(MULTIPOINT((0 0),(1 1)))
SELECT ST_ASTEXT(GEOMETRYCOLLECTION(MULTILINESTRING(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0)))));
ST_ASTEXT(GEOMETRYCOLLECTION(MULTILINESTRING(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0)))))
GEOMETRYCOLLECTION(MULTILINESTRING((0 0,1 0),(0 0,1 0)))
SELECT ST_ASTEXT(GEOMETRYCOLLECTION(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))),
POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))))));
ST_ASTEXT(GEOMETRYCOLLECTION(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))),
POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))))))
GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)),((0 0,1 0,1 1,0 1,0 0))))
SELECT ST_ASTEXT(GEOMCOLLECTION(1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(GEOMCOLLECTION(1,1,1));
ERROR 22007: Illegal non geometric 'BIGINT' value found during parsing
SELECT ST_ASTEXT(GEOMCOLLECTION('1', '1'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(GEOMCOLLECTION(NULL, NULL));
ERROR 22007: Illegal non geometric 'NULL' value found during parsing
SELECT ST_ASTEXT(GEOMCOLLECTION('NULL', 'NULL'));
ERROR 22007: Illegal non geometric 'VARCHAR' value found during parsing
SELECT ST_ASTEXT(GEOMCOLLECTION());
ST_ASTEXT(GEOMCOLLECTION())
GEOMETRYCOLLECTION EMPTY
SELECT ST_ASTEXT(GEOMCOLLECTION(POINT(0,0)));
ST_ASTEXT(GEOMCOLLECTION(POINT(0,0)))
GEOMETRYCOLLECTION(POINT(0 0))
SELECT ST_ASTEXT(GEOMCOLLECTION(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0))));
ST_ASTEXT(GEOMCOLLECTION(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0))))
GEOMETRYCOLLECTION(LINESTRING(0 0,1 0),LINESTRING(0 0,1 0))
SELECT ST_ASTEXT(GEOMCOLLECTION(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0)))));
ST_ASTEXT(GEOMCOLLECTION(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0)))))
GEOMETRYCOLLECTION(POLYGON((0 0,1 0,1 1,0 1,0 0)))
SELECT ST_ASTEXT(GEOMCOLLECTION(MULTIPOINT(POINT(0,0),POINT(1,1))));
ST_ASTEXT(GEOMCOLLECTION(MULTIPOINT(POINT(0,0),POINT(1,1))))
GEOMETRYCOLLECTION(MULTIPOINT((0 0),(1 1)))
SELECT ST_ASTEXT(GEOMCOLLECTION(MULTILINESTRING(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0)))));
ST_ASTEXT(GEOMCOLLECTION(MULTILINESTRING(LINESTRING(POINT(0,0),POINT(1,0)),LINESTRING(POINT(0,0),POINT(1,0)))))
GEOMETRYCOLLECTION(MULTILINESTRING((0 0,1 0),(0 0,1 0)))
SELECT ST_ASTEXT(GEOMCOLLECTION(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))),
POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))))));
ST_ASTEXT(GEOMCOLLECTION(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))),
POLYGON(LINESTRING(POINT(0,0),POINT(1,0),POINT(1,1),POINT(0,1),POINT(0,0))))))
GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,1 0,1 1,0 1,0 0)),((0 0,1 0,1 1,0 1,0 0))))

View File

@ -0,0 +1,150 @@
# ----------------------------------------------------------------------
# Base test of GEOMETRY spatial index.
# ----------------------------------------------------------------------
drop table if exists t1;
CREATE TABLE t1 (x INTEGER,
y INTEGER,
g POINT GENERATED ALWAYS AS (POINT(x, y)) NOT NULL SRID 0);
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
x int(11) YES NULL
y int(11) YES NULL
g point NO point(`x`,`y`) VIRTUAL GENERATED
INSERT INTO t1(x,y) VALUES (0, 0);
INSERT INTO t1(x,y) VALUES (0.1, 0.1);
SELECT x,y,st_astext(g) FROM t1 ORDER BY x;
x y st_astext(g)
0 0 POINT(0 0)
0 0 POINT(0 0)
DROP TABLE t1;
CREATE TABLE t1 (x INTEGER,
y INTEGER,
g POINT GENERATED ALWAYS AS (POINT(x, y)) NOT NULL SRID 4326);
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
x int(11) YES NULL
y int(11) YES NULL
g point NO point(`x`,`y`) VIRTUAL GENERATED
INSERT INTO t1(x,y) VALUES (0, 0);
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 0, but the SRID of the column is 4326. Consider changing the SRID of the geometry or the SRID property of the column.
INSERT INTO t1(x,y) VALUES (0.1, 0.1);
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 0, but the SRID of the column is 4326. Consider changing the SRID of the geometry or the SRID property of the column.
SELECT x,y,st_astext(g) FROM t1 ORDER BY x;
x y st_astext(g)
DROP TABLE t1;
CREATE TABLE t1 (x INTEGER,
y INTEGER,
g POINT GENERATED ALWAYS AS (ST_GEOMFROMTEXT('POINT(1 1)', 4326)) STORED NOT NULL SRID 4326);
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
x int(11) YES NULL
y int(11) YES NULL
g point NO ST_GEOMFROMTEXT('POINT(1 1)',4326) STORED GENERATED
INSERT INTO t1(x,y) VALUES (0, 0);
INSERT INTO t1(x,y) VALUES (0.1, 0.1);
DROP TABLE t1;
CREATE TABLE t1 (x INTEGER,
y INTEGER,
g POINT GENERATED ALWAYS AS (ST_GEOMFROMTEXT('POINT(1 1)', 0)) STORED NOT NULL SRID 4326);
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
x int(11) YES NULL
y int(11) YES NULL
g point NO ST_GEOMFROMTEXT('POINT(1 1)',0) STORED GENERATED
INSERT INTO t1(x,y) VALUES (0, 0);
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 0, but the SRID of the column is 4326. Consider changing the SRID of the geometry or the SRID property of the column.
INSERT INTO t1(x,y) VALUES (0.1, 0.1);
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 0, but the SRID of the column is 4326. Consider changing the SRID of the geometry or the SRID property of the column.
DROP TABLE t1;
CREATE TABLE t1 (g GEOMETRY NOT NULL SRID 4326,
i INT GENERATED ALWAYS AS (ST_INTERSECTS(ST_GEOMFROMTEXT('POINT(0 0)', 4326), g)));
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
g geometry NO NULL
i int(11) YES ST_INTERSECTS(ST_GEOMFROMTEXT('POINT(0 0)',4326),`g`) VIRTUAL GENERATED
INSERT INTO t1(g) VALUES (ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))', 4326));
SELECT i,st_astext(g) FROM t1 ORDER BY i;
i st_astext(g)
1 MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))
DROP TABLE t1;
CREATE TABLE t1 (g GEOMETRY NOT NULL SRID 4326,
i INT GENERATED ALWAYS AS (ST_INTERSECTS(ST_GEOMFROMTEXT('POINT(0 0)', 4326), g)));
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
g geometry NO NULL
i int(11) YES ST_INTERSECTS(ST_GEOMFROMTEXT('POINT(0 0)',4326),`g`) VIRTUAL GENERATED
INSERT INTO t1(g) VALUES (ST_GEOMFROMTEXT('MULTIPOLYGON(((1 1,10 0,10 10,0 10,1 1)))', 4326));
SELECT i,st_astext(g) FROM t1 ORDER BY i;
i st_astext(g)
0 MULTIPOLYGON(((1 1,10 0,10 10,0 10,1 1)))
DROP TABLE t1;
CREATE TABLE t1 (g GEOMETRY NOT NULL SRID 4326,
i INT GENERATED ALWAYS AS (ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326))));
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
g geometry NO NULL
i int(11) YES ST_INTERSECTS(`g`,ST_GEOMFROMTEXT('POINT(0 0)',4326)) VIRTUAL GENERATED
INSERT INTO t1(g) VALUES (ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))', 4326));
SELECT i,st_astext(g) FROM t1 ORDER BY i;
i st_astext(g)
1 MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))
DROP TABLE t1;
CREATE TABLE t1 (g GEOMETRY NOT NULL SRID 4326,
i INT GENERATED ALWAYS AS (ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326))));
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
g geometry NO NULL
i int(11) YES ST_INTERSECTS(`g`,ST_GEOMFROMTEXT('POINT(0 0)',4326)) VIRTUAL GENERATED
INSERT INTO t1(g) VALUES (ST_GEOMFROMTEXT('MULTIPOLYGON(((1 1,10 0,10 10,0 10,1 1)))', 4326));
SELECT i,st_astext(g) FROM t1 ORDER BY i;
i st_astext(g)
0 MULTIPOLYGON(((1 1,10 0,10 10,0 10,1 1)))
DROP TABLE t1;
CREATE TABLE t1 (g GEOMETRY NOT NULL SRID 4326,
i INT GENERATED ALWAYS AS (ST_INTERSECTS(ST_GEOMFROMTEXT('POINT(0 0)', 4326), g)) STORED);
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
g geometry NO NULL
i int(11) YES ST_INTERSECTS(ST_GEOMFROMTEXT('POINT(0 0)',4326),`g`) STORED GENERATED
INSERT INTO t1(g) VALUES (ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))', 4326));
SELECT i,st_astext(g) FROM t1 ORDER BY i;
i st_astext(g)
1 MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))
DROP TABLE t1;
CREATE TABLE t1 (g GEOMETRY NOT NULL SRID 4326,
i INT GENERATED ALWAYS AS (ST_INTERSECTS(ST_GEOMFROMTEXT('POINT(0 0)', 4326), g)) STORED);
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
g geometry NO NULL
i int(11) YES ST_INTERSECTS(ST_GEOMFROMTEXT('POINT(0 0)',4326),`g`) STORED GENERATED
INSERT INTO t1(g) VALUES (ST_GEOMFROMTEXT('MULTIPOLYGON(((1 1,10 0,10 10,0 10,1 1)))', 4326));
SELECT i,st_astext(g) FROM t1 ORDER BY i;
i st_astext(g)
0 MULTIPOLYGON(((1 1,10 0,10 10,0 10,1 1)))
DROP TABLE t1;
CREATE TABLE t1 (g GEOMETRY NOT NULL SRID 4326,
i INT GENERATED ALWAYS AS (ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326))) STORED);
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
g geometry NO NULL
i int(11) YES ST_INTERSECTS(`g`,ST_GEOMFROMTEXT('POINT(0 0)',4326)) STORED GENERATED
INSERT INTO t1(g) VALUES (ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))', 4326));
SELECT i,st_astext(g) FROM t1 ORDER BY i;
i st_astext(g)
1 MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))
DROP TABLE t1;
CREATE TABLE t1 (g GEOMETRY NOT NULL SRID 4326,
i INT GENERATED ALWAYS AS (ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326))) STORED);
SHOW COLUMNS FROM t1;
Field Type Null Key Default Extra
g geometry NO NULL
i int(11) YES ST_INTERSECTS(`g`,ST_GEOMFROMTEXT('POINT(0 0)',4326)) STORED GENERATED
INSERT INTO t1(g) VALUES (ST_GEOMFROMTEXT('MULTIPOLYGON(((1 1,10 0,10 10,0 10,1 1)))', 4326));
SELECT i,st_astext(g) FROM t1 ORDER BY i;
i st_astext(g)
0 MULTIPOLYGON(((1 1,10 0,10 10,0 10,1 1)))
DROP TABLE t1;
CREATE TABLE t1(id INT, p POLYGON GENERATED ALWAYS AS (ST_GeomFromText('POINT(15 20)',0)) STORED);
INSERT INTO t1(id) VALUES (1);
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field.
DROP TABLE t1;

View File

@ -0,0 +1,355 @@
# ----------------------------------------------------------------------
# Base test of GEOMETRY spatial index.
# ----------------------------------------------------------------------
#Creating the spatial Geometry object
USE test;
DROP TABLE IF EXISTS gis_line_with_spatial_index, gis_polygon_with_spatial_index, gis_multipoint_with_spatial_index, gis_multiline_with_spatial_index,
gis_point_with_spatial_index, gis_geometrycollection_with_spatial_index, gis_linestring_and_int_with_spatial_index;
CREATE TABLE gis_point_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g POINT
NOT NULL SRID 0,spatial index (g) );
INSERT INTO gis_point_with_spatial_index VALUES (5,ST_GEOMFROMTEXT('POINT(100 10)'));
INSERT INTO gis_point_with_spatial_index VALUES (4,ST_GEOMFROMTEXT('POINT(100 10)'));
INSERT INTO gis_point_with_spatial_index VALUES (3,ST_GEOMFROMTEXT('POINT(100 10)'));
INSERT INTO gis_point_with_spatial_index VALUES (2,ST_GEOMFROMTEXT('POINT(100 10)'));
INSERT INTO gis_point_with_spatial_index VALUES (1,ST_GEOMFROMTEXT('POINT(100 10)'));
select count(g) from gis_point_with_spatial_index where ST_AsText(g) like "%100 10%";
count(g)
5
select ST_AsText(g) from gis_point_with_spatial_index where ST_AsText(g) like "%100 10%";
ST_AsText(g)
POINT(100 10)
POINT(100 10)
POINT(100 10)
POINT(100 10)
POINT(100 10)
DROP TABLE gis_point_with_spatial_index;
CREATE TABLE gis_line_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING
NOT NULL SRID 0, spatial index (g) );
INSERT INTO gis_line_with_spatial_index VALUES (5,ST_GeomFromText('LINESTRING(100 10,10 100)'));
INSERT INTO gis_line_with_spatial_index VALUES (4,ST_GeomFromText('LINESTRING(100 10,10 100)'));
INSERT INTO gis_line_with_spatial_index VALUES (3,ST_GeomFromText('LINESTRING(100 10,10 100)'));
INSERT INTO gis_line_with_spatial_index VALUES (2,ST_GeomFromText('LINESTRING(100 10,10 100)'));
INSERT INTO gis_line_with_spatial_index VALUES (1,ST_GeomFromText('LINESTRING(100 10,10 100)'));
select count(g) from gis_line_with_spatial_index where ST_AsText(g) like "%100 10%";
count(g)
5
select ST_AsText(g) from gis_line_with_spatial_index where ST_AsText(g) like "%100 10%";
ST_AsText(g)
LINESTRING(100 10,10 100)
LINESTRING(100 10,10 100)
LINESTRING(100 10,10 100)
LINESTRING(100 10,10 100)
LINESTRING(100 10,10 100)
DROP TABLE gis_line_with_spatial_index;
CREATE TABLE gis_polygon_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON
NOT NULL SRID 0, spatial index (g) );
INSERT INTO gis_polygon_with_spatial_index VALUES (5,ST_GEOMFROMTEXT('POLYGON((10 10,20 10,20 20,10 20,10 10))'));
INSERT INTO gis_polygon_with_spatial_index VALUES (4,ST_GEOMFROMTEXT('POLYGON((10 10,20 10,20 20,10 20,10 10))'));
INSERT INTO gis_polygon_with_spatial_index VALUES (3,ST_GEOMFROMTEXT('POLYGON((10 10,20 10,20 20,10 20,10 10))'));
INSERT INTO gis_polygon_with_spatial_index VALUES (2,ST_GEOMFROMTEXT('POLYGON((10 10,20 10,20 20,10 20,10 10))'));
INSERT INTO gis_polygon_with_spatial_index VALUES (1,ST_GEOMFROMTEXT('POLYGON((10 10,20 10,20 20,10 20,10 10))'));
select count(g) from gis_polygon_with_spatial_index where ST_AsText(g) like "%10 10%";
count(g)
5
select ST_AsText(g) from gis_polygon_with_spatial_index where ST_AsText(g) like "%10 10%";
ST_AsText(g)
POLYGON((10 10,20 10,20 20,10 20,10 10))
POLYGON((10 10,20 10,20 20,10 20,10 10))
POLYGON((10 10,20 10,20 20,10 20,10 10))
POLYGON((10 10,20 10,20 20,10 20,10 10))
POLYGON((10 10,20 10,20 20,10 20,10 10))
DROP TABLE gis_polygon_with_spatial_index;
CREATE TABLE gis_multipoint_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT
NOT NULL SRID 0, spatial index (g) );
INSERT INTO gis_multipoint_with_spatial_index VALUES (5,ST_GEOMFROMTEXT('MULTIPOINT(0 0,10 10,10 20,20 20)'));
INSERT INTO gis_multipoint_with_spatial_index VALUES (4,ST_GEOMFROMTEXT('MULTIPOINT(0 0,10 10,10 20,20 20)'));
INSERT INTO gis_multipoint_with_spatial_index VALUES (3,ST_GEOMFROMTEXT('MULTIPOINT(0 0,10 10,10 20,20 20)'));
INSERT INTO gis_multipoint_with_spatial_index VALUES (2,ST_GEOMFROMTEXT('MULTIPOINT(0 0,10 10,10 20,20 20)'));
INSERT INTO gis_multipoint_with_spatial_index VALUES (1,ST_GEOMFROMTEXT('MULTIPOINT(0 0,10 10,10 20,20 20)'));
select count(g) from gis_multipoint_with_spatial_index where ST_AsText(g) like "%10 10%";
count(g)
5
select ST_AsText(g) from gis_multipoint_with_spatial_index where ST_AsText(g) like "%10 10%";
ST_AsText(g)
MULTIPOINT((0 0),(10 10),(10 20),(20 20))
MULTIPOINT((0 0),(10 10),(10 20),(20 20))
MULTIPOINT((0 0),(10 10),(10 20),(20 20))
MULTIPOINT((0 0),(10 10),(10 20),(20 20))
MULTIPOINT((0 0),(10 10),(10 20),(20 20))
DROP TABLE gis_multipoint_with_spatial_index;
CREATE TABLE gis_multiline_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g MULTILINESTRING
NOT NULL SRID 0, spatial index (g) );
INSERT INTO gis_multiline_with_spatial_index VALUES (5,ST_GEOMFROMTEXT('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))'));
INSERT INTO gis_multiline_with_spatial_index VALUES (4,ST_GEOMFROMTEXT('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))'));
INSERT INTO gis_multiline_with_spatial_index VALUES (3,ST_GEOMFROMTEXT('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))'));
INSERT INTO gis_multiline_with_spatial_index VALUES (2,ST_GEOMFROMTEXT('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))'));
INSERT INTO gis_multiline_with_spatial_index VALUES (1,ST_GEOMFROMTEXT('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))'));
select count(g) from gis_multiline_with_spatial_index where ST_AsText(g) like "%10 0%";
count(g)
5
select ST_AsText(g) from gis_multiline_with_spatial_index where ST_AsText(g) like "%10 0%";
ST_AsText(g)
MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
DROP TABLE gis_multiline_with_spatial_index;
CREATE TABLE gis_multipolygon_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOLYGON
NOT NULL SRID 0, spatial index (g) );
INSERT INTO gis_multipolygon_with_spatial_index VALUES (5,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'));
INSERT INTO gis_multipolygon_with_spatial_index VALUES (4,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'));
INSERT INTO gis_multipolygon_with_spatial_index VALUES (3,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'));
INSERT INTO gis_multipolygon_with_spatial_index VALUES (2,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'));
INSERT INTO gis_multipolygon_with_spatial_index VALUES (1,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'));
select count(g) from gis_multipolygon_with_spatial_index where ST_AsText(g) like "%10 10%";
count(g)
0
select ST_AsText(g) from gis_multipolygon_with_spatial_index where ST_AsText(g) like "%10 10%";
ST_AsText(g)
select count(g) from gis_multipolygon_with_spatial_index where ST_AsText(g) like "%84 0%";
count(g)
5
select ST_AsText(g) from gis_multipolygon_with_spatial_index where ST_AsText(g) like "%84 0%";
ST_AsText(g)
MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
DROP TABLE gis_multipolygon_with_spatial_index;
CREATE TABLE gis_geometrycollection_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRYCOLLECTION
NOT NULL SRID 0, spatial index (g) );
INSERT INTO gis_geometrycollection_with_spatial_index VALUES (5,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
INSERT INTO gis_geometrycollection_with_spatial_index VALUES (4,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
INSERT INTO gis_geometrycollection_with_spatial_index VALUES (3,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
INSERT INTO gis_geometrycollection_with_spatial_index VALUES (2,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
INSERT INTO gis_geometrycollection_with_spatial_index VALUES (1,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
select count(g) from gis_geometrycollection_with_spatial_index where ST_AsText(g) like "%10 10%";
count(g)
5
select ST_AsText(g) from gis_geometrycollection_with_spatial_index where ST_AsText(g) like "%10 10%";
ST_AsText(g)
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
DROP TABLE gis_geometrycollection_with_spatial_index;
CREATE TABLE gis_geometry_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY
NOT NULL SRID 0, spatial index (g) );
INSERT INTO gis_geometry_with_spatial_index VALUES (5,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
INSERT INTO gis_geometry_with_spatial_index VALUES (4,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
INSERT INTO gis_geometry_with_spatial_index VALUES (3,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
INSERT INTO gis_geometry_with_spatial_index VALUES (2,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
INSERT INTO gis_geometry_with_spatial_index VALUES (1,ST_GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(10 10,20 20))'));
select count(g) from gis_geometry_with_spatial_index where ST_AsText(g) like "%10 10%";
count(g)
5
select ST_AsText(g) from gis_geometry_with_spatial_index where ST_AsText(g) like "%10 10%";
ST_AsText(g)
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,20 20))
DROP TABLE gis_geometry_with_spatial_index;
DROP TABLE IF EXISTS gis_point_and_int_with_spatial_index;
CREATE TABLE gis_point_and_int_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g POINT
NOT NULL SRID 0,spatial index (g) );
INSERT INTO gis_point_and_int_with_spatial_index VALUES (5,ST_GEOMFROMTEXT('POINT(100 10)'));
INSERT INTO gis_point_and_int_with_spatial_index VALUES (4,ST_GEOMFROMTEXT('POINT(100 10)'));
INSERT INTO gis_point_and_int_with_spatial_index VALUES (3,ST_GEOMFROMTEXT('POINT(100 10)'));
INSERT INTO gis_point_and_int_with_spatial_index VALUES (2,ST_GEOMFROMTEXT('POINT(100 10)'));
INSERT INTO gis_point_and_int_with_spatial_index VALUES (1,ST_GEOMFROMTEXT('POINT(100 10)'));
select count(g) from gis_point_and_int_with_spatial_index where ST_AsText(g) like "%100 10%";
count(g)
5
select ST_AsText(g) from gis_point_and_int_with_spatial_index where ST_AsText(g) like "%100 10%";
ST_AsText(g)
POINT(100 10)
POINT(100 10)
POINT(100 10)
POINT(100 10)
POINT(100 10)
DROP TABLE gis_point_and_int_with_spatial_index;
CREATE TABLE gis_point_and_int_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g POINT
NOT NULL SRID 0, a int, spatial index (g) );
#INSERT valid entries to Point class
INSERT INTO gis_point_and_int_with_spatial_index VALUES
(101, ST_GEOMFROMTEXT('POINT(10 10)'),1),
(102, ST_GEOMFROMTEXT('POINT(10 20)'),21),
(103, ST_GEOMFROMTEXT('POINT(100 20)'),3),
(104, ST_GEOMFROMTEXT('POINT(100 20)'),3);
SELECT COUNT(g) FROM gis_point_and_int_with_spatial_index WHERE ST_AsText(g) LIKE "%point%";
COUNT(g)
4
ALTER TABLE gis_point_and_int_with_spatial_index DROP INDEX g;
CREATE SPATIAL INDEX g ON gis_point_and_int_with_spatial_index (g);
SELECT COUNT(g) FROM gis_point_and_int_with_spatial_index WHERE ST_AsText(g) LIKE "%point%";
COUNT(g)
4
ALTER TABLE gis_point_and_int_with_spatial_index DROP INDEX g;
CREATE INDEX a ON gis_point_and_int_with_spatial_index (a) ;
select count(g) from gis_point_and_int_with_spatial_index where a like "%3%";
count(g)
2
select ST_AsText(g) from gis_point_and_int_with_spatial_index where a like "%3%";
ST_AsText(g)
POINT(100 20)
POINT(100 20)
DROP TABLE gis_point_and_int_with_spatial_index;
CREATE TABLE gis_point_and_int_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g POINT
NOT NULL SRID 0, a int, index (a) );
#INSERT valid entries to Point class
INSERT INTO gis_point_and_int_with_spatial_index VALUES
(101, ST_GEOMFROMTEXT('POINT(10 10)'),1),
(102, ST_GEOMFROMTEXT('POINT(10 20)'),21),
(103, ST_GEOMFROMTEXT('POINT(100 20)'),3),
(104, ST_GEOMFROMTEXT('POINT(101 20)'),3);
select count(g) from gis_point_and_int_with_spatial_index where a like "%3%";
count(g)
2
SELECT COUNT(a) FROM gis_point_and_int_with_spatial_index WHERE a LIKE "%3%";
COUNT(a)
2
ALTER TABLE gis_point_and_int_with_spatial_index DROP INDEX a;
CREATE SPATIAL INDEX g ON gis_point_and_int_with_spatial_index (g);
SELECT COUNT(g) FROM gis_point_and_int_with_spatial_index WHERE ST_AsText(g) LIKE "%point%";
COUNT(g)
4
SELECT COUNT(a) FROM gis_point_and_int_with_spatial_index WHERE ST_AsText(g) LIKE "%point%";
COUNT(a)
4
DROP TABLE gis_point_and_int_with_spatial_index ;
CREATE TABLE gis_linestring_and_int_with_spatial_index (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING
NOT NULL SRID 0, a int, spatial index (g) );
#INSERT valid entries to Point class
INSERT INTO gis_linestring_and_int_with_spatial_index VALUES
(201,ST_GEOMFROMTEXT('LINESTRING(0 0,0 10,10 0)'),1),
(202,ST_GEOMFROMTEXT('LINESTRING(1 1,1 10,10 20)'),2),
(203,ST_GEOMFROMTEXT('LINESTRING(1 1,1 10,10 20)'),2);
select count(g) from gis_linestring_and_int_with_spatial_index where ST_AsText(g) like "%0%";
count(g)
3
select count(a) from gis_linestring_and_int_with_spatial_index where ST_AsText(g) like "%0%";
count(a)
3
select count(a) from gis_linestring_and_int_with_spatial_index where ST_AsText(g) like "%10 10%";
count(a)
0
ALTER TABLE gis_linestring_and_int_with_spatial_index DROP INDEX g;
CREATE INDEX a ON gis_linestring_and_int_with_spatial_index (a) ;
SELECT COUNT(g) FROM gis_linestring_and_int_with_spatial_index WHERE a LIKE "%2%";
COUNT(g)
2
ALTER TABLE gis_linestring_and_int_with_spatial_index DROP INDEX a;
CREATE SPATIAL INDEX g ON gis_linestring_and_int_with_spatial_index (g) ;
SELECT COUNT(g) FROM gis_linestring_and_int_with_spatial_index WHERE ST_AsText(g) LIKE "%2%";
COUNT(g)
2
DROP TABLE gis_linestring_and_int_with_spatial_index ;
CREATE TABLE gis_multilinestring_and_int_with_spatial_index (fid INTEGER PRIMARY KEY, g MULTILINESTRING
NOT NULL SRID 0, a int, spatial index (g) );
#INSERT valid entries to Point class
INSERT INTO gis_multilinestring_and_int_with_spatial_index VALUES
(300,ST_GEOMFROMTEXT('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))'),1),
(301,ST_GEOMFROMTEXT('MULTILINESTRING((130 48,180 21,10 90),(916 0,516 2373223,816 48))'),1),
(302,ST_GEOMFROMTEXT('MULTILINESTRING((180 48,10 25891,160 0),(5416 0,19096 29093,19096 498))'),1);
select count(g) from gis_multilinestring_and_int_with_spatial_index where ST_AsText(g) like "%48%";
count(g)
3
select count(a) from gis_multilinestring_and_int_with_spatial_index where ST_AsText(g) like "%48%";
count(a)
3
ALTER TABLE gis_multilinestring_and_int_with_spatial_index DROP INDEX g;
CREATE INDEX a ON gis_multilinestring_and_int_with_spatial_index (a) ;
SELECT COUNT(g) FROM gis_multilinestring_and_int_with_spatial_index WHERE a LIKE "%2%";
COUNT(g)
0
ALTER TABLE gis_multilinestring_and_int_with_spatial_index DROP INDEX a;
CREATE SPATIAL INDEX g ON gis_multilinestring_and_int_with_spatial_index (g) ;
SELECT COUNT(g) FROM gis_multilinestring_and_int_with_spatial_index WHERE ST_AsText(g) LIKE "%48%";
COUNT(g)
3
DROP TABLE gis_multilinestring_and_int_with_spatial_index ;
CREATE TABLE gis_polygon_and_int_with_spatial_index (fid INTEGER PRIMARY KEY, g POLYGON
NOT NULL SRID 0, a int, spatial index (g) );
#INSERT valid entries to Point class
INSERT INTO gis_polygon_and_int_with_spatial_index VALUES
(300,ST_GEOMFROMTEXT('POLYGON((183670 10,2470 10,20 249380,10 254760,183670 10))'),12),
(301,ST_GEOMFROMTEXT('POLYGON((10 10,20 10,20 20,10 20,10 10))'),2),
(302,ST_GEOMFROMTEXT('POLYGON((110 10,320 310,2550 8520,1059 2590,110 10))'),2),
(303,ST_GEOMFROMTEXT('POLYGON((180 160,55620 5610,240 206560,10 285960,180 160))'),2);
select count(g) from gis_polygon_and_int_with_spatial_index where ST_AsText(g) like "%10 10%";
count(g)
2
select count(a) from gis_polygon_and_int_with_spatial_index where ST_AsText(g) like "%10 10%";
count(a)
2
ALTER TABLE gis_polygon_and_int_with_spatial_index DROP INDEX g;
CREATE INDEX a ON gis_polygon_and_int_with_spatial_index (a) ;
SELECT COUNT(g) FROM gis_polygon_and_int_with_spatial_index WHERE a LIKE "%2%";
COUNT(g)
4
ALTER TABLE gis_polygon_and_int_with_spatial_index DROP INDEX a;
CREATE SPATIAL INDEX g ON gis_polygon_and_int_with_spatial_index (g) ;
SELECT COUNT(g) FROM gis_polygon_and_int_with_spatial_index WHERE ST_AsText(g) LIKE "%48%";
COUNT(g)
0
DROP TABLE gis_polygon_and_int_with_spatial_index ;
DROP TABLE IF EXISTS gis_multipolygon_and_int_with_spatial_index;
CREATE TABLE gis_multipolygon_and_int_with_spatial_index (fid INTEGER PRIMARY KEY, g multiPOLYGON
NOT NULL SRID 0, a int, spatial index (g) );
#INSERT valid entries to Point class
INSERT INTO gis_multipolygon_and_int_with_spatial_index VALUES
(1,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'),1),
(2,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,864 0,8984 42,28 26),(2 18,66 348345723,73 9,48 6,2 18)),((519 18,67 18,348345767 13,59 13,519 18)))'),1),
(5,ST_GEOMFROMTEXT('MULTIPOLYGON(((254397348 26,28 0,84 0,84 42,254397348 26),(52 18,634834576 23,73 9,48 34834576,52 18)),((59 18,67 18,67 13,59 13,59 18)))'),1),
(9,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,834834574 42,28 26),(52 18,348345766 23,73 9,434834578 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'),1);
select count(g) from gis_multipolygon_and_int_with_spatial_index where ST_AsText(g) like "%59 18%";
count(g)
3
select count(a) from gis_multipolygon_and_int_with_spatial_index where ST_AsText(g) like "%59 18%";
count(a)
3
ALTER TABLE gis_multipolygon_and_int_with_spatial_index DROP INDEX g;
CREATE INDEX a ON gis_multipolygon_and_int_with_spatial_index (a) ;
SELECT COUNT(g) FROM gis_multipolygon_and_int_with_spatial_index WHERE a LIKE "%1%";
COUNT(g)
4
ALTER TABLE gis_multipolygon_and_int_with_spatial_index DROP INDEX a;
CREATE SPATIAL INDEX g ON gis_multipolygon_and_int_with_spatial_index (g) ;
SELECT COUNT(g) FROM gis_multipolygon_and_int_with_spatial_index WHERE ST_AsText(g) LIKE "%18%";
COUNT(g)
4
DROP TABLE gis_multipolygon_and_int_with_spatial_index ;
CREATE TABLE gis_multipolygon_and_int_with_spatial_index (fid INTEGER PRIMARY KEY, g MULTIPOLYGON
NOT NULL SRID 0, a int, spatial index (g) );
#INSERT valid entries to Point class
INSERT INTO gis_multipolygon_and_int_with_spatial_index VALUES
(1,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'),1),
(2,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,864 0,8984 42,28 26),(2 18,66 348345723,73 9,48 6,2 18)),((519 18,67 18,348345767 13,59 13,519 18)))'),1),
(5,ST_GEOMFROMTEXT('MULTIPOLYGON(((254397348 26,28 0,84 0,84 42,254397348 26),(52 18,634834576 23,73 9,48 34834576,52 18)),((59 18,67 18,67 13,59 13,59 18)))'),1),
(9,ST_GEOMFROMTEXT('MULTIPOLYGON(((28 26,28 0,84 0,834834574 42,28 26),(52 18,348345766 23,73 9,434834578 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))'),1);
select count(g) from gis_multipolygon_and_int_with_spatial_index where ST_AsText(g) like "%59 18%";
count(g)
3
select count(a) from gis_multipolygon_and_int_with_spatial_index where ST_AsText(g) like "%59 18%";
count(a)
3
ALTER TABLE gis_multipolygon_and_int_with_spatial_index DROP INDEX g;
CREATE INDEX a ON gis_multipolygon_and_int_with_spatial_index (a) ;
SELECT COUNT(g) FROM gis_multipolygon_and_int_with_spatial_index WHERE a LIKE "%1%";
COUNT(g)
4
ALTER TABLE gis_multipolygon_and_int_with_spatial_index DROP INDEX a;
CREATE INDEX g ON gis_multipolygon_and_int_with_spatial_index (g) ;
DROP INDEX g ON gis_multipolygon_and_int_with_spatial_index;
CREATE SPATIAL INDEX a ON gis_multipolygon_and_int_with_spatial_index (a) ;
ERROR 42000: A SPATIAL index may only contain a geometrical type column.
CREATE SPATIAL INDEX g ON gis_multipolygon_and_int_with_spatial_index (g) ;
SELECT COUNT(g) FROM gis_multipolygon_and_int_with_spatial_index WHERE ST_AsText(g) LIKE "%18%";
COUNT(g)
4
DROP TABLE gis_multipolygon_and_int_with_spatial_index ;

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,222 @@
# ----------------------------------------------------------------------
# Base test of GEOMETRY spatial index.
# ----------------------------------------------------------------------
DROP TABLE IF EXISTS spatial_index_syntax;
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326, INDEX(g) LOCAL);
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP TABLE IF EXISTS spatial_index_syntax;
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326, INDEX(g) GLOBAL);
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP TABLE IF EXISTS spatial_index_syntax;
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326, INDEX(g));
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP TABLE IF EXISTS spatial_index_syntax;
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326, SPATIAL INDEX(g) LOCAL);
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP TABLE IF EXISTS spatial_index_syntax;
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326, SPATIAL INDEX(g) GLOBAL);
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP TABLE IF EXISTS spatial_index_syntax;
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326, SPATIAL INDEX(g));
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP TABLE IF EXISTS spatial_index_syntax;
DROP TABLE IF EXISTS spatial_index_syntax;
Warnings:
Note 1051 Unknown table 'test.spatial_index_syntax'
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326);
ALTER TABLE spatial_index_syntax ADD INDEX idx(g) LOCAL;
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
ALTER TABLE spatial_index_syntax ADD INDEX idx(g) GLOBAL;
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
ALTER TABLE spatial_index_syntax ADD INDEX idx(g);
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
DROP TABLE IF EXISTS spatial_index_syntax;
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326);
ALTER TABLE spatial_index_syntax ADD SPATIAL INDEX idx(g) LOCAL;
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
ALTER TABLE spatial_index_syntax ADD SPATIAL INDEX idx(g) GLOBAL;
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
ALTER TABLE spatial_index_syntax ADD SPATIAL INDEX idx(g);
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
DROP TABLE IF EXISTS spatial_index_syntax;
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326);
CREATE INDEX idx ON spatial_index_syntax (g) LOCAL;
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
CREATE INDEX idx ON spatial_index_syntax (g) GLOBAL;
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
CREATE INDEX idx ON spatial_index_syntax (g);
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
DROP TABLE IF EXISTS spatial_index_syntax;
CREATE TABLE spatial_index_syntax (g GEOMETRY NOT NULL SRID 4326);
CREATE SPATIAL INDEX idx ON spatial_index_syntax (g) LOCAL;
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
CREATE SPATIAL INDEX idx ON spatial_index_syntax (g) GLOBAL;
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
CREATE SPATIAL INDEX idx ON spatial_index_syntax (g);
SHOW FIELDS FROM spatial_index_syntax;
Field Type Null Key Default Extra
g geometry NO MUL NULL
DROP INDEX idx ON spatial_index_syntax;
DROP TABLE IF EXISTS spatial_index_constraint;
CREATE TABLE spatial_index_constraint (g1 GEOMETRY NOT NULL SRID 4326, g2 GEOMETRY NOT NULL SRID 4326);
CREATE INDEX idx ON spatial_index_constraint (g1, g2);
ERROR 42000: Too many key parts specified; max 64 parts allowed
DROP TABLE IF EXISTS spatial_index_constraint;
CREATE TABLE spatial_index_constraint (i int, g GEOMETRY NOT NULL SRID 4326);
CREATE INDEX idx ON spatial_index_constraint (i, g);
ERROR 42000: Too many key parts specified; max 64 parts allowed
DROP TABLE IF EXISTS spatial_index_constraint;
CREATE TABLE spatial_index_constraint (i int, g GEOMETRY NOT NULL SRID 4326);
CREATE SPATIAL INDEX idx ON spatial_index_constraint (i);
ERROR 42000: A SPATIAL index may only contain a geometrical type column.
DROP TABLE IF EXISTS spatial_index_constraint;
CREATE TABLE spatial_index_constraint (i int, g GEOMETRY NOT NULL SRID 4326);
CREATE UNIQUE INDEX idx ON spatial_index_constraint (g);
ERROR HY000: Spatial indexes can't be primary or unique indexes.
DROP TABLE IF EXISTS spatial_index_constraint;
CREATE TABLE spatial_index_constraint (i int, g GEOMETRY);
CREATE INDEX idx ON spatial_index_constraint (g);
ERROR 42000: All parts of a SPATIAL index must be NOT NULL.
DROP TABLE IF EXISTS spatial_index_constraint;
CREATE TABLE spatial_index_constraint (g GEOMETRY NOT NULL SRID 4326);
CREATE INDEX idx ON spatial_index_constraint (g);
INSERT INTO spatial_index_constraint values (ST_GEOMFROMTEXT('POINT(1 1)', 0));
ERROR HY000: The SRID of the geometry does not match the SRID of the column. The SRID of the geometry is 0, but the SRID of the column is 4326. Consider changing the SRID of the geometry or the SRID property of the column.
DROP TABLE IF EXISTS spatial_index_constraint;
DROP TABLE IF EXISTS spatial_index_dml;
SET @v=ST_GEOMFROMTEXT('POINT(0 0)', 4326);
SET @v0=ST_GEOMFROMTEXT('POINT(0 0)', 4326);
SET @v1=ST_GEOMFROMTEXT('POINT(1 1)', 4326);
CREATE TABLE spatial_index_dml (i int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i));
CREATE INDEX idx ON spatial_index_dml (g);
INSERT INTO spatial_index_dml VALUES (1, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
SELECT /*+INDEX(spatial_index_dml idx)*/ st_astext(g) FROM spatial_index_dml WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
st_astext(g)
POINT(0 0)
DROP TABLE spatial_index_dml;
CREATE TABLE spatial_index_dml (i int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i));
CREATE INDEX idx ON spatial_index_dml (g);
INSERT INTO spatial_index_dml VALUES (1, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
SELECT /*+INDEX(spatial_index_dml idx)*/ st_astext(g) FROM spatial_index_dml WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
st_astext(g)
POINT(0 0)
DROP TABLE spatial_index_dml;
CREATE TABLE spatial_index_dml (i1 int, i2 int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i1, i2));
CREATE INDEX idx ON spatial_index_dml (g);
INSERT INTO spatial_index_dml VALUES (1, 2, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
SELECT /*+INDEX(spatial_index_dml idx)*/ st_astext(g) FROM spatial_index_dml WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
st_astext(g)
POINT(0 0)
DROP TABLE spatial_index_dml;
DROP TABLE IF EXISTS spatial_index_dml;
Warnings:
Note 1051 Unknown table 'test.spatial_index_dml'
CREATE TABLE spatial_index_dml (i int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i));
CREATE INDEX idx ON spatial_index_dml (g);
INSERT INTO spatial_index_dml VALUES (1, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
UPDATE spatial_index_dml SET g=ST_GEOMFROMTEXT('POINT(1 2)', 4326) WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
SELECT /*+INDEX(spatial_index_dml idx)*/ g FROM spatial_index_dml WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(1 1)', 4326));
g
DROP TABLE IF EXISTS spatial_index_dml;
CREATE TABLE spatial_index_dml (i1 int, i2 int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i1, i2));
CREATE INDEX idx ON spatial_index_dml (g);
SET @v0=ST_GEOMFROMTEXT('POINT(0 0)', 4326);
SET @v1=ST_GEOMFROMTEXT('POINT(1 1)', 4326);
INSERT INTO spatial_index_dml VALUES (1, 2, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
UPDATE spatial_index_dml SET g=ST_GEOMFROMTEXT('POINT(1 2)', 4326) WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
SELECT /*+INDEX(spatial_index_dml idx)*/ g FROM spatial_index_dml WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(1 1)', 4326));
g
DROP TABLE IF EXISTS spatial_index_dml;
CREATE TABLE spatial_index_dml (i int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i));
CREATE INDEX idx ON spatial_index_dml (g);
SET @v0=ST_GEOMFROMTEXT('POINT(0 0)', 4326);
INSERT INTO spatial_index_dml VALUES (1, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
DELETE FROM spatial_index_dml WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
SELECT /*+INDEX(spatial_index_dml idx)*/ g FROM spatial_index_dml WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
g
DROP TABLE IF EXISTS spatial_index_dml;
CREATE TABLE spatial_index_dml (i1 int, i2 int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY (i1, i2));
CREATE INDEX idx ON spatial_index_dml (g);
SET @v0=ST_GEOMFROMTEXT('POINT(0 0)', 4326);
INSERT INTO spatial_index_dml VALUES (1, 2, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
DELETE FROM spatial_index_dml WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
SELECT /*+INDEX(spatial_index_dml idx)*/ g FROM spatial_index_dml WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
g
DROP TABLE IF EXISTS spatial_index_query;
SET @v=ST_GEOMFROMTEXT('POINT(0 0)', 4326);
CREATE TABLE spatial_index_query (i int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY(i));
CREATE INDEX idx ON spatial_index_query (g);
INSERT INTO spatial_index_query VALUES (0, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
INSERT INTO spatial_index_query VALUES (1, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
INSERT INTO spatial_index_query VALUES (2, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
SELECT /*+INDEX(spatial_index_query idx)*/ st_astext(g) FROM spatial_index_query WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
st_astext(g)
POINT(0 0)
POINT(0 0)
POINT(0 0)
DROP TABLE IF EXISTS spatial_index_query;
CREATE TABLE spatial_index_query (i int, g GEOMETRY NOT NULL SRID 4326);
CREATE INDEX idx ON spatial_index_query (g);
SET @v=ST_GEOMFROMTEXT('POINT(1 1)', 4326);
INSERT INTO spatial_index_query VALUES (1, ST_GEOMFROMTEXT('POINT(1 1)', 4326));
SET @cart_py = ST_GeomFromText('POLYGON((0 0, 10 0, 10 5, 0 5, 0 0))', 4326);
SELECT /*+INDEX(spatial_index_query idx)*/ st_astext(g) from spatial_index_query where st_intersects(g, ST_GeomFromText('POLYGON((0 0, 10 0, 10 5, 0 5, 0 0))', 4326));
st_astext(g)
POINT(1 1)
DROP TABLE IF EXISTS spatial_index_rebuild;
CREATE TABLE spatial_index_rebuild (i int, g GEOMETRY NOT NULL SRID 4326, PRIMARY KEY(i));
SET @v=ST_GEOMFROMTEXT('POINT(0 0)', 4326);
INSERT INTO spatial_index_rebuild VALUES (0, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
INSERT INTO spatial_index_rebuild VALUES (1, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
INSERT INTO spatial_index_rebuild VALUES (2, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
CREATE INDEX idx ON spatial_index_rebuild (g);
SELECT /*+INDEX(spatial_index_rebuild idx)*/ st_astext(g) FROM spatial_index_rebuild WHERE ST_INTERSECTS(g, ST_GEOMFROMTEXT('POINT(0 0)', 4326));
st_astext(g)
POINT(0 0)
POINT(0 0)
POINT(0 0)

View File

@ -0,0 +1,375 @@
# ----------------------------------------------------------------------
# Base test of GEOMETRY spatial index.
# ----------------------------------------------------------------------
DROP TABLE IF EXISTS t1;
create table t1(c1 int primary key, g geometry not null srid 0) partition by hash(c1) partitions 2;
create spatial index idx on t1 (g) local;
insert into t1 (c1, g) values (0, st_geomfromtext('point(1 1)'));
explain select /*+index(t1 idx)*/ st_astext(g) from t1 where st_intersects(g, st_geomfromtext('point(1 1)'));
Query Plan
=============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------
|0 |PX COORDINATOR | |1 |291 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|1 |291 |
|2 | └─PX PARTITION ITERATOR| |1 |289 |
|3 | └─TABLE FULL SCAN |t1(idx) |1 |289 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(st_astext(t1.g))]), filter(nil)
1 - output([INTERNAL_FUNCTION(st_astext(t1.g))]), filter(nil)
dop=1
2 - output([t1.g]), filter(nil)
force partition granule
3 - output([t1.g]), filter([st_intersects(t1.g, st_geomfromtext('point(1 1)'))])
access([t1.c1], [t1.g]), partitions(p[0-1])
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([t1.__cellid_17], [t1.__mbr_17], [t1.c1]), range(1152921504606846977,MIN,MIN ; 1152921504606846977,MAX,MAX), (1152921504606846980,MIN,MIN
; 1152921504606846980,MAX,MAX), (1152921504606846992,MIN,MIN ; 1152921504606846992,MAX,MAX), (1152921504606847040,MIN,MIN ; 1152921504606847040,MAX,MAX),
(1152921504606847232,MIN,MIN ; 1152921504606847232,MAX,MAX), (1152921504606848000,MIN,MIN ; 1152921504606848000,MAX,MAX), (1152921504606851072,MIN,MIN
; 1152921504606851072,MAX,MAX), (1152921504606863360,MIN,MIN ; 1152921504606863360,MAX,MAX), (1152921504606912512,MIN,MIN ; 1152921504606912512,MAX,MAX),
(1152921504607109120,MIN,MIN ; 1152921504607109120,MAX,MAX), (1152921504607895552,MIN,MIN ; 1152921504607895552,MAX,MAX), (1152921504611041280,MIN,MIN
; 1152921504611041280,MAX,MAX), (1152921504623624192,MIN,MIN ; 1152921504623624192,MAX,MAX), (1152921504673955840,MIN,MIN ; 1152921504673955840,MAX,MAX),
(1152921504875282432,MIN,MIN ; 1152921504875282432,MAX,MAX), (1152921505680588800,MIN,MIN ; 1152921505680588800,MAX,MAX), (1152921508901814272,MIN,MIN
; 1152921508901814272,MAX,MAX), (1152921521786716160,MIN,MIN ; 1152921521786716160,MAX,MAX), (1152921573326323712,MIN,MIN ; 1152921573326323712,MAX,MAX),
(1152921779484753920,MIN,MIN ; 1152921779484753920,MAX,MAX), (1152922604118474752,MIN,MIN ; 1152922604118474752,MAX,MAX), (1152925902653358080,MIN,MIN
; 1152925902653358080,MAX,MAX), (1152939096792891392,MIN,MIN ; 1152939096792891392,MAX,MAX), (1152991873351024640,MIN,MIN ; 1152991873351024640,MAX,MAX),
(1153202979583557632,MIN,MIN ; 1153202979583557632,MAX,MAX), (1154047404513689600,MIN,MIN ; 1154047404513689600,MAX,MAX), (1157425104234217472,MIN,MIN
; 1157425104234217472,MAX,MAX), (1170935903116328960,MIN,MIN ; 1170935903116328960,MAX,MAX), (1224979098644774912,MIN,MIN ; 1224979098644774912,MAX,MAX),
(1441151880758558720,MIN,MIN ; 1441151880758558720,MAX,MAX), (1152921504606846976,MIN,MIN ; 1152921504606846976,MAX,MAX)
select /*+index(t1 idx)*/ st_astext(g) from t1 where st_intersects(g, st_geomfromtext('point(1 1)'));
st_astext(g)
POINT(1 1)
drop table t1;
DROP TABLE IF EXISTS t1;
create table t1(c1 int primary key, g geometry not null srid 0) partition by range(c1) ( partition p0 values less than (4),
partition p1 values less than (10));
create spatial index idx on t1 (g) local;
insert into t1 (c1, g) values (0, st_geomfromtext('point(1 1)'));
insert into t1 (c1, g) values (1, st_geomfromtext('point(1 1)'));
insert into t1 (c1, g) values (2, st_geomfromtext('point(1 1)'));
insert into t1 (c1, g) values (3, st_geomfromtext('point(1 1)'));
insert into t1 (c1, g) values (4, st_geomfromtext('point(1 1)'));
insert into t1 (c1, g) values (5, st_geomfromtext('point(1 1)'));
insert into t1 (c1, g) values (6, st_geomfromtext('point(1 1)'));
insert into t1 (c1, g) values (7, st_geomfromtext('point(1 1)'));
insert into t1 (c1, g) values (8, st_geomfromtext('point(1 1)'));
insert into t1 (c1, g) values (9, st_geomfromtext('point(1 1)'));
explain select /*+index(t1 idx)*/ st_astext(g) from t1 where st_intersects(g, st_geomfromtext('point(1 1)'));
Query Plan
=============================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
-------------------------------------------------------------
|0 |PX COORDINATOR | |10 |565 |
|1 |└─EXCHANGE OUT DISTR |:EX10000|10 |558 |
|2 | └─PX PARTITION ITERATOR| |10 |542 |
|3 | └─TABLE FULL SCAN |t1(idx) |10 |542 |
=============================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(st_astext(t1.g))]), filter(nil)
1 - output([INTERNAL_FUNCTION(st_astext(t1.g))]), filter(nil)
dop=1
2 - output([t1.g]), filter(nil)
force partition granule
3 - output([t1.g]), filter([st_intersects(t1.g, st_geomfromtext('point(1 1)'))])
access([t1.c1], [t1.g]), partitions(p[0-1])
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([t1.__cellid_17], [t1.__mbr_17], [t1.c1]), range(1152921504606846977,MIN,MIN ; 1152921504606846977,MAX,MAX), (1152921504606846980,MIN,MIN
; 1152921504606846980,MAX,MAX), (1152921504606846992,MIN,MIN ; 1152921504606846992,MAX,MAX), (1152921504606847040,MIN,MIN ; 1152921504606847040,MAX,MAX),
(1152921504606847232,MIN,MIN ; 1152921504606847232,MAX,MAX), (1152921504606848000,MIN,MIN ; 1152921504606848000,MAX,MAX), (1152921504606851072,MIN,MIN
; 1152921504606851072,MAX,MAX), (1152921504606863360,MIN,MIN ; 1152921504606863360,MAX,MAX), (1152921504606912512,MIN,MIN ; 1152921504606912512,MAX,MAX),
(1152921504607109120,MIN,MIN ; 1152921504607109120,MAX,MAX), (1152921504607895552,MIN,MIN ; 1152921504607895552,MAX,MAX), (1152921504611041280,MIN,MIN
; 1152921504611041280,MAX,MAX), (1152921504623624192,MIN,MIN ; 1152921504623624192,MAX,MAX), (1152921504673955840,MIN,MIN ; 1152921504673955840,MAX,MAX),
(1152921504875282432,MIN,MIN ; 1152921504875282432,MAX,MAX), (1152921505680588800,MIN,MIN ; 1152921505680588800,MAX,MAX), (1152921508901814272,MIN,MIN
; 1152921508901814272,MAX,MAX), (1152921521786716160,MIN,MIN ; 1152921521786716160,MAX,MAX), (1152921573326323712,MIN,MIN ; 1152921573326323712,MAX,MAX),
(1152921779484753920,MIN,MIN ; 1152921779484753920,MAX,MAX), (1152922604118474752,MIN,MIN ; 1152922604118474752,MAX,MAX), (1152925902653358080,MIN,MIN
; 1152925902653358080,MAX,MAX), (1152939096792891392,MIN,MIN ; 1152939096792891392,MAX,MAX), (1152991873351024640,MIN,MIN ; 1152991873351024640,MAX,MAX),
(1153202979583557632,MIN,MIN ; 1153202979583557632,MAX,MAX), (1154047404513689600,MIN,MIN ; 1154047404513689600,MAX,MAX), (1157425104234217472,MIN,MIN
; 1157425104234217472,MAX,MAX), (1170935903116328960,MIN,MIN ; 1170935903116328960,MAX,MAX), (1224979098644774912,MIN,MIN ; 1224979098644774912,MAX,MAX),
(1441151880758558720,MIN,MIN ; 1441151880758558720,MAX,MAX), (1152921504606846976,MIN,MIN ; 1152921504606846976,MAX,MAX)
select /*+index(t1 idx)*/ st_astext(g) from t1 where st_intersects(g, st_geomfromtext('point(1 1)'));
st_astext(g)
POINT(1 1)
POINT(1 1)
POINT(1 1)
POINT(1 1)
POINT(1 1)
POINT(1 1)
POINT(1 1)
POINT(1 1)
POINT(1 1)
POINT(1 1)
drop table t1;
DROP TABLE IF EXISTS t1;
create table t1(c1 int primary key, g geometry not null srid 0) partition by hash(c1) partitions 2;
create spatial index idx on t1 (g) global;
ERROR 0A000: spatial global index not supported
create spatial index idx on t1 (g);
drop table t1;
DROP TABLE IF EXISTS t1;
create table t1(c1 int primary key, g geometry not null srid 0, spatial index(g) global) partition by hash(c1) partitions 2;
ERROR 0A000: spatial global index not supported
DROP TABLE IF EXISTS t1;
create table t1(c1 int primary key, g geometry not null srid 0, spatial index(g)) partition by hash(c1) partitions 2;
DROP TABLE IF EXISTS t1;
create table t1(c1 int primary key, g geometry not null srid 0, index(g) global) partition by hash(c1) partitions 2;
ERROR 0A000: spatial global index not supported
DROP TABLE IF EXISTS t1;
create table t1(c1 int primary key, g geometry not null srid 0, index(g)) partition by hash(c1) partitions 2;
DROP TABLE IF EXISTS t1;
create table t1(c1 int primary key, g geometry not null srid 0) partition by hash(c1) partitions 2;
alter table t1 add spatial index idx(g);
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
t1 0 PRIMARY 1 c1 A NULL NULL NULL BTREE available YES NULL
t1 1 idx 1 g A NULL NULL NULL SPATIAL available YES NULL
drop index idx on t1;
alter table t1 add spatial index idx(g) global;
ERROR 0A000: spatial global index not supported
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
t1 0 PRIMARY 1 c1 A NULL NULL NULL BTREE available YES NULL
alter table t1 add spatial index idx(g) local;
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
t1 0 PRIMARY 1 c1 A NULL NULL NULL BTREE available YES NULL
t1 1 idx 1 g A NULL NULL NULL SPATIAL available YES NULL
drop index idx on t1;
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
t1 0 PRIMARY 1 c1 A NULL NULL NULL BTREE available YES NULL
create index idx on t1(g);
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
t1 0 PRIMARY 1 c1 A NULL NULL NULL BTREE available YES NULL
t1 1 idx 1 g A NULL NULL NULL SPATIAL available YES NULL
create index idx on t1(g) global;
ERROR 0A000: spatial global index not supported
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
t1 0 PRIMARY 1 c1 A NULL NULL NULL BTREE available YES NULL
t1 1 idx 1 g A NULL NULL NULL SPATIAL available YES NULL
drop index idx on t1;
create index idx on t1(g) local;
show index from t1;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment Visible Expression
t1 0 PRIMARY 1 c1 A NULL NULL NULL BTREE available YES NULL
t1 1 idx 1 g A NULL NULL NULL SPATIAL available YES NULL
drop table t1;
DROP TABLE IF EXISTS geo_maxpt_coords_100y, geo_maxpt_coords_100y_2, aoi_string_limit10;
CREATE TABLE geo_maxpt_coords_100y (
poi_id VARCHAR(128) NOT NULL,
pwkt VARCHAR(128) NOT NULL DEFAULT '0',
geo_pwkt GEOMETRY NOT NULL srid 0,
-- PRIMARY KEY (`id`, k)
SPATIAL INDEX(geo_pwkt)
) PARTITION BY key(poi_id) PARTITIONS 256;
CREATE TABLE geo_maxpt_coords_100y_2 (
poi_id VARCHAR(128) NOT NULL,
pwkt VARCHAR(128) NOT NULL DEFAULT '0',
geo_pwkt GEOMETRY NOT NULL /*!80003 srid 0 */,
SPATIAL INDEX(geo_pwkt)
);
explain select count(*) from geo_maxpt_coords_100y where st_intersects(geo_maxpt_coords_100y.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0));
Query Plan
========================================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
----------------------------------------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |32285 |
|1 |└─PX COORDINATOR | |1 |32285 |
|2 | └─EXCHANGE OUT DISTR |:EX10000 |1 |32285 |
|3 | └─MERGE GROUP BY | |1 |32285 |
|4 | └─PX PARTITION ITERATOR| |1 |32285 |
|5 | └─TABLE FULL SCAN |geo_maxpt_coords_100y(geo_pwkt)|1 |32285 |
========================================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil)
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
1 - output([T_FUN_COUNT(*)]), filter(nil)
2 - output([T_FUN_COUNT(*)]), filter(nil)
dop=1
3 - output([T_FUN_COUNT(*)]), filter(nil)
group(nil), agg_func([T_FUN_COUNT(*)])
4 - output(nil), filter(nil)
force partition granule
5 - output(nil), filter([st_intersects(geo_maxpt_coords_100y.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0))])
access([geo_maxpt_coords_100y.__pk_increment], [geo_maxpt_coords_100y.geo_pwkt]), partitions(p[0-255])
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([geo_maxpt_coords_100y.__cellid_18], [geo_maxpt_coords_100y.__mbr_18], [geo_maxpt_coords_100y.__pk_increment]), range(1152921504606846977,
MIN,MIN ; 1152921504606846983,MAX,MAX), (1152921504606846992,MIN,MIN ; 1152921504606846992,MAX,MAX), (1152921504606847040,MIN,MIN ; 1152921504606847040,
MAX,MAX), (1152921504606847232,MIN,MIN ; 1152921504606847232,MAX,MAX), (1152921504606848000,MIN,MIN ; 1152921504606848000,MAX,MAX), (1152921504606851072,
MIN,MIN ; 1152921504606851072,MAX,MAX), (1152921504606863360,MIN,MIN ; 1152921504606863360,MAX,MAX), (1152921504606912512,MIN,MIN ; 1152921504606912512,
MAX,MAX), (1152921504607109120,MIN,MIN ; 1152921504607109120,MAX,MAX), (1152921504607895552,MIN,MIN ; 1152921504607895552,MAX,MAX), (1152921504611041280,
MIN,MIN ; 1152921504611041280,MAX,MAX), (1152921504623624192,MIN,MIN ; 1152921504623624192,MAX,MAX), (1152921504673955840,MIN,MIN ; 1152921504673955840,
MAX,MAX), (1152921504875282432,MIN,MIN ; 1152921504875282432,MAX,MAX), (1152921505680588800,MIN,MIN ; 1152921505680588800,MAX,MAX), (1152921508901814272,
MIN,MIN ; 1152921508901814272,MAX,MAX), (1152921521786716160,MIN,MIN ; 1152921521786716160,MAX,MAX), (1152921573326323712,MIN,MIN ; 1152921573326323712,
MAX,MAX), (1152921779484753920,MIN,MIN ; 1152921779484753920,MAX,MAX), (1152922604118474752,MIN,MIN ; 1152922604118474752,MAX,MAX), (1152925902653358080,
MIN,MIN ; 1152925902653358080,MAX,MAX), (1152939096792891392,MIN,MIN ; 1152939096792891392,MAX,MAX), (1152991873351024640,MIN,MIN ; 1152991873351024640,
MAX,MAX), (1153202979583557632,MIN,MIN ; 1153202979583557632,MAX,MAX), (1154047404513689600,MIN,MIN ; 1154047404513689600,MAX,MAX), (1157425104234217472,
MIN,MIN ; 1157425104234217472,MAX,MAX), (1170935903116328960,MIN,MIN ; 1170935903116328960,MAX,MAX), (1224979098644774912,MIN,MIN ; 1224979098644774912,
MAX,MAX), (1441151880758558720,MIN,MIN ; 1441151880758558720,MAX,MAX), (1152921504606846976,MIN,MIN ; 1152921504606846976,MAX,MAX)
explain select /*+ parallel(1) */ count(*) from geo_maxpt_coords_100y where st_intersects(geo_maxpt_coords_100y.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0));
Query Plan
========================================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
----------------------------------------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |32285 |
|1 |└─PX COORDINATOR | |1 |32285 |
|2 | └─EXCHANGE OUT DISTR |:EX10000 |1 |32285 |
|3 | └─MERGE GROUP BY | |1 |32285 |
|4 | └─PX PARTITION ITERATOR| |1 |32285 |
|5 | └─TABLE FULL SCAN |geo_maxpt_coords_100y(geo_pwkt)|1 |32285 |
========================================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil)
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
1 - output([T_FUN_COUNT(*)]), filter(nil)
2 - output([T_FUN_COUNT(*)]), filter(nil)
dop=1
3 - output([T_FUN_COUNT(*)]), filter(nil)
group(nil), agg_func([T_FUN_COUNT(*)])
4 - output(nil), filter(nil)
force partition granule
5 - output(nil), filter([st_intersects(geo_maxpt_coords_100y.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0))])
access([geo_maxpt_coords_100y.__pk_increment], [geo_maxpt_coords_100y.geo_pwkt]), partitions(p[0-255])
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([geo_maxpt_coords_100y.__cellid_18], [geo_maxpt_coords_100y.__mbr_18], [geo_maxpt_coords_100y.__pk_increment]), range(1152921504606846977,
MIN,MIN ; 1152921504606846983,MAX,MAX), (1152921504606846992,MIN,MIN ; 1152921504606846992,MAX,MAX), (1152921504606847040,MIN,MIN ; 1152921504606847040,
MAX,MAX), (1152921504606847232,MIN,MIN ; 1152921504606847232,MAX,MAX), (1152921504606848000,MIN,MIN ; 1152921504606848000,MAX,MAX), (1152921504606851072,
MIN,MIN ; 1152921504606851072,MAX,MAX), (1152921504606863360,MIN,MIN ; 1152921504606863360,MAX,MAX), (1152921504606912512,MIN,MIN ; 1152921504606912512,
MAX,MAX), (1152921504607109120,MIN,MIN ; 1152921504607109120,MAX,MAX), (1152921504607895552,MIN,MIN ; 1152921504607895552,MAX,MAX), (1152921504611041280,
MIN,MIN ; 1152921504611041280,MAX,MAX), (1152921504623624192,MIN,MIN ; 1152921504623624192,MAX,MAX), (1152921504673955840,MIN,MIN ; 1152921504673955840,
MAX,MAX), (1152921504875282432,MIN,MIN ; 1152921504875282432,MAX,MAX), (1152921505680588800,MIN,MIN ; 1152921505680588800,MAX,MAX), (1152921508901814272,
MIN,MIN ; 1152921508901814272,MAX,MAX), (1152921521786716160,MIN,MIN ; 1152921521786716160,MAX,MAX), (1152921573326323712,MIN,MIN ; 1152921573326323712,
MAX,MAX), (1152921779484753920,MIN,MIN ; 1152921779484753920,MAX,MAX), (1152922604118474752,MIN,MIN ; 1152922604118474752,MAX,MAX), (1152925902653358080,
MIN,MIN ; 1152925902653358080,MAX,MAX), (1152939096792891392,MIN,MIN ; 1152939096792891392,MAX,MAX), (1152991873351024640,MIN,MIN ; 1152991873351024640,
MAX,MAX), (1153202979583557632,MIN,MIN ; 1153202979583557632,MAX,MAX), (1154047404513689600,MIN,MIN ; 1154047404513689600,MAX,MAX), (1157425104234217472,
MIN,MIN ; 1157425104234217472,MAX,MAX), (1170935903116328960,MIN,MIN ; 1170935903116328960,MAX,MAX), (1224979098644774912,MIN,MIN ; 1224979098644774912,
MAX,MAX), (1441151880758558720,MIN,MIN ; 1441151880758558720,MAX,MAX), (1152921504606846976,MIN,MIN ; 1152921504606846976,MAX,MAX)
explain select /*+ parallel(3) */ count(*) from geo_maxpt_coords_100y where st_intersects(geo_maxpt_coords_100y.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0));
Query Plan
========================================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
----------------------------------------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |32285 |
|1 |└─PX COORDINATOR | |1 |32285 |
|2 | └─EXCHANGE OUT DISTR |:EX10000 |1 |32285 |
|3 | └─MERGE GROUP BY | |1 |32285 |
|4 | └─PX PARTITION ITERATOR| |1 |32285 |
|5 | └─TABLE FULL SCAN |geo_maxpt_coords_100y(geo_pwkt)|1 |32285 |
========================================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT_SUM(T_FUN_COUNT(*))]), filter(nil)
group(nil), agg_func([T_FUN_COUNT_SUM(T_FUN_COUNT(*))])
1 - output([T_FUN_COUNT(*)]), filter(nil)
2 - output([T_FUN_COUNT(*)]), filter(nil)
dop=1
3 - output([T_FUN_COUNT(*)]), filter(nil)
group(nil), agg_func([T_FUN_COUNT(*)])
4 - output(nil), filter(nil)
force partition granule
5 - output(nil), filter([st_intersects(geo_maxpt_coords_100y.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0))])
access([geo_maxpt_coords_100y.__pk_increment], [geo_maxpt_coords_100y.geo_pwkt]), partitions(p[0-255])
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([geo_maxpt_coords_100y.__cellid_18], [geo_maxpt_coords_100y.__mbr_18], [geo_maxpt_coords_100y.__pk_increment]), range(1152921504606846977,
MIN,MIN ; 1152921504606846983,MAX,MAX), (1152921504606846992,MIN,MIN ; 1152921504606846992,MAX,MAX), (1152921504606847040,MIN,MIN ; 1152921504606847040,
MAX,MAX), (1152921504606847232,MIN,MIN ; 1152921504606847232,MAX,MAX), (1152921504606848000,MIN,MIN ; 1152921504606848000,MAX,MAX), (1152921504606851072,
MIN,MIN ; 1152921504606851072,MAX,MAX), (1152921504606863360,MIN,MIN ; 1152921504606863360,MAX,MAX), (1152921504606912512,MIN,MIN ; 1152921504606912512,
MAX,MAX), (1152921504607109120,MIN,MIN ; 1152921504607109120,MAX,MAX), (1152921504607895552,MIN,MIN ; 1152921504607895552,MAX,MAX), (1152921504611041280,
MIN,MIN ; 1152921504611041280,MAX,MAX), (1152921504623624192,MIN,MIN ; 1152921504623624192,MAX,MAX), (1152921504673955840,MIN,MIN ; 1152921504673955840,
MAX,MAX), (1152921504875282432,MIN,MIN ; 1152921504875282432,MAX,MAX), (1152921505680588800,MIN,MIN ; 1152921505680588800,MAX,MAX), (1152921508901814272,
MIN,MIN ; 1152921508901814272,MAX,MAX), (1152921521786716160,MIN,MIN ; 1152921521786716160,MAX,MAX), (1152921573326323712,MIN,MIN ; 1152921573326323712,
MAX,MAX), (1152921779484753920,MIN,MIN ; 1152921779484753920,MAX,MAX), (1152922604118474752,MIN,MIN ; 1152922604118474752,MAX,MAX), (1152925902653358080,
MIN,MIN ; 1152925902653358080,MAX,MAX), (1152939096792891392,MIN,MIN ; 1152939096792891392,MAX,MAX), (1152991873351024640,MIN,MIN ; 1152991873351024640,
MAX,MAX), (1153202979583557632,MIN,MIN ; 1153202979583557632,MAX,MAX), (1154047404513689600,MIN,MIN ; 1154047404513689600,MAX,MAX), (1157425104234217472,
MIN,MIN ; 1157425104234217472,MAX,MAX), (1170935903116328960,MIN,MIN ; 1170935903116328960,MAX,MAX), (1224979098644774912,MIN,MIN ; 1224979098644774912,
MAX,MAX), (1441151880758558720,MIN,MIN ; 1441151880758558720,MAX,MAX), (1152921504606846976,MIN,MIN ; 1152921504606846976,MAX,MAX)
explain select count(*) from geo_maxpt_coords_100y_2 where st_intersects(geo_maxpt_coords_100y_2.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0));
Query Plan
==============================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |155 |
|1 |└─TABLE FULL SCAN|geo_maxpt_coords_100y_2(geo_pwkt)|1 |155 |
==============================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(*)]), filter(nil)
group(nil), agg_func([T_FUN_COUNT(*)])
1 - output(nil), filter([st_intersects(geo_maxpt_coords_100y_2.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0))])
access([geo_maxpt_coords_100y_2.__pk_increment], [geo_maxpt_coords_100y_2.geo_pwkt]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([geo_maxpt_coords_100y_2.__cellid_18], [geo_maxpt_coords_100y_2.__mbr_18], [geo_maxpt_coords_100y_2.__pk_increment]), range(1152921504606846977,
MIN,MIN ; 1152921504606846983,MAX,MAX), (1152921504606846992,MIN,MIN ; 1152921504606846992,MAX,MAX), (1152921504606847040,MIN,MIN ; 1152921504606847040,
MAX,MAX), (1152921504606847232,MIN,MIN ; 1152921504606847232,MAX,MAX), (1152921504606848000,MIN,MIN ; 1152921504606848000,MAX,MAX), (1152921504606851072,
MIN,MIN ; 1152921504606851072,MAX,MAX), (1152921504606863360,MIN,MIN ; 1152921504606863360,MAX,MAX), (1152921504606912512,MIN,MIN ; 1152921504606912512,
MAX,MAX), (1152921504607109120,MIN,MIN ; 1152921504607109120,MAX,MAX), (1152921504607895552,MIN,MIN ; 1152921504607895552,MAX,MAX), (1152921504611041280,
MIN,MIN ; 1152921504611041280,MAX,MAX), (1152921504623624192,MIN,MIN ; 1152921504623624192,MAX,MAX), (1152921504673955840,MIN,MIN ; 1152921504673955840,
MAX,MAX), (1152921504875282432,MIN,MIN ; 1152921504875282432,MAX,MAX), (1152921505680588800,MIN,MIN ; 1152921505680588800,MAX,MAX), (1152921508901814272,
MIN,MIN ; 1152921508901814272,MAX,MAX), (1152921521786716160,MIN,MIN ; 1152921521786716160,MAX,MAX), (1152921573326323712,MIN,MIN ; 1152921573326323712,
MAX,MAX), (1152921779484753920,MIN,MIN ; 1152921779484753920,MAX,MAX), (1152922604118474752,MIN,MIN ; 1152922604118474752,MAX,MAX), (1152925902653358080,
MIN,MIN ; 1152925902653358080,MAX,MAX), (1152939096792891392,MIN,MIN ; 1152939096792891392,MAX,MAX), (1152991873351024640,MIN,MIN ; 1152991873351024640,
MAX,MAX), (1153202979583557632,MIN,MIN ; 1153202979583557632,MAX,MAX), (1154047404513689600,MIN,MIN ; 1154047404513689600,MAX,MAX), (1157425104234217472,
MIN,MIN ; 1157425104234217472,MAX,MAX), (1170935903116328960,MIN,MIN ; 1170935903116328960,MAX,MAX), (1224979098644774912,MIN,MIN ; 1224979098644774912,
MAX,MAX), (1441151880758558720,MIN,MIN ; 1441151880758558720,MAX,MAX), (1152921504606846976,MIN,MIN ; 1152921504606846976,MAX,MAX)
explain select /*+ parallel(1) */ count(*) from geo_maxpt_coords_100y_2 where st_intersects(geo_maxpt_coords_100y_2.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0));
Query Plan
==============================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |155 |
|1 |└─TABLE FULL SCAN|geo_maxpt_coords_100y_2(geo_pwkt)|1 |155 |
==============================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(*)]), filter(nil)
group(nil), agg_func([T_FUN_COUNT(*)])
1 - output(nil), filter([st_intersects(geo_maxpt_coords_100y_2.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0))])
access([geo_maxpt_coords_100y_2.__pk_increment], [geo_maxpt_coords_100y_2.geo_pwkt]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([geo_maxpt_coords_100y_2.__cellid_18], [geo_maxpt_coords_100y_2.__mbr_18], [geo_maxpt_coords_100y_2.__pk_increment]), range(1152921504606846977,
MIN,MIN ; 1152921504606846983,MAX,MAX), (1152921504606846992,MIN,MIN ; 1152921504606846992,MAX,MAX), (1152921504606847040,MIN,MIN ; 1152921504606847040,
MAX,MAX), (1152921504606847232,MIN,MIN ; 1152921504606847232,MAX,MAX), (1152921504606848000,MIN,MIN ; 1152921504606848000,MAX,MAX), (1152921504606851072,
MIN,MIN ; 1152921504606851072,MAX,MAX), (1152921504606863360,MIN,MIN ; 1152921504606863360,MAX,MAX), (1152921504606912512,MIN,MIN ; 1152921504606912512,
MAX,MAX), (1152921504607109120,MIN,MIN ; 1152921504607109120,MAX,MAX), (1152921504607895552,MIN,MIN ; 1152921504607895552,MAX,MAX), (1152921504611041280,
MIN,MIN ; 1152921504611041280,MAX,MAX), (1152921504623624192,MIN,MIN ; 1152921504623624192,MAX,MAX), (1152921504673955840,MIN,MIN ; 1152921504673955840,
MAX,MAX), (1152921504875282432,MIN,MIN ; 1152921504875282432,MAX,MAX), (1152921505680588800,MIN,MIN ; 1152921505680588800,MAX,MAX), (1152921508901814272,
MIN,MIN ; 1152921508901814272,MAX,MAX), (1152921521786716160,MIN,MIN ; 1152921521786716160,MAX,MAX), (1152921573326323712,MIN,MIN ; 1152921573326323712,
MAX,MAX), (1152921779484753920,MIN,MIN ; 1152921779484753920,MAX,MAX), (1152922604118474752,MIN,MIN ; 1152922604118474752,MAX,MAX), (1152925902653358080,
MIN,MIN ; 1152925902653358080,MAX,MAX), (1152939096792891392,MIN,MIN ; 1152939096792891392,MAX,MAX), (1152991873351024640,MIN,MIN ; 1152991873351024640,
MAX,MAX), (1153202979583557632,MIN,MIN ; 1153202979583557632,MAX,MAX), (1154047404513689600,MIN,MIN ; 1154047404513689600,MAX,MAX), (1157425104234217472,
MIN,MIN ; 1157425104234217472,MAX,MAX), (1170935903116328960,MIN,MIN ; 1170935903116328960,MAX,MAX), (1224979098644774912,MIN,MIN ; 1224979098644774912,
MAX,MAX), (1441151880758558720,MIN,MIN ; 1441151880758558720,MAX,MAX), (1152921504606846976,MIN,MIN ; 1152921504606846976,MAX,MAX)
explain select /*+ parallel(3) */ count(*) from geo_maxpt_coords_100y_2 where st_intersects(geo_maxpt_coords_100y_2.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0));
Query Plan
==============================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
------------------------------------------------------------------------------
|0 |SCALAR GROUP BY | |1 |155 |
|1 |└─TABLE FULL SCAN|geo_maxpt_coords_100y_2(geo_pwkt)|1 |155 |
==============================================================================
Outputs & filters:
-------------------------------------
0 - output([T_FUN_COUNT(*)]), filter(nil)
group(nil), agg_func([T_FUN_COUNT(*)])
1 - output(nil), filter([st_intersects(geo_maxpt_coords_100y_2.geo_pwkt, st_geomfromtext('polygon((0 0,5 0,5 5,0 5,0 0))', 0))])
access([geo_maxpt_coords_100y_2.__pk_increment], [geo_maxpt_coords_100y_2.geo_pwkt]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([geo_maxpt_coords_100y_2.__cellid_18], [geo_maxpt_coords_100y_2.__mbr_18], [geo_maxpt_coords_100y_2.__pk_increment]), range(1152921504606846977,
MIN,MIN ; 1152921504606846983,MAX,MAX), (1152921504606846992,MIN,MIN ; 1152921504606846992,MAX,MAX), (1152921504606847040,MIN,MIN ; 1152921504606847040,
MAX,MAX), (1152921504606847232,MIN,MIN ; 1152921504606847232,MAX,MAX), (1152921504606848000,MIN,MIN ; 1152921504606848000,MAX,MAX), (1152921504606851072,
MIN,MIN ; 1152921504606851072,MAX,MAX), (1152921504606863360,MIN,MIN ; 1152921504606863360,MAX,MAX), (1152921504606912512,MIN,MIN ; 1152921504606912512,
MAX,MAX), (1152921504607109120,MIN,MIN ; 1152921504607109120,MAX,MAX), (1152921504607895552,MIN,MIN ; 1152921504607895552,MAX,MAX), (1152921504611041280,
MIN,MIN ; 1152921504611041280,MAX,MAX), (1152921504623624192,MIN,MIN ; 1152921504623624192,MAX,MAX), (1152921504673955840,MIN,MIN ; 1152921504673955840,
MAX,MAX), (1152921504875282432,MIN,MIN ; 1152921504875282432,MAX,MAX), (1152921505680588800,MIN,MIN ; 1152921505680588800,MAX,MAX), (1152921508901814272,
MIN,MIN ; 1152921508901814272,MAX,MAX), (1152921521786716160,MIN,MIN ; 1152921521786716160,MAX,MAX), (1152921573326323712,MIN,MIN ; 1152921573326323712,
MAX,MAX), (1152921779484753920,MIN,MIN ; 1152921779484753920,MAX,MAX), (1152922604118474752,MIN,MIN ; 1152922604118474752,MAX,MAX), (1152925902653358080,
MIN,MIN ; 1152925902653358080,MAX,MAX), (1152939096792891392,MIN,MIN ; 1152939096792891392,MAX,MAX), (1152991873351024640,MIN,MIN ; 1152991873351024640,
MAX,MAX), (1153202979583557632,MIN,MIN ; 1153202979583557632,MAX,MAX), (1154047404513689600,MIN,MIN ; 1154047404513689600,MAX,MAX), (1157425104234217472,
MIN,MIN ; 1157425104234217472,MAX,MAX), (1170935903116328960,MIN,MIN ; 1170935903116328960,MAX,MAX), (1224979098644774912,MIN,MIN ; 1224979098644774912,
MAX,MAX), (1441151880758558720,MIN,MIN ; 1441151880758558720,MAX,MAX), (1152921504606846976,MIN,MIN ; 1152921504606846976,MAX,MAX)

View File

@ -0,0 +1,203 @@
# ----------------------------------------------------------------------
# Base test of GEOMETRY tyoe.
# ----------------------------------------------------------------------
# Creating the spatial objects
DROP TABLE IF EXISTS gis_point,gis_linestring,gis_polygon,gis_multi_point,
gis_multi_linestring,gis_multi_polygon,gis_geometrycollection,gis_geometry;
CREATE TABLE gis_point (fid INTEGER NOT NULL PRIMARY KEY, g POINT);
CREATE TABLE gis_linestring (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING);
CREATE TABLE gis_polygon (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON);
CREATE TABLE gis_multi_point (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT);
CREATE TABLE gis_multi_linestring (fid INTEGER NOT NULL PRIMARY KEY, g MULTILINESTRING);
CREATE TABLE gis_multi_polygon (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOLYGON);
CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRYCOLLECTION);
CREATE TABLE gis_geometry (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY);
# Displaying the created spatial columns
SHOW FIELDS FROM gis_point;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g point YES NULL
SHOW COLUMNS FROM gis_point;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g point YES NULL
SHOW FIELDS FROM gis_linestring;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g linestring YES NULL
SHOW COLUMNS FROM gis_linestring;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g linestring YES NULL
SHOW FIELDS FROM gis_polygon;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g polygon YES NULL
SHOW COLUMNS FROM gis_polygon;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g polygon YES NULL
SHOW FIELDS FROM gis_multi_point;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g multipoint YES NULL
SHOW COLUMNS FROM gis_multi_point;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g multipoint YES NULL
SHOW FIELDS FROM gis_multi_linestring;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g multilinestring YES NULL
SHOW COLUMNS FROM gis_multi_linestring;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g multilinestring YES NULL
SHOW FIELDS FROM gis_multi_polygon;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g multipolygon YES NULL
SHOW COLUMNS FROM gis_multi_polygon;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g multipolygon YES NULL
SHOW FIELDS FROM gis_geometrycollection;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g geomcollection YES NULL
SHOW COLUMNS FROM gis_geometrycollection;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g geomcollection YES NULL
SHOW FIELDS FROM gis_geometry;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g geometry YES NULL
SHOW COLUMNS FROM gis_geometry;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g geometry YES NULL
# Inserting POINT Geometry Values
# Check the parent class hierarchy by inserting all values to the GEOMETRY parent class.
INSERT INTO gis_geometry SELECT * FROM gis_point;
INSERT INTO gis_geometry SELECT * FROM gis_linestring;
INSERT INTO gis_geometry SELECT * FROM gis_polygon;
INSERT INTO gis_geometry SELECT * FROM gis_multi_point;
INSERT INTO gis_geometry SELECT * FROM gis_multi_linestring;
INSERT INTO gis_geometry SELECT * FROM gis_multi_polygon;
INSERT INTO gis_geometry SELECT * FROM gis_geometrycollection;
# Checking the integrity of the above insert statements
SELECT COUNT(g) FROM gis_geometry;
COUNT(g)
0
# Displaying the created spatial columns
SHOW FIELDS FROM gis_point;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g point YES NULL
SHOW FIELDS FROM gis_linestring;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g linestring YES NULL
SHOW FIELDS FROM gis_polygon;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g polygon YES NULL
SHOW FIELDS FROM gis_multi_point;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g multipoint YES NULL
SHOW FIELDS FROM gis_multi_linestring;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g multilinestring YES NULL
SHOW FIELDS FROM gis_multi_polygon;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g multipolygon YES NULL
SHOW FIELDS FROM gis_geometrycollection;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g geomcollection YES NULL
SHOW FIELDS FROM gis_geometry;
Field Type Null Key Default Extra
fid int(11) NO PRI NULL
g geometry YES NULL
# Analyzing the spatial objets
# Check DDL functionality on GIS datatypes
DROP TABLE IF EXISTS tab;
CREATE TABLE tab(c1 POINT, c2 LINESTRING, c3 POLYGON, c4 MULTIPOINT,
c5 MULTILINESTRING, c6 MULTIPOLYGON, c7 GEOMETRYCOLLECTION, c8 GEOMETRY);
SELECT sc.COLUMN_NAME, sc.ORDINAL_POSITION, sc.DATA_TYPE, sc.COLUMN_TYPE
FROM information_schema.columns sc INNER JOIN information_schema.tables st
ON sc.TABLE_NAME=st.TABLE_NAME WHERE st.TABLE_NAME='tab' ORDER BY sc.COLUMN_NAME;
COLUMN_NAME ORDINAL_POSITION DATA_TYPE COLUMN_TYPE
c1 1 point point
c2 2 linestring linestring
c3 3 polygon polygon
c4 4 multipoint multipoint
c5 5 multilinestring multilinestring
c6 6 multipolygon multipolygon
c7 7 geomcollection geomcollection
c8 8 geometry geometry
SET @c1 = ST_GEOMFROMTEXT('POINT(10 10)');
SET @c2 = ST_GEOMFROMTEXT('LINESTRING(10 10,20 20,30 30)');
SET @c3 = ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))');
SET @c4 = ST_GEOMFROMTEXT('MULTIPOINT(0 0,5 5,10 10,20 20)');
SET @c5 = ST_GEOMFROMTEXT('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))');
SET @c6 = ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))');
SET @c7 = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))');
SET @c8 = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(2 2, 3 3))');
# Insert the spatial values
INSERT INTO tab VALUES (@c1, @c2, @c3, @c4, @c5, @c6, @c7, @c8);
# Check the above inserted values
SELECT ST_ASTEXT(c1), ST_ASTEXT(c2), ST_ASTEXT(c3), ST_ASTEXT(c4), ST_ASTEXT(c5), ST_ASTEXT(c6), ST_ASTEXT(c7), ST_ASTEXT(c8) FROM tab;
ST_ASTEXT(c1) ST_ASTEXT(c2) ST_ASTEXT(c3) ST_ASTEXT(c4) ST_ASTEXT(c5) ST_ASTEXT(c6) ST_ASTEXT(c7) ST_ASTEXT(c8)
POINT(10 10) LINESTRING(10 10,20 20,30 30) POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)) MULTIPOINT((0 0),(5 5),(10 10),(20 20)) MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30)) MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))) GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10)) GEOMETRYCOLLECTION(POINT(1 1),LINESTRING(2 2,3 3))
# Cleanup the table
TRUNCATE TABLE tab;
# Create another table same as tab
DROP TABLE IF EXISTS tab2;
CREATE TABLE tab2 AS SELECT * FROM tab;
# Check the table definition
SHOW CREATE TABLE tab2;
Table Create Table
tab2 CREATE TABLE `tab2` (
`c1` point DEFAULT NULL,
`c2` linestring DEFAULT NULL,
`c3` polygon DEFAULT NULL,
`c4` multipoint DEFAULT NULL,
`c5` multilinestring DEFAULT NULL,
`c6` multipolygon DEFAULT NULL,
`c7` geomcollection DEFAULT NULL,
`c8` geometry DEFAULT NULL
) DEFAULT CHARSET = utf8mb4 ROW_FORMAT = DYNAMIC COMPRESSION = 'zstd_1.3.8' REPLICA_NUM = 1 BLOCK_SIZE = 16384 USE_BLOOM_FILTER = FALSE TABLET_SIZE = 134217728 PCTFREE = 0
# Create a tigger and populate the values into tab2
CREATE TRIGGER geom_trigger AFTER INSERT ON tab
FOR EACH ROW
BEGIN
INSERT INTO tab2 VALUES (@c1, @c2, @c3, @c4, @c5, @c6, @c7, @c8);
END|
SET @c1 = ST_GEOMFROMTEXT('POINT(10 10)');
SET @c2 = ST_GEOMFROMTEXT('LINESTRING(10 10,20 20,30 30)');
SET @c3 = ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))');
SET @c4 = ST_GEOMFROMTEXT('MULTIPOINT(0 0,5 5,10 10,20 20)');
SET @c5 = ST_GEOMFROMTEXT('MULTILINESTRING((1 1,2 2,3 3),(10 10,20 20,30 30))');
SET @c6 = ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))');
SET @c7 = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))');
SET @c8 = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(2 2, 3 3))');
# Insert the spatial values
# Check the values whether populated
# Cleaning up the trigger
DROP TRIGGER geom_trigger;
# Final cleanup
DROP TABLE gis_point;
DROP TABLE gis_linestring;
DROP TABLE gis_polygon;
DROP TABLE gis_multi_point;
DROP TABLE gis_multi_linestring;
DROP TABLE gis_multi_polygon;
DROP TABLE gis_geometrycollection;
DROP TABLE gis_geometry;
DROP TABLE tab;
DROP TABLE tab2;

View File

@ -0,0 +1,328 @@
# ----------------------------------------------------------------------
# Test of GEOMETRY NLJ JOIN.
# ----------------------------------------------------------------------
drop table if exists tgnoindex1, tgnoindex2, tgeom1, tgeom2, ptgeom1, ptgeom2;
create table tgnoindex1(g1 geometry not null srid 4326);
create table tgnoindex2(g2 geometry not null srid 4326);
insert into tgnoindex1 values(ST_GeomFromText('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))', 4326));
insert into tgnoindex1 values(ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326));
insert into tgnoindex1 values(ST_GeomFromText('POLYGON((0 0, 15 0, 15 15, 0 15, 0 0))', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into tgnoindex2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
select st_astext(tgnoindex1.g1),st_astext(tgnoindex2.g2) from tgnoindex1, tgnoindex2 where st_intersects(tgnoindex1.g1, tgnoindex2.g2);
st_astext(tgnoindex1.g1) st_astext(tgnoindex2.g2)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
explain extended_noaddr select * from tgnoindex1, tgnoindex2 where st_intersects(tgnoindex1.g1, tgnoindex2.g2);
Query Plan
=========================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
---------------------------------------------------------
|0 |NESTED-LOOP JOIN | |8 |582 |
|1 |├─TABLE FULL SCAN |tgnoindex2|10 |3 |
|2 |└─MATERIAL | |3 |3 |
|3 | └─TABLE FULL SCAN|tgnoindex1|3 |3 |
=========================================================
Outputs & filters:
-------------------------------------
0 - output([tgnoindex1.g1], [tgnoindex2.g2]), filter(nil)
conds([BOOL(st_intersects(tgnoindex1.g1, tgnoindex2.g2))]), nl_params_(nil), use_batch=false
1 - output([tgnoindex2.g2]), filter(nil)
access([tgnoindex2.g2]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([tgnoindex2.__pk_increment]), range(MIN ; MAX)always true
2 - output([tgnoindex1.g1]), filter(nil)
3 - output([tgnoindex1.g1]), filter(nil)
access([tgnoindex1.g1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([tgnoindex1.__pk_increment]), range(MIN ; MAX)always true
Used Hint:
-------------------------------------
/*+
*/
Qb name trace:
-------------------------------------
stmt_id:0, stmt_type:T_EXPLAIN
stmt_id:1, SEL$1
Outline Data:
-------------------------------------
/*+
BEGIN_OUTLINE_DATA
LEADING(@"SEL$1" ("test"."tgnoindex2"@"SEL$1" "test"."tgnoindex1"@"SEL$1"))
USE_NL(@"SEL$1" "test"."tgnoindex1"@"SEL$1")
USE_NL_MATERIALIZATION(@"SEL$1" "test"."tgnoindex1"@"SEL$1")
FULL(@"SEL$1" "test"."tgnoindex2"@"SEL$1")
FULL(@"SEL$1" "test"."tgnoindex1"@"SEL$1")
OPTIMIZER_FEATURES_ENABLE('4.0.0.0')
END_OUTLINE_DATA
*/
Optimization Info:
-------------------------------------
tgnoindex2:
table_rows:10
physical_range_rows:10
logical_range_rows:10
index_back_rows:0
output_rows:10
table_dop:1
dop_method:Table DOP
avaiable_index_name:[tgnoindex2]
stats version:0
dynamic sampling level:1
tgnoindex1:
table_rows:3
physical_range_rows:3
logical_range_rows:3
index_back_rows:0
output_rows:3
table_dop:1
dop_method:Table DOP
avaiable_index_name:[tgnoindex1]
stats version:0
dynamic sampling level:1
Plan Type:
LOCAL
Note:
Degree of Parallelisim is 1 because of table property
create table tgeom1(g1 geometry not null srid 4326);
create index gidx1 on tgeom1(g1);
create table tgeom2(g2 geometry not null srid 4326);
create index gidx2 on tgeom2(g2);
insert into tgeom1 values(ST_GeomFromText('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))', 4326));
insert into tgeom1 values(ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326));
insert into tgeom1 values(ST_GeomFromText('POLYGON((0 0, 15 0, 15 15, 0 15, 0 0))', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into tgeom2 values(ST_GEOMFROMTEXT('POINT(12 12)', 4326));
select st_astext(tgeom1.g1),st_astext(tgeom2.g2) from tgeom1, tgeom2 where st_intersects(tgeom1.g1, tgeom2.g2);
st_astext(tgeom1.g1) st_astext(tgeom2.g2)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
explain extended_noaddr select * from tgeom1, tgeom2 where st_intersects(tgeom1.g1, tgeom2.g2);
Query Plan
======================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
----------------------------------------------------------------------
|0 |NESTED-LOOP JOIN | |8 |108 |
|1 |├─TABLE FULL SCAN |tgeom1 |3 |3 |
|2 |└─DISTRIBUTED TABLE FULL SCAN|tgeom2(gidx2)|3 |35 |
======================================================================
Outputs & filters:
-------------------------------------
0 - output([tgeom1.g1], [tgeom2.g2]), filter(nil)
conds(nil), nl_params_([tgeom1.g1(:0)]), use_batch=false
1 - output([tgeom1.g1]), filter(nil)
access([tgeom1.g1]), partitions(p0)
is_index_back=false, is_global_index=false,
range_key([tgeom1.__pk_increment]), range(MIN ; MAX)always true
2 - output([tgeom2.g2]), filter([BOOL(st_intersects(:0, tgeom2.g2))])
access([tgeom2.__pk_increment], [tgeom2.g2]), partitions(p0)
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([tgeom2.__cellid_16], [tgeom2.__mbr_16], [tgeom2.__pk_increment]), range(MIN ; MAX)
Used Hint:
-------------------------------------
/*+
*/
Qb name trace:
-------------------------------------
stmt_id:0, stmt_type:T_EXPLAIN
stmt_id:1, SEL$1
Outline Data:
-------------------------------------
/*+
BEGIN_OUTLINE_DATA
LEADING(@"SEL$1" ("test"."tgeom1"@"SEL$1" "test"."tgeom2"@"SEL$1"))
USE_NL(@"SEL$1" "test"."tgeom2"@"SEL$1")
FULL(@"SEL$1" "test"."tgeom1"@"SEL$1")
INDEX(@"SEL$1" "test"."tgeom2"@"SEL$1" "gidx2")
USE_DAS(@"SEL$1" "test"."tgeom2"@"SEL$1")
OPTIMIZER_FEATURES_ENABLE('4.0.0.0')
END_OUTLINE_DATA
*/
Optimization Info:
-------------------------------------
tgeom1:
table_rows:3
physical_range_rows:3
logical_range_rows:3
index_back_rows:0
output_rows:3
table_dop:1
dop_method:Table DOP
avaiable_index_name:[gidx1, tgeom1]
pruned_index_name:[gidx1]
stats version:0
dynamic sampling level:1
tgeom2:
table_rows:10
physical_range_rows:2
logical_range_rows:2
index_back_rows:2
output_rows:2
table_dop:1
dop_method:DAS DOP
avaiable_index_name:[gidx2, tgeom2]
stats version:0
dynamic sampling level:1
Plan Type:
LOCAL
Note:
Degree of Parallelisim is 1 because of table property
create table ptgeom1(c1 int, g1 geometry not null srid 4326) partition by hash(c1) partitions 3;
create index pgidx1 on ptgeom1(g1) local;
create table ptgeom2(c2 int, g2 geometry not null srid 4326) partition by hash(c2) partitions 3;
create index pgidx2 on ptgeom2(g2) local;
insert into ptgeom1 values(1, ST_GeomFromText('POLYGON((0 0, 5 0, 5 5, 0 5, 0 0))', 4326));
insert into ptgeom1 values(2, ST_GeomFromText('POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))', 4326));
insert into ptgeom1 values(3, ST_GeomFromText('POLYGON((0 0, 15 0, 15 15, 0 15, 0 0))', 4326));
insert into ptgeom2 values(1, ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into ptgeom2 values(2, ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into ptgeom2 values(3, ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into ptgeom2 values(4, ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into ptgeom2 values(5, ST_GEOMFROMTEXT('POINT(6 6)', 4326));
insert into ptgeom2 values(6, ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into ptgeom2 values(7, ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into ptgeom2 values(8, ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into ptgeom2 values(9, ST_GEOMFROMTEXT('POINT(12 12)', 4326));
insert into ptgeom2 values(10, ST_GEOMFROMTEXT('POINT(12 12)', 4326));
select st_astext(ptgeom1.g1),st_astext(ptgeom2.g2) from ptgeom1, ptgeom2 where st_intersects(ptgeom1.g1, ptgeom2.g2) order by c1,c2;
st_astext(ptgeom1.g1) st_astext(ptgeom2.g2)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,10 0,10 10,0 10,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(6 6)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
POLYGON((0 0,15 0,15 15,0 15,0 0)) POINT(12 12)
explain extended_noaddr select * from ptgeom1, ptgeom2 where st_intersects(ptgeom1.g1, ptgeom2.g2);
Query Plan
============================================================================
|ID|OPERATOR |NAME |EST.ROWS|EST.TIME(us)|
----------------------------------------------------------------------------
|0 |PX COORDINATOR | |8 |275 |
|1 |└─EXCHANGE OUT DISTR |:EX10000 |8 |262 |
|2 | └─NESTED-LOOP JOIN | |8 |233 |
|3 | ├─PX PARTITION ITERATOR | |3 |7 |
|4 | │ └─TABLE FULL SCAN |ptgeom1 |3 |7 |
|5 | └─DISTRIBUTED TABLE FULL SCAN|ptgeom2(pgidx2)|3 |75 |
============================================================================
Outputs & filters:
-------------------------------------
0 - output([INTERNAL_FUNCTION(ptgeom1.c1, ptgeom1.g1, ptgeom2.c2, ptgeom2.g2)]), filter(nil)
1 - output([INTERNAL_FUNCTION(ptgeom1.c1, ptgeom1.g1, ptgeom2.c2, ptgeom2.g2)]), filter(nil)
dop=1
2 - output([ptgeom1.g1], [ptgeom1.c1], [ptgeom2.c2], [ptgeom2.g2]), filter(nil)
conds(nil), nl_params_([ptgeom1.g1(:0)]), use_batch=false
3 - output([ptgeom1.c1], [ptgeom1.g1]), filter(nil)
force partition granule
4 - output([ptgeom1.c1], [ptgeom1.g1]), filter(nil)
access([ptgeom1.c1], [ptgeom1.g1]), partitions(p[0-2])
is_index_back=false, is_global_index=false,
range_key([ptgeom1.__pk_increment]), range(MIN ; MAX)always true
5 - output([ptgeom2.c2], [ptgeom2.g2]), filter([BOOL(st_intersects(:0, ptgeom2.g2))])
access([ptgeom2.__pk_increment], [ptgeom2.c2], [ptgeom2.g2]), partitions(p[0-2])
is_index_back=true, is_global_index=false, filter_before_indexback[false],
range_key([ptgeom2.__cellid_17], [ptgeom2.__mbr_17], [ptgeom2.__pk_increment]), range(MIN ; MAX)
Used Hint:
-------------------------------------
/*+
*/
Qb name trace:
-------------------------------------
stmt_id:0, stmt_type:T_EXPLAIN
stmt_id:1, SEL$1
Outline Data:
-------------------------------------
/*+
BEGIN_OUTLINE_DATA
LEADING(@"SEL$1" ("test"."ptgeom1"@"SEL$1" "test"."ptgeom2"@"SEL$1"))
USE_NL(@"SEL$1" "test"."ptgeom2"@"SEL$1")
PQ_DISTRIBUTE(@"SEL$1" "test"."ptgeom2"@"SEL$1" NONE ALL)
FULL(@"SEL$1" "test"."ptgeom1"@"SEL$1")
INDEX(@"SEL$1" "test"."ptgeom2"@"SEL$1" "pgidx2")
USE_DAS(@"SEL$1" "test"."ptgeom2"@"SEL$1")
OPTIMIZER_FEATURES_ENABLE('4.0.0.0')
END_OUTLINE_DATA
*/
Optimization Info:
-------------------------------------
ptgeom1:
table_rows:3
physical_range_rows:3
logical_range_rows:3
index_back_rows:0
output_rows:3
table_dop:1
dop_method:Table DOP
avaiable_index_name:[pgidx1, ptgeom1]
pruned_index_name:[pgidx1]
stats version:0
dynamic sampling level:1
ptgeom2:
table_rows:10
physical_range_rows:2
logical_range_rows:2
index_back_rows:2
output_rows:2
table_dop:1
dop_method:DAS DOP
avaiable_index_name:[pgidx2, ptgeom2]
stats version:0
dynamic sampling level:1
Plan Type:
DISTRIBUTED
Note:
Degree of Parallelisim is 1 because of table property
drop table tgnoindex1, tgnoindex2, tgeom1, tgeom2, ptgeom1, ptgeom2;

View File

@ -0,0 +1,300 @@
# ----------------------------------------------------------------------
# Test of GEOMETRY ST_Area.
# ----------------------------------------------------------------------
SELECT ST_AREA('');
ERROR 22023: Invalid GIS data provided to function st_area.
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT(0 0)'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type POINT in st_area.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOINT(0 0)'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type MULTIPOINT in st_area.
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING(0 0, 1 0)'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type LINESTRING in st_area.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTILINESTRING((0 0, 1 0))'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type MULTILINESTRING in st_area.
SELECT ST_AREA(ST_GEOMFROMTEXT('GEOMETRYCOLLECTION()'));
ERROR 22S01: POLYGON/MULTIPOLYGON value is a geometry of unexpected type GEOMETRYCOLLECTION in st_area.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0, 0 1e308, 1e308 1e308, 0 0))'));
ERROR 22003: Result value is out of range in 'st_area'
SELECT
ROUND(
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0, 1 0, 1 1, 0 0))', 0)),
2
) AS area;
area
0.50
SELECT
ROUND(
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 0)))', 0)),
2
) AS area;
area
0.50
SELECT
ROUND(
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0, 0 1, 1 1, 0 0))', 4326)),
2
) AS area;
area
6154785747.34
SELECT
ROUND(
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0, 0 1, 1 1, 0 0)))', 4326)),
2
) AS area;
area
6154785747.34
drop table if exists gis_geometrycollection;
CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRY);
SET @star_elem_vertical= 'POLYGON((5 0,15 25,25 0,15 5,5 0))';
SET @star_elem_horizontal= 'POLYGON((25 0,0 15,30 15,22 10,25 0))';
SET @star_center= 'POINT(15 10)';
SET @star_top= 'POINT(15 25)';
SET @star_bottom_left= 'POINT(5 0)';
SET @star_bottom_right= 'POINT(25 0)';
SET @star_bottom_points= 'MULTIPOINT(5 0,25 0)';
SET @star_all_points= 'MULTIPOINT(5 0,25 0,15 10,15 25)';
SET @star_line_horizontal= 'LINESTRING(10 15,20 15)';
SET @star_line_vertical= 'LINESTRING(15 5,15 25)';
SET @star_top_to_center= 'LINESTRING(15 25,15 10)';
SET @star_lines_near_horizontal= 'MULTILINESTRING((25 0,0 15,15 30,0 5))';
SET @star_lines_near_vertical= 'MULTILINESTRING((0 5,15 25,0 25))';
SET @star= 'POLYGON((5 0,7 10,0 15,10 15,15 25,20 15,30 15,22 10,25 0,15 5,5 0))';
SET @star_elem_vertical_val= '((5 0,15 25,25 0,15 5,5 0))';
SET @star_elem_horizontal_val= '((25 0,0 15,30 15,22 10,25 0))';
SET @star_of_elems='MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0)))';
SET @star_collection_elems='GEOMETRYCOLLECTION(MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0))),POLYGON((5 0,7 10,0 15,10 15,15 25,20 15,30 15,22 10,25 0,15 5,5 0)),LINESTRING(15 25,15 10),MULTIPOINT(5 0,25 0),POINT(15 25))';
SET @star_collection_multilinestr='GEOMETRYCOLLECTION(MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0))),POLYGON((5 0,7 10,0 15,10 15,15 25,20 15,30 15,22 10,25 0,15 5,5 0)),MULTILINESTRING((25 0,0 15,15 30,0 5)),LINESTRING(15 25,15 10),MULTIPOINT(5 0,25 0),POINT(15 25))';
INSERT INTO gis_geometrycollection VALUES
(100,ST_GEOMFROMTEXT(@star)),
(101,ST_GEOMFROMTEXT(@star_elem_vertical)),
(102,ST_GEOMFROMTEXT(@star_elem_horizontal)),
(103,ST_GEOMFROMTEXT(@star_of_elems)),
(104,ST_GEOMFROMTEXT(@star_top)),
(105,ST_GEOMFROMTEXT(@star_center)),
(106,ST_GEOMFROMTEXT(@star_bottom_left)),
(107,ST_GEOMFROMTEXT(@star_bottom_right)),
(108,ST_GEOMFROMTEXT(@star_bottom_points)),
(109,ST_GEOMFROMTEXT(@star_all_points)),
(110,ST_GEOMFROMTEXT(@star_line_horizontal)),
(111,ST_GEOMFROMTEXT(@star_line_vertical)),
(112,ST_GEOMFROMTEXT(@star_top_to_center)),
(113,ST_GEOMFROMTEXT(@star_lines_near_horizontal)),
(114,ST_GEOMFROMTEXT(@star_lines_near_vertical)),
(115,ST_GEOMFROMTEXT(@star_collection_elems)),
(116,ST_GEOMFROMTEXT(@star_collection_multilinestr)),
(200,ST_GEOMFROMTEXT('POLYGON((0 0,6 7,8 8,3 9,0 0),(3 6,4 6,4 7,3 6))')),
(201,ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)), ((2 2,4 5,6 2,2 2)))'));
#test ST_AREA POLYGON
SELECT ST_AREA(ST_GEOMFROMTEXT(@star));
ST_AREA(ST_GEOMFROMTEXT(@star))
287.5
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_elem_vertical));
ST_AREA(ST_GEOMFROMTEXT(@star_elem_vertical))
200
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,5 5, 0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,5 5, 0 0))'))
12.5
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'))
100
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,-10 0,-10 -10,0 -10, 0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0,-10 0,-10 -10,0 -10, 0 0))'))
0
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'))
96
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0))'))
0
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0))'))
-96
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8))'));
ST_AREA(ST_GEOMFROMTEXT('POLYGON((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8))'))
0
SELECT ST_AREA(g) FROM gis_geometrycollection WHERE fid=100;
ST_AREA(g)
287.5
SELECT CRC32(ST_Area(g)) FROM gis_geometrycollection WHERE fid=200;
CRC32(ST_Area(g))
534598600
SELECT CRC32(ST_Area(g)) FROM gis_geometrycollection WHERE fid=201;
CRC32(ST_Area(g))
3832313845
#test ST_AREA MULTIPOLYGON
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_of_elems));
ST_AREA(ST_GEOMFROMTEXT(@star_of_elems))
377.5
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5, 0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5, 0 0)))'))
12.5
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 10,10 0,0 0, 0 10)),((0 0,10 10,10 0, 0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 10,10 0,0 0, 0 10)),((0 0,10 10,10 0, 0 0)))'))
100
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10, 0 0)),((10 10,10 15,15 15,10 10)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10, 0 0)),((10 10,10 15,15 15,10 10)))'))
62.5
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((4 4,4 6,6 6,6 4, 4 4)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((4 4,4 6,6 6,6 4, 4 4)))'))
104
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0, 0 0),(4 4,4 6,6 6,6 4, 4 4)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0, 0 0),(4 4,4 6,6 6,6 4, 4 4)))'))
96
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)))'))
0
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(0 0,0 10,10 10,10 0,0 0)))'))
-96
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 6,6 6,6 4,4 4),(8 8,8 10,10 10,10 8,8 8)))'))
0
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((10 10,10 0,5 10,10 10)),((0 10,0 20,5 10,0 10)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((10 10,10 0,5 10,10 10)),((0 10,0 20,5 10,0 10)))'))
50
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0)))'))
100
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6, 4 4)))'));
ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(0 0,0 10,10 10,10 0,0 0)),((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6, 4 4)))'))
98
SELECT ST_AREA(g) FROM gis_geometrycollection WHERE fid=103;
ST_AREA(g)
377.5
#test with invalid srid
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_center,-1024));
ERROR 22003: SRID value is out of range in 'st_geomfromtext'
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_all_points,-1));
ERROR 22003: SRID value is out of range in 'st_geomfromtext'
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_of_elems,4294967296));
ERROR 22003: SRID value is out of range in 'st_geomfromtext'
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_collection_elems,4294967295000));
ERROR 22003: SRID value is out of range in 'st_geomfromtext'
#test ST_AREA with invalid input
SELECT ST_AREA();
ERROR 42000: Incorrect parameter count in the call to native function 'ST_AREA'
SELECT ST_AREA(NULL);
ST_AREA(NULL)
NULL
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT()'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING()'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON(())'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOINT()'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTILINESTRING(())'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON((()))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT(a 0)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT(! 0)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT('!' 0)'));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '!' 0)'))' at line 1
SELECT ST_AREA(ST_GEOMFROMTEXT('POINT(12,34 0)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING(a 0,10 10)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING(0 0,! 10)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING('!' 0,10 10)'));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '!' 0,10 10)'))' at line 1
SELECT ST_AREA(ST_GEOMFROMTEXT('LINESTRING(12,34 0,10 10)'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((a 0,10 10,10 0,0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,! 10,10 0,0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON(('!' 0,10 10,10 0,0 0))'));
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your OceanBase version for the right syntax to use near '!' 0,10 10,10 0,0 0))'))' at line 1
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((12,34 0,10 10,10 0,0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,5 5))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,5 5,10 10))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,0 5,10 10),(0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 10)),((10 10)))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SELECT ST_AREA(ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 10)),((10 10))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
#test ST_AREA out of range
# Assume SRID 10 is not defined.
SELECT ST_AREA(x'0A000000010100000000000000000000000000000000000000');
ERROR SR001: There's no spatial reference system with SRID 10.
# MYSQL Bug#28301552 ASSERTION FAILED: STD::ISFINITE(*RESULT)
SELECT ST_Area(
POLYGON(
LINESTRING(
POINT(4.271317e+307,-18656),
POINT(-29177,-15475),
POINT(8554,3430),
POINT(4.271317e+307,-18656)
)
)
);
ERROR 22003: Result value is out of range in 'st_area'
SELECT ST_Area(POLYGON(
LINESTRING(
POINT(3006,-15963),
POINT(-17919,-15105),
POINT(9.466488e+307,1.280303e+308),
POINT(3006,-15963)
)
)
);
ERROR 22003: Result value is out of range in 'st_area'
truncate table gis_geometrycollection;
drop table gis_geometrycollection;
#other tests
#error codes
SELECT ST_AREA(ST_GEOMFROMTEXT('POLYGON((0 0,5 5, 0 0))'));
ERROR 22023: Invalid GIS data provided to function st_geomfromtext.
SET @star_of_elems='MULTIPOLYGON(((5 0,15 25,25 0,15 5,5 0)),((25 0,0 15,30 15,22 10,25 0)))';
SELECT ST_AREA(ST_GEOMFROMTEXT(@star_of_elems));
ST_AREA(ST_GEOMFROMTEXT(@star_of_elems))
377.5
Select ST_Area(ST_GEOMFROMTEXT('POLYGON((0 0, 30 30, 30 0, 0 5, 0 0, 30 5, 30 0, 0 10, 0 0, 30 10, 30 0, 0 0))')) as Result;
Result
450
Select ST_Area(ST_GEOMFROMTEXT('POLYGON((1 1, 10 1, 1 0, 10 0, 1 -1, 10 -1, 7 2, 7 -2, 4 2, 4 -2, 1 1))')) as Result;
Result
0
drop table if exists tbl_polygon;
create table tbl_polygon(id varchar(32), geom GEOMETRY);
insert into tbl_polygon (id, geom) values ('POLY1',ST_GeomFromText('POLYGON((0 0,0 10,10 10,10 0,0 0))'));
insert into tbl_polygon (id, geom) values ('POLY2',ST_GeomFromText('POLYGON((0 0,0 -10,10 -10,10 0,0 0))'));
select 100, st_area(t.geom) from tbl_polygon t where t.id like 'POLY%';
100 st_area(t.geom)
100 100
100 100
drop table tbl_polygon;
drop table if exists ponds, named_places;
CREATE TABLE ponds (
fid INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(64),
type VARCHAR(64),
shores GEOMETRY);
INSERT INTO ponds VALUES(120, NULL, 'Stock Pond', ST_GEOMFROMTEXT(
'MULTIPOLYGON( ( ( 24 44, 22 42, 24 40, 24 44) ), ( ( 26 44, 26 40, 28 42, 26 44) ) )', 0));
SELECT ST_Area(shores)
FROM ponds
WHERE fid = 120;
ST_Area(shores)
8
CREATE TABLE named_places (
fid INTEGER NOT NULL PRIMARY KEY,
name VARCHAR(64),
boundary GEOMETRY);
INSERT INTO named_places VALUES(117, 'Ashton', ST_GEOMFROMTEXT('POLYGON( ( 62 48, 84 48, 84 30, 56 30, 56 34, 62 48) )', 0));
INSERT INTO named_places VALUES(118, 'Goose Island', ST_GEOMFROMTEXT('POLYGON( ( 67 13, 67 18, 59 18, 59 13, 67 13) )', 0));
SELECT ST_Area(boundary) FROM named_places WHERE name = 'Goose Island';
ST_Area(boundary)
40
drop table ponds, named_places;

Some files were not shown because too many files have changed in this diff Show More