summaryrefslogtreecommitdiff
path: root/mysql-test
diff options
context:
space:
mode:
authorunknown <jani@a88-113-38-195.elisa-laajakaista.fi>2007-04-13 09:07:46 +0300
committerunknown <jani@a88-113-38-195.elisa-laajakaista.fi>2007-04-13 09:07:46 +0300
commit830803a23b017530a76f176d635d83c1adc588e8 (patch)
treee1b7e490cac91f8dd9cc767b572ba4b6268946fe /mysql-test
parentf3efb3dcfac96afa487709f2603784f60f021f61 (diff)
parent2e73a53e033741b09a652646d9cfa0e76c33e6a1 (diff)
downloadmariadb-git-830803a23b017530a76f176d635d83c1adc588e8.tar.gz
Merge jamppa@bk-internal.mysql.com:/home/bk/mysql-5.1
into a88-113-38-195.elisa-laajakaista.fi:/home/my/new/mysql-5.1-marvel sql/set_var.cc: Auto merged
Diffstat (limited to 'mysql-test')
-rw-r--r--mysql-test/suite/funcs_1/r/a_version_check.result2
-rw-r--r--mysql-test/suite/partitions/include/partition_supported_sql_funcs.inc93
-rw-r--r--mysql-test/suite/partitions/include/partition_supported_sql_funcs_delete.inc53
-rw-r--r--mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in4
-rw-r--r--mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_date.in4
-rw-r--r--mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_float.in4
-rw-r--r--mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_int.in45
-rw-r--r--mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_time.in4
-rw-r--r--mysql-test/suite/partitions/include/partition_supported_sql_funcs_main.inc39
-rw-r--r--mysql-test/suite/partitions/r/partition_supported_sql_func_innodb.result10887
-rw-r--r--mysql-test/suite/partitions/r/partition_supported_sql_func_myisam.result10887
-rw-r--r--mysql-test/suite/partitions/r/partition_supported_sql_func_ndb.result13724
-rw-r--r--mysql-test/suite/partitions/r/partition_t55.out68
-rw-r--r--mysql-test/suite/partitions/t/disabled.def2
-rw-r--r--mysql-test/suite/partitions/t/partition_supported_sql_func_innodb.test10
-rw-r--r--mysql-test/suite/partitions/t/partition_supported_sql_func_myisam.test6
-rw-r--r--mysql-test/suite/partitions/t/partition_supported_sql_func_ndb.test40
-rw-r--r--mysql-test/suite/row_lock/include/row_lock.inc83
-rw-r--r--mysql-test/suite/row_lock/include/row_lock_big_tab.inc94
-rw-r--r--mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc93
-rw-r--r--mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc93
-rw-r--r--mysql-test/suite/row_lock/include/row_lock_trig.inc96
-rw-r--r--mysql-test/suite/row_lock/include/row_lock_view.inc89
-rw-r--r--mysql-test/suite/row_lock/include/row_lock_view_mix.inc92
-rw-r--r--mysql-test/suite/row_lock/include/row_lock_view_storedp.inc126
-rw-r--r--mysql-test/suite/row_lock/include/row_lock_view_trig.inc99
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_1.result142
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_2.result32
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_3.result32
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_4.result142
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_5.result32
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result97
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result145
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result113
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result151
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result37
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result34
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result40
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_1.result48
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_2.result40
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_1.result312
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_2.result47
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_1.result183
-rw-r--r--mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_2.result38
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_1.result139
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_2.result31
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_3.result30
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_4.result139
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_5.result30
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_big_tab.result177
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_1.result357
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_2.result255
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_trig_1.result148
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_trig_2.result35
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_view_1.result194
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_view_2.result200
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_1.result169
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_2.result38
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_1.result309
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_2.result46
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_1.result180
-rw-r--r--mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_2.result36
-rw-r--r--mysql-test/suite/row_lock/readme.txt9
-rw-r--r--mysql-test/suite/row_lock/summary_of_sel_test.txt36
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_1.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_2.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_3.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_4.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_5.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_big_tab.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_1.test10
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_2.test10
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_trig_1.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_trig_2.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_view_1.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_view_2.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_1.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_2.test10
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_1.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_2.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_1.test9
-rw-r--r--mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_2.test9
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_1.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_2.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_3.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_4.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_5.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_big_tab.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_1.test7
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_2.test7
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_trig_1.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_trig_2.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_view_1.test7
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_view_2.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_1.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_2.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_1.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_2.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_1.test6
-rw-r--r--mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_2.test6
100 files changed, 39428 insertions, 1808 deletions
diff --git a/mysql-test/suite/funcs_1/r/a_version_check.result b/mysql-test/suite/funcs_1/r/a_version_check.result
index 1569c40e4e5..da6ba0846fd 100644
--- a/mysql-test/suite/funcs_1/r/a_version_check.result
+++ b/mysql-test/suite/funcs_1/r/a_version_check.result
@@ -6,6 +6,6 @@
. updated with each new version --- THIS IS INTENDED!
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-funcs_1 checked with version: 5.1.16
+funcs_1 checked with version: 5.1.17
Warnings:
Warning 1548 Leading spaces are removed from name ' '
diff --git a/mysql-test/suite/partitions/include/partition_supported_sql_funcs.inc b/mysql-test/suite/partitions/include/partition_supported_sql_funcs.inc
index f74fce39a7d..b2e102f8e07 100644
--- a/mysql-test/suite/partitions/include/partition_supported_sql_funcs.inc
+++ b/mysql-test/suite/partitions/include/partition_supported_sql_funcs.inc
@@ -1,7 +1,7 @@
################################################################################
-# t/partition_supported_sql_funcs.inc # #
+# t/partition_supported_sql_funcs.inc # # #
# Purpose: #
-# Tests around sql functions #
+# Tests frame for allowed sql functions #
# #
# #
#------------------------------------------------------------------------------#
@@ -83,24 +83,23 @@ eval insert into t3 values ($val1);
eval insert into t3 values ($val2);
eval insert into t3 values ($val3);
-eval insert into t4 values (1,$val1);
-eval insert into t4 values (2,$val2);
+--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
+eval load data infile '$MYSQL_TEST_DIR/suite/partitions/include/$infile' into table t4;
-eval insert into t5 values (1,$val1);
-eval insert into t5 values (2,$val2);
-eval insert into t5 values (3,$val3);
+--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
+eval load data infile '$MYSQL_TEST_DIR/suite/partitions/include/$infile' into table t5;
-eval insert into t6 values (1,$val2);
-eval insert into t6 values (2,$val3);
+--replace_result $MYSQL_TEST_DIR MYSQL_TEST_DIR
+eval load data infile '$MYSQL_TEST_DIR/suite/partitions/include/$infile' into table t6;
-eval select $sqlfunc from t1;
+eval select $sqlfunc from t1 order by col1;
-select * from t1;
-select * from t2;
-select * from t3;
-select * from t4;
-select * from t5;
-select * from t6;
+select * from t1 order by col1;
+select * from t2 order by col1;
+select * from t3 order by col1;
+select * from t4 order by colint;
+select * from t5 order by colint;
+select * from t6 order by colint;
if ($do_long_tests)
{
@@ -111,12 +110,12 @@ if ($do_long_tests)
eval update t5 set col1=$val4 where col1=$val1;
eval update t6 set col1=$val4 where col1=$val1;
- select * from t1;
- select * from t2;
- select * from t3;
- select * from t4;
- select * from t5;
- select * from t6;
+ select * from t1 order by col1;
+ select * from t2 order by col1;
+ select * from t3 order by col1;
+ select * from t4 order by colint;
+ select * from t5 order by colint;
+ select * from t6 order by colint;
}
--echo -------------------------------------------------------------------------
@@ -175,46 +174,63 @@ partition by range(colint)
(partition p0 values less than ($valsqlfunc),
partition p1 values less than maxvalue);
-select * from t11;
-select * from t22;
-select * from t33;
-select * from t44;
-select * from t55;
-select * from t66;
+select * from t11 order by col1;
+select * from t22 order by col1;
+select * from t33 order by col1;
+select * from t44 order by colint;
+select * from t55 order by colint;
+select * from t66 order by colint;
if ($do_long_tests)
{
+ --echo ---------------------------
+ --echo ---- some alter table begin
+ --echo ---------------------------
eval alter table t11
reorganize partition p0,p1 into
(partition s1 values less than maxvalue);
- select * from t11;
+ select * from t11 order by col1;
eval alter table t11
reorganize partition s1 into
(partition p0 values less than (15),
partition p1 values less than maxvalue);
- select * from t11;
+ select * from t11 order by col1;
+
+eval alter table t55
+partition by list(colint)
+subpartition by hash($sqlfunc) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+ partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+ partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+ partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+ partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+ partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+ show create table t55;
+ select * from t55 order by colint;
eval alter table t66
reorganize partition p0,p1 into
(partition s1 values less than maxvalue);
- select * from t66;
+ select * from t66 order by colint;
eval alter table t66
reorganize partition s1 into
(partition p0 values less than ($valsqlfunc),
partition p1 values less than maxvalue);
- select * from t66;
+ select * from t66 order by colint;
eval alter table t66
reorganize partition p0,p1 into
(partition s1 values less than maxvalue);
- select * from t66;
+ select * from t66 order by colint;
- eval alter table t66
- add partition s0
- (partition p0 values less than ($valsqlfunc);
- select * fromt t66;
+ eval alter table t66
+ reorganize partition s1 into
+ (partition p0 values less than ($valsqlfunc),
+ partition p1 values less than maxvalue);
+ select * from t66 order by colint;
let $t1=t1;
let $t2=t2;
@@ -233,6 +249,9 @@ if ($do_long_tests)
let $t6=t66;
--source suite/partitions/include/partition_supported_sql_funcs_delete.inc
# --source include/partition_supported_sql_funcs_delete.inc
+ --echo -------------------------
+ --echo ---- some alter table end
+ --echo -------------------------
}
--disable_warnings
drop table if exists t1 ;
diff --git a/mysql-test/suite/partitions/include/partition_supported_sql_funcs_delete.inc b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_delete.inc
index c733d750fab..76e8bd6dcc6 100644
--- a/mysql-test/suite/partitions/include/partition_supported_sql_funcs_delete.inc
+++ b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_delete.inc
@@ -1,3 +1,16 @@
+################################################################################
+# t/partition_supported_sql_funcs_delete.inc # # #
+# Purpose: #
+# Delete access of the tests frame for allowed sql functions #
+# #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: HH #
+# Original Date: 2006-11-22 #
+# Change Author: #
+# Change Date: #
+# Change: #
+################################################################################
--echo -------------------------------------------------------------------------
--echo --- Delete rows and partitions of tables with $sqlfunc
--echo -------------------------------------------------------------------------
@@ -9,25 +22,25 @@ eval delete from $t4 where col1=$val2;
eval delete from $t5 where col1=$val2;
eval delete from $t6 where col1=$val2;
-eval select * from $t1;
-eval select * from $t2;
-eval select * from $t3;
-eval select * from $t4;
-eval select * from $t5;
+eval select * from $t1 order by col1;
+eval select * from $t2 order by col1;
+eval select * from $t3 order by col1;
+eval select * from $t4 order by colint;
+eval select * from $t5 order by colint;
eval insert into $t1 values ($val2);
eval insert into $t2 values ($val2);
eval insert into $t3 values ($val2);
-eval insert into $t4 values (4,$val2);
-eval insert into $t5 values (4,$val2);
-eval insert into $t6 values (4,$val2);
+eval insert into $t4 values (60,$val2);
+eval insert into $t5 values (60,$val2);
+eval insert into $t6 values (60,$val2);
-eval select * from $t1;
-eval select * from $t2;
-eval select * from $t3;
-eval select * from $t4;
-eval select * from $t5;
-eval select * from $t6;
+eval select * from $t1 order by col1;
+eval select * from $t2 order by col1;
+eval select * from $t3 order by col1;
+eval select * from $t4 order by colint;
+eval select * from $t5 order by colint;
+eval select * from $t6 order by colint;
eval alter table $t1 drop partition p0;
eval alter table $t2 drop partition p0;
@@ -35,9 +48,9 @@ eval alter table $t4 drop partition p0;
eval alter table $t5 drop partition p0;
eval alter table $t6 drop partition p0;
-eval select * from $t1;
-eval select * from $t2;
-eval select * from $t3;
-eval select * from $t4;
-eval select * from $t5;
-eval select * from $t6;
+eval select * from $t1 order by col1;
+eval select * from $t2 order by col1;
+eval select * from $t3 order by col1;
+eval select * from $t4 order by colint;
+eval select * from $t5 order by colint;
+eval select * from $t6 order by colint;
diff --git a/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in
new file mode 100644
index 00000000000..8ae6e5fc807
--- /dev/null
+++ b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in
@@ -0,0 +1,4 @@
+1 1
+2 9
+3 3
+4 8 \ No newline at end of file
diff --git a/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_date.in b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_date.in
new file mode 100644
index 00000000000..9eb41fb007b
--- /dev/null
+++ b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_date.in
@@ -0,0 +1,4 @@
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05 \ No newline at end of file
diff --git a/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_float.in b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_float.in
new file mode 100644
index 00000000000..34d8b1d1c4d
--- /dev/null
+++ b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_float.in
@@ -0,0 +1,4 @@
+1 5.1230
+2 13.345
+3 17.987
+4 15.654
diff --git a/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_int.in b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_int.in
new file mode 100644
index 00000000000..d2f5c82a241
--- /dev/null
+++ b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_int.in
@@ -0,0 +1,45 @@
+1 5
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123 \ No newline at end of file
diff --git a/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_time.in b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_time.in
new file mode 100644
index 00000000000..941ba418f32
--- /dev/null
+++ b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_int_time.in
@@ -0,0 +1,4 @@
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
diff --git a/mysql-test/suite/partitions/include/partition_supported_sql_funcs_main.inc b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_main.inc
index ccfdd7a2ece..b0ec63d39a9 100644
--- a/mysql-test/suite/partitions/include/partition_supported_sql_funcs_main.inc
+++ b/mysql-test/suite/partitions/include/partition_supported_sql_funcs_main.inc
@@ -2,7 +2,7 @@
# t/partition_supported_sql_funcs_main.inc #
# #
# Purpose: #
-# Tests around sql functions #
+# Tests which SQL functions are allowed in partinioning clauses. #
# #
# #
#------------------------------------------------------------------------------#
@@ -11,12 +11,28 @@
# Change Author: #
# Change Date: #
# Change: #
+# #
+# This test uses a test frame (partition_supported_sql_funcs.inc) for every #
+# SQL function allowed in the partitioning parts of CREATE and ALTE TABLE. #
+# The variales represent the #
+# - SQL function isself with a column (sqlfunc) and a literal (valsqlsunc), #
+# - the type of the column (coltype), #
+# - a file with test values of the coltype (infile) and #
+# - single test values (val1 to val4). #
+# The test frame includes CREATE/ALTER TABLE and some access statements. #
+# Column types are int, float(7,4), char(1), date and time depending on the #
+# SQL function. The test frame uses the include file #
+# "partition_supported_sql_funcs_delete.inc" testing the deletion of #
+# partitions. #
+# The CREATE and ALTER TABLE statement do not cover the complete partitions #
+# functions, but will ashure that the SQL functions are basically working. #
################################################################################
let $sqlfunc = abs(col1);
let $valsqlfunc = abs(15);
let $coltype = int;
+let $infile = partition_supported_sql_funcs_int_int.in;
let $val1 = 5 ;
let $val2 = 13 ;
let $val3 = 17 ;
@@ -27,6 +43,7 @@ let $val4 = 15 ;
let $sqlfunc = ascii(col1);
let $valsqlfunc = ascii('5');
let $coltype = char(1);
+let $infile = partition_supported_sql_funcs_int_ch1.in;
let $val1 = '1';
let $val2 = '9';
let $val3 = '3';
@@ -37,6 +54,7 @@ let $val4 = '8';
let $sqlfunc = cast(ceiling(col1) as signed integer);
let $valsqlfunc = cast(ceiling(15) as signed integer);
let $coltype = float(7,4);
+let $infile = partition_supported_sql_funcs_int_float.in;
let $val1 = 5.1230;
let $val2 = 13.345;
let $val3 = 17.987;
@@ -47,6 +65,7 @@ let $val4 = 15.654 ;
let $sqlfunc = cast(floor(col1) as signed);
let $valsqlfunc = cast(floor(15.123) as signed);
let $coltype = float(7,4);
+let $infile = partition_supported_sql_funcs_int_float.in;
let $val1 = 5.1230;
let $val2 = 13.345;
let $val3 = 17.987;
@@ -57,6 +76,7 @@ let $val4 = 15.654 ;
let $sqlfunc = cast(mod(col1,10) as signed);
let $valsqlfunc = cast(mod(15,10) as signed);
let $coltype = float(7,4);
+let $infile = partition_supported_sql_funcs_int_float.in;
let $val1 = 5.0000;
let $val2 = 19;
let $val3 = 17;
@@ -67,6 +87,7 @@ let $val4 = 15 ;
let $sqlfunc = ord(col1);
let $valsqlfunc = ord('a');
let $coltype = char(3);
+let $infile = partition_supported_sql_funcs_int_ch1.in;
let $val1 = '1';
let $val2 = '9';
let $val3 = '3';
@@ -77,6 +98,7 @@ let $val4 = '8';
let $sqlfunc = day(col1);
let $valsqlfunc = day('2006-12-21');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-02-03';
let $val2 = '2006-01-17';
let $val3 = '2006-01-25';
@@ -87,6 +109,7 @@ let $val4 = '2006-02-05';
let $sqlfunc = dayofmonth(col1);
let $valsqlfunc = dayofmonth('2006-12-24');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-02-03';
let $val2 = '2006-01-17';
let $val3 = '2006-01-25';
@@ -97,6 +120,7 @@ let $val4 = '2006-02-05';
let $sqlfunc = dayofweek(col1);
let $valsqlfunc = dayofweek('2006-12-24');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-01-03';
let $val2 = '2006-02-17';
let $val3 = '2006-01-25';
@@ -107,6 +131,7 @@ let $val4 = '2006-02-05';
let $sqlfunc = dayofyear(col1);
let $valsqlfunc = dayofyear('2006-12-25');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-01-03';
let $val2 = '2006-01-17';
let $val3 = '2006-02-25';
@@ -120,6 +145,7 @@ let $coltype = char(30);
let $sqlfunc = extract(month from col1);
let $valsqlfunc = extract(year from '1998-11-23');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-01-03';
let $val2 = '2006-02-17';
let $val3 = '2006-01-25';
@@ -130,6 +156,7 @@ let $val4 = '2006-02-05';
let $sqlfunc = hour(col1);
let $valsqlfunc = hour('18:30');
let $coltype = time;
+let $infile = partition_supported_sql_funcs_int_time.in;
let $val1 = '09:09';
let $val2 = '14:30';
let $val3 = '21:59';
@@ -140,6 +167,7 @@ let $val4 = '10:30';
let $sqlfunc = microsecond(col1);
let $valsqlfunc = microsecond('10:30:10.000010');
let $coltype = time;
+let $infile = partition_supported_sql_funcs_int_time.in;
let $val1 = '09:09:15.000002';
let $val2 = '04:30:01.000018';
let $val3 = '00:59:22.000024';
@@ -160,6 +188,7 @@ let $val4 = '10:24:23';
let $sqlfunc = second(col1);
let $valsqlfunc = second('18:30:14');
let $coltype = time;
+let $infile = partition_supported_sql_funcs_int_time.in;
let $val1 = '09:09:09';
let $val2 = '14:30:20';
let $val3 = '21:59:22';
@@ -173,6 +202,7 @@ let $coltype = char(30);
let $sqlfunc = month(col1);
let $valsqlfunc = month('2006-10-14');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-01-03';
let $val2 = '2006-12-17';
let $val3 = '2006-05-25';
@@ -183,6 +213,7 @@ let $val4 = '2006-11-06';
let $sqlfunc = quarter(col1);
let $valsqlfunc = quarter('2006-10-14');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-01-03';
let $val2 = '2006-12-17';
let $val3 = '2006-09-25';
@@ -193,6 +224,7 @@ let $val4 = '2006-07-30';
let $sqlfunc = time_to_sec(col1)-(time_to_sec(col1)-20);
let $valsqlfunc = time_to_sec('18:30:14')-(time_to_sec('17:59:59'));
let $coltype = time;
+let $infile = partition_supported_sql_funcs_int_time.in;
let $val1 = '09:09:15';
let $val2 = '14:30:45';
let $val3 = '21:59:22';
@@ -203,6 +235,7 @@ let $val4 = '10:33:11';
let $sqlfunc = to_days(col1)-to_days('2006-01-01');
let $valsqlfunc = to_days('2006-02-02')-to_days('2006-01-01');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-02-03';
let $val2 = '2006-01-17';
let $val3 = '2006-01-25';
@@ -213,6 +246,7 @@ let $val4 = '2006-02-06';
let $sqlfunc = weekday(col1);
let $valsqlfunc = weekday('2006-10-14');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-12-03';
let $val2 = '2006-11-17';
let $val3 = '2006-05-25';
@@ -223,6 +257,7 @@ let $val4 = '2006-02-06';
let $sqlfunc = weekofyear(col1);
let $valsqlfunc = weekofyear('2006-02-14');
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-01-03';
let $val2 = '2006-03-17';
let $val3 = '2006-05-25';
@@ -233,6 +268,7 @@ let $val4 = '2006-09-06';
let $sqlfunc = year(col1)-1990;
let $valsqlfunc = year('2005-10-14')-1990;
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '1996-01-03';
let $val2 = '2000-02-17';
let $val3 = '2004-05-25';
@@ -243,6 +279,7 @@ let $val4 = '2002-02-15';
let $sqlfunc = yearweek(col1)-200600;
let $valsqlfunc = yearweek('2006-10-14')-200600;
let $coltype = date;
+let $infile = partition_supported_sql_funcs_int_date.in;
let $val1 = '2006-01-03';
let $val2 = '2006-08-17';
let $val3 = '2006-03-25';
diff --git a/mysql-test/suite/partitions/r/partition_supported_sql_func_innodb.result b/mysql-test/suite/partitions/r/partition_supported_sql_func_innodb.result
index bb25ac5fc73..196f7930bb0 100644
--- a/mysql-test/suite/partitions/r/partition_supported_sql_func_innodb.result
+++ b/mysql-test/suite/partitions/r/partition_supported_sql_func_innodb.result
@@ -55,44 +55,329 @@ insert into t2 values (17 );
insert into t3 values (5 );
insert into t3 values (13 );
insert into t3 values (17 );
-insert into t4 values (1,5 );
-insert into t4 values (2,13 );
-insert into t5 values (1,5 );
-insert into t5 values (2,13 );
-insert into t5 values (3,17 );
-insert into t6 values (1,13 );
-insert into t6 values (2,17 );
-select abs(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_int.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_int.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_int.in' into table t6;
+select abs(col1) from t1 order by col1;
abs(col1)
5
13
-select * from t1;
+select * from t1 order by col1;
col1
5
13
-select * from t2;
+select * from t2 order by col1;
col1
5
13
17
-select * from t3;
+select * from t3 order by col1;
col1
5
13
17
-select * from t4;
+select * from t4 order by colint;
colint col1
1 5
2 13
-select * from t5;
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t5 order by colint;
colint col1
1 5
2 13
-3 17
-select * from t6;
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t6 order by colint;
colint col1
-1 13
-2 17
+1 5
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+update t1 set col1=15 where col1=5 ;
+update t2 set col1=15 where col1=5 ;
+update t3 set col1=15 where col1=5 ;
+update t4 set col1=15 where col1=5 ;
+update t5 set col1=15 where col1=5 ;
+update t6 set col1=15 where col1=5 ;
+select * from t1 order by col1;
+col1
+13
+15
+select * from t2 order by col1;
+col1
+13
+15
+17
+select * from t3 order by col1;
+col1
+13
+15
+17
+select * from t4 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t5 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t6 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
-------------------------------------------------------------------------
--- Alter tables with abs(col1)
-------------------------------------------------------------------------
@@ -142,33 +427,1241 @@ alter table t66
partition by range(colint)
(partition p0 values less than (abs(15)),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-5
13
-select * from t22;
+15
+select * from t22 order by col1;
col1
-5
13
+15
17
-select * from t33;
+select * from t33 order by col1;
col1
-5
13
+15
17
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 5
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t55 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t66 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13
+15
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13
+15
+alter table t55
+partition by list(colint)
+subpartition by hash(abs(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` int(11) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (abs(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15
2 13
-select * from t55;
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (abs(15)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 5
+1 15
2 13
-3 17
-select * from t66;
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 13
-2 17
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (abs(15)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with abs(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1=13 ;
+delete from t2 where col1=13 ;
+delete from t3 where col1=13 ;
+delete from t4 where col1=13 ;
+delete from t5 where col1=13 ;
+delete from t6 where col1=13 ;
+select * from t1 order by col1;
+col1
+15
+select * from t2 order by col1;
+col1
+15
+17
+select * from t3 order by col1;
+col1
+15
+17
+select * from t4 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t5 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+insert into t1 values (13 );
+insert into t2 values (13 );
+insert into t3 values (13 );
+insert into t4 values (60,13 );
+insert into t5 values (60,13 );
+insert into t6 values (60,13 );
+select * from t1 order by col1;
+col1
+13
+15
+select * from t2 order by col1;
+col1
+13
+15
+17
+select * from t3 order by col1;
+col1
+13
+15
+17
+select * from t4 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t5 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t6 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+15
+select * from t2 order by col1;
+col1
+13
+15
+17
+select * from t3 order by col1;
+col1
+13
+15
+17
+select * from t4 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t5 order by colint;
+colint col1
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t6 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with abs(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1=13 ;
+delete from t22 where col1=13 ;
+delete from t33 where col1=13 ;
+delete from t44 where col1=13 ;
+delete from t55 where col1=13 ;
+delete from t66 where col1=13 ;
+select * from t11 order by col1;
+col1
+15
+select * from t22 order by col1;
+col1
+15
+17
+select * from t33 order by col1;
+col1
+15
+17
+select * from t44 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t55 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+insert into t11 values (13 );
+insert into t22 values (13 );
+insert into t33 values (13 );
+insert into t44 values (60,13 );
+insert into t55 values (60,13 );
+insert into t66 values (60,13 );
+select * from t11 order by col1;
+col1
+13
+15
+select * from t22 order by col1;
+col1
+13
+15
+17
+select * from t33 order by col1;
+col1
+13
+15
+17
+select * from t44 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t55 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t66 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+15
+select * from t22 order by col1;
+col1
+13
+15
+17
+select * from t33 order by col1;
+col1
+13
+15
+17
+select * from t44 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t55 order by colint;
+colint col1
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t66 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -238,44 +1731,83 @@ insert into t2 values ('3');
insert into t3 values ('1');
insert into t3 values ('9');
insert into t3 values ('3');
-insert into t4 values (1,'1');
-insert into t4 values (2,'9');
-insert into t5 values (1,'1');
-insert into t5 values (2,'9');
-insert into t5 values (3,'3');
-insert into t6 values (1,'9');
-insert into t6 values (2,'3');
-select ascii(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t6;
+select ascii(col1) from t1 order by col1;
ascii(col1)
49
57
-select * from t1;
+select * from t1 order by col1;
col1
1
9
-select * from t2;
+select * from t2 order by col1;
col1
1
-9
3
-select * from t3;
+9
+select * from t3 order by col1;
col1
1
-9
3
-select * from t4;
+9
+select * from t4 order by colint;
colint col1
1 1
2 9
-select * from t5;
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+select * from t6 order by colint;
colint col1
1 1
2 9
3 3
-select * from t6;
+4 8
+update t1 set col1='8' where col1='1';
+update t2 set col1='8' where col1='1';
+update t3 set col1='8' where col1='1';
+update t4 set col1='8' where col1='1';
+update t5 set col1='8' where col1='1';
+update t6 set col1='8' where col1='1';
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t5 order by colint;
colint col1
-1 9
-2 3
+1 8
+2 9
+3 3
+4 8
+select * from t6 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
-------------------------------------------------------------------------
--- Alter tables with ascii(col1)
-------------------------------------------------------------------------
@@ -325,33 +1857,311 @@ alter table t66
partition by range(colint)
(partition p0 values less than (ascii('5')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-1
+8
9
-select * from t22;
+select * from t22 order by col1;
col1
-1
+3
+8
9
+select * from t33 order by col1;
+col1
3
-select * from t33;
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-1
+8
9
-3
-select * from t44;
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+alter table t55
+partition by list(colint)
+subpartition by hash(ascii(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(1) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (ascii(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 1
+1 8
2 9
-select * from t55;
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ascii('5')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ascii('5')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
2 9
3 3
-select * from t66;
+4 8
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ascii(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='9';
+delete from t2 where col1='9';
+delete from t3 where col1='9';
+delete from t4 where col1='9';
+delete from t5 where col1='9';
+delete from t6 where col1='9';
+select * from t1 order by col1;
+col1
+8
+select * from t2 order by col1;
+col1
+3
+8
+select * from t3 order by col1;
+col1
+3
+8
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t1 values ('9');
+insert into t2 values ('9');
+insert into t3 values ('9');
+insert into t4 values (60,'9');
+insert into t5 values (60,'9');
+insert into t6 values (60,'9');
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
colint col1
-1 9
-2 3
+1 8
+3 3
+4 8
+60 9
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t6 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+60 9
+select * from t5 order by colint;
+colint col1
+60 9
+select * from t6 order by colint;
+colint col1
+60 9
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ascii(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='9';
+delete from t22 where col1='9';
+delete from t33 where col1='9';
+delete from t44 where col1='9';
+delete from t55 where col1='9';
+delete from t66 where col1='9';
+select * from t11 order by col1;
+col1
+8
+select * from t22 order by col1;
+col1
+3
+8
+select * from t33 order by col1;
+col1
+3
+8
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t11 values ('9');
+insert into t22 values ('9');
+insert into t33 values ('9');
+insert into t44 values (60,'9');
+insert into t55 values (60,'9');
+insert into t66 values (60,'9');
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t66 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+60 9
+select * from t55 order by colint;
+colint col1
+60 9
+select * from t66 order by colint;
+colint col1
+60 9
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -421,44 +2231,83 @@ insert into t2 values (17.987);
insert into t3 values (5.1230);
insert into t3 values (13.345);
insert into t3 values (17.987);
-insert into t4 values (1,5.1230);
-insert into t4 values (2,13.345);
-insert into t5 values (1,5.1230);
-insert into t5 values (2,13.345);
-insert into t5 values (3,17.987);
-insert into t6 values (1,13.345);
-insert into t6 values (2,17.987);
-select cast(ceiling(col1) as signed integer) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t6;
+select cast(ceiling(col1) as signed integer) from t1 order by col1;
cast(ceiling(col1) as signed integer)
6
14
-select * from t1;
+select * from t1 order by col1;
col1
5.1230
13.3450
-select * from t2;
+select * from t2 order by col1;
col1
5.1230
13.3450
17.9870
-select * from t3;
+select * from t3 order by col1;
col1
5.1230
13.3450
17.9870
-select * from t4;
+select * from t4 order by colint;
colint col1
1 5.1230
2 13.3450
-select * from t5;
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
colint col1
1 5.1230
2 13.3450
3 17.9870
-select * from t6;
+4 15.6540
+select * from t6 order by colint;
colint col1
-1 13.3450
-2 17.9870
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+update t1 set col1=15.654 where col1=5.1230;
+update t2 set col1=15.654 where col1=5.1230;
+update t3 set col1=15.654 where col1=5.1230;
+update t4 set col1=15.654 where col1=5.1230;
+update t5 set col1=15.654 where col1=5.1230;
+update t6 set col1=15.654 where col1=5.1230;
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
-------------------------------------------------------------------------
--- Alter tables with cast(ceiling(col1) as signed integer)
-------------------------------------------------------------------------
@@ -508,33 +2357,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (cast(ceiling(15) as signed integer)),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-5.1230
13.3450
-select * from t22;
+15.6540
+select * from t22 order by col1;
col1
-5.1230
13.3450
+15.6540
17.9870
-select * from t33;
+select * from t33 order by col1;
col1
-5.1230
13.3450
+15.6540
17.9870
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 5.1230
+1 15.6540
2 13.3450
-select * from t55;
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
colint col1
-1 5.1230
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(ceiling(col1) as signed integer)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` float(7,4) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (cast(ceiling(col1) as signed integer)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
2 13.3450
3 17.9870
-select * from t66;
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(ceiling(15) as signed integer)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 13.3450
-2 17.9870
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(ceiling(15) as signed integer)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(ceiling(col1) as signed integer)
+-------------------------------------------------------------------------
+delete from t1 where col1=13.345;
+delete from t2 where col1=13.345;
+delete from t3 where col1=13.345;
+delete from t4 where col1=13.345;
+delete from t5 where col1=13.345;
+delete from t6 where col1=13.345;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t1 values (13.345);
+insert into t2 values (13.345);
+insert into t3 values (13.345);
+insert into t4 values (60,13.345);
+insert into t5 values (60,13.345);
+insert into t6 values (60,13.345);
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t6 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+60 13.3450
+select * from t5 order by colint;
+colint col1
+60 13.3450
+select * from t6 order by colint;
+colint col1
+60 13.3450
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(ceiling(col1) as signed integer)
+-------------------------------------------------------------------------
+delete from t11 where col1=13.345;
+delete from t22 where col1=13.345;
+delete from t33 where col1=13.345;
+delete from t44 where col1=13.345;
+delete from t55 where col1=13.345;
+delete from t66 where col1=13.345;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t11 values (13.345);
+insert into t22 values (13.345);
+insert into t33 values (13.345);
+insert into t44 values (60,13.345);
+insert into t55 values (60,13.345);
+insert into t66 values (60,13.345);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t66 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+60 13.3450
+select * from t55 order by colint;
+colint col1
+60 13.3450
+select * from t66 order by colint;
+colint col1
+60 13.3450
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -604,44 +2729,83 @@ insert into t2 values (17.987);
insert into t3 values (5.1230);
insert into t3 values (13.345);
insert into t3 values (17.987);
-insert into t4 values (1,5.1230);
-insert into t4 values (2,13.345);
-insert into t5 values (1,5.1230);
-insert into t5 values (2,13.345);
-insert into t5 values (3,17.987);
-insert into t6 values (1,13.345);
-insert into t6 values (2,17.987);
-select cast(floor(col1) as signed) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t6;
+select cast(floor(col1) as signed) from t1 order by col1;
cast(floor(col1) as signed)
5
13
-select * from t1;
+select * from t1 order by col1;
col1
5.1230
13.3450
-select * from t2;
+select * from t2 order by col1;
col1
5.1230
13.3450
17.9870
-select * from t3;
+select * from t3 order by col1;
col1
5.1230
13.3450
17.9870
-select * from t4;
+select * from t4 order by colint;
colint col1
1 5.1230
2 13.3450
-select * from t5;
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
colint col1
1 5.1230
2 13.3450
3 17.9870
-select * from t6;
+4 15.6540
+select * from t6 order by colint;
colint col1
-1 13.3450
-2 17.9870
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+update t1 set col1=15.654 where col1=5.1230;
+update t2 set col1=15.654 where col1=5.1230;
+update t3 set col1=15.654 where col1=5.1230;
+update t4 set col1=15.654 where col1=5.1230;
+update t5 set col1=15.654 where col1=5.1230;
+update t6 set col1=15.654 where col1=5.1230;
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
-------------------------------------------------------------------------
--- Alter tables with cast(floor(col1) as signed)
-------------------------------------------------------------------------
@@ -691,33 +2855,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (cast(floor(15.123) as signed)),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-5.1230
13.3450
-select * from t22;
+15.6540
+select * from t22 order by col1;
col1
-5.1230
13.3450
+15.6540
17.9870
-select * from t33;
+select * from t33 order by col1;
col1
-5.1230
13.3450
+15.6540
17.9870
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 5.1230
+1 15.6540
2 13.3450
-select * from t55;
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
colint col1
-1 5.1230
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(floor(col1) as signed)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` float(7,4) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (cast(floor(col1) as signed)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(floor(15.123) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
2 13.3450
3 17.9870
-select * from t66;
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(floor(15.123) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 13.3450
-2 17.9870
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(floor(col1) as signed)
+-------------------------------------------------------------------------
+delete from t1 where col1=13.345;
+delete from t2 where col1=13.345;
+delete from t3 where col1=13.345;
+delete from t4 where col1=13.345;
+delete from t5 where col1=13.345;
+delete from t6 where col1=13.345;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t1 values (13.345);
+insert into t2 values (13.345);
+insert into t3 values (13.345);
+insert into t4 values (60,13.345);
+insert into t5 values (60,13.345);
+insert into t6 values (60,13.345);
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t6 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+60 13.3450
+select * from t5 order by colint;
+colint col1
+60 13.3450
+select * from t6 order by colint;
+colint col1
+60 13.3450
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(floor(col1) as signed)
+-------------------------------------------------------------------------
+delete from t11 where col1=13.345;
+delete from t22 where col1=13.345;
+delete from t33 where col1=13.345;
+delete from t44 where col1=13.345;
+delete from t55 where col1=13.345;
+delete from t66 where col1=13.345;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t11 values (13.345);
+insert into t22 values (13.345);
+insert into t33 values (13.345);
+insert into t44 values (60,13.345);
+insert into t55 values (60,13.345);
+insert into t66 values (60,13.345);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t66 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+60 13.3450
+select * from t55 order by colint;
+colint col1
+60 13.3450
+select * from t66 order by colint;
+colint col1
+60 13.3450
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -787,44 +3227,83 @@ insert into t2 values (17);
insert into t3 values (5.0000);
insert into t3 values (19);
insert into t3 values (17);
-insert into t4 values (1,5.0000);
-insert into t4 values (2,19);
-insert into t5 values (1,5.0000);
-insert into t5 values (2,19);
-insert into t5 values (3,17);
-insert into t6 values (1,19);
-insert into t6 values (2,17);
-select cast(mod(col1,10) as signed) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t6;
+select cast(mod(col1,10) as signed) from t1 order by col1;
cast(mod(col1,10) as signed)
5
9
-select * from t1;
+select * from t1 order by col1;
col1
5.0000
19.0000
-select * from t2;
+select * from t2 order by col1;
col1
5.0000
-19.0000
17.0000
-select * from t3;
+19.0000
+select * from t3 order by col1;
col1
5.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+update t1 set col1=15 where col1=5.0000;
+update t2 set col1=15 where col1=5.0000;
+update t3 set col1=15 where col1=5.0000;
+update t4 set col1=15 where col1=5.0000;
+update t5 set col1=15 where col1=5.0000;
+update t6 set col1=15 where col1=5.0000;
+select * from t1 order by col1;
+col1
+15.0000
+19.0000
+select * from t2 order by col1;
+col1
+15.0000
+17.0000
19.0000
+select * from t3 order by col1;
+col1
+15.0000
17.0000
-select * from t4;
+19.0000
+select * from t4 order by colint;
colint col1
-1 5.0000
-2 19.0000
-select * from t5;
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
colint col1
-1 5.0000
-2 19.0000
-3 17.0000
-select * from t6;
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
colint col1
-1 19.0000
-2 17.0000
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
-------------------------------------------------------------------------
--- Alter tables with cast(mod(col1,10) as signed)
-------------------------------------------------------------------------
@@ -874,33 +3353,311 @@ alter table t66
partition by range(colint)
(partition p0 values less than (cast(mod(15,10) as signed)),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-5.0000
+15.0000
19.0000
-select * from t22;
+select * from t22 order by col1;
col1
-5.0000
+15.0000
+17.0000
19.0000
+select * from t33 order by col1;
+col1
+15.0000
17.0000
-select * from t33;
+19.0000
+select * from t44 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-5.0000
+15.0000
19.0000
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+15.0000
+19.0000
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(mod(col1,10) as signed)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` float(7,4) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (cast(mod(col1,10) as signed)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(mod(15,10) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(mod(15,10) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(mod(col1,10) as signed)
+-------------------------------------------------------------------------
+delete from t1 where col1=19;
+delete from t2 where col1=19;
+delete from t3 where col1=19;
+delete from t4 where col1=19;
+delete from t5 where col1=19;
+delete from t6 where col1=19;
+select * from t1 order by col1;
+col1
+15.0000
+select * from t2 order by col1;
+col1
+15.0000
17.0000
-select * from t44;
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+select * from t4 order by colint;
colint col1
-1 5.0000
-2 19.0000
-select * from t55;
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
colint col1
-1 5.0000
-2 19.0000
-3 17.0000
-select * from t66;
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+insert into t1 values (19);
+insert into t2 values (19);
+insert into t3 values (19);
+insert into t4 values (60,19);
+insert into t5 values (60,19);
+insert into t6 values (60,19);
+select * from t1 order by col1;
+col1
+15.0000
+19.0000
+select * from t2 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t6 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+60 19.0000
+select * from t5 order by colint;
+colint col1
+60 19.0000
+select * from t6 order by colint;
+colint col1
+60 19.0000
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(mod(col1,10) as signed)
+-------------------------------------------------------------------------
+delete from t11 where col1=19;
+delete from t22 where col1=19;
+delete from t33 where col1=19;
+delete from t44 where col1=19;
+delete from t55 where col1=19;
+delete from t66 where col1=19;
+select * from t11 order by col1;
+col1
+15.0000
+select * from t22 order by col1;
+col1
+15.0000
+17.0000
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+select * from t44 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+insert into t11 values (19);
+insert into t22 values (19);
+insert into t33 values (19);
+insert into t44 values (60,19);
+insert into t55 values (60,19);
+insert into t66 values (60,19);
+select * from t11 order by col1;
+col1
+15.0000
+19.0000
+select * from t22 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t44 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t44 order by colint;
+colint col1
+60 19.0000
+select * from t55 order by colint;
+colint col1
+60 19.0000
+select * from t66 order by colint;
colint col1
-1 19.0000
-2 17.0000
+60 19.0000
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -970,44 +3727,83 @@ insert into t2 values ('3');
insert into t3 values ('1');
insert into t3 values ('9');
insert into t3 values ('3');
-insert into t4 values (1,'1');
-insert into t4 values (2,'9');
-insert into t5 values (1,'1');
-insert into t5 values (2,'9');
-insert into t5 values (3,'3');
-insert into t6 values (1,'9');
-insert into t6 values (2,'3');
-select ord(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t6;
+select ord(col1) from t1 order by col1;
ord(col1)
49
57
-select * from t1;
+select * from t1 order by col1;
col1
1
9
-select * from t2;
+select * from t2 order by col1;
col1
1
-9
3
-select * from t3;
+9
+select * from t3 order by col1;
col1
1
-9
3
-select * from t4;
+9
+select * from t4 order by colint;
colint col1
1 1
2 9
-select * from t5;
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+select * from t6 order by colint;
colint col1
1 1
2 9
3 3
-select * from t6;
+4 8
+update t1 set col1='8' where col1='1';
+update t2 set col1='8' where col1='1';
+update t3 set col1='8' where col1='1';
+update t4 set col1='8' where col1='1';
+update t5 set col1='8' where col1='1';
+update t6 set col1='8' where col1='1';
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t5 order by colint;
colint col1
-1 9
-2 3
+1 8
+2 9
+3 3
+4 8
+select * from t6 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
-------------------------------------------------------------------------
--- Alter tables with ord(col1)
-------------------------------------------------------------------------
@@ -1057,33 +3853,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (ord('a')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-1
+8
9
-select * from t22;
+select * from t22 order by col1;
col1
-1
+3
+8
9
+select * from t33 order by col1;
+col1
3
-select * from t33;
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-1
+8
9
-3
-select * from t44;
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+alter table t55
+partition by list(colint)
+subpartition by hash(ord(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(3) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (ord(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 1
+1 8
2 9
-select * from t55;
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ord('a')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 1
+1 8
2 9
3 3
-select * from t66;
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ord('a')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ord(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='9';
+delete from t2 where col1='9';
+delete from t3 where col1='9';
+delete from t4 where col1='9';
+delete from t5 where col1='9';
+delete from t6 where col1='9';
+select * from t1 order by col1;
+col1
+8
+select * from t2 order by col1;
+col1
+3
+8
+select * from t3 order by col1;
+col1
+3
+8
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t1 values ('9');
+insert into t2 values ('9');
+insert into t3 values ('9');
+insert into t4 values (60,'9');
+insert into t5 values (60,'9');
+insert into t6 values (60,'9');
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t6 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+60 9
+select * from t5 order by colint;
+colint col1
+60 9
+select * from t6 order by colint;
colint col1
-1 9
-2 3
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ord(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='9';
+delete from t22 where col1='9';
+delete from t33 where col1='9';
+delete from t44 where col1='9';
+delete from t55 where col1='9';
+delete from t66 where col1='9';
+select * from t11 order by col1;
+col1
+8
+select * from t22 order by col1;
+col1
+3
+8
+select * from t33 order by col1;
+col1
+3
+8
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t11 values ('9');
+insert into t22 values ('9');
+insert into t33 values ('9');
+insert into t44 values (60,'9');
+insert into t55 values (60,'9');
+insert into t66 values (60,'9');
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t66 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+60 9
+select * from t55 order by colint;
+colint col1
+60 9
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1153,44 +4225,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-02-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-02-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-02-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-01-25');
-select day(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select day(col1) from t1 order by col1;
day(col1)
-3
17
-select * from t1;
+3
+select * from t1 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t2;
-col1
2006-02-03
+select * from t2 order by col1;
+col1
2006-01-17
2006-01-25
-select * from t3;
-col1
2006-02-03
+select * from t3 order by col1;
+col1
2006-01-17
2006-01-25
-select * from t4;
+2006-02-03
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
1 2006-02-03
2 2006-01-17
-select * from t5;
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
1 2006-02-03
2 2006-01-17
3 2006-01-25
-select * from t6;
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-02-03';
+update t2 set col1='2006-02-05' where col1='2006-02-03';
+update t3 set col1='2006-02-05' where col1='2006-02-03';
+update t4 set col1='2006-02-05' where col1='2006-02-03';
+update t5 set col1='2006-02-05' where col1='2006-02-03';
+update t6 set col1='2006-02-05' where col1='2006-02-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with day(col1)
-------------------------------------------------------------------------
@@ -1240,33 +4351,307 @@ alter table t66
partition by range(colint)
(partition p0 values less than (day('2006-12-21')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t22;
+2006-02-05
+select * from t22 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t33;
+2006-02-05
+select * from t33 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t44;
+2006-02-05
+select * from t44 order by colint;
colint col1
-1 2006-02-03
+1 2006-02-05
2 2006-01-17
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-1 2006-02-03
+1 2006-02-05
2 2006-01-17
3 2006-01-25
-select * from t66;
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(day(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (day(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (day('2006-12-21')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (day('2006-12-21')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with day(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+60 2006-01-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with day(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+60 2006-01-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1336,44 +4721,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-02-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-02-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-02-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-01-25');
-select dayofmonth(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofmonth(col1) from t1 order by col1;
dayofmonth(col1)
-3
17
-select * from t1;
+3
+select * from t1 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t2;
-col1
2006-02-03
+select * from t2 order by col1;
+col1
2006-01-17
2006-01-25
-select * from t3;
-col1
2006-02-03
+select * from t3 order by col1;
+col1
2006-01-17
2006-01-25
-select * from t4;
+2006-02-03
+select * from t4 order by colint;
colint col1
1 2006-02-03
2 2006-01-17
-select * from t5;
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
1 2006-02-03
2 2006-01-17
3 2006-01-25
-select * from t6;
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-02-03';
+update t2 set col1='2006-02-05' where col1='2006-02-03';
+update t3 set col1='2006-02-05' where col1='2006-02-03';
+update t4 set col1='2006-02-05' where col1='2006-02-03';
+update t5 set col1='2006-02-05' where col1='2006-02-03';
+update t6 set col1='2006-02-05' where col1='2006-02-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with dayofmonth(col1)
-------------------------------------------------------------------------
@@ -1423,33 +4847,307 @@ alter table t66
partition by range(colint)
(partition p0 values less than (dayofmonth('2006-12-24')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t22;
+2006-02-05
+select * from t22 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t33;
+2006-02-05
+select * from t33 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t44;
+2006-02-05
+select * from t44 order by colint;
colint col1
-1 2006-02-03
+1 2006-02-05
2 2006-01-17
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-1 2006-02-03
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
2 2006-01-17
3 2006-01-25
-select * from t66;
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofmonth(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofmonth(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofmonth('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofmonth('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofmonth(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+60 2006-01-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofmonth(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+60 2006-01-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1519,44 +5217,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-02-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-02-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-02-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-02-17');
-insert into t6 values (2,'2006-01-25');
-select dayofweek(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofweek(col1) from t1 order by col1;
dayofweek(col1)
3
6
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-02-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
-2006-02-17
2006-01-25
-select * from t3;
+2006-02-17
+select * from t3 order by col1;
col1
2006-01-03
+2006-01-25
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-02-05
2006-02-17
+select * from t2 order by col1;
+col1
2006-01-25
-select * from t4;
+2006-02-05
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-2 2006-02-17
+1 2006-02-03
+2 2006-01-17
3 2006-01-25
-1 2006-01-03
-select * from t6;
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-02-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with dayofweek(col1)
-------------------------------------------------------------------------
@@ -1606,33 +5343,319 @@ alter table t66
partition by range(colint)
(partition p0 values less than (dayofweek('2006-12-24')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
+2006-02-05
2006-02-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-01-03
+2006-01-25
+2006-02-05
2006-02-17
+select * from t33 order by col1;
+col1
2006-01-25
-select * from t33;
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-01-03
+2006-02-05
2006-02-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofweek(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofweek(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofweek('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofweek('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofweek(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-02-17';
+delete from t2 where col1='2006-02-17';
+delete from t3 where col1='2006-02-17';
+delete from t4 where col1='2006-02-17';
+delete from t5 where col1='2006-02-17';
+delete from t6 where col1='2006-02-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-02-17');
+insert into t2 values ('2006-02-17');
+insert into t3 values ('2006-02-17');
+insert into t4 values (60,'2006-02-17');
+insert into t5 values (60,'2006-02-17');
+insert into t6 values (60,'2006-02-17');
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
2006-01-25
-select * from t44;
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
-select * from t55;
+60 2006-02-17
+select * from t5 order by colint;
colint col1
-2 2006-02-17
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
3 2006-01-25
-1 2006-01-03
-select * from t66;
+4 2006-02-05
+60 2006-02-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofweek(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-02-17';
+delete from t22 where col1='2006-02-17';
+delete from t33 where col1='2006-02-17';
+delete from t44 where col1='2006-02-17';
+delete from t55 where col1='2006-02-17';
+delete from t66 where col1='2006-02-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-1 2006-02-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-02-17');
+insert into t22 values ('2006-02-17');
+insert into t33 values ('2006-02-17');
+insert into t44 values (60,'2006-02-17');
+insert into t55 values (60,'2006-02-17');
+insert into t66 values (60,'2006-02-17');
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1702,44 +5725,83 @@ insert into t2 values ('2006-02-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-02-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-02-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-02-25');
-select dayofyear(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofyear(col1) from t1 order by col1;
dayofyear(col1)
3
17
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-01-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-01-17
2006-02-25
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
2006-01-17
2006-02-25
-select * from t4;
+select * from t4 order by colint;
colint col1
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t5;
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-3 2006-02-25
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t6;
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-02-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with dayofyear(col1)
-------------------------------------------------------------------------
@@ -1789,33 +5851,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (dayofyear('2006-12-25')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
2006-01-17
-select * from t22;
+2006-02-05
+select * from t22 order by col1;
col1
-2006-01-03
2006-01-17
+2006-02-05
2006-02-25
-select * from t33;
+select * from t33 order by col1;
col1
-2006-01-03
2006-01-17
+2006-02-05
2006-02-25
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-3 2006-02-25
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t66;
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
colint col1
-1 2006-01-17
-2 2006-02-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofyear(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1885,44 +6223,83 @@ insert into t2 values ('2006-02-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-02-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-02-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-02-25');
-select dayofyear(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofyear(col1) from t1 order by col1;
dayofyear(col1)
3
17
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-01-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-01-17
2006-02-25
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
2006-01-17
2006-02-25
-select * from t4;
+select * from t4 order by colint;
colint col1
-1 2006-01-03
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
2 2006-01-17
-select * from t5;
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-3 2006-02-25
-1 2006-01-03
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
2 2006-01-17
-select * from t6;
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-02-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with dayofyear(col1)
-------------------------------------------------------------------------
@@ -1972,33 +6349,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (dayofyear('2006-12-25')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
2006-01-17
-select * from t22;
+2006-02-05
+select * from t22 order by col1;
col1
-2006-01-03
2006-01-17
+2006-02-05
2006-02-25
-select * from t33;
+select * from t33 order by col1;
col1
-2006-01-03
2006-01-17
+2006-02-05
2006-02-25
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-3 2006-02-25
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t66;
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
colint col1
-1 2006-01-17
-2 2006-02-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(30) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofyear(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2068,44 +6721,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-02-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-02-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-02-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-02-17');
-insert into t6 values (2,'2006-01-25');
-select extract(month from col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select extract(month from col1) from t1 order by col1;
extract(month from col1)
1
2
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-02-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
-2006-02-17
2006-01-25
-select * from t3;
+2006-02-17
+select * from t3 order by col1;
col1
2006-01-03
+2006-01-25
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
2006-02-17
+select * from t3 order by col1;
+col1
2006-01-25
-select * from t4;
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
+1 2006-02-03
+2 2006-01-17
3 2006-01-25
-select * from t6;
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-02-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with extract(month from col1)
-------------------------------------------------------------------------
@@ -2155,33 +6847,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (extract(year from '1998-11-23')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
+2006-02-05
2006-02-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-01-03
+2006-01-25
+2006-02-05
2006-02-17
+select * from t33 order by col1;
+col1
2006-01-25
-select * from t33;
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-01-03
+2006-02-05
+2006-02-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+alter table t55
+partition by list(colint)
+subpartition by hash(extract(month from col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (extract(month from col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (extract(year from '1998-11-23')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (extract(year from '1998-11-23')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with extract(month from col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-02-17';
+delete from t2 where col1='2006-02-17';
+delete from t3 where col1='2006-02-17';
+delete from t4 where col1='2006-02-17';
+delete from t5 where col1='2006-02-17';
+delete from t6 where col1='2006-02-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-02-17');
+insert into t2 values ('2006-02-17');
+insert into t3 values ('2006-02-17');
+insert into t4 values (60,'2006-02-17');
+insert into t5 values (60,'2006-02-17');
+insert into t6 values (60,'2006-02-17');
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
2006-02-17
+select * from t3 order by col1;
+col1
2006-01-25
-select * from t44;
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t5 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
+1 2006-02-03
+2 2006-01-17
3 2006-01-25
-select * from t66;
+4 2006-02-05
+60 2006-02-17
+select * from t6 order by colint;
colint col1
-1 2006-02-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+60 2006-02-17
+select * from t5 order by colint;
+colint col1
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with extract(month from col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-02-17';
+delete from t22 where col1='2006-02-17';
+delete from t33 where col1='2006-02-17';
+delete from t44 where col1='2006-02-17';
+delete from t55 where col1='2006-02-17';
+delete from t66 where col1='2006-02-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-02-17');
+insert into t22 values ('2006-02-17');
+insert into t33 values ('2006-02-17');
+insert into t44 values (60,'2006-02-17');
+insert into t55 values (60,'2006-02-17');
+insert into t66 values (60,'2006-02-17');
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2251,44 +7219,83 @@ insert into t2 values ('21:59');
insert into t3 values ('09:09');
insert into t3 values ('14:30');
insert into t3 values ('21:59');
-insert into t4 values (1,'09:09');
-insert into t4 values (2,'14:30');
-insert into t5 values (1,'09:09');
-insert into t5 values (2,'14:30');
-insert into t5 values (3,'21:59');
-insert into t6 values (1,'14:30');
-insert into t6 values (2,'21:59');
-select hour(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select hour(col1) from t1 order by col1;
hour(col1)
9
14
-select * from t1;
+select * from t1 order by col1;
col1
09:09:00
14:30:00
-select * from t2;
+select * from t2 order by col1;
col1
09:09:00
14:30:00
21:59:00
-select * from t3;
+select * from t3 order by col1;
col1
09:09:00
14:30:00
21:59:00
-select * from t4;
+select * from t4 order by colint;
colint col1
-2 14:30:00
-1 09:09:00
-select * from t5;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
colint col1
-2 14:30:00
-1 09:09:00
-3 21:59:00
-select * from t6;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:30' where col1='09:09';
+update t2 set col1='10:30' where col1='09:09';
+update t3 set col1='10:30' where col1='09:09';
+update t4 set col1='10:30' where col1='09:09';
+update t5 set col1='10:30' where col1='09:09';
+update t6 set col1='10:30' where col1='09:09';
+select * from t1 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t2 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
colint col1
-1 14:30:00
-2 21:59:00
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with hour(col1)
-------------------------------------------------------------------------
@@ -2338,33 +7345,315 @@ alter table t66
partition by range(colint)
(partition p0 values less than (hour('18:30')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:00
+10:30:00
14:30:00
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:00
+10:30:00
14:30:00
21:59:00
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:00
+10:30:00
+14:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+alter table t55
+partition by list(colint)
+subpartition by hash(hour(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (hour(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (hour('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (hour('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with hour(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30';
+delete from t2 where col1='14:30';
+delete from t3 where col1='14:30';
+delete from t4 where col1='14:30';
+delete from t5 where col1='14:30';
+delete from t6 where col1='14:30';
+select * from t1 order by col1;
+col1
+10:30:00
+select * from t2 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30');
+insert into t2 values ('14:30');
+insert into t3 values ('14:30');
+insert into t4 values (60,'14:30');
+insert into t5 values (60,'14:30');
+insert into t6 values (60,'14:30');
+select * from t1 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t2 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+60 14:30:00
+select * from t5 order by colint;
+colint col1
+60 14:30:00
+select * from t6 order by colint;
+colint col1
+60 14:30:00
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with hour(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30';
+delete from t22 where col1='14:30';
+delete from t33 where col1='14:30';
+delete from t44 where col1='14:30';
+delete from t55 where col1='14:30';
+delete from t66 where col1='14:30';
+select * from t11 order by col1;
+col1
+10:30:00
+select * from t22 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30');
+insert into t22 values ('14:30');
+insert into t33 values ('14:30');
+insert into t44 values (60,'14:30');
+insert into t55 values (60,'14:30');
+insert into t66 values (60,'14:30');
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t22 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+14:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
14:30:00
21:59:00
-select * from t44;
+select * from t44 order by colint;
colint col1
-2 14:30:00
-1 09:09:00
-select * from t55;
+60 14:30:00
+select * from t55 order by colint;
colint col1
-2 14:30:00
-1 09:09:00
-3 21:59:00
-select * from t66;
+60 14:30:00
+select * from t66 order by colint;
colint col1
-1 14:30:00
-2 21:59:00
+60 14:30:00
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2434,44 +7723,83 @@ insert into t2 values ('00:59:22.000024');
insert into t3 values ('09:09:15.000002');
insert into t3 values ('04:30:01.000018');
insert into t3 values ('00:59:22.000024');
-insert into t4 values (1,'09:09:15.000002');
-insert into t4 values (2,'04:30:01.000018');
-insert into t5 values (1,'09:09:15.000002');
-insert into t5 values (2,'04:30:01.000018');
-insert into t5 values (3,'00:59:22.000024');
-insert into t6 values (1,'04:30:01.000018');
-insert into t6 values (2,'00:59:22.000024');
-select microsecond(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select microsecond(col1) from t1 order by col1;
microsecond(col1)
0
0
-select * from t1;
+select * from t1 order by col1;
col1
+04:30:01
09:09:15
+select * from t2 order by col1;
+col1
+00:59:22
04:30:01
-select * from t2;
+09:09:15
+select * from t3 order by col1;
col1
+00:59:22
+04:30:01
09:09:15
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t2 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t3 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t4 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t5 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t6 set col1='05:30:34.000037' where col1='09:09:15.000002';
+select * from t1 order by col1;
+col1
04:30:01
-00:59:22
-select * from t3;
+05:30:34
+select * from t2 order by col1;
col1
-09:09:15
+00:59:22
04:30:01
+05:30:34
+select * from t3 order by col1;
+col1
00:59:22
-select * from t4;
+04:30:01
+05:30:34
+select * from t4 order by colint;
colint col1
-1 09:09:15
+1 05:30:34
2 04:30:01
-select * from t5;
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-1 09:09:15
+1 05:30:34
2 04:30:01
3 00:59:22
-select * from t6;
+4 05:30:34
+select * from t6 order by colint;
colint col1
-1 04:30:01
-2 00:59:22
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with microsecond(col1)
-------------------------------------------------------------------------
@@ -2521,33 +7849,301 @@ alter table t66
partition by range(colint)
(partition p0 values less than (microsecond('10:30:10.000010')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:15
04:30:01
-select * from t22;
+05:30:34
+select * from t22 order by col1;
col1
-09:09:15
+00:59:22
04:30:01
+05:30:34
+select * from t33 order by col1;
+col1
00:59:22
-select * from t33;
+04:30:01
+05:30:34
+select * from t44 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-09:09:15
04:30:01
-00:59:22
-select * from t44;
+05:30:34
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+04:30:01
+05:30:34
+alter table t55
+partition by list(colint)
+subpartition by hash(microsecond(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (microsecond(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 09:09:15
+1 05:30:34
2 04:30:01
-select * from t55;
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (microsecond('10:30:10.000010')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 09:09:15
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 05:30:34
2 04:30:01
3 00:59:22
-select * from t66;
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (microsecond('10:30:10.000010')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with microsecond(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='04:30:01.000018';
+delete from t2 where col1='04:30:01.000018';
+delete from t3 where col1='04:30:01.000018';
+delete from t4 where col1='04:30:01.000018';
+delete from t5 where col1='04:30:01.000018';
+delete from t6 where col1='04:30:01.000018';
+select * from t1 order by col1;
+col1
+05:30:34
+select * from t2 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t3 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t4 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-1 04:30:01
-2 00:59:22
+1 05:30:34
+3 00:59:22
+4 05:30:34
+insert into t1 values ('04:30:01.000018');
+insert into t2 values ('04:30:01.000018');
+insert into t3 values ('04:30:01.000018');
+insert into t4 values (60,'04:30:01.000018');
+insert into t5 values (60,'04:30:01.000018');
+insert into t6 values (60,'04:30:01.000018');
+select * from t1 order by col1;
+col1
+04:30:01
+05:30:34
+select * from t2 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t3 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t4 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t5 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t6 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t4 order by colint;
+colint col1
+60 04:30:01
+select * from t5 order by colint;
+colint col1
+60 04:30:01
+select * from t6 order by colint;
+colint col1
+60 04:30:01
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with microsecond(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='04:30:01.000018';
+delete from t22 where col1='04:30:01.000018';
+delete from t33 where col1='04:30:01.000018';
+delete from t44 where col1='04:30:01.000018';
+delete from t55 where col1='04:30:01.000018';
+delete from t66 where col1='04:30:01.000018';
+select * from t11 order by col1;
+col1
+05:30:34
+select * from t22 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t33 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t44 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+insert into t11 values ('04:30:01.000018');
+insert into t22 values ('04:30:01.000018');
+insert into t33 values ('04:30:01.000018');
+insert into t44 values (60,'04:30:01.000018');
+insert into t55 values (60,'04:30:01.000018');
+insert into t66 values (60,'04:30:01.000018');
+select * from t11 order by col1;
+col1
+04:30:01
+05:30:34
+select * from t22 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t33 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t44 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t44 order by colint;
+colint col1
+60 04:30:01
+select * from t55 order by colint;
+colint col1
+60 04:30:01
+select * from t66 order by colint;
+colint col1
+60 04:30:01
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2617,44 +8213,83 @@ insert into t2 values ('21:59:22');
insert into t3 values ('09:09:15');
insert into t3 values ('14:30:45');
insert into t3 values ('21:59:22');
-insert into t4 values (1,'09:09:15');
-insert into t4 values (2,'14:30:45');
-insert into t5 values (1,'09:09:15');
-insert into t5 values (2,'14:30:45');
-insert into t5 values (3,'21:59:22');
-insert into t6 values (1,'14:30:45');
-insert into t6 values (2,'21:59:22');
-select minute(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select minute(col1) from t1 order by col1;
minute(col1)
9
30
-select * from t1;
+select * from t1 order by col1;
col1
09:09:15
14:30:45
-select * from t2;
+select * from t2 order by col1;
col1
09:09:15
14:30:45
21:59:22
-select * from t3;
+select * from t3 order by col1;
col1
09:09:15
14:30:45
21:59:22
-select * from t4;
+select * from t4 order by colint;
colint col1
-2 14:30:45
1 09:09:15
-select * from t5;
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-2 14:30:45
1 09:09:15
-3 21:59:22
-select * from t6;
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:24:23' where col1='09:09:15';
+update t2 set col1='10:24:23' where col1='09:09:15';
+update t3 set col1='10:24:23' where col1='09:09:15';
+update t4 set col1='10:24:23' where col1='09:09:15';
+update t5 set col1='10:24:23' where col1='09:09:15';
+update t6 set col1='10:24:23' where col1='09:09:15';
+select * from t1 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t2 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t4 order by colint;
colint col1
-1 14:30:45
-2 21:59:22
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with minute(col1)
-------------------------------------------------------------------------
@@ -2704,33 +8339,321 @@ alter table t66
partition by range(colint)
(partition p0 values less than (minute('18:30')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:15
+10:24:23
14:30:45
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:15
+10:24:23
14:30:45
21:59:22
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:15
+10:24:23
14:30:45
21:59:22
-select * from t44;
+select * from t44 order by colint;
colint col1
-2 14:30:45
-1 09:09:15
-select * from t55;
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
colint col1
-2 14:30:45
-1 09:09:15
-3 21:59:22
-select * from t66;
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
colint col1
-1 14:30:45
-2 21:59:22
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+alter table t55
+partition by list(colint)
+subpartition by hash(minute(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (minute(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (minute('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (minute('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with minute(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:45';
+delete from t2 where col1='14:30:45';
+delete from t3 where col1='14:30:45';
+delete from t4 where col1='14:30:45';
+delete from t5 where col1='14:30:45';
+delete from t6 where col1='14:30:45';
+select * from t1 order by col1;
+col1
+10:24:23
+select * from t2 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30:45');
+insert into t2 values ('14:30:45');
+insert into t3 values ('14:30:45');
+insert into t4 values (60,'14:30:45');
+insert into t5 values (60,'14:30:45');
+insert into t6 values (60,'14:30:45');
+select * from t1 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t2 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t2 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+60 14:30:45
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with minute(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:45';
+delete from t22 where col1='14:30:45';
+delete from t33 where col1='14:30:45';
+delete from t44 where col1='14:30:45';
+delete from t55 where col1='14:30:45';
+delete from t66 where col1='14:30:45';
+select * from t11 order by col1;
+col1
+10:24:23
+select * from t22 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30:45');
+insert into t22 values ('14:30:45');
+insert into t33 values ('14:30:45');
+insert into t44 values (60,'14:30:45');
+insert into t55 values (60,'14:30:45');
+insert into t66 values (60,'14:30:45');
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t22 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t22 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+60 14:30:45
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2800,44 +8723,83 @@ insert into t2 values ('21:59:22');
insert into t3 values ('09:09:09');
insert into t3 values ('14:30:20');
insert into t3 values ('21:59:22');
-insert into t4 values (1,'09:09:09');
-insert into t4 values (2,'14:30:20');
-insert into t5 values (1,'09:09:09');
-insert into t5 values (2,'14:30:20');
-insert into t5 values (3,'21:59:22');
-insert into t6 values (1,'14:30:20');
-insert into t6 values (2,'21:59:22');
-select second(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select second(col1) from t1 order by col1;
second(col1)
9
20
-select * from t1;
+select * from t1 order by col1;
col1
09:09:09
14:30:20
-select * from t2;
+select * from t2 order by col1;
col1
09:09:09
14:30:20
21:59:22
-select * from t3;
+select * from t3 order by col1;
col1
09:09:09
14:30:20
21:59:22
-select * from t4;
+select * from t4 order by colint;
colint col1
-2 14:30:20
-1 09:09:09
-select * from t5;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:22:33' where col1='09:09:09';
+update t2 set col1='10:22:33' where col1='09:09:09';
+update t3 set col1='10:22:33' where col1='09:09:09';
+update t4 set col1='10:22:33' where col1='09:09:09';
+update t5 set col1='10:22:33' where col1='09:09:09';
+update t6 set col1='10:22:33' where col1='09:09:09';
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-2 14:30:20
-3 21:59:22
-1 09:09:09
-select * from t6;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
colint col1
-1 14:30:20
-2 21:59:22
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with second(col1)
-------------------------------------------------------------------------
@@ -2887,33 +8849,321 @@ alter table t66
partition by range(colint)
(partition p0 values less than (second('18:30:14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
21:59:22
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
21:59:22
-select * from t44;
+select * from t44 order by colint;
colint col1
-2 14:30:20
-1 09:09:09
-select * from t55;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t55
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (second(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:20';
+delete from t2 where col1='14:30:20';
+delete from t3 where col1='14:30:20';
+delete from t4 where col1='14:30:20';
+delete from t5 where col1='14:30:20';
+delete from t6 where col1='14:30:20';
+select * from t1 order by col1;
+col1
+10:22:33
+select * from t2 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t4 order by colint;
colint col1
-2 14:30:20
-3 21:59:22
-1 09:09:09
-select * from t66;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-1 14:30:20
-2 21:59:22
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30:20');
+insert into t2 values ('14:30:20');
+insert into t3 values ('14:30:20');
+insert into t4 values (60,'14:30:20');
+insert into t5 values (60,'14:30:20');
+insert into t6 values (60,'14:30:20');
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+60 14:30:20
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:20';
+delete from t22 where col1='14:30:20';
+delete from t33 where col1='14:30:20';
+delete from t44 where col1='14:30:20';
+delete from t55 where col1='14:30:20';
+delete from t66 where col1='14:30:20';
+select * from t11 order by col1;
+col1
+10:22:33
+select * from t22 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30:20');
+insert into t22 values ('14:30:20');
+insert into t33 values ('14:30:20');
+insert into t44 values (60,'14:30:20');
+insert into t55 values (60,'14:30:20');
+insert into t66 values (60,'14:30:20');
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+60 14:30:20
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2983,44 +9233,83 @@ insert into t2 values ('21:59:22');
insert into t3 values ('09:09:09');
insert into t3 values ('14:30:20');
insert into t3 values ('21:59:22');
-insert into t4 values (1,'09:09:09');
-insert into t4 values (2,'14:30:20');
-insert into t5 values (1,'09:09:09');
-insert into t5 values (2,'14:30:20');
-insert into t5 values (3,'21:59:22');
-insert into t6 values (1,'14:30:20');
-insert into t6 values (2,'21:59:22');
-select second(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select second(col1) from t1 order by col1;
second(col1)
9
20
-select * from t1;
+select * from t1 order by col1;
col1
09:09:09
14:30:20
-select * from t2;
+select * from t2 order by col1;
col1
09:09:09
14:30:20
21:59:22
-select * from t3;
+select * from t3 order by col1;
col1
09:09:09
14:30:20
21:59:22
-select * from t4;
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t6 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+update t1 set col1='10:22:33' where col1='09:09:09';
+update t2 set col1='10:22:33' where col1='09:09:09';
+update t3 set col1='10:22:33' where col1='09:09:09';
+update t4 set col1='10:22:33' where col1='09:09:09';
+update t5 set col1='10:22:33' where col1='09:09:09';
+update t6 set col1='10:22:33' where col1='09:09:09';
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
colint col1
-2 14:30:20
-1 09:09:09
-select * from t5;
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t5 order by colint;
colint col1
-2 14:30:20
-3 21:59:22
-1 09:09:09
-select * from t6;
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t6 order by colint;
colint col1
-1 14:30:20
-2 21:59:22
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
-------------------------------------------------------------------------
--- Alter tables with second(col1)
-------------------------------------------------------------------------
@@ -3070,33 +9359,321 @@ alter table t66
partition by range(colint)
(partition p0 values less than (second('18:30:14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
21:59:22
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
21:59:22
-select * from t44;
+select * from t44 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t55
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(30) DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (second(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-2 14:30:20
-1 09:09:09
-select * from t55;
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-2 14:30:20
-3 21:59:22
-1 09:09:09
-select * from t66;
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:20';
+delete from t2 where col1='14:30:20';
+delete from t3 where col1='14:30:20';
+delete from t4 where col1='14:30:20';
+delete from t5 where col1='14:30:20';
+delete from t6 where col1='14:30:20';
+select * from t1 order by col1;
+col1
+10:22:33
+select * from t2 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+insert into t1 values ('14:30:20');
+insert into t2 values ('14:30:20');
+insert into t3 values ('14:30:20');
+insert into t4 values (60,'14:30:20');
+insert into t5 values (60,'14:30:20');
+insert into t6 values (60,'14:30:20');
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:20
+select * from t5 order by colint;
colint col1
-1 14:30:20
-2 21:59:22
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+60 14:30:20
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:20';
+delete from t22 where col1='14:30:20';
+delete from t33 where col1='14:30:20';
+delete from t44 where col1='14:30:20';
+delete from t55 where col1='14:30:20';
+delete from t66 where col1='14:30:20';
+select * from t11 order by col1;
+col1
+10:22:33
+select * from t22 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+insert into t11 values ('14:30:20');
+insert into t22 values ('14:30:20');
+insert into t33 values ('14:30:20');
+insert into t44 values (60,'14:30:20');
+insert into t55 values (60,'14:30:20');
+insert into t66 values (60,'14:30:20');
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+60 14:30:20
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3166,44 +9743,83 @@ insert into t2 values ('2006-05-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-12-17');
insert into t3 values ('2006-05-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-12-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-12-17');
-insert into t5 values (3,'2006-05-25');
-insert into t6 values (1,'2006-12-17');
-insert into t6 values (2,'2006-05-25');
-select month(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select month(col1) from t1 order by col1;
month(col1)
1
12
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-12-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-05-25
2006-12-17
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
+2006-05-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-11-06' where col1='2006-01-03';
+update t2 set col1='2006-11-06' where col1='2006-01-03';
+update t3 set col1='2006-11-06' where col1='2006-01-03';
+update t4 set col1='2006-11-06' where col1='2006-01-03';
+update t5 set col1='2006-11-06' where col1='2006-01-03';
+update t6 set col1='2006-11-06' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-11-06
2006-12-17
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t3 order by col1;
+col1
2006-05-25
-select * from t4;
+2006-11-06
+2006-12-17
+select * from t4 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-3 2006-05-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-12-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with month(col1)
-------------------------------------------------------------------------
@@ -3253,33 +9869,315 @@ alter table t66
partition by range(colint)
(partition p0 values less than (month('2006-10-14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
+2006-11-06
2006-12-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-01-03
2006-05-25
+2006-11-06
2006-12-17
-select * from t33;
+select * from t33 order by col1;
col1
-2006-01-03
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+alter table t55
+partition by list(colint)
+subpartition by hash(month(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (month(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (month('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (month('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with month(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-12-17';
+delete from t2 where col1='2006-12-17';
+delete from t3 where col1='2006-12-17';
+delete from t4 where col1='2006-12-17';
+delete from t5 where col1='2006-12-17';
+delete from t6 where col1='2006-12-17';
+select * from t1 order by col1;
+col1
+2006-11-06
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-12-17');
+insert into t2 values ('2006-12-17');
+insert into t3 values ('2006-12-17');
+insert into t4 values (60,'2006-12-17');
+insert into t5 values (60,'2006-12-17');
+insert into t6 values (60,'2006-12-17');
+select * from t1 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t4 order by colint;
+colint col1
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+60 2006-12-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with month(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-12-17';
+delete from t22 where col1='2006-12-17';
+delete from t33 where col1='2006-12-17';
+delete from t44 where col1='2006-12-17';
+delete from t55 where col1='2006-12-17';
+delete from t66 where col1='2006-12-17';
+select * from t11 order by col1;
+col1
+2006-11-06
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-12-17');
+insert into t22 values ('2006-12-17');
+insert into t33 values ('2006-12-17');
+insert into t44 values (60,'2006-12-17');
+insert into t55 values (60,'2006-12-17');
+insert into t66 values (60,'2006-12-17');
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+2006-11-06
2006-12-17
+select * from t33 order by col1;
+col1
2006-05-25
-select * from t44;
+2006-11-06
+2006-12-17
+select * from t44 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-select * from t55;
+60 2006-12-17
+select * from t55 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-3 2006-05-25
-select * from t66;
+60 2006-12-17
+select * from t66 order by colint;
colint col1
-1 2006-12-17
-2 2006-05-25
+60 2006-12-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3349,44 +10247,83 @@ insert into t2 values ('2006-09-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-12-17');
insert into t3 values ('2006-09-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-12-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-12-17');
-insert into t5 values (3,'2006-09-25');
-insert into t6 values (1,'2006-12-17');
-insert into t6 values (2,'2006-09-25');
-select quarter(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select quarter(col1) from t1 order by col1;
quarter(col1)
1
4
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-12-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
-2006-12-17
2006-09-25
-select * from t3;
+2006-12-17
+select * from t3 order by col1;
col1
2006-01-03
+2006-09-25
2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-07-30' where col1='2006-01-03';
+update t2 set col1='2006-07-30' where col1='2006-01-03';
+update t3 set col1='2006-07-30' where col1='2006-01-03';
+update t4 set col1='2006-07-30' where col1='2006-01-03';
+update t5 set col1='2006-07-30' where col1='2006-01-03';
+update t6 set col1='2006-07-30' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-07-30
2006-09-25
-select * from t4;
+2006-12-17
+select * from t4 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-3 2006-09-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-12-17
-2 2006-09-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with quarter(col1)
-------------------------------------------------------------------------
@@ -3436,33 +10373,313 @@ alter table t66
partition by range(colint)
(partition p0 values less than (quarter('2006-10-14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
+2006-07-30
2006-12-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-01-03
+2006-07-30
+2006-09-25
2006-12-17
+select * from t33 order by col1;
+col1
+2006-07-30
2006-09-25
-select * from t33;
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-01-03
+2006-07-30
2006-12-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-07-30
+2006-12-17
+alter table t55
+partition by list(colint)
+subpartition by hash(quarter(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (quarter(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (quarter('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (quarter('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with quarter(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-12-17';
+delete from t2 where col1='2006-12-17';
+delete from t3 where col1='2006-12-17';
+delete from t4 where col1='2006-12-17';
+delete from t5 where col1='2006-12-17';
+delete from t6 where col1='2006-12-17';
+select * from t1 order by col1;
+col1
+2006-07-30
+select * from t2 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-12-17');
+insert into t2 values ('2006-12-17');
+insert into t3 values ('2006-12-17');
+insert into t4 values (60,'2006-12-17');
+insert into t5 values (60,'2006-12-17');
+insert into t6 values (60,'2006-12-17');
+select * from t1 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+4 2006-02-05
+60 2006-12-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with quarter(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-12-17';
+delete from t22 where col1='2006-12-17';
+delete from t33 where col1='2006-12-17';
+delete from t44 where col1='2006-12-17';
+delete from t55 where col1='2006-12-17';
+delete from t66 where col1='2006-12-17';
+select * from t11 order by col1;
+col1
+2006-07-30
+select * from t22 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t33 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-12-17');
+insert into t22 values ('2006-12-17');
+insert into t33 values ('2006-12-17');
+insert into t44 values (60,'2006-12-17');
+insert into t55 values (60,'2006-12-17');
+insert into t66 values (60,'2006-12-17');
+select * from t11 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t22 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t33 order by col1;
+col1
+2006-07-30
2006-09-25
-select * from t44;
+2006-12-17
+select * from t44 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t55 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-3 2006-09-25
-select * from t66;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t66 order by colint;
colint col1
-1 2006-12-17
-2 2006-09-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t44 order by colint;
+colint col1
+60 2006-12-17
+select * from t55 order by colint;
+colint col1
+60 2006-12-17
+select * from t66 order by colint;
+colint col1
+4 2006-02-05
+60 2006-12-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3532,44 +10749,83 @@ insert into t2 values ('21:59:22');
insert into t3 values ('09:09:15');
insert into t3 values ('14:30:45');
insert into t3 values ('21:59:22');
-insert into t4 values (1,'09:09:15');
-insert into t4 values (2,'14:30:45');
-insert into t5 values (1,'09:09:15');
-insert into t5 values (2,'14:30:45');
-insert into t5 values (3,'21:59:22');
-insert into t6 values (1,'14:30:45');
-insert into t6 values (2,'21:59:22');
-select time_to_sec(col1)-(time_to_sec(col1)-20) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select time_to_sec(col1)-(time_to_sec(col1)-20) from t1 order by col1;
time_to_sec(col1)-(time_to_sec(col1)-20)
20
20
-select * from t1;
+select * from t1 order by col1;
col1
09:09:15
14:30:45
-select * from t2;
+select * from t2 order by col1;
col1
09:09:15
14:30:45
21:59:22
-select * from t3;
+select * from t3 order by col1;
col1
09:09:15
14:30:45
21:59:22
-select * from t4;
+select * from t4 order by colint;
colint col1
1 09:09:15
-2 14:30:45
-select * from t5;
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
1 09:09:15
-2 14:30:45
-3 21:59:22
-select * from t6;
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
colint col1
-1 14:30:45
-2 21:59:22
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:33:11' where col1='09:09:15';
+update t2 set col1='10:33:11' where col1='09:09:15';
+update t3 set col1='10:33:11' where col1='09:09:15';
+update t4 set col1='10:33:11' where col1='09:09:15';
+update t5 set col1='10:33:11' where col1='09:09:15';
+update t6 set col1='10:33:11' where col1='09:09:15';
+select * from t1 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t2 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with time_to_sec(col1)-(time_to_sec(col1)-20)
-------------------------------------------------------------------------
@@ -3619,33 +10875,319 @@ alter table t66
partition by range(colint)
(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:15
+10:33:11
14:30:45
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:15
+10:33:11
14:30:45
21:59:22
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:15
+10:33:11
14:30:45
21:59:22
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 09:09:15
-2 14:30:45
-select * from t55;
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
colint col1
-1 09:09:15
-2 14:30:45
-3 21:59:22
-select * from t66;
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+alter table t55
+partition by list(colint)
+subpartition by hash(time_to_sec(col1)-(time_to_sec(col1)-20)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (time_to_sec(col1)-(time_to_sec(col1)-20)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with time_to_sec(col1)-(time_to_sec(col1)-20)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:45';
+delete from t2 where col1='14:30:45';
+delete from t3 where col1='14:30:45';
+delete from t4 where col1='14:30:45';
+delete from t5 where col1='14:30:45';
+delete from t6 where col1='14:30:45';
+select * from t1 order by col1;
+col1
+10:33:11
+select * from t2 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t4 order by colint;
colint col1
-1 14:30:45
-2 21:59:22
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30:45');
+insert into t2 values ('14:30:45');
+insert into t3 values ('14:30:45');
+insert into t4 values (60,'14:30:45');
+insert into t5 values (60,'14:30:45');
+insert into t6 values (60,'14:30:45');
+select * from t1 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t2 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t2 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with time_to_sec(col1)-(time_to_sec(col1)-20)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:45';
+delete from t22 where col1='14:30:45';
+delete from t33 where col1='14:30:45';
+delete from t44 where col1='14:30:45';
+delete from t55 where col1='14:30:45';
+delete from t66 where col1='14:30:45';
+select * from t11 order by col1;
+col1
+10:33:11
+select * from t22 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30:45');
+insert into t22 values ('14:30:45');
+insert into t33 values ('14:30:45');
+insert into t44 values (60,'14:30:45');
+insert into t55 values (60,'14:30:45');
+insert into t66 values (60,'14:30:45');
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t22 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t22 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3715,44 +11257,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-02-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-02-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-02-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-01-25');
-select to_days(col1)-to_days('2006-01-01') from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select to_days(col1)-to_days('2006-01-01') from t1 order by col1;
to_days(col1)-to_days('2006-01-01')
-33
16
-select * from t1;
+33
+select * from t1 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t2;
+2006-02-03
+select * from t2 order by col1;
col1
2006-01-17
2006-01-25
2006-02-03
-select * from t3;
+select * from t3 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t4;
+2006-02-03
+select * from t4 order by colint;
colint col1
-2 2006-01-17
1 2006-02-03
-select * from t5;
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
+1 2006-02-03
2 2006-01-17
3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
1 2006-02-03
-select * from t6;
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-06' where col1='2006-02-03';
+update t2 set col1='2006-02-06' where col1='2006-02-03';
+update t3 set col1='2006-02-06' where col1='2006-02-03';
+update t4 set col1='2006-02-06' where col1='2006-02-03';
+update t5 set col1='2006-02-06' where col1='2006-02-03';
+update t6 set col1='2006-02-06' where col1='2006-02-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with to_days(col1)-to_days('2006-01-01')
-------------------------------------------------------------------------
@@ -3802,33 +11383,311 @@ alter table t66
partition by range(colint)
(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t22;
+2006-02-06
+select * from t22 order by col1;
col1
2006-01-17
2006-01-25
-2006-02-03
-select * from t33;
+2006-02-06
+select * from t33 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t44;
+2006-02-06
+select * from t44 order by colint;
colint col1
+1 2006-02-06
2 2006-01-17
-1 2006-02-03
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
+1 2006-02-06
2 2006-01-17
3 2006-01-25
-1 2006-02-03
-select * from t66;
+4 2006-02-05
+select * from t66 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+alter table t55
+partition by list(colint)
+subpartition by hash(to_days(col1)-to_days('2006-01-01')) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (to_days(col1)-to_days('2006-01-01')) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with to_days(col1)-to_days('2006-01-01')
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+60 2006-01-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with to_days(col1)-to_days('2006-01-01')
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+60 2006-01-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3898,44 +11757,83 @@ insert into t2 values ('2006-05-25');
insert into t3 values ('2006-12-03');
insert into t3 values ('2006-11-17');
insert into t3 values ('2006-05-25');
-insert into t4 values (1,'2006-12-03');
-insert into t4 values (2,'2006-11-17');
-insert into t5 values (1,'2006-12-03');
-insert into t5 values (2,'2006-11-17');
-insert into t5 values (3,'2006-05-25');
-insert into t6 values (1,'2006-11-17');
-insert into t6 values (2,'2006-05-25');
-select weekday(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select weekday(col1) from t1 order by col1;
weekday(col1)
-6
4
-select * from t1;
+6
+select * from t1 order by col1;
col1
+2006-11-17
2006-12-03
+select * from t2 order by col1;
+col1
+2006-05-25
2006-11-17
-select * from t2;
+2006-12-03
+select * from t3 order by col1;
col1
+2006-05-25
+2006-11-17
2006-12-03
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-06' where col1='2006-12-03';
+update t2 set col1='2006-02-06' where col1='2006-12-03';
+update t3 set col1='2006-02-06' where col1='2006-12-03';
+update t4 set col1='2006-02-06' where col1='2006-12-03';
+update t5 set col1='2006-02-06' where col1='2006-12-03';
+update t6 set col1='2006-02-06' where col1='2006-12-03';
+select * from t1 order by col1;
+col1
+2006-02-06
2006-11-17
-2006-05-25
-select * from t3;
+select * from t2 order by col1;
col1
-2006-12-03
+2006-02-06
+2006-05-25
2006-11-17
+select * from t3 order by col1;
+col1
+2006-02-06
2006-05-25
-select * from t4;
+2006-11-17
+select * from t4 order by colint;
colint col1
-1 2006-12-03
-2 2006-11-17
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-1 2006-12-03
-2 2006-11-17
-3 2006-05-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-11-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with weekday(col1)
-------------------------------------------------------------------------
@@ -3985,33 +11883,311 @@ alter table t66
partition by range(colint)
(partition p0 values less than (weekday('2006-10-14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-12-03
+2006-02-06
2006-11-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-12-03
+2006-02-06
+2006-05-25
2006-11-17
+select * from t33 order by col1;
+col1
+2006-02-06
2006-05-25
-select * from t33;
+2006-11-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-12-03
+2006-02-06
2006-11-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-06
+2006-11-17
+alter table t55
+partition by list(colint)
+subpartition by hash(weekday(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (weekday(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekday('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekday('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekday(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-11-17';
+delete from t2 where col1='2006-11-17';
+delete from t3 where col1='2006-11-17';
+delete from t4 where col1='2006-11-17';
+delete from t5 where col1='2006-11-17';
+delete from t6 where col1='2006-11-17';
+select * from t1 order by col1;
+col1
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-11-17');
+insert into t2 values ('2006-11-17');
+insert into t3 values ('2006-11-17');
+insert into t4 values (60,'2006-11-17');
+insert into t5 values (60,'2006-11-17');
+insert into t6 values (60,'2006-11-17');
+select * from t1 order by col1;
+col1
+2006-02-06
+2006-11-17
+select * from t2 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t4 order by colint;
+colint col1
+60 2006-11-17
+select * from t5 order by colint;
+colint col1
+60 2006-11-17
+select * from t6 order by colint;
+colint col1
+60 2006-11-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekday(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-11-17';
+delete from t22 where col1='2006-11-17';
+delete from t33 where col1='2006-11-17';
+delete from t44 where col1='2006-11-17';
+delete from t55 where col1='2006-11-17';
+delete from t66 where col1='2006-11-17';
+select * from t11 order by col1;
+col1
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t33 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-11-17');
+insert into t22 values ('2006-11-17');
+insert into t33 values ('2006-11-17');
+insert into t44 values (60,'2006-11-17');
+insert into t55 values (60,'2006-11-17');
+insert into t66 values (60,'2006-11-17');
+select * from t11 order by col1;
+col1
+2006-02-06
+2006-11-17
+select * from t22 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t33 order by col1;
+col1
+2006-02-06
2006-05-25
-select * from t44;
+2006-11-17
+select * from t44 order by colint;
colint col1
-1 2006-12-03
-2 2006-11-17
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t55 order by colint;
colint col1
-1 2006-12-03
-2 2006-11-17
-3 2006-05-25
-select * from t66;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t66 order by colint;
colint col1
-1 2006-11-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t44 order by colint;
+colint col1
+60 2006-11-17
+select * from t55 order by colint;
+colint col1
+60 2006-11-17
+select * from t66 order by colint;
+colint col1
+60 2006-11-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -4081,44 +12257,83 @@ insert into t2 values ('2006-05-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-03-17');
insert into t3 values ('2006-05-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-03-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-03-17');
-insert into t5 values (3,'2006-05-25');
-insert into t6 values (1,'2006-03-17');
-insert into t6 values (2,'2006-05-25');
-select weekofyear(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select weekofyear(col1) from t1 order by col1;
weekofyear(col1)
1
11
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-03-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-03-17
2006-05-25
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
2006-03-17
2006-05-25
-select * from t4;
+select * from t4 order by colint;
colint col1
-1 2006-01-03
-2 2006-03-17
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-1 2006-01-03
-2 2006-03-17
-3 2006-05-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-03-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-09-06' where col1='2006-01-03';
+update t2 set col1='2006-09-06' where col1='2006-01-03';
+update t3 set col1='2006-09-06' where col1='2006-01-03';
+update t4 set col1='2006-09-06' where col1='2006-01-03';
+update t5 set col1='2006-09-06' where col1='2006-01-03';
+update t6 set col1='2006-09-06' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with weekofyear(col1)
-------------------------------------------------------------------------
@@ -4168,33 +12383,319 @@ alter table t66
partition by range(colint)
(partition p0 values less than (weekofyear('2006-02-14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
2006-03-17
-select * from t22;
+2006-09-06
+select * from t22 order by col1;
col1
-2006-01-03
2006-03-17
2006-05-25
-select * from t33;
+2006-09-06
+select * from t33 order by col1;
col1
-2006-01-03
2006-03-17
2006-05-25
-select * from t44;
+2006-09-06
+select * from t44 order by colint;
colint col1
-1 2006-01-03
-2 2006-03-17
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-1 2006-01-03
-2 2006-03-17
-3 2006-05-25
-select * from t66;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
colint col1
-1 2006-03-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+alter table t55
+partition by list(colint)
+subpartition by hash(weekofyear(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (weekofyear(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekofyear('2006-02-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekofyear('2006-02-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekofyear(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-03-17';
+delete from t2 where col1='2006-03-17';
+delete from t3 where col1='2006-03-17';
+delete from t4 where col1='2006-03-17';
+delete from t5 where col1='2006-03-17';
+delete from t6 where col1='2006-03-17';
+select * from t1 order by col1;
+col1
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-03-17');
+insert into t2 values ('2006-03-17');
+insert into t3 values ('2006-03-17');
+insert into t4 values (60,'2006-03-17');
+insert into t5 values (60,'2006-03-17');
+insert into t6 values (60,'2006-03-17');
+select * from t1 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+60 2006-03-17
+select * from t5 order by colint;
+colint col1
+60 2006-03-17
+select * from t6 order by colint;
+colint col1
+60 2006-03-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekofyear(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-03-17';
+delete from t22 where col1='2006-03-17';
+delete from t33 where col1='2006-03-17';
+delete from t44 where col1='2006-03-17';
+delete from t55 where col1='2006-03-17';
+delete from t66 where col1='2006-03-17';
+select * from t11 order by col1;
+col1
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-03-17');
+insert into t22 values ('2006-03-17');
+insert into t33 values ('2006-03-17');
+insert into t44 values (60,'2006-03-17');
+insert into t55 values (60,'2006-03-17');
+insert into t66 values (60,'2006-03-17');
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+60 2006-03-17
+select * from t55 order by colint;
+colint col1
+60 2006-03-17
+select * from t66 order by colint;
+colint col1
+60 2006-03-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -4264,44 +12765,83 @@ insert into t2 values ('2004-05-25');
insert into t3 values ('1996-01-03');
insert into t3 values ('2000-02-17');
insert into t3 values ('2004-05-25');
-insert into t4 values (1,'1996-01-03');
-insert into t4 values (2,'2000-02-17');
-insert into t5 values (1,'1996-01-03');
-insert into t5 values (2,'2000-02-17');
-insert into t5 values (3,'2004-05-25');
-insert into t6 values (1,'2000-02-17');
-insert into t6 values (2,'2004-05-25');
-select year(col1)-1990 from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select year(col1)-1990 from t1 order by col1;
year(col1)-1990
6
10
-select * from t1;
+select * from t1 order by col1;
col1
1996-01-03
2000-02-17
-select * from t2;
+select * from t2 order by col1;
col1
1996-01-03
2000-02-17
2004-05-25
-select * from t3;
+select * from t3 order by col1;
col1
1996-01-03
2000-02-17
2004-05-25
-select * from t4;
+select * from t4 order by colint;
colint col1
-1 1996-01-03
-2 2000-02-17
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-1 1996-01-03
-2 2000-02-17
-3 2004-05-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2002-02-15' where col1='1996-01-03';
+update t2 set col1='2002-02-15' where col1='1996-01-03';
+update t3 set col1='2002-02-15' where col1='1996-01-03';
+update t4 set col1='2002-02-15' where col1='1996-01-03';
+update t5 set col1='2002-02-15' where col1='1996-01-03';
+update t6 set col1='2002-02-15' where col1='1996-01-03';
+select * from t1 order by col1;
+col1
+2000-02-17
+2002-02-15
+select * from t2 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
colint col1
-1 2000-02-17
-2 2004-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with year(col1)-1990
-------------------------------------------------------------------------
@@ -4351,33 +12891,315 @@ alter table t66
partition by range(colint)
(partition p0 values less than (year('2005-10-14')-1990),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-1996-01-03
2000-02-17
-select * from t22;
+2002-02-15
+select * from t22 order by col1;
col1
-1996-01-03
2000-02-17
+2002-02-15
2004-05-25
-select * from t33;
+select * from t33 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2000-02-17
+2002-02-15
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2000-02-17
+2002-02-15
+alter table t55
+partition by list(colint)
+subpartition by hash(year(col1)-1990) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (year(col1)-1990) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (year('2005-10-14')-1990),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (year('2005-10-14')-1990),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with year(col1)-1990
+-------------------------------------------------------------------------
+delete from t1 where col1='2000-02-17';
+delete from t2 where col1='2000-02-17';
+delete from t3 where col1='2000-02-17';
+delete from t4 where col1='2000-02-17';
+delete from t5 where col1='2000-02-17';
+delete from t6 where col1='2000-02-17';
+select * from t1 order by col1;
+col1
+2002-02-15
+select * from t2 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2000-02-17');
+insert into t2 values ('2000-02-17');
+insert into t3 values ('2000-02-17');
+insert into t4 values (60,'2000-02-17');
+insert into t5 values (60,'2000-02-17');
+insert into t6 values (60,'2000-02-17');
+select * from t1 order by col1;
+col1
+2000-02-17
+2002-02-15
+select * from t2 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+60 2000-02-17
+select * from t5 order by colint;
+colint col1
+60 2000-02-17
+select * from t6 order by colint;
+colint col1
+60 2000-02-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with year(col1)-1990
+-------------------------------------------------------------------------
+delete from t11 where col1='2000-02-17';
+delete from t22 where col1='2000-02-17';
+delete from t33 where col1='2000-02-17';
+delete from t44 where col1='2000-02-17';
+delete from t55 where col1='2000-02-17';
+delete from t66 where col1='2000-02-17';
+select * from t11 order by col1;
+col1
+2002-02-15
+select * from t22 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t33 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2000-02-17');
+insert into t22 values ('2000-02-17');
+insert into t33 values ('2000-02-17');
+insert into t44 values (60,'2000-02-17');
+insert into t55 values (60,'2000-02-17');
+insert into t66 values (60,'2000-02-17');
+select * from t11 order by col1;
col1
-1996-01-03
2000-02-17
+2002-02-15
+select * from t22 order by col1;
+col1
+2000-02-17
+2002-02-15
2004-05-25
-select * from t44;
+select * from t33 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t55 order by colint;
colint col1
-1 1996-01-03
-2 2000-02-17
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t66 order by colint;
colint col1
-1 1996-01-03
-2 2000-02-17
-3 2004-05-25
-select * from t66;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t33 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
colint col1
-1 2000-02-17
-2 2004-05-25
+60 2000-02-17
+select * from t55 order by colint;
+colint col1
+60 2000-02-17
+select * from t66 order by colint;
+colint col1
+60 2000-02-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -4447,44 +13269,83 @@ insert into t2 values ('2006-03-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-08-17');
insert into t3 values ('2006-03-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-08-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-08-17');
-insert into t5 values (3,'2006-03-25');
-insert into t6 values (1,'2006-08-17');
-insert into t6 values (2,'2006-03-25');
-select yearweek(col1)-200600 from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select yearweek(col1)-200600 from t1 order by col1;
yearweek(col1)-200600
1
33
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-08-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-03-25
2006-08-17
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
+2006-03-25
2006-08-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-11-15' where col1='2006-01-03';
+update t2 set col1='2006-11-15' where col1='2006-01-03';
+update t3 set col1='2006-11-15' where col1='2006-01-03';
+update t4 set col1='2006-11-15' where col1='2006-01-03';
+update t5 set col1='2006-11-15' where col1='2006-01-03';
+update t6 set col1='2006-11-15' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t3 order by col1;
+col1
2006-03-25
-select * from t4;
+2006-08-17
+2006-11-15
+select * from t4 order by colint;
colint col1
-1 2006-01-03
-2 2006-08-17
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-3 2006-03-25
-1 2006-01-03
-2 2006-08-17
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-08-17
-2 2006-03-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with yearweek(col1)-200600
-------------------------------------------------------------------------
@@ -4534,33 +13395,321 @@ alter table t66
partition by range(colint)
(partition p0 values less than (yearweek('2006-10-14')-200600),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
2006-08-17
-select * from t22;
+2006-11-15
+select * from t22 order by col1;
col1
-2006-01-03
2006-03-25
2006-08-17
-select * from t33;
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-01-03
2006-08-17
+2006-11-15
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+alter table t55
+partition by list(colint)
+subpartition by hash(yearweek(col1)-200600) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (yearweek(col1)-200600) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = InnoDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = InnoDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = InnoDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = InnoDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = InnoDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = InnoDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (yearweek('2006-10-14')-200600),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (yearweek('2006-10-14')-200600),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with yearweek(col1)-200600
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-08-17';
+delete from t2 where col1='2006-08-17';
+delete from t3 where col1='2006-08-17';
+delete from t4 where col1='2006-08-17';
+delete from t5 where col1='2006-08-17';
+delete from t6 where col1='2006-08-17';
+select * from t1 order by col1;
+col1
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t3 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-08-17');
+insert into t2 values ('2006-08-17');
+insert into t3 values ('2006-08-17');
+insert into t4 values (60,'2006-08-17');
+insert into t5 values (60,'2006-08-17');
+insert into t6 values (60,'2006-08-17');
+select * from t1 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t3 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t3 order by col1;
+col1
2006-03-25
-select * from t44;
+2006-08-17
+2006-11-15
+select * from t4 order by colint;
+colint col1
+60 2006-08-17
+select * from t5 order by colint;
+colint col1
+60 2006-08-17
+select * from t6 order by colint;
+colint col1
+60 2006-08-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with yearweek(col1)-200600
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-08-17';
+delete from t22 where col1='2006-08-17';
+delete from t33 where col1='2006-08-17';
+delete from t44 where col1='2006-08-17';
+delete from t55 where col1='2006-08-17';
+delete from t66 where col1='2006-08-17';
+select * from t11 order by col1;
+col1
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-08-17');
+insert into t22 values ('2006-08-17');
+insert into t33 values ('2006-08-17');
+insert into t44 values (60,'2006-08-17');
+insert into t55 values (60,'2006-08-17');
+insert into t66 values (60,'2006-08-17');
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t44 order by colint;
colint col1
-1 2006-01-03
-2 2006-08-17
-select * from t55;
+60 2006-08-17
+select * from t55 order by colint;
colint col1
-3 2006-03-25
-1 2006-01-03
-2 2006-08-17
-select * from t66;
+60 2006-08-17
+select * from t66 order by colint;
colint col1
-1 2006-08-17
-2 2006-03-25
+60 2006-08-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
diff --git a/mysql-test/suite/partitions/r/partition_supported_sql_func_myisam.result b/mysql-test/suite/partitions/r/partition_supported_sql_func_myisam.result
index 73d69e5c90a..86742038990 100644
--- a/mysql-test/suite/partitions/r/partition_supported_sql_func_myisam.result
+++ b/mysql-test/suite/partitions/r/partition_supported_sql_func_myisam.result
@@ -55,44 +55,329 @@ insert into t2 values (17 );
insert into t3 values (5 );
insert into t3 values (13 );
insert into t3 values (17 );
-insert into t4 values (1,5 );
-insert into t4 values (2,13 );
-insert into t5 values (1,5 );
-insert into t5 values (2,13 );
-insert into t5 values (3,17 );
-insert into t6 values (1,13 );
-insert into t6 values (2,17 );
-select abs(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_int.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_int.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_int.in' into table t6;
+select abs(col1) from t1 order by col1;
abs(col1)
5
13
-select * from t1;
+select * from t1 order by col1;
col1
5
13
-select * from t2;
+select * from t2 order by col1;
col1
5
13
17
-select * from t3;
+select * from t3 order by col1;
col1
5
13
17
-select * from t4;
+select * from t4 order by colint;
colint col1
1 5
2 13
-select * from t5;
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t5 order by colint;
colint col1
1 5
2 13
-3 17
-select * from t6;
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t6 order by colint;
colint col1
-1 13
-2 17
+1 5
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+update t1 set col1=15 where col1=5 ;
+update t2 set col1=15 where col1=5 ;
+update t3 set col1=15 where col1=5 ;
+update t4 set col1=15 where col1=5 ;
+update t5 set col1=15 where col1=5 ;
+update t6 set col1=15 where col1=5 ;
+select * from t1 order by col1;
+col1
+13
+15
+select * from t2 order by col1;
+col1
+13
+15
+17
+select * from t3 order by col1;
+col1
+13
+15
+17
+select * from t4 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t5 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t6 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
-------------------------------------------------------------------------
--- Alter tables with abs(col1)
-------------------------------------------------------------------------
@@ -142,33 +427,1241 @@ alter table t66
partition by range(colint)
(partition p0 values less than (abs(15)),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-5
13
-select * from t22;
+15
+select * from t22 order by col1;
col1
-5
13
+15
17
-select * from t33;
+select * from t33 order by col1;
col1
-5
13
+15
17
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 5
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t55 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t66 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13
+15
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13
+15
+alter table t55
+partition by list(colint)
+subpartition by hash(abs(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (abs(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15
2 13
-select * from t55;
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (abs(15)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 5
+1 15
2 13
-3 17
-select * from t66;
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 13
-2 17
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (abs(15)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with abs(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1=13 ;
+delete from t2 where col1=13 ;
+delete from t3 where col1=13 ;
+delete from t4 where col1=13 ;
+delete from t5 where col1=13 ;
+delete from t6 where col1=13 ;
+select * from t1 order by col1;
+col1
+15
+select * from t2 order by col1;
+col1
+15
+17
+select * from t3 order by col1;
+col1
+15
+17
+select * from t4 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t5 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+insert into t1 values (13 );
+insert into t2 values (13 );
+insert into t3 values (13 );
+insert into t4 values (60,13 );
+insert into t5 values (60,13 );
+insert into t6 values (60,13 );
+select * from t1 order by col1;
+col1
+13
+15
+select * from t2 order by col1;
+col1
+13
+15
+17
+select * from t3 order by col1;
+col1
+13
+15
+17
+select * from t4 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t5 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t6 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+15
+select * from t2 order by col1;
+col1
+13
+15
+17
+select * from t3 order by col1;
+col1
+13
+15
+17
+select * from t4 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t5 order by colint;
+colint col1
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t6 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with abs(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1=13 ;
+delete from t22 where col1=13 ;
+delete from t33 where col1=13 ;
+delete from t44 where col1=13 ;
+delete from t55 where col1=13 ;
+delete from t66 where col1=13 ;
+select * from t11 order by col1;
+col1
+15
+select * from t22 order by col1;
+col1
+15
+17
+select * from t33 order by col1;
+col1
+15
+17
+select * from t44 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t55 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+insert into t11 values (13 );
+insert into t22 values (13 );
+insert into t33 values (13 );
+insert into t44 values (60,13 );
+insert into t55 values (60,13 );
+insert into t66 values (60,13 );
+select * from t11 order by col1;
+col1
+13
+15
+select * from t22 order by col1;
+col1
+13
+15
+17
+select * from t33 order by col1;
+col1
+13
+15
+17
+select * from t44 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t55 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t66 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+15
+select * from t22 order by col1;
+col1
+13
+15
+17
+select * from t33 order by col1;
+col1
+13
+15
+17
+select * from t44 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t55 order by colint;
+colint col1
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t66 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -238,44 +1731,83 @@ insert into t2 values ('3');
insert into t3 values ('1');
insert into t3 values ('9');
insert into t3 values ('3');
-insert into t4 values (1,'1');
-insert into t4 values (2,'9');
-insert into t5 values (1,'1');
-insert into t5 values (2,'9');
-insert into t5 values (3,'3');
-insert into t6 values (1,'9');
-insert into t6 values (2,'3');
-select ascii(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t6;
+select ascii(col1) from t1 order by col1;
ascii(col1)
49
57
-select * from t1;
+select * from t1 order by col1;
col1
1
9
-select * from t2;
+select * from t2 order by col1;
col1
1
-9
3
-select * from t3;
+9
+select * from t3 order by col1;
col1
1
-9
3
-select * from t4;
+9
+select * from t4 order by colint;
colint col1
1 1
2 9
-select * from t5;
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+select * from t6 order by colint;
colint col1
1 1
2 9
3 3
-select * from t6;
+4 8
+update t1 set col1='8' where col1='1';
+update t2 set col1='8' where col1='1';
+update t3 set col1='8' where col1='1';
+update t4 set col1='8' where col1='1';
+update t5 set col1='8' where col1='1';
+update t6 set col1='8' where col1='1';
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t5 order by colint;
colint col1
-1 9
-2 3
+1 8
+2 9
+3 3
+4 8
+select * from t6 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
-------------------------------------------------------------------------
--- Alter tables with ascii(col1)
-------------------------------------------------------------------------
@@ -325,33 +1857,311 @@ alter table t66
partition by range(colint)
(partition p0 values less than (ascii('5')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-1
+8
9
-select * from t22;
+select * from t22 order by col1;
col1
-1
+3
+8
9
+select * from t33 order by col1;
+col1
3
-select * from t33;
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-1
+8
9
-3
-select * from t44;
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+alter table t55
+partition by list(colint)
+subpartition by hash(ascii(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(1) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (ascii(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 1
+1 8
2 9
-select * from t55;
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ascii('5')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ascii('5')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
2 9
3 3
-select * from t66;
+4 8
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ascii(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='9';
+delete from t2 where col1='9';
+delete from t3 where col1='9';
+delete from t4 where col1='9';
+delete from t5 where col1='9';
+delete from t6 where col1='9';
+select * from t1 order by col1;
+col1
+8
+select * from t2 order by col1;
+col1
+3
+8
+select * from t3 order by col1;
+col1
+3
+8
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t1 values ('9');
+insert into t2 values ('9');
+insert into t3 values ('9');
+insert into t4 values (60,'9');
+insert into t5 values (60,'9');
+insert into t6 values (60,'9');
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
colint col1
-1 9
-2 3
+1 8
+3 3
+4 8
+60 9
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t6 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+60 9
+select * from t5 order by colint;
+colint col1
+60 9
+select * from t6 order by colint;
+colint col1
+60 9
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ascii(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='9';
+delete from t22 where col1='9';
+delete from t33 where col1='9';
+delete from t44 where col1='9';
+delete from t55 where col1='9';
+delete from t66 where col1='9';
+select * from t11 order by col1;
+col1
+8
+select * from t22 order by col1;
+col1
+3
+8
+select * from t33 order by col1;
+col1
+3
+8
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t11 values ('9');
+insert into t22 values ('9');
+insert into t33 values ('9');
+insert into t44 values (60,'9');
+insert into t55 values (60,'9');
+insert into t66 values (60,'9');
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t66 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+60 9
+select * from t55 order by colint;
+colint col1
+60 9
+select * from t66 order by colint;
+colint col1
+60 9
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -421,44 +2231,83 @@ insert into t2 values (17.987);
insert into t3 values (5.1230);
insert into t3 values (13.345);
insert into t3 values (17.987);
-insert into t4 values (1,5.1230);
-insert into t4 values (2,13.345);
-insert into t5 values (1,5.1230);
-insert into t5 values (2,13.345);
-insert into t5 values (3,17.987);
-insert into t6 values (1,13.345);
-insert into t6 values (2,17.987);
-select cast(ceiling(col1) as signed integer) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t6;
+select cast(ceiling(col1) as signed integer) from t1 order by col1;
cast(ceiling(col1) as signed integer)
6
14
-select * from t1;
+select * from t1 order by col1;
col1
5.1230
13.3450
-select * from t2;
+select * from t2 order by col1;
col1
5.1230
13.3450
17.9870
-select * from t3;
+select * from t3 order by col1;
col1
5.1230
13.3450
17.9870
-select * from t4;
+select * from t4 order by colint;
colint col1
1 5.1230
2 13.3450
-select * from t5;
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
colint col1
1 5.1230
2 13.3450
3 17.9870
-select * from t6;
+4 15.6540
+select * from t6 order by colint;
colint col1
-1 13.3450
-2 17.9870
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+update t1 set col1=15.654 where col1=5.1230;
+update t2 set col1=15.654 where col1=5.1230;
+update t3 set col1=15.654 where col1=5.1230;
+update t4 set col1=15.654 where col1=5.1230;
+update t5 set col1=15.654 where col1=5.1230;
+update t6 set col1=15.654 where col1=5.1230;
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
-------------------------------------------------------------------------
--- Alter tables with cast(ceiling(col1) as signed integer)
-------------------------------------------------------------------------
@@ -508,33 +2357,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (cast(ceiling(15) as signed integer)),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-5.1230
13.3450
-select * from t22;
+15.6540
+select * from t22 order by col1;
col1
-5.1230
13.3450
+15.6540
17.9870
-select * from t33;
+select * from t33 order by col1;
col1
-5.1230
13.3450
+15.6540
17.9870
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 5.1230
+1 15.6540
2 13.3450
-select * from t55;
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
colint col1
-1 5.1230
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(ceiling(col1) as signed integer)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` float(7,4) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (cast(ceiling(col1) as signed integer)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
2 13.3450
3 17.9870
-select * from t66;
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(ceiling(15) as signed integer)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 13.3450
-2 17.9870
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(ceiling(15) as signed integer)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(ceiling(col1) as signed integer)
+-------------------------------------------------------------------------
+delete from t1 where col1=13.345;
+delete from t2 where col1=13.345;
+delete from t3 where col1=13.345;
+delete from t4 where col1=13.345;
+delete from t5 where col1=13.345;
+delete from t6 where col1=13.345;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t1 values (13.345);
+insert into t2 values (13.345);
+insert into t3 values (13.345);
+insert into t4 values (60,13.345);
+insert into t5 values (60,13.345);
+insert into t6 values (60,13.345);
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t6 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+60 13.3450
+select * from t5 order by colint;
+colint col1
+60 13.3450
+select * from t6 order by colint;
+colint col1
+60 13.3450
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(ceiling(col1) as signed integer)
+-------------------------------------------------------------------------
+delete from t11 where col1=13.345;
+delete from t22 where col1=13.345;
+delete from t33 where col1=13.345;
+delete from t44 where col1=13.345;
+delete from t55 where col1=13.345;
+delete from t66 where col1=13.345;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t11 values (13.345);
+insert into t22 values (13.345);
+insert into t33 values (13.345);
+insert into t44 values (60,13.345);
+insert into t55 values (60,13.345);
+insert into t66 values (60,13.345);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t66 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+60 13.3450
+select * from t55 order by colint;
+colint col1
+60 13.3450
+select * from t66 order by colint;
+colint col1
+60 13.3450
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -604,44 +2729,83 @@ insert into t2 values (17.987);
insert into t3 values (5.1230);
insert into t3 values (13.345);
insert into t3 values (17.987);
-insert into t4 values (1,5.1230);
-insert into t4 values (2,13.345);
-insert into t5 values (1,5.1230);
-insert into t5 values (2,13.345);
-insert into t5 values (3,17.987);
-insert into t6 values (1,13.345);
-insert into t6 values (2,17.987);
-select cast(floor(col1) as signed) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t6;
+select cast(floor(col1) as signed) from t1 order by col1;
cast(floor(col1) as signed)
5
13
-select * from t1;
+select * from t1 order by col1;
col1
5.1230
13.3450
-select * from t2;
+select * from t2 order by col1;
col1
5.1230
13.3450
17.9870
-select * from t3;
+select * from t3 order by col1;
col1
5.1230
13.3450
17.9870
-select * from t4;
+select * from t4 order by colint;
colint col1
1 5.1230
2 13.3450
-select * from t5;
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
colint col1
1 5.1230
2 13.3450
3 17.9870
-select * from t6;
+4 15.6540
+select * from t6 order by colint;
colint col1
-1 13.3450
-2 17.9870
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+update t1 set col1=15.654 where col1=5.1230;
+update t2 set col1=15.654 where col1=5.1230;
+update t3 set col1=15.654 where col1=5.1230;
+update t4 set col1=15.654 where col1=5.1230;
+update t5 set col1=15.654 where col1=5.1230;
+update t6 set col1=15.654 where col1=5.1230;
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
-------------------------------------------------------------------------
--- Alter tables with cast(floor(col1) as signed)
-------------------------------------------------------------------------
@@ -691,33 +2855,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (cast(floor(15.123) as signed)),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-5.1230
13.3450
-select * from t22;
+15.6540
+select * from t22 order by col1;
col1
-5.1230
13.3450
+15.6540
17.9870
-select * from t33;
+select * from t33 order by col1;
col1
-5.1230
13.3450
+15.6540
17.9870
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 5.1230
+1 15.6540
2 13.3450
-select * from t55;
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
colint col1
-1 5.1230
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(floor(col1) as signed)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` float(7,4) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (cast(floor(col1) as signed)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(floor(15.123) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
2 13.3450
3 17.9870
-select * from t66;
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(floor(15.123) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 13.3450
-2 17.9870
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(floor(col1) as signed)
+-------------------------------------------------------------------------
+delete from t1 where col1=13.345;
+delete from t2 where col1=13.345;
+delete from t3 where col1=13.345;
+delete from t4 where col1=13.345;
+delete from t5 where col1=13.345;
+delete from t6 where col1=13.345;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t1 values (13.345);
+insert into t2 values (13.345);
+insert into t3 values (13.345);
+insert into t4 values (60,13.345);
+insert into t5 values (60,13.345);
+insert into t6 values (60,13.345);
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t6 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+60 13.3450
+select * from t5 order by colint;
+colint col1
+60 13.3450
+select * from t6 order by colint;
+colint col1
+60 13.3450
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(floor(col1) as signed)
+-------------------------------------------------------------------------
+delete from t11 where col1=13.345;
+delete from t22 where col1=13.345;
+delete from t33 where col1=13.345;
+delete from t44 where col1=13.345;
+delete from t55 where col1=13.345;
+delete from t66 where col1=13.345;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t11 values (13.345);
+insert into t22 values (13.345);
+insert into t33 values (13.345);
+insert into t44 values (60,13.345);
+insert into t55 values (60,13.345);
+insert into t66 values (60,13.345);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t66 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+60 13.3450
+select * from t55 order by colint;
+colint col1
+60 13.3450
+select * from t66 order by colint;
+colint col1
+60 13.3450
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -787,44 +3227,83 @@ insert into t2 values (17);
insert into t3 values (5.0000);
insert into t3 values (19);
insert into t3 values (17);
-insert into t4 values (1,5.0000);
-insert into t4 values (2,19);
-insert into t5 values (1,5.0000);
-insert into t5 values (2,19);
-insert into t5 values (3,17);
-insert into t6 values (1,19);
-insert into t6 values (2,17);
-select cast(mod(col1,10) as signed) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t6;
+select cast(mod(col1,10) as signed) from t1 order by col1;
cast(mod(col1,10) as signed)
5
9
-select * from t1;
+select * from t1 order by col1;
col1
5.0000
19.0000
-select * from t2;
+select * from t2 order by col1;
col1
5.0000
-19.0000
17.0000
-select * from t3;
+19.0000
+select * from t3 order by col1;
col1
5.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+update t1 set col1=15 where col1=5.0000;
+update t2 set col1=15 where col1=5.0000;
+update t3 set col1=15 where col1=5.0000;
+update t4 set col1=15 where col1=5.0000;
+update t5 set col1=15 where col1=5.0000;
+update t6 set col1=15 where col1=5.0000;
+select * from t1 order by col1;
+col1
+15.0000
+19.0000
+select * from t2 order by col1;
+col1
+15.0000
+17.0000
19.0000
+select * from t3 order by col1;
+col1
+15.0000
17.0000
-select * from t4;
+19.0000
+select * from t4 order by colint;
colint col1
-1 5.0000
-2 19.0000
-select * from t5;
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
colint col1
-1 5.0000
-2 19.0000
-3 17.0000
-select * from t6;
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
colint col1
-1 19.0000
-2 17.0000
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
-------------------------------------------------------------------------
--- Alter tables with cast(mod(col1,10) as signed)
-------------------------------------------------------------------------
@@ -874,33 +3353,311 @@ alter table t66
partition by range(colint)
(partition p0 values less than (cast(mod(15,10) as signed)),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-5.0000
+15.0000
19.0000
-select * from t22;
+select * from t22 order by col1;
col1
-5.0000
+15.0000
+17.0000
19.0000
+select * from t33 order by col1;
+col1
+15.0000
17.0000
-select * from t33;
+19.0000
+select * from t44 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-5.0000
+15.0000
19.0000
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+15.0000
+19.0000
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(mod(col1,10) as signed)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` float(7,4) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (cast(mod(col1,10) as signed)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(mod(15,10) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(mod(15,10) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(mod(col1,10) as signed)
+-------------------------------------------------------------------------
+delete from t1 where col1=19;
+delete from t2 where col1=19;
+delete from t3 where col1=19;
+delete from t4 where col1=19;
+delete from t5 where col1=19;
+delete from t6 where col1=19;
+select * from t1 order by col1;
+col1
+15.0000
+select * from t2 order by col1;
+col1
+15.0000
17.0000
-select * from t44;
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+select * from t4 order by colint;
colint col1
-1 5.0000
-2 19.0000
-select * from t55;
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
colint col1
-1 5.0000
-2 19.0000
-3 17.0000
-select * from t66;
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+insert into t1 values (19);
+insert into t2 values (19);
+insert into t3 values (19);
+insert into t4 values (60,19);
+insert into t5 values (60,19);
+insert into t6 values (60,19);
+select * from t1 order by col1;
+col1
+15.0000
+19.0000
+select * from t2 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t6 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+60 19.0000
+select * from t5 order by colint;
+colint col1
+60 19.0000
+select * from t6 order by colint;
+colint col1
+60 19.0000
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(mod(col1,10) as signed)
+-------------------------------------------------------------------------
+delete from t11 where col1=19;
+delete from t22 where col1=19;
+delete from t33 where col1=19;
+delete from t44 where col1=19;
+delete from t55 where col1=19;
+delete from t66 where col1=19;
+select * from t11 order by col1;
+col1
+15.0000
+select * from t22 order by col1;
+col1
+15.0000
+17.0000
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+select * from t44 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+insert into t11 values (19);
+insert into t22 values (19);
+insert into t33 values (19);
+insert into t44 values (60,19);
+insert into t55 values (60,19);
+insert into t66 values (60,19);
+select * from t11 order by col1;
+col1
+15.0000
+19.0000
+select * from t22 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t44 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t44 order by colint;
+colint col1
+60 19.0000
+select * from t55 order by colint;
+colint col1
+60 19.0000
+select * from t66 order by colint;
colint col1
-1 19.0000
-2 17.0000
+60 19.0000
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -970,44 +3727,83 @@ insert into t2 values ('3');
insert into t3 values ('1');
insert into t3 values ('9');
insert into t3 values ('3');
-insert into t4 values (1,'1');
-insert into t4 values (2,'9');
-insert into t5 values (1,'1');
-insert into t5 values (2,'9');
-insert into t5 values (3,'3');
-insert into t6 values (1,'9');
-insert into t6 values (2,'3');
-select ord(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t6;
+select ord(col1) from t1 order by col1;
ord(col1)
49
57
-select * from t1;
+select * from t1 order by col1;
col1
1
9
-select * from t2;
+select * from t2 order by col1;
col1
1
-9
3
-select * from t3;
+9
+select * from t3 order by col1;
col1
1
-9
3
-select * from t4;
+9
+select * from t4 order by colint;
colint col1
1 1
2 9
-select * from t5;
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+select * from t6 order by colint;
colint col1
1 1
2 9
3 3
-select * from t6;
+4 8
+update t1 set col1='8' where col1='1';
+update t2 set col1='8' where col1='1';
+update t3 set col1='8' where col1='1';
+update t4 set col1='8' where col1='1';
+update t5 set col1='8' where col1='1';
+update t6 set col1='8' where col1='1';
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t5 order by colint;
colint col1
-1 9
-2 3
+1 8
+2 9
+3 3
+4 8
+select * from t6 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
-------------------------------------------------------------------------
--- Alter tables with ord(col1)
-------------------------------------------------------------------------
@@ -1057,33 +3853,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (ord('a')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-1
+8
9
-select * from t22;
+select * from t22 order by col1;
col1
-1
+3
+8
9
+select * from t33 order by col1;
+col1
3
-select * from t33;
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-1
+8
9
-3
-select * from t44;
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+alter table t55
+partition by list(colint)
+subpartition by hash(ord(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(3) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (ord(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 1
+1 8
2 9
-select * from t55;
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ord('a')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 1
+1 8
2 9
3 3
-select * from t66;
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ord('a')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ord(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='9';
+delete from t2 where col1='9';
+delete from t3 where col1='9';
+delete from t4 where col1='9';
+delete from t5 where col1='9';
+delete from t6 where col1='9';
+select * from t1 order by col1;
+col1
+8
+select * from t2 order by col1;
+col1
+3
+8
+select * from t3 order by col1;
+col1
+3
+8
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t1 values ('9');
+insert into t2 values ('9');
+insert into t3 values ('9');
+insert into t4 values (60,'9');
+insert into t5 values (60,'9');
+insert into t6 values (60,'9');
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t6 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+60 9
+select * from t5 order by colint;
+colint col1
+60 9
+select * from t6 order by colint;
colint col1
-1 9
-2 3
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ord(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='9';
+delete from t22 where col1='9';
+delete from t33 where col1='9';
+delete from t44 where col1='9';
+delete from t55 where col1='9';
+delete from t66 where col1='9';
+select * from t11 order by col1;
+col1
+8
+select * from t22 order by col1;
+col1
+3
+8
+select * from t33 order by col1;
+col1
+3
+8
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t11 values ('9');
+insert into t22 values ('9');
+insert into t33 values ('9');
+insert into t44 values (60,'9');
+insert into t55 values (60,'9');
+insert into t66 values (60,'9');
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t66 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+60 9
+select * from t55 order by colint;
+colint col1
+60 9
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1153,44 +4225,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-02-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-02-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-02-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-01-25');
-select day(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select day(col1) from t1 order by col1;
day(col1)
-3
17
-select * from t1;
+3
+select * from t1 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t2;
-col1
2006-02-03
+select * from t2 order by col1;
+col1
2006-01-17
2006-01-25
-select * from t3;
-col1
2006-02-03
+select * from t3 order by col1;
+col1
2006-01-17
2006-01-25
-select * from t4;
+2006-02-03
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
1 2006-02-03
2 2006-01-17
-select * from t5;
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
1 2006-02-03
2 2006-01-17
3 2006-01-25
-select * from t6;
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-02-03';
+update t2 set col1='2006-02-05' where col1='2006-02-03';
+update t3 set col1='2006-02-05' where col1='2006-02-03';
+update t4 set col1='2006-02-05' where col1='2006-02-03';
+update t5 set col1='2006-02-05' where col1='2006-02-03';
+update t6 set col1='2006-02-05' where col1='2006-02-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with day(col1)
-------------------------------------------------------------------------
@@ -1240,33 +4351,307 @@ alter table t66
partition by range(colint)
(partition p0 values less than (day('2006-12-21')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t22;
+2006-02-05
+select * from t22 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t33;
+2006-02-05
+select * from t33 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t44;
+2006-02-05
+select * from t44 order by colint;
colint col1
-1 2006-02-03
+1 2006-02-05
2 2006-01-17
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-1 2006-02-03
+1 2006-02-05
2 2006-01-17
3 2006-01-25
-select * from t66;
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(day(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (day(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (day('2006-12-21')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (day('2006-12-21')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with day(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+60 2006-01-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with day(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+60 2006-01-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1336,44 +4721,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-02-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-02-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-02-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-01-25');
-select dayofmonth(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofmonth(col1) from t1 order by col1;
dayofmonth(col1)
-3
17
-select * from t1;
+3
+select * from t1 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t2;
-col1
2006-02-03
+select * from t2 order by col1;
+col1
2006-01-17
2006-01-25
-select * from t3;
-col1
2006-02-03
+select * from t3 order by col1;
+col1
2006-01-17
2006-01-25
-select * from t4;
+2006-02-03
+select * from t4 order by colint;
colint col1
1 2006-02-03
2 2006-01-17
-select * from t5;
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
1 2006-02-03
2 2006-01-17
3 2006-01-25
-select * from t6;
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-02-03';
+update t2 set col1='2006-02-05' where col1='2006-02-03';
+update t3 set col1='2006-02-05' where col1='2006-02-03';
+update t4 set col1='2006-02-05' where col1='2006-02-03';
+update t5 set col1='2006-02-05' where col1='2006-02-03';
+update t6 set col1='2006-02-05' where col1='2006-02-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with dayofmonth(col1)
-------------------------------------------------------------------------
@@ -1423,33 +4847,307 @@ alter table t66
partition by range(colint)
(partition p0 values less than (dayofmonth('2006-12-24')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t22;
+2006-02-05
+select * from t22 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t33;
+2006-02-05
+select * from t33 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t44;
+2006-02-05
+select * from t44 order by colint;
colint col1
-1 2006-02-03
+1 2006-02-05
2 2006-01-17
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-1 2006-02-03
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
2 2006-01-17
3 2006-01-25
-select * from t66;
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofmonth(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofmonth(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofmonth('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofmonth('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofmonth(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+60 2006-01-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofmonth(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+60 2006-01-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1519,44 +5217,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-02-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-02-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-02-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-02-17');
-insert into t6 values (2,'2006-01-25');
-select dayofweek(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofweek(col1) from t1 order by col1;
dayofweek(col1)
3
6
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-02-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
-2006-02-17
2006-01-25
-select * from t3;
+2006-02-17
+select * from t3 order by col1;
col1
2006-01-03
+2006-01-25
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-02-05
2006-02-17
+select * from t2 order by col1;
+col1
2006-01-25
-select * from t4;
+2006-02-05
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-2 2006-02-17
+1 2006-02-03
+2 2006-01-17
3 2006-01-25
-1 2006-01-03
-select * from t6;
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-02-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with dayofweek(col1)
-------------------------------------------------------------------------
@@ -1606,33 +5343,319 @@ alter table t66
partition by range(colint)
(partition p0 values less than (dayofweek('2006-12-24')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
+2006-02-05
2006-02-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-01-03
+2006-01-25
+2006-02-05
2006-02-17
+select * from t33 order by col1;
+col1
2006-01-25
-select * from t33;
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-01-03
+2006-02-05
2006-02-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofweek(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofweek(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofweek('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofweek('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofweek(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-02-17';
+delete from t2 where col1='2006-02-17';
+delete from t3 where col1='2006-02-17';
+delete from t4 where col1='2006-02-17';
+delete from t5 where col1='2006-02-17';
+delete from t6 where col1='2006-02-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-02-17');
+insert into t2 values ('2006-02-17');
+insert into t3 values ('2006-02-17');
+insert into t4 values (60,'2006-02-17');
+insert into t5 values (60,'2006-02-17');
+insert into t6 values (60,'2006-02-17');
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
2006-01-25
-select * from t44;
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
-select * from t55;
+60 2006-02-17
+select * from t5 order by colint;
colint col1
-2 2006-02-17
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
3 2006-01-25
-1 2006-01-03
-select * from t66;
+4 2006-02-05
+60 2006-02-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofweek(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-02-17';
+delete from t22 where col1='2006-02-17';
+delete from t33 where col1='2006-02-17';
+delete from t44 where col1='2006-02-17';
+delete from t55 where col1='2006-02-17';
+delete from t66 where col1='2006-02-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-1 2006-02-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-02-17');
+insert into t22 values ('2006-02-17');
+insert into t33 values ('2006-02-17');
+insert into t44 values (60,'2006-02-17');
+insert into t55 values (60,'2006-02-17');
+insert into t66 values (60,'2006-02-17');
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1702,44 +5725,83 @@ insert into t2 values ('2006-02-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-02-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-02-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-02-25');
-select dayofyear(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofyear(col1) from t1 order by col1;
dayofyear(col1)
3
17
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-01-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-01-17
2006-02-25
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
2006-01-17
2006-02-25
-select * from t4;
+select * from t4 order by colint;
colint col1
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t5;
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-3 2006-02-25
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t6;
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-02-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with dayofyear(col1)
-------------------------------------------------------------------------
@@ -1789,33 +5851,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (dayofyear('2006-12-25')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
2006-01-17
-select * from t22;
+2006-02-05
+select * from t22 order by col1;
col1
-2006-01-03
2006-01-17
+2006-02-05
2006-02-25
-select * from t33;
+select * from t33 order by col1;
col1
-2006-01-03
2006-01-17
+2006-02-05
2006-02-25
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-3 2006-02-25
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t66;
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
colint col1
-1 2006-01-17
-2 2006-02-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofyear(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -1885,44 +6223,83 @@ insert into t2 values ('2006-02-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-02-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-02-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-02-25');
-select dayofyear(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofyear(col1) from t1 order by col1;
dayofyear(col1)
3
17
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-01-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-01-17
2006-02-25
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
2006-01-17
2006-02-25
-select * from t4;
+select * from t4 order by colint;
colint col1
-1 2006-01-03
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
2 2006-01-17
-select * from t5;
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-3 2006-02-25
-1 2006-01-03
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
2 2006-01-17
-select * from t6;
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-02-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with dayofyear(col1)
-------------------------------------------------------------------------
@@ -1972,33 +6349,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (dayofyear('2006-12-25')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
2006-01-17
-select * from t22;
+2006-02-05
+select * from t22 order by col1;
col1
-2006-01-03
2006-01-17
+2006-02-05
2006-02-25
-select * from t33;
+select * from t33 order by col1;
col1
-2006-01-03
2006-01-17
+2006-02-05
2006-02-25
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-3 2006-02-25
-1 2006-01-03
+1 2006-02-03
2 2006-01-17
-select * from t66;
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
colint col1
-1 2006-01-17
-2 2006-02-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(30) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofyear(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2068,44 +6721,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-02-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-02-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-02-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-02-17');
-insert into t6 values (2,'2006-01-25');
-select extract(month from col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select extract(month from col1) from t1 order by col1;
extract(month from col1)
1
2
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-02-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
-2006-02-17
2006-01-25
-select * from t3;
+2006-02-17
+select * from t3 order by col1;
col1
2006-01-03
+2006-01-25
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
2006-02-17
+select * from t3 order by col1;
+col1
2006-01-25
-select * from t4;
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
+1 2006-02-03
+2 2006-01-17
3 2006-01-25
-select * from t6;
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-02-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with extract(month from col1)
-------------------------------------------------------------------------
@@ -2155,33 +6847,309 @@ alter table t66
partition by range(colint)
(partition p0 values less than (extract(year from '1998-11-23')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
+2006-02-05
2006-02-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-01-03
+2006-01-25
+2006-02-05
2006-02-17
+select * from t33 order by col1;
+col1
2006-01-25
-select * from t33;
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-01-03
+2006-02-05
+2006-02-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+alter table t55
+partition by list(colint)
+subpartition by hash(extract(month from col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (extract(month from col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (extract(year from '1998-11-23')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (extract(year from '1998-11-23')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with extract(month from col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-02-17';
+delete from t2 where col1='2006-02-17';
+delete from t3 where col1='2006-02-17';
+delete from t4 where col1='2006-02-17';
+delete from t5 where col1='2006-02-17';
+delete from t6 where col1='2006-02-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-02-17');
+insert into t2 values ('2006-02-17');
+insert into t3 values ('2006-02-17');
+insert into t4 values (60,'2006-02-17');
+insert into t5 values (60,'2006-02-17');
+insert into t6 values (60,'2006-02-17');
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
2006-02-17
+select * from t3 order by col1;
+col1
2006-01-25
-select * from t44;
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t5 order by colint;
colint col1
-2 2006-02-17
-1 2006-01-03
+1 2006-02-03
+2 2006-01-17
3 2006-01-25
-select * from t66;
+4 2006-02-05
+60 2006-02-17
+select * from t6 order by colint;
colint col1
-1 2006-02-17
-2 2006-01-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+60 2006-02-17
+select * from t5 order by colint;
+colint col1
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with extract(month from col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-02-17';
+delete from t22 where col1='2006-02-17';
+delete from t33 where col1='2006-02-17';
+delete from t44 where col1='2006-02-17';
+delete from t55 where col1='2006-02-17';
+delete from t66 where col1='2006-02-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-02-17');
+insert into t22 values ('2006-02-17');
+insert into t33 values ('2006-02-17');
+insert into t44 values (60,'2006-02-17');
+insert into t55 values (60,'2006-02-17');
+insert into t66 values (60,'2006-02-17');
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2251,44 +7219,83 @@ insert into t2 values ('21:59');
insert into t3 values ('09:09');
insert into t3 values ('14:30');
insert into t3 values ('21:59');
-insert into t4 values (1,'09:09');
-insert into t4 values (2,'14:30');
-insert into t5 values (1,'09:09');
-insert into t5 values (2,'14:30');
-insert into t5 values (3,'21:59');
-insert into t6 values (1,'14:30');
-insert into t6 values (2,'21:59');
-select hour(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select hour(col1) from t1 order by col1;
hour(col1)
9
14
-select * from t1;
+select * from t1 order by col1;
col1
09:09:00
14:30:00
-select * from t2;
+select * from t2 order by col1;
col1
09:09:00
14:30:00
21:59:00
-select * from t3;
+select * from t3 order by col1;
col1
09:09:00
14:30:00
21:59:00
-select * from t4;
+select * from t4 order by colint;
colint col1
-2 14:30:00
-1 09:09:00
-select * from t5;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
colint col1
-2 14:30:00
-1 09:09:00
-3 21:59:00
-select * from t6;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:30' where col1='09:09';
+update t2 set col1='10:30' where col1='09:09';
+update t3 set col1='10:30' where col1='09:09';
+update t4 set col1='10:30' where col1='09:09';
+update t5 set col1='10:30' where col1='09:09';
+update t6 set col1='10:30' where col1='09:09';
+select * from t1 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t2 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
colint col1
-1 14:30:00
-2 21:59:00
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with hour(col1)
-------------------------------------------------------------------------
@@ -2338,33 +7345,315 @@ alter table t66
partition by range(colint)
(partition p0 values less than (hour('18:30')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:00
+10:30:00
14:30:00
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:00
+10:30:00
14:30:00
21:59:00
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:00
+10:30:00
+14:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+alter table t55
+partition by list(colint)
+subpartition by hash(hour(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (hour(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (hour('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (hour('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with hour(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30';
+delete from t2 where col1='14:30';
+delete from t3 where col1='14:30';
+delete from t4 where col1='14:30';
+delete from t5 where col1='14:30';
+delete from t6 where col1='14:30';
+select * from t1 order by col1;
+col1
+10:30:00
+select * from t2 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30');
+insert into t2 values ('14:30');
+insert into t3 values ('14:30');
+insert into t4 values (60,'14:30');
+insert into t5 values (60,'14:30');
+insert into t6 values (60,'14:30');
+select * from t1 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t2 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+60 14:30:00
+select * from t5 order by colint;
+colint col1
+60 14:30:00
+select * from t6 order by colint;
+colint col1
+60 14:30:00
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with hour(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30';
+delete from t22 where col1='14:30';
+delete from t33 where col1='14:30';
+delete from t44 where col1='14:30';
+delete from t55 where col1='14:30';
+delete from t66 where col1='14:30';
+select * from t11 order by col1;
+col1
+10:30:00
+select * from t22 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30');
+insert into t22 values ('14:30');
+insert into t33 values ('14:30');
+insert into t44 values (60,'14:30');
+insert into t55 values (60,'14:30');
+insert into t66 values (60,'14:30');
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t22 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+14:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
14:30:00
21:59:00
-select * from t44;
+select * from t44 order by colint;
colint col1
-2 14:30:00
-1 09:09:00
-select * from t55;
+60 14:30:00
+select * from t55 order by colint;
colint col1
-2 14:30:00
-1 09:09:00
-3 21:59:00
-select * from t66;
+60 14:30:00
+select * from t66 order by colint;
colint col1
-1 14:30:00
-2 21:59:00
+60 14:30:00
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2434,44 +7723,83 @@ insert into t2 values ('00:59:22.000024');
insert into t3 values ('09:09:15.000002');
insert into t3 values ('04:30:01.000018');
insert into t3 values ('00:59:22.000024');
-insert into t4 values (1,'09:09:15.000002');
-insert into t4 values (2,'04:30:01.000018');
-insert into t5 values (1,'09:09:15.000002');
-insert into t5 values (2,'04:30:01.000018');
-insert into t5 values (3,'00:59:22.000024');
-insert into t6 values (1,'04:30:01.000018');
-insert into t6 values (2,'00:59:22.000024');
-select microsecond(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select microsecond(col1) from t1 order by col1;
microsecond(col1)
0
0
-select * from t1;
+select * from t1 order by col1;
col1
+04:30:01
09:09:15
+select * from t2 order by col1;
+col1
+00:59:22
04:30:01
-select * from t2;
+09:09:15
+select * from t3 order by col1;
col1
+00:59:22
+04:30:01
09:09:15
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t2 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t3 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t4 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t5 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t6 set col1='05:30:34.000037' where col1='09:09:15.000002';
+select * from t1 order by col1;
+col1
04:30:01
-00:59:22
-select * from t3;
+05:30:34
+select * from t2 order by col1;
col1
-09:09:15
+00:59:22
04:30:01
+05:30:34
+select * from t3 order by col1;
+col1
00:59:22
-select * from t4;
+04:30:01
+05:30:34
+select * from t4 order by colint;
colint col1
-1 09:09:15
+1 05:30:34
2 04:30:01
-select * from t5;
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-1 09:09:15
+1 05:30:34
2 04:30:01
3 00:59:22
-select * from t6;
+4 05:30:34
+select * from t6 order by colint;
colint col1
-1 04:30:01
-2 00:59:22
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with microsecond(col1)
-------------------------------------------------------------------------
@@ -2521,33 +7849,301 @@ alter table t66
partition by range(colint)
(partition p0 values less than (microsecond('10:30:10.000010')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:15
04:30:01
-select * from t22;
+05:30:34
+select * from t22 order by col1;
col1
-09:09:15
+00:59:22
04:30:01
+05:30:34
+select * from t33 order by col1;
+col1
00:59:22
-select * from t33;
+04:30:01
+05:30:34
+select * from t44 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-09:09:15
04:30:01
-00:59:22
-select * from t44;
+05:30:34
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+04:30:01
+05:30:34
+alter table t55
+partition by list(colint)
+subpartition by hash(microsecond(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (microsecond(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 09:09:15
+1 05:30:34
2 04:30:01
-select * from t55;
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (microsecond('10:30:10.000010')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-1 09:09:15
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 05:30:34
2 04:30:01
3 00:59:22
-select * from t66;
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (microsecond('10:30:10.000010')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with microsecond(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='04:30:01.000018';
+delete from t2 where col1='04:30:01.000018';
+delete from t3 where col1='04:30:01.000018';
+delete from t4 where col1='04:30:01.000018';
+delete from t5 where col1='04:30:01.000018';
+delete from t6 where col1='04:30:01.000018';
+select * from t1 order by col1;
+col1
+05:30:34
+select * from t2 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t3 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t4 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-1 04:30:01
-2 00:59:22
+1 05:30:34
+3 00:59:22
+4 05:30:34
+insert into t1 values ('04:30:01.000018');
+insert into t2 values ('04:30:01.000018');
+insert into t3 values ('04:30:01.000018');
+insert into t4 values (60,'04:30:01.000018');
+insert into t5 values (60,'04:30:01.000018');
+insert into t6 values (60,'04:30:01.000018');
+select * from t1 order by col1;
+col1
+04:30:01
+05:30:34
+select * from t2 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t3 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t4 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t5 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t6 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t4 order by colint;
+colint col1
+60 04:30:01
+select * from t5 order by colint;
+colint col1
+60 04:30:01
+select * from t6 order by colint;
+colint col1
+60 04:30:01
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with microsecond(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='04:30:01.000018';
+delete from t22 where col1='04:30:01.000018';
+delete from t33 where col1='04:30:01.000018';
+delete from t44 where col1='04:30:01.000018';
+delete from t55 where col1='04:30:01.000018';
+delete from t66 where col1='04:30:01.000018';
+select * from t11 order by col1;
+col1
+05:30:34
+select * from t22 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t33 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t44 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+insert into t11 values ('04:30:01.000018');
+insert into t22 values ('04:30:01.000018');
+insert into t33 values ('04:30:01.000018');
+insert into t44 values (60,'04:30:01.000018');
+insert into t55 values (60,'04:30:01.000018');
+insert into t66 values (60,'04:30:01.000018');
+select * from t11 order by col1;
+col1
+04:30:01
+05:30:34
+select * from t22 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t33 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t44 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t44 order by colint;
+colint col1
+60 04:30:01
+select * from t55 order by colint;
+colint col1
+60 04:30:01
+select * from t66 order by colint;
+colint col1
+60 04:30:01
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2617,44 +8213,83 @@ insert into t2 values ('21:59:22');
insert into t3 values ('09:09:15');
insert into t3 values ('14:30:45');
insert into t3 values ('21:59:22');
-insert into t4 values (1,'09:09:15');
-insert into t4 values (2,'14:30:45');
-insert into t5 values (1,'09:09:15');
-insert into t5 values (2,'14:30:45');
-insert into t5 values (3,'21:59:22');
-insert into t6 values (1,'14:30:45');
-insert into t6 values (2,'21:59:22');
-select minute(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select minute(col1) from t1 order by col1;
minute(col1)
9
30
-select * from t1;
+select * from t1 order by col1;
col1
09:09:15
14:30:45
-select * from t2;
+select * from t2 order by col1;
col1
09:09:15
14:30:45
21:59:22
-select * from t3;
+select * from t3 order by col1;
col1
09:09:15
14:30:45
21:59:22
-select * from t4;
+select * from t4 order by colint;
colint col1
-2 14:30:45
1 09:09:15
-select * from t5;
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-2 14:30:45
1 09:09:15
-3 21:59:22
-select * from t6;
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:24:23' where col1='09:09:15';
+update t2 set col1='10:24:23' where col1='09:09:15';
+update t3 set col1='10:24:23' where col1='09:09:15';
+update t4 set col1='10:24:23' where col1='09:09:15';
+update t5 set col1='10:24:23' where col1='09:09:15';
+update t6 set col1='10:24:23' where col1='09:09:15';
+select * from t1 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t2 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t4 order by colint;
colint col1
-1 14:30:45
-2 21:59:22
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with minute(col1)
-------------------------------------------------------------------------
@@ -2704,33 +8339,321 @@ alter table t66
partition by range(colint)
(partition p0 values less than (minute('18:30')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:15
+10:24:23
14:30:45
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:15
+10:24:23
14:30:45
21:59:22
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:15
+10:24:23
14:30:45
21:59:22
-select * from t44;
+select * from t44 order by colint;
colint col1
-2 14:30:45
-1 09:09:15
-select * from t55;
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
colint col1
-2 14:30:45
-1 09:09:15
-3 21:59:22
-select * from t66;
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
colint col1
-1 14:30:45
-2 21:59:22
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+alter table t55
+partition by list(colint)
+subpartition by hash(minute(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (minute(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (minute('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (minute('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with minute(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:45';
+delete from t2 where col1='14:30:45';
+delete from t3 where col1='14:30:45';
+delete from t4 where col1='14:30:45';
+delete from t5 where col1='14:30:45';
+delete from t6 where col1='14:30:45';
+select * from t1 order by col1;
+col1
+10:24:23
+select * from t2 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30:45');
+insert into t2 values ('14:30:45');
+insert into t3 values ('14:30:45');
+insert into t4 values (60,'14:30:45');
+insert into t5 values (60,'14:30:45');
+insert into t6 values (60,'14:30:45');
+select * from t1 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t2 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t2 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+60 14:30:45
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with minute(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:45';
+delete from t22 where col1='14:30:45';
+delete from t33 where col1='14:30:45';
+delete from t44 where col1='14:30:45';
+delete from t55 where col1='14:30:45';
+delete from t66 where col1='14:30:45';
+select * from t11 order by col1;
+col1
+10:24:23
+select * from t22 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30:45');
+insert into t22 values ('14:30:45');
+insert into t33 values ('14:30:45');
+insert into t44 values (60,'14:30:45');
+insert into t55 values (60,'14:30:45');
+insert into t66 values (60,'14:30:45');
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t22 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t22 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+60 14:30:45
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2800,44 +8723,83 @@ insert into t2 values ('21:59:22');
insert into t3 values ('09:09:09');
insert into t3 values ('14:30:20');
insert into t3 values ('21:59:22');
-insert into t4 values (1,'09:09:09');
-insert into t4 values (2,'14:30:20');
-insert into t5 values (1,'09:09:09');
-insert into t5 values (2,'14:30:20');
-insert into t5 values (3,'21:59:22');
-insert into t6 values (1,'14:30:20');
-insert into t6 values (2,'21:59:22');
-select second(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select second(col1) from t1 order by col1;
second(col1)
9
20
-select * from t1;
+select * from t1 order by col1;
col1
09:09:09
14:30:20
-select * from t2;
+select * from t2 order by col1;
col1
09:09:09
14:30:20
21:59:22
-select * from t3;
+select * from t3 order by col1;
col1
09:09:09
14:30:20
21:59:22
-select * from t4;
+select * from t4 order by colint;
colint col1
-2 14:30:20
-1 09:09:09
-select * from t5;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:22:33' where col1='09:09:09';
+update t2 set col1='10:22:33' where col1='09:09:09';
+update t3 set col1='10:22:33' where col1='09:09:09';
+update t4 set col1='10:22:33' where col1='09:09:09';
+update t5 set col1='10:22:33' where col1='09:09:09';
+update t6 set col1='10:22:33' where col1='09:09:09';
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-2 14:30:20
-3 21:59:22
-1 09:09:09
-select * from t6;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
colint col1
-1 14:30:20
-2 21:59:22
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with second(col1)
-------------------------------------------------------------------------
@@ -2887,33 +8849,321 @@ alter table t66
partition by range(colint)
(partition p0 values less than (second('18:30:14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
21:59:22
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
21:59:22
-select * from t44;
+select * from t44 order by colint;
colint col1
-2 14:30:20
-1 09:09:09
-select * from t55;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t55
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (second(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:20';
+delete from t2 where col1='14:30:20';
+delete from t3 where col1='14:30:20';
+delete from t4 where col1='14:30:20';
+delete from t5 where col1='14:30:20';
+delete from t6 where col1='14:30:20';
+select * from t1 order by col1;
+col1
+10:22:33
+select * from t2 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t4 order by colint;
colint col1
-2 14:30:20
-3 21:59:22
-1 09:09:09
-select * from t66;
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
-1 14:30:20
-2 21:59:22
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30:20');
+insert into t2 values ('14:30:20');
+insert into t3 values ('14:30:20');
+insert into t4 values (60,'14:30:20');
+insert into t5 values (60,'14:30:20');
+insert into t6 values (60,'14:30:20');
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+60 14:30:20
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:20';
+delete from t22 where col1='14:30:20';
+delete from t33 where col1='14:30:20';
+delete from t44 where col1='14:30:20';
+delete from t55 where col1='14:30:20';
+delete from t66 where col1='14:30:20';
+select * from t11 order by col1;
+col1
+10:22:33
+select * from t22 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30:20');
+insert into t22 values ('14:30:20');
+insert into t33 values ('14:30:20');
+insert into t44 values (60,'14:30:20');
+insert into t55 values (60,'14:30:20');
+insert into t66 values (60,'14:30:20');
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+60 14:30:20
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -2983,44 +9233,83 @@ insert into t2 values ('21:59:22');
insert into t3 values ('09:09:09');
insert into t3 values ('14:30:20');
insert into t3 values ('21:59:22');
-insert into t4 values (1,'09:09:09');
-insert into t4 values (2,'14:30:20');
-insert into t5 values (1,'09:09:09');
-insert into t5 values (2,'14:30:20');
-insert into t5 values (3,'21:59:22');
-insert into t6 values (1,'14:30:20');
-insert into t6 values (2,'21:59:22');
-select second(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select second(col1) from t1 order by col1;
second(col1)
9
20
-select * from t1;
+select * from t1 order by col1;
col1
09:09:09
14:30:20
-select * from t2;
+select * from t2 order by col1;
col1
09:09:09
14:30:20
21:59:22
-select * from t3;
+select * from t3 order by col1;
col1
09:09:09
14:30:20
21:59:22
-select * from t4;
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t6 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+update t1 set col1='10:22:33' where col1='09:09:09';
+update t2 set col1='10:22:33' where col1='09:09:09';
+update t3 set col1='10:22:33' where col1='09:09:09';
+update t4 set col1='10:22:33' where col1='09:09:09';
+update t5 set col1='10:22:33' where col1='09:09:09';
+update t6 set col1='10:22:33' where col1='09:09:09';
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
colint col1
-2 14:30:20
-1 09:09:09
-select * from t5;
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t5 order by colint;
colint col1
-2 14:30:20
-3 21:59:22
-1 09:09:09
-select * from t6;
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t6 order by colint;
colint col1
-1 14:30:20
-2 21:59:22
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
-------------------------------------------------------------------------
--- Alter tables with second(col1)
-------------------------------------------------------------------------
@@ -3070,33 +9359,321 @@ alter table t66
partition by range(colint)
(partition p0 values less than (second('18:30:14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
21:59:22
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:09
+10:22:33
14:30:20
21:59:22
-select * from t44;
+select * from t44 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t55
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(30) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (second(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-2 14:30:20
-1 09:09:09
-select * from t55;
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
colint col1
-2 14:30:20
-3 21:59:22
-1 09:09:09
-select * from t66;
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:20';
+delete from t2 where col1='14:30:20';
+delete from t3 where col1='14:30:20';
+delete from t4 where col1='14:30:20';
+delete from t5 where col1='14:30:20';
+delete from t6 where col1='14:30:20';
+select * from t1 order by col1;
+col1
+10:22:33
+select * from t2 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+insert into t1 values ('14:30:20');
+insert into t2 values ('14:30:20');
+insert into t3 values ('14:30:20');
+insert into t4 values (60,'14:30:20');
+insert into t5 values (60,'14:30:20');
+insert into t6 values (60,'14:30:20');
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:20
+select * from t5 order by colint;
colint col1
-1 14:30:20
-2 21:59:22
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+60 14:30:20
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:20';
+delete from t22 where col1='14:30:20';
+delete from t33 where col1='14:30:20';
+delete from t44 where col1='14:30:20';
+delete from t55 where col1='14:30:20';
+delete from t66 where col1='14:30:20';
+select * from t11 order by col1;
+col1
+10:22:33
+select * from t22 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+insert into t11 values ('14:30:20');
+insert into t22 values ('14:30:20');
+insert into t33 values ('14:30:20');
+insert into t44 values (60,'14:30:20');
+insert into t55 values (60,'14:30:20');
+insert into t66 values (60,'14:30:20');
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+60 14:30:20
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3166,44 +9743,83 @@ insert into t2 values ('2006-05-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-12-17');
insert into t3 values ('2006-05-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-12-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-12-17');
-insert into t5 values (3,'2006-05-25');
-insert into t6 values (1,'2006-12-17');
-insert into t6 values (2,'2006-05-25');
-select month(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select month(col1) from t1 order by col1;
month(col1)
1
12
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-12-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-05-25
2006-12-17
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
+2006-05-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-11-06' where col1='2006-01-03';
+update t2 set col1='2006-11-06' where col1='2006-01-03';
+update t3 set col1='2006-11-06' where col1='2006-01-03';
+update t4 set col1='2006-11-06' where col1='2006-01-03';
+update t5 set col1='2006-11-06' where col1='2006-01-03';
+update t6 set col1='2006-11-06' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-11-06
2006-12-17
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t3 order by col1;
+col1
2006-05-25
-select * from t4;
+2006-11-06
+2006-12-17
+select * from t4 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-3 2006-05-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-12-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with month(col1)
-------------------------------------------------------------------------
@@ -3253,33 +9869,315 @@ alter table t66
partition by range(colint)
(partition p0 values less than (month('2006-10-14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
+2006-11-06
2006-12-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-01-03
2006-05-25
+2006-11-06
2006-12-17
-select * from t33;
+select * from t33 order by col1;
col1
-2006-01-03
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+alter table t55
+partition by list(colint)
+subpartition by hash(month(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (month(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (month('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (month('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with month(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-12-17';
+delete from t2 where col1='2006-12-17';
+delete from t3 where col1='2006-12-17';
+delete from t4 where col1='2006-12-17';
+delete from t5 where col1='2006-12-17';
+delete from t6 where col1='2006-12-17';
+select * from t1 order by col1;
+col1
+2006-11-06
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-12-17');
+insert into t2 values ('2006-12-17');
+insert into t3 values ('2006-12-17');
+insert into t4 values (60,'2006-12-17');
+insert into t5 values (60,'2006-12-17');
+insert into t6 values (60,'2006-12-17');
+select * from t1 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t4 order by colint;
+colint col1
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+60 2006-12-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with month(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-12-17';
+delete from t22 where col1='2006-12-17';
+delete from t33 where col1='2006-12-17';
+delete from t44 where col1='2006-12-17';
+delete from t55 where col1='2006-12-17';
+delete from t66 where col1='2006-12-17';
+select * from t11 order by col1;
+col1
+2006-11-06
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-12-17');
+insert into t22 values ('2006-12-17');
+insert into t33 values ('2006-12-17');
+insert into t44 values (60,'2006-12-17');
+insert into t55 values (60,'2006-12-17');
+insert into t66 values (60,'2006-12-17');
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+2006-11-06
2006-12-17
+select * from t33 order by col1;
+col1
2006-05-25
-select * from t44;
+2006-11-06
+2006-12-17
+select * from t44 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-select * from t55;
+60 2006-12-17
+select * from t55 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-3 2006-05-25
-select * from t66;
+60 2006-12-17
+select * from t66 order by colint;
colint col1
-1 2006-12-17
-2 2006-05-25
+60 2006-12-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3349,44 +10247,83 @@ insert into t2 values ('2006-09-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-12-17');
insert into t3 values ('2006-09-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-12-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-12-17');
-insert into t5 values (3,'2006-09-25');
-insert into t6 values (1,'2006-12-17');
-insert into t6 values (2,'2006-09-25');
-select quarter(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select quarter(col1) from t1 order by col1;
quarter(col1)
1
4
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-12-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
-2006-12-17
2006-09-25
-select * from t3;
+2006-12-17
+select * from t3 order by col1;
col1
2006-01-03
+2006-09-25
2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-07-30' where col1='2006-01-03';
+update t2 set col1='2006-07-30' where col1='2006-01-03';
+update t3 set col1='2006-07-30' where col1='2006-01-03';
+update t4 set col1='2006-07-30' where col1='2006-01-03';
+update t5 set col1='2006-07-30' where col1='2006-01-03';
+update t6 set col1='2006-07-30' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-07-30
2006-09-25
-select * from t4;
+2006-12-17
+select * from t4 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-3 2006-09-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-12-17
-2 2006-09-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with quarter(col1)
-------------------------------------------------------------------------
@@ -3436,33 +10373,313 @@ alter table t66
partition by range(colint)
(partition p0 values less than (quarter('2006-10-14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
+2006-07-30
2006-12-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-01-03
+2006-07-30
+2006-09-25
2006-12-17
+select * from t33 order by col1;
+col1
+2006-07-30
2006-09-25
-select * from t33;
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-01-03
+2006-07-30
2006-12-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-07-30
+2006-12-17
+alter table t55
+partition by list(colint)
+subpartition by hash(quarter(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (quarter(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (quarter('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (quarter('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with quarter(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-12-17';
+delete from t2 where col1='2006-12-17';
+delete from t3 where col1='2006-12-17';
+delete from t4 where col1='2006-12-17';
+delete from t5 where col1='2006-12-17';
+delete from t6 where col1='2006-12-17';
+select * from t1 order by col1;
+col1
+2006-07-30
+select * from t2 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-12-17');
+insert into t2 values ('2006-12-17');
+insert into t3 values ('2006-12-17');
+insert into t4 values (60,'2006-12-17');
+insert into t5 values (60,'2006-12-17');
+insert into t6 values (60,'2006-12-17');
+select * from t1 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+4 2006-02-05
+60 2006-12-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with quarter(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-12-17';
+delete from t22 where col1='2006-12-17';
+delete from t33 where col1='2006-12-17';
+delete from t44 where col1='2006-12-17';
+delete from t55 where col1='2006-12-17';
+delete from t66 where col1='2006-12-17';
+select * from t11 order by col1;
+col1
+2006-07-30
+select * from t22 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t33 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-12-17');
+insert into t22 values ('2006-12-17');
+insert into t33 values ('2006-12-17');
+insert into t44 values (60,'2006-12-17');
+insert into t55 values (60,'2006-12-17');
+insert into t66 values (60,'2006-12-17');
+select * from t11 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t22 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t33 order by col1;
+col1
+2006-07-30
2006-09-25
-select * from t44;
+2006-12-17
+select * from t44 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t55 order by colint;
colint col1
-2 2006-12-17
-1 2006-01-03
-3 2006-09-25
-select * from t66;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t66 order by colint;
colint col1
-1 2006-12-17
-2 2006-09-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t44 order by colint;
+colint col1
+60 2006-12-17
+select * from t55 order by colint;
+colint col1
+60 2006-12-17
+select * from t66 order by colint;
+colint col1
+4 2006-02-05
+60 2006-12-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3532,44 +10749,83 @@ insert into t2 values ('21:59:22');
insert into t3 values ('09:09:15');
insert into t3 values ('14:30:45');
insert into t3 values ('21:59:22');
-insert into t4 values (1,'09:09:15');
-insert into t4 values (2,'14:30:45');
-insert into t5 values (1,'09:09:15');
-insert into t5 values (2,'14:30:45');
-insert into t5 values (3,'21:59:22');
-insert into t6 values (1,'14:30:45');
-insert into t6 values (2,'21:59:22');
-select time_to_sec(col1)-(time_to_sec(col1)-20) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select time_to_sec(col1)-(time_to_sec(col1)-20) from t1 order by col1;
time_to_sec(col1)-(time_to_sec(col1)-20)
20
20
-select * from t1;
+select * from t1 order by col1;
col1
09:09:15
14:30:45
-select * from t2;
+select * from t2 order by col1;
col1
09:09:15
14:30:45
21:59:22
-select * from t3;
+select * from t3 order by col1;
col1
09:09:15
14:30:45
21:59:22
-select * from t4;
+select * from t4 order by colint;
colint col1
1 09:09:15
-2 14:30:45
-select * from t5;
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
colint col1
1 09:09:15
-2 14:30:45
-3 21:59:22
-select * from t6;
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
colint col1
-1 14:30:45
-2 21:59:22
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:33:11' where col1='09:09:15';
+update t2 set col1='10:33:11' where col1='09:09:15';
+update t3 set col1='10:33:11' where col1='09:09:15';
+update t4 set col1='10:33:11' where col1='09:09:15';
+update t5 set col1='10:33:11' where col1='09:09:15';
+update t6 set col1='10:33:11' where col1='09:09:15';
+select * from t1 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t2 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
-------------------------------------------------------------------------
--- Alter tables with time_to_sec(col1)-(time_to_sec(col1)-20)
-------------------------------------------------------------------------
@@ -3619,33 +10875,319 @@ alter table t66
partition by range(colint)
(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-09:09:15
+10:33:11
14:30:45
-select * from t22;
+select * from t22 order by col1;
col1
-09:09:15
+10:33:11
14:30:45
21:59:22
-select * from t33;
+select * from t33 order by col1;
col1
-09:09:15
+10:33:11
14:30:45
21:59:22
-select * from t44;
+select * from t44 order by colint;
colint col1
-1 09:09:15
-2 14:30:45
-select * from t55;
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
colint col1
-1 09:09:15
-2 14:30:45
-3 21:59:22
-select * from t66;
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+alter table t55
+partition by list(colint)
+subpartition by hash(time_to_sec(col1)-(time_to_sec(col1)-20)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (time_to_sec(col1)-(time_to_sec(col1)-20)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with time_to_sec(col1)-(time_to_sec(col1)-20)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:45';
+delete from t2 where col1='14:30:45';
+delete from t3 where col1='14:30:45';
+delete from t4 where col1='14:30:45';
+delete from t5 where col1='14:30:45';
+delete from t6 where col1='14:30:45';
+select * from t1 order by col1;
+col1
+10:33:11
+select * from t2 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t4 order by colint;
colint col1
-1 14:30:45
-2 21:59:22
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30:45');
+insert into t2 values ('14:30:45');
+insert into t3 values ('14:30:45');
+insert into t4 values (60,'14:30:45');
+insert into t5 values (60,'14:30:45');
+insert into t6 values (60,'14:30:45');
+select * from t1 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t2 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t2 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with time_to_sec(col1)-(time_to_sec(col1)-20)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:45';
+delete from t22 where col1='14:30:45';
+delete from t33 where col1='14:30:45';
+delete from t44 where col1='14:30:45';
+delete from t55 where col1='14:30:45';
+delete from t66 where col1='14:30:45';
+select * from t11 order by col1;
+col1
+10:33:11
+select * from t22 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30:45');
+insert into t22 values ('14:30:45');
+insert into t33 values ('14:30:45');
+insert into t44 values (60,'14:30:45');
+insert into t55 values (60,'14:30:45');
+insert into t66 values (60,'14:30:45');
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t22 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t22 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3715,44 +11257,83 @@ insert into t2 values ('2006-01-25');
insert into t3 values ('2006-02-03');
insert into t3 values ('2006-01-17');
insert into t3 values ('2006-01-25');
-insert into t4 values (1,'2006-02-03');
-insert into t4 values (2,'2006-01-17');
-insert into t5 values (1,'2006-02-03');
-insert into t5 values (2,'2006-01-17');
-insert into t5 values (3,'2006-01-25');
-insert into t6 values (1,'2006-01-17');
-insert into t6 values (2,'2006-01-25');
-select to_days(col1)-to_days('2006-01-01') from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select to_days(col1)-to_days('2006-01-01') from t1 order by col1;
to_days(col1)-to_days('2006-01-01')
-33
16
-select * from t1;
+33
+select * from t1 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t2;
+2006-02-03
+select * from t2 order by col1;
col1
2006-01-17
2006-01-25
2006-02-03
-select * from t3;
+select * from t3 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t4;
+2006-02-03
+select * from t4 order by colint;
colint col1
-2 2006-01-17
1 2006-02-03
-select * from t5;
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
+1 2006-02-03
2 2006-01-17
3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
1 2006-02-03
-select * from t6;
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-06' where col1='2006-02-03';
+update t2 set col1='2006-02-06' where col1='2006-02-03';
+update t3 set col1='2006-02-06' where col1='2006-02-03';
+update t4 set col1='2006-02-06' where col1='2006-02-03';
+update t5 set col1='2006-02-06' where col1='2006-02-03';
+update t6 set col1='2006-02-06' where col1='2006-02-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with to_days(col1)-to_days('2006-01-01')
-------------------------------------------------------------------------
@@ -3802,33 +11383,311 @@ alter table t66
partition by range(colint)
(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-02-03
2006-01-17
-select * from t22;
+2006-02-06
+select * from t22 order by col1;
col1
2006-01-17
2006-01-25
-2006-02-03
-select * from t33;
+2006-02-06
+select * from t33 order by col1;
col1
-2006-02-03
2006-01-17
2006-01-25
-select * from t44;
+2006-02-06
+select * from t44 order by colint;
colint col1
+1 2006-02-06
2 2006-01-17
-1 2006-02-03
-select * from t55;
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
+1 2006-02-06
2 2006-01-17
3 2006-01-25
-1 2006-02-03
-select * from t66;
+4 2006-02-05
+select * from t66 order by colint;
colint col1
-1 2006-01-17
-2 2006-01-25
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+alter table t55
+partition by list(colint)
+subpartition by hash(to_days(col1)-to_days('2006-01-01')) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (to_days(col1)-to_days('2006-01-01')) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with to_days(col1)-to_days('2006-01-01')
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+60 2006-01-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with to_days(col1)-to_days('2006-01-01')
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+60 2006-01-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -3898,44 +11757,83 @@ insert into t2 values ('2006-05-25');
insert into t3 values ('2006-12-03');
insert into t3 values ('2006-11-17');
insert into t3 values ('2006-05-25');
-insert into t4 values (1,'2006-12-03');
-insert into t4 values (2,'2006-11-17');
-insert into t5 values (1,'2006-12-03');
-insert into t5 values (2,'2006-11-17');
-insert into t5 values (3,'2006-05-25');
-insert into t6 values (1,'2006-11-17');
-insert into t6 values (2,'2006-05-25');
-select weekday(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select weekday(col1) from t1 order by col1;
weekday(col1)
-6
4
-select * from t1;
+6
+select * from t1 order by col1;
col1
+2006-11-17
2006-12-03
+select * from t2 order by col1;
+col1
+2006-05-25
2006-11-17
-select * from t2;
+2006-12-03
+select * from t3 order by col1;
col1
+2006-05-25
+2006-11-17
2006-12-03
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-06' where col1='2006-12-03';
+update t2 set col1='2006-02-06' where col1='2006-12-03';
+update t3 set col1='2006-02-06' where col1='2006-12-03';
+update t4 set col1='2006-02-06' where col1='2006-12-03';
+update t5 set col1='2006-02-06' where col1='2006-12-03';
+update t6 set col1='2006-02-06' where col1='2006-12-03';
+select * from t1 order by col1;
+col1
+2006-02-06
2006-11-17
-2006-05-25
-select * from t3;
+select * from t2 order by col1;
col1
-2006-12-03
+2006-02-06
+2006-05-25
2006-11-17
+select * from t3 order by col1;
+col1
+2006-02-06
2006-05-25
-select * from t4;
+2006-11-17
+select * from t4 order by colint;
colint col1
-1 2006-12-03
-2 2006-11-17
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-1 2006-12-03
-2 2006-11-17
-3 2006-05-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-11-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with weekday(col1)
-------------------------------------------------------------------------
@@ -3985,33 +11883,311 @@ alter table t66
partition by range(colint)
(partition p0 values less than (weekday('2006-10-14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-12-03
+2006-02-06
2006-11-17
-select * from t22;
+select * from t22 order by col1;
col1
-2006-12-03
+2006-02-06
+2006-05-25
2006-11-17
+select * from t33 order by col1;
+col1
+2006-02-06
2006-05-25
-select * from t33;
+2006-11-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-12-03
+2006-02-06
2006-11-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-06
+2006-11-17
+alter table t55
+partition by list(colint)
+subpartition by hash(weekday(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (weekday(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekday('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekday('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekday(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-11-17';
+delete from t2 where col1='2006-11-17';
+delete from t3 where col1='2006-11-17';
+delete from t4 where col1='2006-11-17';
+delete from t5 where col1='2006-11-17';
+delete from t6 where col1='2006-11-17';
+select * from t1 order by col1;
+col1
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-11-17');
+insert into t2 values ('2006-11-17');
+insert into t3 values ('2006-11-17');
+insert into t4 values (60,'2006-11-17');
+insert into t5 values (60,'2006-11-17');
+insert into t6 values (60,'2006-11-17');
+select * from t1 order by col1;
+col1
+2006-02-06
+2006-11-17
+select * from t2 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t4 order by colint;
+colint col1
+60 2006-11-17
+select * from t5 order by colint;
+colint col1
+60 2006-11-17
+select * from t6 order by colint;
+colint col1
+60 2006-11-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekday(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-11-17';
+delete from t22 where col1='2006-11-17';
+delete from t33 where col1='2006-11-17';
+delete from t44 where col1='2006-11-17';
+delete from t55 where col1='2006-11-17';
+delete from t66 where col1='2006-11-17';
+select * from t11 order by col1;
+col1
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t33 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-11-17');
+insert into t22 values ('2006-11-17');
+insert into t33 values ('2006-11-17');
+insert into t44 values (60,'2006-11-17');
+insert into t55 values (60,'2006-11-17');
+insert into t66 values (60,'2006-11-17');
+select * from t11 order by col1;
+col1
+2006-02-06
+2006-11-17
+select * from t22 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t33 order by col1;
+col1
+2006-02-06
2006-05-25
-select * from t44;
+2006-11-17
+select * from t44 order by colint;
colint col1
-1 2006-12-03
-2 2006-11-17
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t55 order by colint;
colint col1
-1 2006-12-03
-2 2006-11-17
-3 2006-05-25
-select * from t66;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t66 order by colint;
colint col1
-1 2006-11-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t44 order by colint;
+colint col1
+60 2006-11-17
+select * from t55 order by colint;
+colint col1
+60 2006-11-17
+select * from t66 order by colint;
+colint col1
+60 2006-11-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -4081,44 +12257,83 @@ insert into t2 values ('2006-05-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-03-17');
insert into t3 values ('2006-05-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-03-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-03-17');
-insert into t5 values (3,'2006-05-25');
-insert into t6 values (1,'2006-03-17');
-insert into t6 values (2,'2006-05-25');
-select weekofyear(col1) from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select weekofyear(col1) from t1 order by col1;
weekofyear(col1)
1
11
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-03-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-03-17
2006-05-25
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
2006-03-17
2006-05-25
-select * from t4;
+select * from t4 order by colint;
colint col1
-1 2006-01-03
-2 2006-03-17
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-1 2006-01-03
-2 2006-03-17
-3 2006-05-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-03-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-09-06' where col1='2006-01-03';
+update t2 set col1='2006-09-06' where col1='2006-01-03';
+update t3 set col1='2006-09-06' where col1='2006-01-03';
+update t4 set col1='2006-09-06' where col1='2006-01-03';
+update t5 set col1='2006-09-06' where col1='2006-01-03';
+update t6 set col1='2006-09-06' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with weekofyear(col1)
-------------------------------------------------------------------------
@@ -4168,33 +12383,319 @@ alter table t66
partition by range(colint)
(partition p0 values less than (weekofyear('2006-02-14')),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
2006-03-17
-select * from t22;
+2006-09-06
+select * from t22 order by col1;
col1
-2006-01-03
2006-03-17
2006-05-25
-select * from t33;
+2006-09-06
+select * from t33 order by col1;
col1
-2006-01-03
2006-03-17
2006-05-25
-select * from t44;
+2006-09-06
+select * from t44 order by colint;
colint col1
-1 2006-01-03
-2 2006-03-17
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
colint col1
-1 2006-01-03
-2 2006-03-17
-3 2006-05-25
-select * from t66;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
colint col1
-1 2006-03-17
-2 2006-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+alter table t55
+partition by list(colint)
+subpartition by hash(weekofyear(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (weekofyear(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekofyear('2006-02-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekofyear('2006-02-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekofyear(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-03-17';
+delete from t2 where col1='2006-03-17';
+delete from t3 where col1='2006-03-17';
+delete from t4 where col1='2006-03-17';
+delete from t5 where col1='2006-03-17';
+delete from t6 where col1='2006-03-17';
+select * from t1 order by col1;
+col1
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-03-17');
+insert into t2 values ('2006-03-17');
+insert into t3 values ('2006-03-17');
+insert into t4 values (60,'2006-03-17');
+insert into t5 values (60,'2006-03-17');
+insert into t6 values (60,'2006-03-17');
+select * from t1 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+60 2006-03-17
+select * from t5 order by colint;
+colint col1
+60 2006-03-17
+select * from t6 order by colint;
+colint col1
+60 2006-03-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekofyear(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-03-17';
+delete from t22 where col1='2006-03-17';
+delete from t33 where col1='2006-03-17';
+delete from t44 where col1='2006-03-17';
+delete from t55 where col1='2006-03-17';
+delete from t66 where col1='2006-03-17';
+select * from t11 order by col1;
+col1
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-03-17');
+insert into t22 values ('2006-03-17');
+insert into t33 values ('2006-03-17');
+insert into t44 values (60,'2006-03-17');
+insert into t55 values (60,'2006-03-17');
+insert into t66 values (60,'2006-03-17');
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+60 2006-03-17
+select * from t55 order by colint;
+colint col1
+60 2006-03-17
+select * from t66 order by colint;
+colint col1
+60 2006-03-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -4264,44 +12765,83 @@ insert into t2 values ('2004-05-25');
insert into t3 values ('1996-01-03');
insert into t3 values ('2000-02-17');
insert into t3 values ('2004-05-25');
-insert into t4 values (1,'1996-01-03');
-insert into t4 values (2,'2000-02-17');
-insert into t5 values (1,'1996-01-03');
-insert into t5 values (2,'2000-02-17');
-insert into t5 values (3,'2004-05-25');
-insert into t6 values (1,'2000-02-17');
-insert into t6 values (2,'2004-05-25');
-select year(col1)-1990 from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select year(col1)-1990 from t1 order by col1;
year(col1)-1990
6
10
-select * from t1;
+select * from t1 order by col1;
col1
1996-01-03
2000-02-17
-select * from t2;
+select * from t2 order by col1;
col1
1996-01-03
2000-02-17
2004-05-25
-select * from t3;
+select * from t3 order by col1;
col1
1996-01-03
2000-02-17
2004-05-25
-select * from t4;
+select * from t4 order by colint;
colint col1
-1 1996-01-03
-2 2000-02-17
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-1 1996-01-03
-2 2000-02-17
-3 2004-05-25
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2002-02-15' where col1='1996-01-03';
+update t2 set col1='2002-02-15' where col1='1996-01-03';
+update t3 set col1='2002-02-15' where col1='1996-01-03';
+update t4 set col1='2002-02-15' where col1='1996-01-03';
+update t5 set col1='2002-02-15' where col1='1996-01-03';
+update t6 set col1='2002-02-15' where col1='1996-01-03';
+select * from t1 order by col1;
+col1
+2000-02-17
+2002-02-15
+select * from t2 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
colint col1
-1 2000-02-17
-2 2004-05-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with year(col1)-1990
-------------------------------------------------------------------------
@@ -4351,33 +12891,315 @@ alter table t66
partition by range(colint)
(partition p0 values less than (year('2005-10-14')-1990),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-1996-01-03
2000-02-17
-select * from t22;
+2002-02-15
+select * from t22 order by col1;
col1
-1996-01-03
2000-02-17
+2002-02-15
2004-05-25
-select * from t33;
+select * from t33 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2000-02-17
+2002-02-15
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2000-02-17
+2002-02-15
+alter table t55
+partition by list(colint)
+subpartition by hash(year(col1)-1990) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (year(col1)-1990) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (year('2005-10-14')-1990),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (year('2005-10-14')-1990),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with year(col1)-1990
+-------------------------------------------------------------------------
+delete from t1 where col1='2000-02-17';
+delete from t2 where col1='2000-02-17';
+delete from t3 where col1='2000-02-17';
+delete from t4 where col1='2000-02-17';
+delete from t5 where col1='2000-02-17';
+delete from t6 where col1='2000-02-17';
+select * from t1 order by col1;
+col1
+2002-02-15
+select * from t2 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2000-02-17');
+insert into t2 values ('2000-02-17');
+insert into t3 values ('2000-02-17');
+insert into t4 values (60,'2000-02-17');
+insert into t5 values (60,'2000-02-17');
+insert into t6 values (60,'2000-02-17');
+select * from t1 order by col1;
+col1
+2000-02-17
+2002-02-15
+select * from t2 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+60 2000-02-17
+select * from t5 order by colint;
+colint col1
+60 2000-02-17
+select * from t6 order by colint;
+colint col1
+60 2000-02-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with year(col1)-1990
+-------------------------------------------------------------------------
+delete from t11 where col1='2000-02-17';
+delete from t22 where col1='2000-02-17';
+delete from t33 where col1='2000-02-17';
+delete from t44 where col1='2000-02-17';
+delete from t55 where col1='2000-02-17';
+delete from t66 where col1='2000-02-17';
+select * from t11 order by col1;
+col1
+2002-02-15
+select * from t22 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t33 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2000-02-17');
+insert into t22 values ('2000-02-17');
+insert into t33 values ('2000-02-17');
+insert into t44 values (60,'2000-02-17');
+insert into t55 values (60,'2000-02-17');
+insert into t66 values (60,'2000-02-17');
+select * from t11 order by col1;
col1
-1996-01-03
2000-02-17
+2002-02-15
+select * from t22 order by col1;
+col1
+2000-02-17
+2002-02-15
2004-05-25
-select * from t44;
+select * from t33 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t55 order by colint;
colint col1
-1 1996-01-03
-2 2000-02-17
-select * from t55;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t66 order by colint;
colint col1
-1 1996-01-03
-2 2000-02-17
-3 2004-05-25
-select * from t66;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t33 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
colint col1
-1 2000-02-17
-2 2004-05-25
+60 2000-02-17
+select * from t55 order by colint;
+colint col1
+60 2000-02-17
+select * from t66 order by colint;
+colint col1
+60 2000-02-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
@@ -4447,44 +13269,83 @@ insert into t2 values ('2006-03-25');
insert into t3 values ('2006-01-03');
insert into t3 values ('2006-08-17');
insert into t3 values ('2006-03-25');
-insert into t4 values (1,'2006-01-03');
-insert into t4 values (2,'2006-08-17');
-insert into t5 values (1,'2006-01-03');
-insert into t5 values (2,'2006-08-17');
-insert into t5 values (3,'2006-03-25');
-insert into t6 values (1,'2006-08-17');
-insert into t6 values (2,'2006-03-25');
-select yearweek(col1)-200600 from t1;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select yearweek(col1)-200600 from t1 order by col1;
yearweek(col1)-200600
1
33
-select * from t1;
+select * from t1 order by col1;
col1
2006-01-03
2006-08-17
-select * from t2;
+select * from t2 order by col1;
col1
2006-01-03
2006-03-25
2006-08-17
-select * from t3;
+select * from t3 order by col1;
col1
2006-01-03
+2006-03-25
2006-08-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-11-15' where col1='2006-01-03';
+update t2 set col1='2006-11-15' where col1='2006-01-03';
+update t3 set col1='2006-11-15' where col1='2006-01-03';
+update t4 set col1='2006-11-15' where col1='2006-01-03';
+update t5 set col1='2006-11-15' where col1='2006-01-03';
+update t6 set col1='2006-11-15' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t3 order by col1;
+col1
2006-03-25
-select * from t4;
+2006-08-17
+2006-11-15
+select * from t4 order by colint;
colint col1
-1 2006-01-03
-2 2006-08-17
-select * from t5;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
colint col1
-3 2006-03-25
-1 2006-01-03
-2 2006-08-17
-select * from t6;
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
colint col1
-1 2006-08-17
-2 2006-03-25
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
-------------------------------------------------------------------------
--- Alter tables with yearweek(col1)-200600
-------------------------------------------------------------------------
@@ -4534,33 +13395,321 @@ alter table t66
partition by range(colint)
(partition p0 values less than (yearweek('2006-10-14')-200600),
partition p1 values less than maxvalue);
-select * from t11;
+select * from t11 order by col1;
col1
-2006-01-03
2006-08-17
-select * from t22;
+2006-11-15
+select * from t22 order by col1;
col1
-2006-01-03
2006-03-25
2006-08-17
-select * from t33;
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
col1
-2006-01-03
2006-08-17
+2006-11-15
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+alter table t55
+partition by list(colint)
+subpartition by hash(yearweek(col1)-200600) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (yearweek(col1)-200600) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (yearweek('2006-10-14')-200600),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (yearweek('2006-10-14')-200600),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with yearweek(col1)-200600
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-08-17';
+delete from t2 where col1='2006-08-17';
+delete from t3 where col1='2006-08-17';
+delete from t4 where col1='2006-08-17';
+delete from t5 where col1='2006-08-17';
+delete from t6 where col1='2006-08-17';
+select * from t1 order by col1;
+col1
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t3 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-08-17');
+insert into t2 values ('2006-08-17');
+insert into t3 values ('2006-08-17');
+insert into t4 values (60,'2006-08-17');
+insert into t5 values (60,'2006-08-17');
+insert into t6 values (60,'2006-08-17');
+select * from t1 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t3 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t3 order by col1;
+col1
2006-03-25
-select * from t44;
+2006-08-17
+2006-11-15
+select * from t4 order by colint;
+colint col1
+60 2006-08-17
+select * from t5 order by colint;
+colint col1
+60 2006-08-17
+select * from t6 order by colint;
+colint col1
+60 2006-08-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with yearweek(col1)-200600
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-08-17';
+delete from t22 where col1='2006-08-17';
+delete from t33 where col1='2006-08-17';
+delete from t44 where col1='2006-08-17';
+delete from t55 where col1='2006-08-17';
+delete from t66 where col1='2006-08-17';
+select * from t11 order by col1;
+col1
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-08-17');
+insert into t22 values ('2006-08-17');
+insert into t33 values ('2006-08-17');
+insert into t44 values (60,'2006-08-17');
+insert into t55 values (60,'2006-08-17');
+insert into t66 values (60,'2006-08-17');
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t44 order by colint;
colint col1
-1 2006-01-03
-2 2006-08-17
-select * from t55;
+60 2006-08-17
+select * from t55 order by colint;
colint col1
-3 2006-03-25
-1 2006-01-03
-2 2006-08-17
-select * from t66;
+60 2006-08-17
+select * from t66 order by colint;
colint col1
-1 2006-08-17
-2 2006-03-25
+60 2006-08-17
+-------------------------
+---- some alter table end
+-------------------------
drop table if exists t1 ;
drop table if exists t2 ;
drop table if exists t3 ;
diff --git a/mysql-test/suite/partitions/r/partition_supported_sql_func_ndb.result b/mysql-test/suite/partitions/r/partition_supported_sql_func_ndb.result
new file mode 100644
index 00000000000..5dc27d16538
--- /dev/null
+++ b/mysql-test/suite/partitions/r/partition_supported_sql_func_ndb.result
@@ -0,0 +1,13724 @@
+-------------------------------------------------------------------------
+--- abs(col1) in partition with coltype int
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with abs(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 int) engine='NDB'
+partition by range(abs(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 int) engine='NDB'
+partition by list(abs(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 int) engine='NDB'
+partition by hash(abs(col1));
+create table t4 (colint int, col1 int) engine='NDB'
+partition by range(colint)
+subpartition by hash(abs(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 int) engine='NDB'
+partition by list(colint)
+subpartition by hash(abs(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 int) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (abs(15)),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with abs(col1)
+-------------------------------------------------------------------------
+insert into t1 values (5 );
+insert into t1 values (13 );
+insert into t2 values (5 );
+insert into t2 values (13 );
+insert into t2 values (17 );
+insert into t3 values (5 );
+insert into t3 values (13 );
+insert into t3 values (17 );
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_int.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_int.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_int.in' into table t6;
+select abs(col1) from t1 order by col1;
+abs(col1)
+5
+13
+select * from t1 order by col1;
+col1
+5
+13
+select * from t2 order by col1;
+col1
+5
+13
+17
+select * from t3 order by col1;
+col1
+5
+13
+17
+select * from t4 order by colint;
+colint col1
+1 5
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t5 order by colint;
+colint col1
+1 5
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t6 order by colint;
+colint col1
+1 5
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 5
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+update t1 set col1=15 where col1=5 ;
+update t2 set col1=15 where col1=5 ;
+update t3 set col1=15 where col1=5 ;
+update t4 set col1=15 where col1=5 ;
+update t5 set col1=15 where col1=5 ;
+update t6 set col1=15 where col1=5 ;
+select * from t1 order by col1;
+col1
+13
+15
+select * from t2 order by col1;
+col1
+13
+15
+17
+select * from t3 order by col1;
+col1
+13
+15
+17
+select * from t4 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t5 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t6 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+-------------------------------------------------------------------------
+--- Alter tables with abs(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(abs(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(abs(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(abs(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(abs(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(abs(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (abs(15)),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13
+15
+select * from t22 order by col1;
+col1
+13
+15
+17
+select * from t33 order by col1;
+col1
+13
+15
+17
+select * from t44 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t55 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t66 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13
+15
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13
+15
+alter table t55
+partition by list(colint)
+subpartition by hash(abs(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` int(11) DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (abs(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (abs(15)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (abs(15)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15
+2 13
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with abs(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1=13 ;
+delete from t2 where col1=13 ;
+delete from t3 where col1=13 ;
+delete from t4 where col1=13 ;
+delete from t5 where col1=13 ;
+delete from t6 where col1=13 ;
+select * from t1 order by col1;
+col1
+15
+select * from t2 order by col1;
+col1
+15
+17
+select * from t3 order by col1;
+col1
+15
+17
+select * from t4 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t5 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+insert into t1 values (13 );
+insert into t2 values (13 );
+insert into t3 values (13 );
+insert into t4 values (60,13 );
+insert into t5 values (60,13 );
+insert into t6 values (60,13 );
+select * from t1 order by col1;
+col1
+13
+15
+select * from t2 order by col1;
+col1
+13
+15
+17
+select * from t3 order by col1;
+col1
+13
+15
+17
+select * from t4 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t5 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t6 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+15
+select * from t2 order by col1;
+col1
+13
+15
+17
+select * from t3 order by col1;
+col1
+13
+15
+17
+select * from t4 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t5 order by colint;
+colint col1
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t6 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with abs(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1=13 ;
+delete from t22 where col1=13 ;
+delete from t33 where col1=13 ;
+delete from t44 where col1=13 ;
+delete from t55 where col1=13 ;
+delete from t66 where col1=13 ;
+select * from t11 order by col1;
+col1
+15
+select * from t22 order by col1;
+col1
+15
+17
+select * from t33 order by col1;
+col1
+15
+17
+select * from t44 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+select * from t55 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+insert into t11 values (13 );
+insert into t22 values (13 );
+insert into t33 values (13 );
+insert into t44 values (60,13 );
+insert into t55 values (60,13 );
+insert into t66 values (60,13 );
+select * from t11 order by col1;
+col1
+13
+15
+select * from t22 order by col1;
+col1
+13
+15
+17
+select * from t33 order by col1;
+col1
+13
+15
+17
+select * from t44 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t55 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t66 order by colint;
+colint col1
+1 15
+3 15
+4 17
+5 23
+6 34
+7 56
+8 56
+9 45
+10 34
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+15
+select * from t22 order by col1;
+col1
+13
+15
+17
+select * from t33 order by col1;
+col1
+13
+15
+17
+select * from t44 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t55 order by colint;
+colint col1
+11 78
+12 89
+13 67
+14 46
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+select * from t66 order by colint;
+colint col1
+15 34
+16 324
+17 345
+18 34
+19 78
+20 567
+21 4
+22 435
+23 34
+24 45
+25 4565
+26 4
+27 3
+28 2
+29 3
+30 15
+31 6
+32 8
+33 9
+34 745
+35 34
+36 34
+37 324
+38 67
+39 78
+40 89
+41 90
+42 78967
+50 56
+51 34
+55 123
+60 13
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- ascii(col1) in partition with coltype char(1)
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with ascii(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 char(1)) engine='NDB'
+partition by range(ascii(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 char(1)) engine='NDB'
+partition by list(ascii(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 char(1)) engine='NDB'
+partition by hash(ascii(col1));
+create table t4 (colint int, col1 char(1)) engine='NDB'
+partition by range(colint)
+subpartition by hash(ascii(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 char(1)) engine='NDB'
+partition by list(colint)
+subpartition by hash(ascii(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 char(1)) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (ascii('5')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with ascii(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('1');
+insert into t1 values ('9');
+insert into t2 values ('1');
+insert into t2 values ('9');
+insert into t2 values ('3');
+insert into t3 values ('1');
+insert into t3 values ('9');
+insert into t3 values ('3');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t6;
+select ascii(col1) from t1 order by col1;
+ascii(col1)
+49
+57
+select * from t1 order by col1;
+col1
+1
+9
+select * from t2 order by col1;
+col1
+1
+3
+9
+select * from t3 order by col1;
+col1
+1
+3
+9
+select * from t4 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+select * from t6 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+update t1 set col1='8' where col1='1';
+update t2 set col1='8' where col1='1';
+update t3 set col1='8' where col1='1';
+update t4 set col1='8' where col1='1';
+update t5 set col1='8' where col1='1';
+update t6 set col1='8' where col1='1';
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t6 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+-------------------------------------------------------------------------
+--- Alter tables with ascii(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(ascii(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(ascii(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(ascii(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(ascii(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(ascii(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (ascii('5')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+alter table t55
+partition by list(colint)
+subpartition by hash(ascii(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(1) DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (ascii(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ascii('5')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ascii('5')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ascii(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='9';
+delete from t2 where col1='9';
+delete from t3 where col1='9';
+delete from t4 where col1='9';
+delete from t5 where col1='9';
+delete from t6 where col1='9';
+select * from t1 order by col1;
+col1
+8
+select * from t2 order by col1;
+col1
+3
+8
+select * from t3 order by col1;
+col1
+3
+8
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t1 values ('9');
+insert into t2 values ('9');
+insert into t3 values ('9');
+insert into t4 values (60,'9');
+insert into t5 values (60,'9');
+insert into t6 values (60,'9');
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t6 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+60 9
+select * from t5 order by colint;
+colint col1
+60 9
+select * from t6 order by colint;
+colint col1
+60 9
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ascii(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='9';
+delete from t22 where col1='9';
+delete from t33 where col1='9';
+delete from t44 where col1='9';
+delete from t55 where col1='9';
+delete from t66 where col1='9';
+select * from t11 order by col1;
+col1
+8
+select * from t22 order by col1;
+col1
+3
+8
+select * from t33 order by col1;
+col1
+3
+8
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t11 values ('9');
+insert into t22 values ('9');
+insert into t33 values ('9');
+insert into t44 values (60,'9');
+insert into t55 values (60,'9');
+insert into t66 values (60,'9');
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t66 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+60 9
+select * from t55 order by colint;
+colint col1
+60 9
+select * from t66 order by colint;
+colint col1
+60 9
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- cast(ceiling(col1) as signed integer) in partition with coltype float(7,4)
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with cast(ceiling(col1) as signed integer)
+-------------------------------------------------------------------------
+create table t1 (col1 float(7,4)) engine='NDB'
+partition by range(cast(ceiling(col1) as signed integer))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 float(7,4)) engine='NDB'
+partition by list(cast(ceiling(col1) as signed integer))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 float(7,4)) engine='NDB'
+partition by hash(cast(ceiling(col1) as signed integer));
+create table t4 (colint int, col1 float(7,4)) engine='NDB'
+partition by range(colint)
+subpartition by hash(cast(ceiling(col1) as signed integer)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 float(7,4)) engine='NDB'
+partition by list(colint)
+subpartition by hash(cast(ceiling(col1) as signed integer)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 float(7,4)) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (cast(ceiling(15) as signed integer)),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with cast(ceiling(col1) as signed integer)
+-------------------------------------------------------------------------
+insert into t1 values (5.1230);
+insert into t1 values (13.345);
+insert into t2 values (5.1230);
+insert into t2 values (13.345);
+insert into t2 values (17.987);
+insert into t3 values (5.1230);
+insert into t3 values (13.345);
+insert into t3 values (17.987);
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t6;
+select cast(ceiling(col1) as signed integer) from t1 order by col1;
+cast(ceiling(col1) as signed integer)
+6
+14
+select * from t1 order by col1;
+col1
+5.1230
+13.3450
+select * from t2 order by col1;
+col1
+5.1230
+13.3450
+17.9870
+select * from t3 order by col1;
+col1
+5.1230
+13.3450
+17.9870
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+update t1 set col1=15.654 where col1=5.1230;
+update t2 set col1=15.654 where col1=5.1230;
+update t3 set col1=15.654 where col1=5.1230;
+update t4 set col1=15.654 where col1=5.1230;
+update t5 set col1=15.654 where col1=5.1230;
+update t6 set col1=15.654 where col1=5.1230;
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Alter tables with cast(ceiling(col1) as signed integer)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(cast(ceiling(col1) as signed integer))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(cast(ceiling(col1) as signed integer))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(cast(ceiling(col1) as signed integer));
+alter table t44
+partition by range(colint)
+subpartition by hash(cast(ceiling(col1) as signed integer)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(ceiling(col1) as signed integer)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (cast(ceiling(15) as signed integer)),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(ceiling(col1) as signed integer)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` float(7,4) DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (cast(ceiling(col1) as signed integer)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(ceiling(15) as signed integer)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(ceiling(15) as signed integer)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(ceiling(col1) as signed integer)
+-------------------------------------------------------------------------
+delete from t1 where col1=13.345;
+delete from t2 where col1=13.345;
+delete from t3 where col1=13.345;
+delete from t4 where col1=13.345;
+delete from t5 where col1=13.345;
+delete from t6 where col1=13.345;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t1 values (13.345);
+insert into t2 values (13.345);
+insert into t3 values (13.345);
+insert into t4 values (60,13.345);
+insert into t5 values (60,13.345);
+insert into t6 values (60,13.345);
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t6 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+60 13.3450
+select * from t5 order by colint;
+colint col1
+60 13.3450
+select * from t6 order by colint;
+colint col1
+60 13.3450
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(ceiling(col1) as signed integer)
+-------------------------------------------------------------------------
+delete from t11 where col1=13.345;
+delete from t22 where col1=13.345;
+delete from t33 where col1=13.345;
+delete from t44 where col1=13.345;
+delete from t55 where col1=13.345;
+delete from t66 where col1=13.345;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t11 values (13.345);
+insert into t22 values (13.345);
+insert into t33 values (13.345);
+insert into t44 values (60,13.345);
+insert into t55 values (60,13.345);
+insert into t66 values (60,13.345);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t66 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+60 13.3450
+select * from t55 order by colint;
+colint col1
+60 13.3450
+select * from t66 order by colint;
+colint col1
+60 13.3450
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- cast(floor(col1) as signed) in partition with coltype float(7,4)
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with cast(floor(col1) as signed)
+-------------------------------------------------------------------------
+create table t1 (col1 float(7,4)) engine='NDB'
+partition by range(cast(floor(col1) as signed))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 float(7,4)) engine='NDB'
+partition by list(cast(floor(col1) as signed))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 float(7,4)) engine='NDB'
+partition by hash(cast(floor(col1) as signed));
+create table t4 (colint int, col1 float(7,4)) engine='NDB'
+partition by range(colint)
+subpartition by hash(cast(floor(col1) as signed)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 float(7,4)) engine='NDB'
+partition by list(colint)
+subpartition by hash(cast(floor(col1) as signed)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 float(7,4)) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (cast(floor(15.123) as signed)),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with cast(floor(col1) as signed)
+-------------------------------------------------------------------------
+insert into t1 values (5.1230);
+insert into t1 values (13.345);
+insert into t2 values (5.1230);
+insert into t2 values (13.345);
+insert into t2 values (17.987);
+insert into t3 values (5.1230);
+insert into t3 values (13.345);
+insert into t3 values (17.987);
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t6;
+select cast(floor(col1) as signed) from t1 order by col1;
+cast(floor(col1) as signed)
+5
+13
+select * from t1 order by col1;
+col1
+5.1230
+13.3450
+select * from t2 order by col1;
+col1
+5.1230
+13.3450
+17.9870
+select * from t3 order by col1;
+col1
+5.1230
+13.3450
+17.9870
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+update t1 set col1=15.654 where col1=5.1230;
+update t2 set col1=15.654 where col1=5.1230;
+update t3 set col1=15.654 where col1=5.1230;
+update t4 set col1=15.654 where col1=5.1230;
+update t5 set col1=15.654 where col1=5.1230;
+update t6 set col1=15.654 where col1=5.1230;
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Alter tables with cast(floor(col1) as signed)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(cast(floor(col1) as signed))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(cast(floor(col1) as signed))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(cast(floor(col1) as signed));
+alter table t44
+partition by range(colint)
+subpartition by hash(cast(floor(col1) as signed)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(floor(col1) as signed)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (cast(floor(15.123) as signed)),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(floor(col1) as signed)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` float(7,4) DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (cast(floor(col1) as signed)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(floor(15.123) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(floor(15.123) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 15.6540
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(floor(col1) as signed)
+-------------------------------------------------------------------------
+delete from t1 where col1=13.345;
+delete from t2 where col1=13.345;
+delete from t3 where col1=13.345;
+delete from t4 where col1=13.345;
+delete from t5 where col1=13.345;
+delete from t6 where col1=13.345;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t1 values (13.345);
+insert into t2 values (13.345);
+insert into t3 values (13.345);
+insert into t4 values (60,13.345);
+insert into t5 values (60,13.345);
+insert into t6 values (60,13.345);
+select * from t1 order by col1;
+col1
+13.3450
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t5 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t6 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+15.6540
+select * from t2 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t3 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t4 order by colint;
+colint col1
+60 13.3450
+select * from t5 order by colint;
+colint col1
+60 13.3450
+select * from t6 order by colint;
+colint col1
+60 13.3450
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(floor(col1) as signed)
+-------------------------------------------------------------------------
+delete from t11 where col1=13.345;
+delete from t22 where col1=13.345;
+delete from t33 where col1=13.345;
+delete from t44 where col1=13.345;
+delete from t55 where col1=13.345;
+delete from t66 where col1=13.345;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+insert into t11 values (13.345);
+insert into t22 values (13.345);
+insert into t33 values (13.345);
+insert into t44 values (60,13.345);
+insert into t55 values (60,13.345);
+insert into t66 values (60,13.345);
+select * from t11 order by col1;
+col1
+13.3450
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t55 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+select * from t66 order by colint;
+colint col1
+1 15.6540
+3 17.9870
+4 15.6540
+60 13.3450
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+15.6540
+select * from t22 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t33 order by col1;
+col1
+13.3450
+15.6540
+17.9870
+select * from t44 order by colint;
+colint col1
+60 13.3450
+select * from t55 order by colint;
+colint col1
+60 13.3450
+select * from t66 order by colint;
+colint col1
+60 13.3450
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- cast(mod(col1,10) as signed) in partition with coltype float(7,4)
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with cast(mod(col1,10) as signed)
+-------------------------------------------------------------------------
+create table t1 (col1 float(7,4)) engine='NDB'
+partition by range(cast(mod(col1,10) as signed))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 float(7,4)) engine='NDB'
+partition by list(cast(mod(col1,10) as signed))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 float(7,4)) engine='NDB'
+partition by hash(cast(mod(col1,10) as signed));
+create table t4 (colint int, col1 float(7,4)) engine='NDB'
+partition by range(colint)
+subpartition by hash(cast(mod(col1,10) as signed)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 float(7,4)) engine='NDB'
+partition by list(colint)
+subpartition by hash(cast(mod(col1,10) as signed)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 float(7,4)) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (cast(mod(15,10) as signed)),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with cast(mod(col1,10) as signed)
+-------------------------------------------------------------------------
+insert into t1 values (5.0000);
+insert into t1 values (19);
+insert into t2 values (5.0000);
+insert into t2 values (19);
+insert into t2 values (17);
+insert into t3 values (5.0000);
+insert into t3 values (19);
+insert into t3 values (17);
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_float.in' into table t6;
+select cast(mod(col1,10) as signed) from t1 order by col1;
+cast(mod(col1,10) as signed)
+5
+9
+select * from t1 order by col1;
+col1
+5.0000
+19.0000
+select * from t2 order by col1;
+col1
+5.0000
+17.0000
+19.0000
+select * from t3 order by col1;
+col1
+5.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+update t1 set col1=15 where col1=5.0000;
+update t2 set col1=15 where col1=5.0000;
+update t3 set col1=15 where col1=5.0000;
+update t4 set col1=15 where col1=5.0000;
+update t5 set col1=15 where col1=5.0000;
+update t6 set col1=15 where col1=5.0000;
+select * from t1 order by col1;
+col1
+15.0000
+19.0000
+select * from t2 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t6 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Alter tables with cast(mod(col1,10) as signed)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(cast(mod(col1,10) as signed))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(cast(mod(col1,10) as signed))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(cast(mod(col1,10) as signed));
+alter table t44
+partition by range(colint)
+subpartition by hash(cast(mod(col1,10) as signed)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(mod(col1,10) as signed)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (cast(mod(15,10) as signed)),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+15.0000
+19.0000
+select * from t22 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t44 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+15.0000
+19.0000
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+15.0000
+19.0000
+alter table t55
+partition by list(colint)
+subpartition by hash(cast(mod(col1,10) as signed)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` float(7,4) DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (cast(mod(col1,10) as signed)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(mod(15,10) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (cast(mod(15,10) as signed)),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(mod(col1,10) as signed)
+-------------------------------------------------------------------------
+delete from t1 where col1=19;
+delete from t2 where col1=19;
+delete from t3 where col1=19;
+delete from t4 where col1=19;
+delete from t5 where col1=19;
+delete from t6 where col1=19;
+select * from t1 order by col1;
+col1
+15.0000
+select * from t2 order by col1;
+col1
+15.0000
+17.0000
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+insert into t1 values (19);
+insert into t2 values (19);
+insert into t3 values (19);
+insert into t4 values (60,19);
+insert into t5 values (60,19);
+insert into t6 values (60,19);
+select * from t1 order by col1;
+col1
+15.0000
+19.0000
+select * from t2 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t5 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t6 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t4 order by colint;
+colint col1
+60 19.0000
+select * from t5 order by colint;
+colint col1
+60 19.0000
+select * from t6 order by colint;
+colint col1
+60 19.0000
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with cast(mod(col1,10) as signed)
+-------------------------------------------------------------------------
+delete from t11 where col1=19;
+delete from t22 where col1=19;
+delete from t33 where col1=19;
+delete from t44 where col1=19;
+delete from t55 where col1=19;
+delete from t66 where col1=19;
+select * from t11 order by col1;
+col1
+15.0000
+select * from t22 order by col1;
+col1
+15.0000
+17.0000
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+select * from t44 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+insert into t11 values (19);
+insert into t22 values (19);
+insert into t33 values (19);
+insert into t44 values (60,19);
+insert into t55 values (60,19);
+insert into t66 values (60,19);
+select * from t11 order by col1;
+col1
+15.0000
+19.0000
+select * from t22 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t44 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t55 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+select * from t66 order by colint;
+colint col1
+1 5.1230
+2 13.3450
+3 17.9870
+4 15.6540
+60 19.0000
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+15.0000
+17.0000
+19.0000
+select * from t44 order by colint;
+colint col1
+60 19.0000
+select * from t55 order by colint;
+colint col1
+60 19.0000
+select * from t66 order by colint;
+colint col1
+60 19.0000
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- ord(col1) in partition with coltype char(3)
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with ord(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 char(3)) engine='NDB'
+partition by range(ord(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 char(3)) engine='NDB'
+partition by list(ord(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 char(3)) engine='NDB'
+partition by hash(ord(col1));
+create table t4 (colint int, col1 char(3)) engine='NDB'
+partition by range(colint)
+subpartition by hash(ord(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 char(3)) engine='NDB'
+partition by list(colint)
+subpartition by hash(ord(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 char(3)) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (ord('a')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with ord(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('1');
+insert into t1 values ('9');
+insert into t2 values ('1');
+insert into t2 values ('9');
+insert into t2 values ('3');
+insert into t3 values ('1');
+insert into t3 values ('9');
+insert into t3 values ('3');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_ch1.in' into table t6;
+select ord(col1) from t1 order by col1;
+ord(col1)
+49
+57
+select * from t1 order by col1;
+col1
+1
+9
+select * from t2 order by col1;
+col1
+1
+3
+9
+select * from t3 order by col1;
+col1
+1
+3
+9
+select * from t4 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+select * from t6 order by colint;
+colint col1
+1 1
+2 9
+3 3
+4 8
+update t1 set col1='8' where col1='1';
+update t2 set col1='8' where col1='1';
+update t3 set col1='8' where col1='1';
+update t4 set col1='8' where col1='1';
+update t5 set col1='8' where col1='1';
+update t6 set col1='8' where col1='1';
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t6 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+-------------------------------------------------------------------------
+--- Alter tables with ord(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(ord(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(ord(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(ord(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(ord(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(ord(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (ord('a')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+8
+9
+alter table t55
+partition by list(colint)
+subpartition by hash(ord(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(3) DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (ord(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ord('a')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (ord('a')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 8
+2 9
+3 3
+4 8
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ord(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='9';
+delete from t2 where col1='9';
+delete from t3 where col1='9';
+delete from t4 where col1='9';
+delete from t5 where col1='9';
+delete from t6 where col1='9';
+select * from t1 order by col1;
+col1
+8
+select * from t2 order by col1;
+col1
+3
+8
+select * from t3 order by col1;
+col1
+3
+8
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t1 values ('9');
+insert into t2 values ('9');
+insert into t3 values ('9');
+insert into t4 values (60,'9');
+insert into t5 values (60,'9');
+insert into t6 values (60,'9');
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t5 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t6 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+8
+9
+select * from t2 order by col1;
+col1
+3
+8
+9
+select * from t3 order by col1;
+col1
+3
+8
+9
+select * from t4 order by colint;
+colint col1
+60 9
+select * from t5 order by colint;
+colint col1
+60 9
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with ord(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='9';
+delete from t22 where col1='9';
+delete from t33 where col1='9';
+delete from t44 where col1='9';
+delete from t55 where col1='9';
+delete from t66 where col1='9';
+select * from t11 order by col1;
+col1
+8
+select * from t22 order by col1;
+col1
+3
+8
+select * from t33 order by col1;
+col1
+3
+8
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+insert into t11 values ('9');
+insert into t22 values ('9');
+insert into t33 values ('9');
+insert into t44 values (60,'9');
+insert into t55 values (60,'9');
+insert into t66 values (60,'9');
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t55 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+select * from t66 order by colint;
+colint col1
+1 8
+3 3
+4 8
+60 9
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+8
+9
+select * from t22 order by col1;
+col1
+3
+8
+9
+select * from t33 order by col1;
+col1
+3
+8
+9
+select * from t44 order by colint;
+colint col1
+60 9
+select * from t55 order by colint;
+colint col1
+60 9
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- day(col1) in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with day(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(day(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(day(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(day(col1));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(day(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(day(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (day('2006-12-21')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with day(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-02-03');
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-02-03');
+insert into t2 values ('2006-01-17');
+insert into t2 values ('2006-01-25');
+insert into t3 values ('2006-02-03');
+insert into t3 values ('2006-01-17');
+insert into t3 values ('2006-01-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select day(col1) from t1 order by col1;
+day(col1)
+17
+3
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-03
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-03
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-03
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-02-03';
+update t2 set col1='2006-02-05' where col1='2006-02-03';
+update t3 set col1='2006-02-05' where col1='2006-02-03';
+update t4 set col1='2006-02-05' where col1='2006-02-03';
+update t5 set col1='2006-02-05' where col1='2006-02-03';
+update t6 set col1='2006-02-05' where col1='2006-02-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with day(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(day(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(day(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(day(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(day(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(day(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (day('2006-12-21')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(day(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (day(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (day('2006-12-21')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (day('2006-12-21')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with day(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+60 2006-01-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with day(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+60 2006-01-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- dayofmonth(col1) in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with dayofmonth(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(dayofmonth(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(dayofmonth(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(dayofmonth(col1));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(dayofmonth(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(dayofmonth(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (dayofmonth('2006-12-24')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with dayofmonth(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-02-03');
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-02-03');
+insert into t2 values ('2006-01-17');
+insert into t2 values ('2006-01-25');
+insert into t3 values ('2006-02-03');
+insert into t3 values ('2006-01-17');
+insert into t3 values ('2006-01-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofmonth(col1) from t1 order by col1;
+dayofmonth(col1)
+17
+3
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-03
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-03
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-03
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-02-03';
+update t2 set col1='2006-02-05' where col1='2006-02-03';
+update t3 set col1='2006-02-05' where col1='2006-02-03';
+update t4 set col1='2006-02-05' where col1='2006-02-03';
+update t5 set col1='2006-02-05' where col1='2006-02-03';
+update t6 set col1='2006-02-05' where col1='2006-02-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with dayofmonth(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(dayofmonth(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(dayofmonth(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(dayofmonth(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(dayofmonth(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofmonth(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (dayofmonth('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofmonth(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofmonth(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofmonth('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofmonth('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofmonth(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+60 2006-01-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofmonth(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-05
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+60 2006-01-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- dayofweek(col1) in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with dayofweek(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(dayofweek(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(dayofweek(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(dayofweek(col1));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(dayofweek(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(dayofweek(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (dayofweek('2006-12-24')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with dayofweek(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-01-03');
+insert into t1 values ('2006-02-17');
+insert into t2 values ('2006-01-03');
+insert into t2 values ('2006-02-17');
+insert into t2 values ('2006-01-25');
+insert into t3 values ('2006-01-03');
+insert into t3 values ('2006-02-17');
+insert into t3 values ('2006-01-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofweek(col1) from t1 order by col1;
+dayofweek(col1)
+3
+6
+select * from t1 order by col1;
+col1
+2006-01-03
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-03
+2006-01-25
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-03
+2006-01-25
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with dayofweek(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(dayofweek(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(dayofweek(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(dayofweek(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(dayofweek(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofweek(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (dayofweek('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofweek(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofweek(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofweek('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofweek('2006-12-24')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofweek(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-02-17';
+delete from t2 where col1='2006-02-17';
+delete from t3 where col1='2006-02-17';
+delete from t4 where col1='2006-02-17';
+delete from t5 where col1='2006-02-17';
+delete from t6 where col1='2006-02-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-02-17');
+insert into t2 values ('2006-02-17');
+insert into t3 values ('2006-02-17');
+insert into t4 values (60,'2006-02-17');
+insert into t5 values (60,'2006-02-17');
+insert into t6 values (60,'2006-02-17');
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+60 2006-02-17
+select * from t5 order by colint;
+colint col1
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofweek(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-02-17';
+delete from t22 where col1='2006-02-17';
+delete from t33 where col1='2006-02-17';
+delete from t44 where col1='2006-02-17';
+delete from t55 where col1='2006-02-17';
+delete from t66 where col1='2006-02-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-02-17');
+insert into t22 values ('2006-02-17');
+insert into t33 values ('2006-02-17');
+insert into t44 values (60,'2006-02-17');
+insert into t55 values (60,'2006-02-17');
+insert into t66 values (60,'2006-02-17');
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- dayofyear(col1) in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with dayofyear(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(dayofyear(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(dayofyear(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(dayofyear(col1));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with dayofyear(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-01-03');
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-03');
+insert into t2 values ('2006-01-17');
+insert into t2 values ('2006-02-25');
+insert into t3 values ('2006-01-03');
+insert into t3 values ('2006-01-17');
+insert into t3 values ('2006-02-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofyear(col1) from t1 order by col1;
+dayofyear(col1)
+3
+17
+select * from t1 order by col1;
+col1
+2006-01-03
+2006-01-17
+select * from t2 order by col1;
+col1
+2006-01-03
+2006-01-17
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-03
+2006-01-17
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with dayofyear(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(dayofyear(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(dayofyear(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(dayofyear(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofyear(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- dayofyear(col1) in partition with coltype char(30)
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with dayofyear(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 char(30)) engine='NDB'
+partition by range(dayofyear(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 char(30)) engine='NDB'
+partition by list(dayofyear(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 char(30)) engine='NDB'
+partition by hash(dayofyear(col1));
+create table t4 (colint int, col1 char(30)) engine='NDB'
+partition by range(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 char(30)) engine='NDB'
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 char(30)) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with dayofyear(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-01-03');
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-03');
+insert into t2 values ('2006-01-17');
+insert into t2 values ('2006-02-25');
+insert into t3 values ('2006-01-03');
+insert into t3 values ('2006-01-17');
+insert into t3 values ('2006-02-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select dayofyear(col1) from t1 order by col1;
+dayofyear(col1)
+3
+17
+select * from t1 order by col1;
+col1
+2006-01-03
+2006-01-17
+select * from t2 order by col1;
+col1
+2006-01-03
+2006-01-17
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-03
+2006-01-17
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with dayofyear(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(dayofyear(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(dayofyear(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(dayofyear(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+alter table t55
+partition by list(colint)
+subpartition by hash(dayofyear(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(30) DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (dayofyear(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (dayofyear('2006-12-25')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with dayofyear(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-02-05
+2006-02-25
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- extract(month from col1) in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with extract(month from col1)
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(extract(month from col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(extract(month from col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(extract(month from col1));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(extract(month from col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(extract(month from col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (extract(year from '1998-11-23')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with extract(month from col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-01-03');
+insert into t1 values ('2006-02-17');
+insert into t2 values ('2006-01-03');
+insert into t2 values ('2006-02-17');
+insert into t2 values ('2006-01-25');
+insert into t3 values ('2006-01-03');
+insert into t3 values ('2006-02-17');
+insert into t3 values ('2006-01-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select extract(month from col1) from t1 order by col1;
+extract(month from col1)
+1
+2
+select * from t1 order by col1;
+col1
+2006-01-03
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-03
+2006-01-25
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-03
+2006-01-25
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-05' where col1='2006-01-03';
+update t2 set col1='2006-02-05' where col1='2006-01-03';
+update t3 set col1='2006-02-05' where col1='2006-01-03';
+update t4 set col1='2006-02-05' where col1='2006-01-03';
+update t5 set col1='2006-02-05' where col1='2006-01-03';
+update t6 set col1='2006-02-05' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with extract(month from col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(extract(month from col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(extract(month from col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(extract(month from col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(extract(month from col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(extract(month from col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (extract(year from '1998-11-23')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+alter table t55
+partition by list(colint)
+subpartition by hash(extract(month from col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (extract(month from col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (extract(year from '1998-11-23')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (extract(year from '1998-11-23')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with extract(month from col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-02-17';
+delete from t2 where col1='2006-02-17';
+delete from t3 where col1='2006-02-17';
+delete from t4 where col1='2006-02-17';
+delete from t5 where col1='2006-02-17';
+delete from t6 where col1='2006-02-17';
+select * from t1 order by col1;
+col1
+2006-02-05
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-02-17');
+insert into t2 values ('2006-02-17');
+insert into t3 values ('2006-02-17');
+insert into t4 values (60,'2006-02-17');
+insert into t5 values (60,'2006-02-17');
+insert into t6 values (60,'2006-02-17');
+select * from t1 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t4 order by colint;
+colint col1
+60 2006-02-17
+select * from t5 order by colint;
+colint col1
+60 2006-02-17
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with extract(month from col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-02-17';
+delete from t22 where col1='2006-02-17';
+delete from t33 where col1='2006-02-17';
+delete from t44 where col1='2006-02-17';
+delete from t55 where col1='2006-02-17';
+delete from t66 where col1='2006-02-17';
+select * from t11 order by col1;
+col1
+2006-02-05
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-02-17');
+insert into t22 values ('2006-02-17');
+insert into t33 values ('2006-02-17');
+insert into t44 values (60,'2006-02-17');
+insert into t55 values (60,'2006-02-17');
+insert into t66 values (60,'2006-02-17');
+select * from t11 order by col1;
+col1
+2006-02-05
+2006-02-17
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-02-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-05
+2006-02-17
+select * from t44 order by colint;
+colint col1
+60 2006-02-17
+select * from t55 order by colint;
+colint col1
+60 2006-02-17
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- hour(col1) in partition with coltype time
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with hour(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 time) engine='NDB'
+partition by range(hour(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 time) engine='NDB'
+partition by list(hour(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 time) engine='NDB'
+partition by hash(hour(col1));
+create table t4 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+subpartition by hash(hour(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 time) engine='NDB'
+partition by list(colint)
+subpartition by hash(hour(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (hour('18:30')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with hour(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('09:09');
+insert into t1 values ('14:30');
+insert into t2 values ('09:09');
+insert into t2 values ('14:30');
+insert into t2 values ('21:59');
+insert into t3 values ('09:09');
+insert into t3 values ('14:30');
+insert into t3 values ('21:59');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select hour(col1) from t1 order by col1;
+hour(col1)
+9
+14
+select * from t1 order by col1;
+col1
+09:09:00
+14:30:00
+select * from t2 order by col1;
+col1
+09:09:00
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+09:09:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:30' where col1='09:09';
+update t2 set col1='10:30' where col1='09:09';
+update t3 set col1='10:30' where col1='09:09';
+update t4 set col1='10:30' where col1='09:09';
+update t5 set col1='10:30' where col1='09:09';
+update t6 set col1='10:30' where col1='09:09';
+select * from t1 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t2 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Alter tables with hour(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(hour(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(hour(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(hour(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(hour(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(hour(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (hour('18:30')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t22 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+alter table t55
+partition by list(colint)
+subpartition by hash(hour(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (hour(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (hour('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (hour('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with hour(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30';
+delete from t2 where col1='14:30';
+delete from t3 where col1='14:30';
+delete from t4 where col1='14:30';
+delete from t5 where col1='14:30';
+delete from t6 where col1='14:30';
+select * from t1 order by col1;
+col1
+10:30:00
+select * from t2 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30');
+insert into t2 values ('14:30');
+insert into t3 values ('14:30');
+insert into t4 values (60,'14:30');
+insert into t5 values (60,'14:30');
+insert into t6 values (60,'14:30');
+select * from t1 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t2 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+14:30:00
+21:59:00
+select * from t3 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t4 order by colint;
+colint col1
+60 14:30:00
+select * from t5 order by colint;
+colint col1
+60 14:30:00
+select * from t6 order by colint;
+colint col1
+60 14:30:00
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with hour(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30';
+delete from t22 where col1='14:30';
+delete from t33 where col1='14:30';
+delete from t44 where col1='14:30';
+delete from t55 where col1='14:30';
+delete from t66 where col1='14:30';
+select * from t11 order by col1;
+col1
+10:30:00
+select * from t22 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30');
+insert into t22 values ('14:30');
+insert into t33 values ('14:30');
+insert into t44 values (60,'14:30');
+insert into t55 values (60,'14:30');
+insert into t66 values (60,'14:30');
+select * from t11 order by col1;
+col1
+10:30:00
+14:30:00
+select * from t22 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:00
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+14:30:00
+21:59:00
+select * from t33 order by col1;
+col1
+10:30:00
+14:30:00
+21:59:00
+select * from t44 order by colint;
+colint col1
+60 14:30:00
+select * from t55 order by colint;
+colint col1
+60 14:30:00
+select * from t66 order by colint;
+colint col1
+60 14:30:00
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- microsecond(col1) in partition with coltype time
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with microsecond(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 time) engine='NDB'
+partition by range(microsecond(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 time) engine='NDB'
+partition by list(microsecond(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 time) engine='NDB'
+partition by hash(microsecond(col1));
+create table t4 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+subpartition by hash(microsecond(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 time) engine='NDB'
+partition by list(colint)
+subpartition by hash(microsecond(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (microsecond('10:30:10.000010')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with microsecond(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('09:09:15.000002');
+insert into t1 values ('04:30:01.000018');
+insert into t2 values ('09:09:15.000002');
+insert into t2 values ('04:30:01.000018');
+insert into t2 values ('00:59:22.000024');
+insert into t3 values ('09:09:15.000002');
+insert into t3 values ('04:30:01.000018');
+insert into t3 values ('00:59:22.000024');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select microsecond(col1) from t1 order by col1;
+microsecond(col1)
+0
+0
+select * from t1 order by col1;
+col1
+04:30:01
+09:09:15
+select * from t2 order by col1;
+col1
+00:59:22
+04:30:01
+09:09:15
+select * from t3 order by col1;
+col1
+00:59:22
+04:30:01
+09:09:15
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t2 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t3 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t4 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t5 set col1='05:30:34.000037' where col1='09:09:15.000002';
+update t6 set col1='05:30:34.000037' where col1='09:09:15.000002';
+select * from t1 order by col1;
+col1
+04:30:01
+05:30:34
+select * from t2 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t3 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t4 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Alter tables with microsecond(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(microsecond(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(microsecond(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(microsecond(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(microsecond(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(microsecond(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (microsecond('10:30:10.000010')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+04:30:01
+05:30:34
+select * from t22 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t33 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t44 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+04:30:01
+05:30:34
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+04:30:01
+05:30:34
+alter table t55
+partition by list(colint)
+subpartition by hash(microsecond(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (microsecond(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (microsecond('10:30:10.000010')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (microsecond('10:30:10.000010')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with microsecond(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='04:30:01.000018';
+delete from t2 where col1='04:30:01.000018';
+delete from t3 where col1='04:30:01.000018';
+delete from t4 where col1='04:30:01.000018';
+delete from t5 where col1='04:30:01.000018';
+delete from t6 where col1='04:30:01.000018';
+select * from t1 order by col1;
+col1
+05:30:34
+select * from t2 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t3 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t4 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+insert into t1 values ('04:30:01.000018');
+insert into t2 values ('04:30:01.000018');
+insert into t3 values ('04:30:01.000018');
+insert into t4 values (60,'04:30:01.000018');
+insert into t5 values (60,'04:30:01.000018');
+insert into t6 values (60,'04:30:01.000018');
+select * from t1 order by col1;
+col1
+04:30:01
+05:30:34
+select * from t2 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t3 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t4 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t5 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t6 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t4 order by colint;
+colint col1
+60 04:30:01
+select * from t5 order by colint;
+colint col1
+60 04:30:01
+select * from t6 order by colint;
+colint col1
+60 04:30:01
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with microsecond(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='04:30:01.000018';
+delete from t22 where col1='04:30:01.000018';
+delete from t33 where col1='04:30:01.000018';
+delete from t44 where col1='04:30:01.000018';
+delete from t55 where col1='04:30:01.000018';
+delete from t66 where col1='04:30:01.000018';
+select * from t11 order by col1;
+col1
+05:30:34
+select * from t22 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t33 order by col1;
+col1
+00:59:22
+05:30:34
+select * from t44 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+insert into t11 values ('04:30:01.000018');
+insert into t22 values ('04:30:01.000018');
+insert into t33 values ('04:30:01.000018');
+insert into t44 values (60,'04:30:01.000018');
+insert into t55 values (60,'04:30:01.000018');
+insert into t66 values (60,'04:30:01.000018');
+select * from t11 order by col1;
+col1
+04:30:01
+05:30:34
+select * from t22 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t33 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t44 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t55 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+select * from t66 order by colint;
+colint col1
+1 05:30:34
+3 00:59:22
+4 05:30:34
+60 04:30:01
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+00:59:22
+04:30:01
+05:30:34
+select * from t44 order by colint;
+colint col1
+60 04:30:01
+select * from t55 order by colint;
+colint col1
+60 04:30:01
+select * from t66 order by colint;
+colint col1
+60 04:30:01
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- minute(col1) in partition with coltype time
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with minute(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 time) engine='NDB'
+partition by range(minute(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 time) engine='NDB'
+partition by list(minute(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 time) engine='NDB'
+partition by hash(minute(col1));
+create table t4 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+subpartition by hash(minute(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 time) engine='NDB'
+partition by list(colint)
+subpartition by hash(minute(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (minute('18:30')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with minute(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('09:09:15');
+insert into t1 values ('14:30:45');
+insert into t2 values ('09:09:15');
+insert into t2 values ('14:30:45');
+insert into t2 values ('21:59:22');
+insert into t3 values ('09:09:15');
+insert into t3 values ('14:30:45');
+insert into t3 values ('21:59:22');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select minute(col1) from t1 order by col1;
+minute(col1)
+9
+30
+select * from t1 order by col1;
+col1
+09:09:15
+14:30:45
+select * from t2 order by col1;
+col1
+09:09:15
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+09:09:15
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:24:23' where col1='09:09:15';
+update t2 set col1='10:24:23' where col1='09:09:15';
+update t3 set col1='10:24:23' where col1='09:09:15';
+update t4 set col1='10:24:23' where col1='09:09:15';
+update t5 set col1='10:24:23' where col1='09:09:15';
+update t6 set col1='10:24:23' where col1='09:09:15';
+select * from t1 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t2 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Alter tables with minute(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(minute(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(minute(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(minute(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(minute(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(minute(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (minute('18:30')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t22 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+alter table t55
+partition by list(colint)
+subpartition by hash(minute(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (minute(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (minute('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (minute('18:30')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with minute(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:45';
+delete from t2 where col1='14:30:45';
+delete from t3 where col1='14:30:45';
+delete from t4 where col1='14:30:45';
+delete from t5 where col1='14:30:45';
+delete from t6 where col1='14:30:45';
+select * from t1 order by col1;
+col1
+10:24:23
+select * from t2 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30:45');
+insert into t2 values ('14:30:45');
+insert into t3 values ('14:30:45');
+insert into t4 values (60,'14:30:45');
+insert into t5 values (60,'14:30:45');
+insert into t6 values (60,'14:30:45');
+select * from t1 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t2 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t2 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+60 14:30:45
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with minute(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:45';
+delete from t22 where col1='14:30:45';
+delete from t33 where col1='14:30:45';
+delete from t44 where col1='14:30:45';
+delete from t55 where col1='14:30:45';
+delete from t66 where col1='14:30:45';
+select * from t11 order by col1;
+col1
+10:24:23
+select * from t22 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30:45');
+insert into t22 values ('14:30:45');
+insert into t33 values ('14:30:45');
+insert into t44 values (60,'14:30:45');
+insert into t55 values (60,'14:30:45');
+insert into t66 values (60,'14:30:45');
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t22 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+1 10:24:23
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:24:23
+14:30:45
+select * from t22 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:24:23
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+60 14:30:45
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- second(col1) in partition with coltype time
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with second(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 time) engine='NDB'
+partition by range(second(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 time) engine='NDB'
+partition by list(second(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 time) engine='NDB'
+partition by hash(second(col1));
+create table t4 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+subpartition by hash(second(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 time) engine='NDB'
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with second(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('09:09:09');
+insert into t1 values ('14:30:20');
+insert into t2 values ('09:09:09');
+insert into t2 values ('14:30:20');
+insert into t2 values ('21:59:22');
+insert into t3 values ('09:09:09');
+insert into t3 values ('14:30:20');
+insert into t3 values ('21:59:22');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select second(col1) from t1 order by col1;
+second(col1)
+9
+20
+select * from t1 order by col1;
+col1
+09:09:09
+14:30:20
+select * from t2 order by col1;
+col1
+09:09:09
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+09:09:09
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:22:33' where col1='09:09:09';
+update t2 set col1='10:22:33' where col1='09:09:09';
+update t3 set col1='10:22:33' where col1='09:09:09';
+update t4 set col1='10:22:33' where col1='09:09:09';
+update t5 set col1='10:22:33' where col1='09:09:09';
+update t6 set col1='10:22:33' where col1='09:09:09';
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Alter tables with second(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(second(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(second(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(second(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(second(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t55
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (second(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:20';
+delete from t2 where col1='14:30:20';
+delete from t3 where col1='14:30:20';
+delete from t4 where col1='14:30:20';
+delete from t5 where col1='14:30:20';
+delete from t6 where col1='14:30:20';
+select * from t1 order by col1;
+col1
+10:22:33
+select * from t2 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30:20');
+insert into t2 values ('14:30:20');
+insert into t3 values ('14:30:20');
+insert into t4 values (60,'14:30:20');
+insert into t5 values (60,'14:30:20');
+insert into t6 values (60,'14:30:20');
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+60 14:30:20
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:20';
+delete from t22 where col1='14:30:20';
+delete from t33 where col1='14:30:20';
+delete from t44 where col1='14:30:20';
+delete from t55 where col1='14:30:20';
+delete from t66 where col1='14:30:20';
+select * from t11 order by col1;
+col1
+10:22:33
+select * from t22 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30:20');
+insert into t22 values ('14:30:20');
+insert into t33 values ('14:30:20');
+insert into t44 values (60,'14:30:20');
+insert into t55 values (60,'14:30:20');
+insert into t66 values (60,'14:30:20');
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:20
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+60 14:30:20
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- second(col1) in partition with coltype char(30)
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with second(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 char(30)) engine='NDB'
+partition by range(second(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 char(30)) engine='NDB'
+partition by list(second(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 char(30)) engine='NDB'
+partition by hash(second(col1));
+create table t4 (colint int, col1 char(30)) engine='NDB'
+partition by range(colint)
+subpartition by hash(second(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 char(30)) engine='NDB'
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 char(30)) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with second(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('09:09:09');
+insert into t1 values ('14:30:20');
+insert into t2 values ('09:09:09');
+insert into t2 values ('14:30:20');
+insert into t2 values ('21:59:22');
+insert into t3 values ('09:09:09');
+insert into t3 values ('14:30:20');
+insert into t3 values ('21:59:22');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select second(col1) from t1 order by col1;
+second(col1)
+9
+20
+select * from t1 order by col1;
+col1
+09:09:09
+14:30:20
+select * from t2 order by col1;
+col1
+09:09:09
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+09:09:09
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t6 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+update t1 set col1='10:22:33' where col1='09:09:09';
+update t2 set col1='10:22:33' where col1='09:09:09';
+update t3 set col1='10:22:33' where col1='09:09:09';
+update t4 set col1='10:22:33' where col1='09:09:09';
+update t5 set col1='10:22:33' where col1='09:09:09';
+update t6 set col1='10:22:33' where col1='09:09:09';
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t6 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+-------------------------------------------------------------------------
+--- Alter tables with second(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(second(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(second(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(second(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(second(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+alter table t55
+partition by list(colint)
+subpartition by hash(second(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` char(30) DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (second(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (second('18:30:14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:20';
+delete from t2 where col1='14:30:20';
+delete from t3 where col1='14:30:20';
+delete from t4 where col1='14:30:20';
+delete from t5 where col1='14:30:20';
+delete from t6 where col1='14:30:20';
+select * from t1 order by col1;
+col1
+10:22:33
+select * from t2 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+insert into t1 values ('14:30:20');
+insert into t2 values ('14:30:20');
+insert into t3 values ('14:30:20');
+insert into t4 values (60,'14:30:20');
+insert into t5 values (60,'14:30:20');
+insert into t6 values (60,'14:30:20');
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t2 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t3 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:20
+select * from t5 order by colint;
+colint col1
+60 14:30:20
+select * from t6 order by colint;
+colint col1
+60 14:30:20
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with second(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:20';
+delete from t22 where col1='14:30:20';
+delete from t33 where col1='14:30:20';
+delete from t44 where col1='14:30:20';
+delete from t55 where col1='14:30:20';
+delete from t66 where col1='14:30:20';
+select * from t11 order by col1;
+col1
+10:22:33
+select * from t22 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+insert into t11 values ('14:30:20');
+insert into t22 values ('14:30:20');
+insert into t33 values ('14:30:20');
+insert into t44 values (60,'14:30:20');
+insert into t55 values (60,'14:30:20');
+insert into t66 values (60,'14:30:20');
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+1 09:09:15.000002
+2 04:30:01.000018
+3 00:59:22.000024
+4 05:30:34.000037
+60 14:30:20
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:22:33
+14:30:20
+select * from t22 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t33 order by col1;
+col1
+10:22:33
+14:30:20
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:20
+select * from t55 order by colint;
+colint col1
+60 14:30:20
+select * from t66 order by colint;
+colint col1
+60 14:30:20
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- month(col1) in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with month(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(month(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(month(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(month(col1));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(month(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(month(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (month('2006-10-14')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with month(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-01-03');
+insert into t1 values ('2006-12-17');
+insert into t2 values ('2006-01-03');
+insert into t2 values ('2006-12-17');
+insert into t2 values ('2006-05-25');
+insert into t3 values ('2006-01-03');
+insert into t3 values ('2006-12-17');
+insert into t3 values ('2006-05-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select month(col1) from t1 order by col1;
+month(col1)
+1
+12
+select * from t1 order by col1;
+col1
+2006-01-03
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-01-03
+2006-05-25
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-01-03
+2006-05-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-11-06' where col1='2006-01-03';
+update t2 set col1='2006-11-06' where col1='2006-01-03';
+update t3 set col1='2006-11-06' where col1='2006-01-03';
+update t4 set col1='2006-11-06' where col1='2006-01-03';
+update t5 set col1='2006-11-06' where col1='2006-01-03';
+update t6 set col1='2006-11-06' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with month(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(month(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(month(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(month(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(month(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(month(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (month('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+alter table t55
+partition by list(colint)
+subpartition by hash(month(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (month(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (month('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (month('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with month(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-12-17';
+delete from t2 where col1='2006-12-17';
+delete from t3 where col1='2006-12-17';
+delete from t4 where col1='2006-12-17';
+delete from t5 where col1='2006-12-17';
+delete from t6 where col1='2006-12-17';
+select * from t1 order by col1;
+col1
+2006-11-06
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-12-17');
+insert into t2 values ('2006-12-17');
+insert into t3 values ('2006-12-17');
+insert into t4 values (60,'2006-12-17');
+insert into t5 values (60,'2006-12-17');
+insert into t6 values (60,'2006-12-17');
+select * from t1 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t4 order by colint;
+colint col1
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+60 2006-12-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with month(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-12-17';
+delete from t22 where col1='2006-12-17';
+delete from t33 where col1='2006-12-17';
+delete from t44 where col1='2006-12-17';
+delete from t55 where col1='2006-12-17';
+delete from t66 where col1='2006-12-17';
+select * from t11 order by col1;
+col1
+2006-11-06
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-11-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-12-17');
+insert into t22 values ('2006-12-17');
+insert into t33 values ('2006-12-17');
+insert into t44 values (60,'2006-12-17');
+insert into t55 values (60,'2006-12-17');
+insert into t66 values (60,'2006-12-17');
+select * from t11 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+2006-11-06
+2006-12-17
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-11-06
+2006-12-17
+select * from t44 order by colint;
+colint col1
+60 2006-12-17
+select * from t55 order by colint;
+colint col1
+60 2006-12-17
+select * from t66 order by colint;
+colint col1
+60 2006-12-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- quarter(col1) in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with quarter(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(quarter(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(quarter(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(quarter(col1));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(quarter(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(quarter(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (quarter('2006-10-14')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with quarter(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-01-03');
+insert into t1 values ('2006-12-17');
+insert into t2 values ('2006-01-03');
+insert into t2 values ('2006-12-17');
+insert into t2 values ('2006-09-25');
+insert into t3 values ('2006-01-03');
+insert into t3 values ('2006-12-17');
+insert into t3 values ('2006-09-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select quarter(col1) from t1 order by col1;
+quarter(col1)
+1
+4
+select * from t1 order by col1;
+col1
+2006-01-03
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-01-03
+2006-09-25
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-01-03
+2006-09-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-07-30' where col1='2006-01-03';
+update t2 set col1='2006-07-30' where col1='2006-01-03';
+update t3 set col1='2006-07-30' where col1='2006-01-03';
+update t4 set col1='2006-07-30' where col1='2006-01-03';
+update t5 set col1='2006-07-30' where col1='2006-01-03';
+update t6 set col1='2006-07-30' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with quarter(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(quarter(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(quarter(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(quarter(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(quarter(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(quarter(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (quarter('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t22 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t33 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-07-30
+2006-12-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-07-30
+2006-12-17
+alter table t55
+partition by list(colint)
+subpartition by hash(quarter(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (quarter(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (quarter('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (quarter('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with quarter(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-12-17';
+delete from t2 where col1='2006-12-17';
+delete from t3 where col1='2006-12-17';
+delete from t4 where col1='2006-12-17';
+delete from t5 where col1='2006-12-17';
+delete from t6 where col1='2006-12-17';
+select * from t1 order by col1;
+col1
+2006-07-30
+select * from t2 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-12-17');
+insert into t2 values ('2006-12-17');
+insert into t3 values ('2006-12-17');
+insert into t4 values (60,'2006-12-17');
+insert into t5 values (60,'2006-12-17');
+insert into t6 values (60,'2006-12-17');
+select * from t1 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t2 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t4 order by colint;
+colint col1
+60 2006-12-17
+select * from t5 order by colint;
+colint col1
+60 2006-12-17
+select * from t6 order by colint;
+colint col1
+4 2006-02-05
+60 2006-12-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with quarter(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-12-17';
+delete from t22 where col1='2006-12-17';
+delete from t33 where col1='2006-12-17';
+delete from t44 where col1='2006-12-17';
+delete from t55 where col1='2006-12-17';
+delete from t66 where col1='2006-12-17';
+select * from t11 order by col1;
+col1
+2006-07-30
+select * from t22 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t33 order by col1;
+col1
+2006-07-30
+2006-09-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-12-17');
+insert into t22 values ('2006-12-17');
+insert into t33 values ('2006-12-17');
+insert into t44 values (60,'2006-12-17');
+insert into t55 values (60,'2006-12-17');
+insert into t66 values (60,'2006-12-17');
+select * from t11 order by col1;
+col1
+2006-07-30
+2006-12-17
+select * from t22 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t33 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-12-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-07-30
+2006-09-25
+2006-12-17
+select * from t44 order by colint;
+colint col1
+60 2006-12-17
+select * from t55 order by colint;
+colint col1
+60 2006-12-17
+select * from t66 order by colint;
+colint col1
+4 2006-02-05
+60 2006-12-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- time_to_sec(col1)-(time_to_sec(col1)-20) in partition with coltype time
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with time_to_sec(col1)-(time_to_sec(col1)-20)
+-------------------------------------------------------------------------
+create table t1 (col1 time) engine='NDB'
+partition by range(time_to_sec(col1)-(time_to_sec(col1)-20))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 time) engine='NDB'
+partition by list(time_to_sec(col1)-(time_to_sec(col1)-20))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 time) engine='NDB'
+partition by hash(time_to_sec(col1)-(time_to_sec(col1)-20));
+create table t4 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+subpartition by hash(time_to_sec(col1)-(time_to_sec(col1)-20)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 time) engine='NDB'
+partition by list(colint)
+subpartition by hash(time_to_sec(col1)-(time_to_sec(col1)-20)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 time) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with time_to_sec(col1)-(time_to_sec(col1)-20)
+-------------------------------------------------------------------------
+insert into t1 values ('09:09:15');
+insert into t1 values ('14:30:45');
+insert into t2 values ('09:09:15');
+insert into t2 values ('14:30:45');
+insert into t2 values ('21:59:22');
+insert into t3 values ('09:09:15');
+insert into t3 values ('14:30:45');
+insert into t3 values ('21:59:22');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_time.in' into table t6;
+select time_to_sec(col1)-(time_to_sec(col1)-20) from t1 order by col1;
+time_to_sec(col1)-(time_to_sec(col1)-20)
+20
+20
+select * from t1 order by col1;
+col1
+09:09:15
+14:30:45
+select * from t2 order by col1;
+col1
+09:09:15
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+09:09:15
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 09:09:15
+2 04:30:01
+3 00:59:22
+4 05:30:34
+update t1 set col1='10:33:11' where col1='09:09:15';
+update t2 set col1='10:33:11' where col1='09:09:15';
+update t3 set col1='10:33:11' where col1='09:09:15';
+update t4 set col1='10:33:11' where col1='09:09:15';
+update t5 set col1='10:33:11' where col1='09:09:15';
+update t6 set col1='10:33:11' where col1='09:09:15';
+select * from t1 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t2 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t6 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Alter tables with time_to_sec(col1)-(time_to_sec(col1)-20)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(time_to_sec(col1)-(time_to_sec(col1)-20))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(time_to_sec(col1)-(time_to_sec(col1)-20))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(time_to_sec(col1)-(time_to_sec(col1)-20));
+alter table t44
+partition by range(colint)
+subpartition by hash(time_to_sec(col1)-(time_to_sec(col1)-20)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(time_to_sec(col1)-(time_to_sec(col1)-20)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t22 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+alter table t55
+partition by list(colint)
+subpartition by hash(time_to_sec(col1)-(time_to_sec(col1)-20)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` time DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (time_to_sec(col1)-(time_to_sec(col1)-20)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (time_to_sec('18:30:14')-(time_to_sec('17:59:59'))),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with time_to_sec(col1)-(time_to_sec(col1)-20)
+-------------------------------------------------------------------------
+delete from t1 where col1='14:30:45';
+delete from t2 where col1='14:30:45';
+delete from t3 where col1='14:30:45';
+delete from t4 where col1='14:30:45';
+delete from t5 where col1='14:30:45';
+delete from t6 where col1='14:30:45';
+select * from t1 order by col1;
+col1
+10:33:11
+select * from t2 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t5 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t1 values ('14:30:45');
+insert into t2 values ('14:30:45');
+insert into t3 values ('14:30:45');
+insert into t4 values (60,'14:30:45');
+insert into t5 values (60,'14:30:45');
+insert into t6 values (60,'14:30:45');
+select * from t1 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t2 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t2 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t3 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t4 order by colint;
+colint col1
+60 14:30:45
+select * from t5 order by colint;
+colint col1
+60 14:30:45
+select * from t6 order by colint;
+colint col1
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with time_to_sec(col1)-(time_to_sec(col1)-20)
+-------------------------------------------------------------------------
+delete from t11 where col1='14:30:45';
+delete from t22 where col1='14:30:45';
+delete from t33 where col1='14:30:45';
+delete from t44 where col1='14:30:45';
+delete from t55 where col1='14:30:45';
+delete from t66 where col1='14:30:45';
+select * from t11 order by col1;
+col1
+10:33:11
+select * from t22 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+insert into t11 values ('14:30:45');
+insert into t22 values ('14:30:45');
+insert into t33 values ('14:30:45');
+insert into t44 values (60,'14:30:45');
+insert into t55 values (60,'14:30:45');
+insert into t66 values (60,'14:30:45');
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t22 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+1 10:33:11
+2 04:30:01
+3 00:59:22
+4 05:30:34
+60 14:30:45
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+10:33:11
+14:30:45
+select * from t22 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t33 order by col1;
+col1
+10:33:11
+14:30:45
+21:59:22
+select * from t44 order by colint;
+colint col1
+60 14:30:45
+select * from t55 order by colint;
+colint col1
+60 14:30:45
+select * from t66 order by colint;
+colint col1
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- to_days(col1)-to_days('2006-01-01') in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with to_days(col1)-to_days('2006-01-01')
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(to_days(col1)-to_days('2006-01-01'))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(to_days(col1)-to_days('2006-01-01'))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(to_days(col1)-to_days('2006-01-01'));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(to_days(col1)-to_days('2006-01-01')) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(to_days(col1)-to_days('2006-01-01')) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with to_days(col1)-to_days('2006-01-01')
+-------------------------------------------------------------------------
+insert into t1 values ('2006-02-03');
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-02-03');
+insert into t2 values ('2006-01-17');
+insert into t2 values ('2006-01-25');
+insert into t3 values ('2006-02-03');
+insert into t3 values ('2006-01-17');
+insert into t3 values ('2006-01-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select to_days(col1)-to_days('2006-01-01') from t1 order by col1;
+to_days(col1)-to_days('2006-01-01')
+16
+33
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-03
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-03
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-03
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-06' where col1='2006-02-03';
+update t2 set col1='2006-02-06' where col1='2006-02-03';
+update t3 set col1='2006-02-06' where col1='2006-02-03';
+update t4 set col1='2006-02-06' where col1='2006-02-03';
+update t5 set col1='2006-02-06' where col1='2006-02-03';
+update t6 set col1='2006-02-06' where col1='2006-02-03';
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with to_days(col1)-to_days('2006-01-01')
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(to_days(col1)-to_days('2006-01-01'))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(to_days(col1)-to_days('2006-01-01'))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(to_days(col1)-to_days('2006-01-01'));
+alter table t44
+partition by range(colint)
+subpartition by hash(to_days(col1)-to_days('2006-01-01')) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(to_days(col1)-to_days('2006-01-01')) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+alter table t55
+partition by list(colint)
+subpartition by hash(to_days(col1)-to_days('2006-01-01')) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (to_days(col1)-to_days('2006-01-01')) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (to_days('2006-02-02')-to_days('2006-01-01')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with to_days(col1)-to_days('2006-01-01')
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-01-17';
+delete from t2 where col1='2006-01-17';
+delete from t3 where col1='2006-01-17';
+delete from t4 where col1='2006-01-17';
+delete from t5 where col1='2006-01-17';
+delete from t6 where col1='2006-01-17';
+select * from t1 order by col1;
+col1
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-01-17');
+insert into t2 values ('2006-01-17');
+insert into t3 values ('2006-01-17');
+insert into t4 values (60,'2006-01-17');
+insert into t5 values (60,'2006-01-17');
+insert into t6 values (60,'2006-01-17');
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t3 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t4 order by colint;
+colint col1
+60 2006-01-17
+select * from t5 order by colint;
+colint col1
+60 2006-01-17
+select * from t6 order by colint;
+colint col1
+60 2006-01-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with to_days(col1)-to_days('2006-01-01')
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-01-17';
+delete from t22 where col1='2006-01-17';
+delete from t33 where col1='2006-01-17';
+delete from t44 where col1='2006-01-17';
+delete from t55 where col1='2006-01-17';
+delete from t66 where col1='2006-01-17';
+select * from t11 order by col1;
+col1
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-01-17');
+insert into t22 values ('2006-01-17');
+insert into t33 values ('2006-01-17');
+insert into t44 values (60,'2006-01-17');
+insert into t55 values (60,'2006-01-17');
+insert into t66 values (60,'2006-01-17');
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-06
+3 2006-01-25
+4 2006-02-05
+60 2006-01-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-01-17
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t33 order by col1;
+col1
+2006-01-17
+2006-01-25
+2006-02-06
+select * from t44 order by colint;
+colint col1
+60 2006-01-17
+select * from t55 order by colint;
+colint col1
+60 2006-01-17
+select * from t66 order by colint;
+colint col1
+60 2006-01-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- weekday(col1) in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with weekday(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(weekday(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(weekday(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(weekday(col1));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(weekday(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(weekday(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (weekday('2006-10-14')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with weekday(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-12-03');
+insert into t1 values ('2006-11-17');
+insert into t2 values ('2006-12-03');
+insert into t2 values ('2006-11-17');
+insert into t2 values ('2006-05-25');
+insert into t3 values ('2006-12-03');
+insert into t3 values ('2006-11-17');
+insert into t3 values ('2006-05-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select weekday(col1) from t1 order by col1;
+weekday(col1)
+4
+6
+select * from t1 order by col1;
+col1
+2006-11-17
+2006-12-03
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-11-17
+2006-12-03
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-11-17
+2006-12-03
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-02-06' where col1='2006-12-03';
+update t2 set col1='2006-02-06' where col1='2006-12-03';
+update t3 set col1='2006-02-06' where col1='2006-12-03';
+update t4 set col1='2006-02-06' where col1='2006-12-03';
+update t5 set col1='2006-02-06' where col1='2006-12-03';
+update t6 set col1='2006-02-06' where col1='2006-12-03';
+select * from t1 order by col1;
+col1
+2006-02-06
+2006-11-17
+select * from t2 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with weekday(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(weekday(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(weekday(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(weekday(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(weekday(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(weekday(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (weekday('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-06
+2006-11-17
+select * from t22 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t33 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-06
+2006-11-17
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-02-06
+2006-11-17
+alter table t55
+partition by list(colint)
+subpartition by hash(weekday(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (weekday(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekday('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekday('2006-10-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekday(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-11-17';
+delete from t2 where col1='2006-11-17';
+delete from t3 where col1='2006-11-17';
+delete from t4 where col1='2006-11-17';
+delete from t5 where col1='2006-11-17';
+delete from t6 where col1='2006-11-17';
+select * from t1 order by col1;
+col1
+2006-02-06
+select * from t2 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-11-17');
+insert into t2 values ('2006-11-17');
+insert into t3 values ('2006-11-17');
+insert into t4 values (60,'2006-11-17');
+insert into t5 values (60,'2006-11-17');
+insert into t6 values (60,'2006-11-17');
+select * from t1 order by col1;
+col1
+2006-02-06
+2006-11-17
+select * from t2 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+select * from t3 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t4 order by colint;
+colint col1
+60 2006-11-17
+select * from t5 order by colint;
+colint col1
+60 2006-11-17
+select * from t6 order by colint;
+colint col1
+60 2006-11-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekday(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-11-17';
+delete from t22 where col1='2006-11-17';
+delete from t33 where col1='2006-11-17';
+delete from t44 where col1='2006-11-17';
+delete from t55 where col1='2006-11-17';
+delete from t66 where col1='2006-11-17';
+select * from t11 order by col1;
+col1
+2006-02-06
+select * from t22 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t33 order by col1;
+col1
+2006-02-06
+2006-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-11-17');
+insert into t22 values ('2006-11-17');
+insert into t33 values ('2006-11-17');
+insert into t44 values (60,'2006-11-17');
+insert into t55 values (60,'2006-11-17');
+insert into t66 values (60,'2006-11-17');
+select * from t11 order by col1;
+col1
+2006-02-06
+2006-11-17
+select * from t22 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t33 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-11-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+select * from t33 order by col1;
+col1
+2006-02-06
+2006-05-25
+2006-11-17
+select * from t44 order by colint;
+colint col1
+60 2006-11-17
+select * from t55 order by colint;
+colint col1
+60 2006-11-17
+select * from t66 order by colint;
+colint col1
+60 2006-11-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- weekofyear(col1) in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with weekofyear(col1)
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(weekofyear(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(weekofyear(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(weekofyear(col1));
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(weekofyear(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(weekofyear(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (weekofyear('2006-02-14')),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with weekofyear(col1)
+-------------------------------------------------------------------------
+insert into t1 values ('2006-01-03');
+insert into t1 values ('2006-03-17');
+insert into t2 values ('2006-01-03');
+insert into t2 values ('2006-03-17');
+insert into t2 values ('2006-05-25');
+insert into t3 values ('2006-01-03');
+insert into t3 values ('2006-03-17');
+insert into t3 values ('2006-05-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select weekofyear(col1) from t1 order by col1;
+weekofyear(col1)
+1
+11
+select * from t1 order by col1;
+col1
+2006-01-03
+2006-03-17
+select * from t2 order by col1;
+col1
+2006-01-03
+2006-03-17
+2006-05-25
+select * from t3 order by col1;
+col1
+2006-01-03
+2006-03-17
+2006-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-09-06' where col1='2006-01-03';
+update t2 set col1='2006-09-06' where col1='2006-01-03';
+update t3 set col1='2006-09-06' where col1='2006-01-03';
+update t4 set col1='2006-09-06' where col1='2006-01-03';
+update t5 set col1='2006-09-06' where col1='2006-01-03';
+update t6 set col1='2006-09-06' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with weekofyear(col1)
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(weekofyear(col1))
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(weekofyear(col1))
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(weekofyear(col1));
+alter table t44
+partition by range(colint)
+subpartition by hash(weekofyear(col1)) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(weekofyear(col1)) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (weekofyear('2006-02-14')),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+alter table t55
+partition by list(colint)
+subpartition by hash(weekofyear(col1)) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (weekofyear(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekofyear('2006-02-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (weekofyear('2006-02-14')),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekofyear(col1)
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-03-17';
+delete from t2 where col1='2006-03-17';
+delete from t3 where col1='2006-03-17';
+delete from t4 where col1='2006-03-17';
+delete from t5 where col1='2006-03-17';
+delete from t6 where col1='2006-03-17';
+select * from t1 order by col1;
+col1
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-03-17');
+insert into t2 values ('2006-03-17');
+insert into t3 values ('2006-03-17');
+insert into t4 values (60,'2006-03-17');
+insert into t5 values (60,'2006-03-17');
+insert into t6 values (60,'2006-03-17');
+select * from t1 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-09-06
+select * from t2 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t3 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t4 order by colint;
+colint col1
+60 2006-03-17
+select * from t5 order by colint;
+colint col1
+60 2006-03-17
+select * from t6 order by colint;
+colint col1
+60 2006-03-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with weekofyear(col1)
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-03-17';
+delete from t22 where col1='2006-03-17';
+delete from t33 where col1='2006-03-17';
+delete from t44 where col1='2006-03-17';
+delete from t55 where col1='2006-03-17';
+delete from t66 where col1='2006-03-17';
+select * from t11 order by col1;
+col1
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-03-17');
+insert into t22 values ('2006-03-17');
+insert into t33 values ('2006-03-17');
+insert into t44 values (60,'2006-03-17');
+insert into t55 values (60,'2006-03-17');
+insert into t66 values (60,'2006-03-17');
+select * from t11 order by col1;
+col1
+2006-03-17
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-03-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-09-06
+select * from t22 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t33 order by col1;
+col1
+2006-03-17
+2006-05-25
+2006-09-06
+select * from t44 order by colint;
+colint col1
+60 2006-03-17
+select * from t55 order by colint;
+colint col1
+60 2006-03-17
+select * from t66 order by colint;
+colint col1
+60 2006-03-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- year(col1)-1990 in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with year(col1)-1990
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(year(col1)-1990)
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(year(col1)-1990)
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(year(col1)-1990);
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(year(col1)-1990) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(year(col1)-1990) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (year('2005-10-14')-1990),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with year(col1)-1990
+-------------------------------------------------------------------------
+insert into t1 values ('1996-01-03');
+insert into t1 values ('2000-02-17');
+insert into t2 values ('1996-01-03');
+insert into t2 values ('2000-02-17');
+insert into t2 values ('2004-05-25');
+insert into t3 values ('1996-01-03');
+insert into t3 values ('2000-02-17');
+insert into t3 values ('2004-05-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select year(col1)-1990 from t1 order by col1;
+year(col1)-1990
+6
+10
+select * from t1 order by col1;
+col1
+1996-01-03
+2000-02-17
+select * from t2 order by col1;
+col1
+1996-01-03
+2000-02-17
+2004-05-25
+select * from t3 order by col1;
+col1
+1996-01-03
+2000-02-17
+2004-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2002-02-15' where col1='1996-01-03';
+update t2 set col1='2002-02-15' where col1='1996-01-03';
+update t3 set col1='2002-02-15' where col1='1996-01-03';
+update t4 set col1='2002-02-15' where col1='1996-01-03';
+update t5 set col1='2002-02-15' where col1='1996-01-03';
+update t6 set col1='2002-02-15' where col1='1996-01-03';
+select * from t1 order by col1;
+col1
+2000-02-17
+2002-02-15
+select * from t2 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with year(col1)-1990
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(year(col1)-1990)
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(year(col1)-1990)
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(year(col1)-1990);
+alter table t44
+partition by range(colint)
+subpartition by hash(year(col1)-1990) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(year(col1)-1990) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (year('2005-10-14')-1990),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2000-02-17
+2002-02-15
+select * from t22 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t33 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2000-02-17
+2002-02-15
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2000-02-17
+2002-02-15
+alter table t55
+partition by list(colint)
+subpartition by hash(year(col1)-1990) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (year(col1)-1990) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (year('2005-10-14')-1990),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (year('2005-10-14')-1990),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with year(col1)-1990
+-------------------------------------------------------------------------
+delete from t1 where col1='2000-02-17';
+delete from t2 where col1='2000-02-17';
+delete from t3 where col1='2000-02-17';
+delete from t4 where col1='2000-02-17';
+delete from t5 where col1='2000-02-17';
+delete from t6 where col1='2000-02-17';
+select * from t1 order by col1;
+col1
+2002-02-15
+select * from t2 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2000-02-17');
+insert into t2 values ('2000-02-17');
+insert into t3 values ('2000-02-17');
+insert into t4 values (60,'2000-02-17');
+insert into t5 values (60,'2000-02-17');
+insert into t6 values (60,'2000-02-17');
+select * from t1 order by col1;
+col1
+2000-02-17
+2002-02-15
+select * from t2 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+select * from t2 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t3 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t4 order by colint;
+colint col1
+60 2000-02-17
+select * from t5 order by colint;
+colint col1
+60 2000-02-17
+select * from t6 order by colint;
+colint col1
+60 2000-02-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with year(col1)-1990
+-------------------------------------------------------------------------
+delete from t11 where col1='2000-02-17';
+delete from t22 where col1='2000-02-17';
+delete from t33 where col1='2000-02-17';
+delete from t44 where col1='2000-02-17';
+delete from t55 where col1='2000-02-17';
+delete from t66 where col1='2000-02-17';
+select * from t11 order by col1;
+col1
+2002-02-15
+select * from t22 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t33 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2000-02-17');
+insert into t22 values ('2000-02-17');
+insert into t33 values ('2000-02-17');
+insert into t44 values (60,'2000-02-17');
+insert into t55 values (60,'2000-02-17');
+insert into t66 values (60,'2000-02-17');
+select * from t11 order by col1;
+col1
+2000-02-17
+2002-02-15
+select * from t22 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t33 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2000-02-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+select * from t22 order by col1;
+col1
+2002-02-15
+2004-05-25
+select * from t33 order by col1;
+col1
+2000-02-17
+2002-02-15
+2004-05-25
+select * from t44 order by colint;
+colint col1
+60 2000-02-17
+select * from t55 order by colint;
+colint col1
+60 2000-02-17
+select * from t66 order by colint;
+colint col1
+60 2000-02-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+-------------------------------------------------------------------------
+--- yearweek(col1)-200600 in partition with coltype date
+-------------------------------------------------------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+-------------------------------------------------------------------------
+--- Create tables with yearweek(col1)-200600
+-------------------------------------------------------------------------
+create table t1 (col1 date) engine='NDB'
+partition by range(yearweek(col1)-200600)
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t2 (col1 date) engine='NDB'
+partition by list(yearweek(col1)-200600)
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t3 (col1 date) engine='NDB'
+partition by hash(yearweek(col1)-200600);
+create table t4 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+subpartition by hash(yearweek(col1)-200600) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+create table t5 (colint int, col1 date) engine='NDB'
+partition by list(colint)
+subpartition by hash(yearweek(col1)-200600) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+create table t6 (colint int, col1 date) engine='NDB'
+partition by range(colint)
+(partition p0 values less than (yearweek('2006-10-14')-200600),
+partition p1 values less than maxvalue);
+-------------------------------------------------------------------------
+--- Access tables with yearweek(col1)-200600
+-------------------------------------------------------------------------
+insert into t1 values ('2006-01-03');
+insert into t1 values ('2006-08-17');
+insert into t2 values ('2006-01-03');
+insert into t2 values ('2006-08-17');
+insert into t2 values ('2006-03-25');
+insert into t3 values ('2006-01-03');
+insert into t3 values ('2006-08-17');
+insert into t3 values ('2006-03-25');
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t4;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t5;
+load data infile 'MYSQL_TEST_DIR/suite/partitions/include/partition_supported_sql_funcs_int_date.in' into table t6;
+select yearweek(col1)-200600 from t1 order by col1;
+yearweek(col1)-200600
+1
+33
+select * from t1 order by col1;
+col1
+2006-01-03
+2006-08-17
+select * from t2 order by col1;
+col1
+2006-01-03
+2006-03-25
+2006-08-17
+select * from t3 order by col1;
+col1
+2006-01-03
+2006-03-25
+2006-08-17
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+update t1 set col1='2006-11-15' where col1='2006-01-03';
+update t2 set col1='2006-11-15' where col1='2006-01-03';
+update t3 set col1='2006-11-15' where col1='2006-01-03';
+update t4 set col1='2006-11-15' where col1='2006-01-03';
+update t5 set col1='2006-11-15' where col1='2006-01-03';
+update t6 set col1='2006-11-15' where col1='2006-01-03';
+select * from t1 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t3 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Alter tables with yearweek(col1)-200600
+-------------------------------------------------------------------------
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
+create table t11 engine='NDB' as select * from t1;
+create table t22 engine='NDB' as select * from t2;
+create table t33 engine='NDB' as select * from t3;
+create table t44 engine='NDB' as select * from t4;
+create table t55 engine='NDB' as select * from t5;
+create table t66 engine='NDB' as select * from t6;
+alter table t11
+partition by range(yearweek(col1)-200600)
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t22
+partition by list(yearweek(col1)-200600)
+(partition p0 values in (0,1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t33
+partition by hash(yearweek(col1)-200600);
+alter table t44
+partition by range(colint)
+subpartition by hash(yearweek(col1)-200600) subpartitions 2
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+alter table t55
+partition by list(colint)
+subpartition by hash(yearweek(col1)-200600) subpartitions 2
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+alter table t66
+partition by range(colint)
+(partition p0 values less than (yearweek('2006-10-14')-200600),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+---------------------------
+---- some alter table begin
+---------------------------
+alter table t11
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+alter table t11
+reorganize partition s1 into
+(partition p0 values less than (15),
+partition p1 values less than maxvalue);
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+alter table t55
+partition by list(colint)
+subpartition by hash(yearweek(col1)-200600) subpartitions 5
+(partition p0 values in (1,2,3,4,5,6,7,8,9,10),
+partition p1 values in (11,12,13,14,15,16,17,18,19,20),
+partition p2 values in (21,22,23,24,25,26,27,28,29,30),
+partition p3 values in (31,32,33,34,35,36,37,38,39,40),
+partition p4 values in (41,42,43,44,45,46,47,48,49,50),
+partition p5 values in (51,52,53,54,55,56,57,58,59,60)
+);
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` date DEFAULT NULL
+) ENGINE=NDB DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (yearweek(col1)-200600) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = NDB, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = NDB, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = NDB, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = NDB, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = NDB, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = NDB) */
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (yearweek('2006-10-14')-200600),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition p0,p1 into
+(partition s1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+alter table t66
+reorganize partition s1 into
+(partition p0 values less than (yearweek('2006-10-14')-200600),
+partition p1 values less than maxvalue);
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with yearweek(col1)-200600
+-------------------------------------------------------------------------
+delete from t1 where col1='2006-08-17';
+delete from t2 where col1='2006-08-17';
+delete from t3 where col1='2006-08-17';
+delete from t4 where col1='2006-08-17';
+delete from t5 where col1='2006-08-17';
+delete from t6 where col1='2006-08-17';
+select * from t1 order by col1;
+col1
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t3 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t1 values ('2006-08-17');
+insert into t2 values ('2006-08-17');
+insert into t3 values ('2006-08-17');
+insert into t4 values (60,'2006-08-17');
+insert into t5 values (60,'2006-08-17');
+insert into t6 values (60,'2006-08-17');
+select * from t1 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t3 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t4 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t5 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t6 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+alter table t1 drop partition p0;
+alter table t2 drop partition p0;
+alter table t4 drop partition p0;
+alter table t5 drop partition p0;
+alter table t6 drop partition p0;
+select * from t1 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t2 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t3 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t4 order by colint;
+colint col1
+60 2006-08-17
+select * from t5 order by colint;
+colint col1
+60 2006-08-17
+select * from t6 order by colint;
+colint col1
+60 2006-08-17
+-------------------------------------------------------------------------
+--- Delete rows and partitions of tables with yearweek(col1)-200600
+-------------------------------------------------------------------------
+delete from t11 where col1='2006-08-17';
+delete from t22 where col1='2006-08-17';
+delete from t33 where col1='2006-08-17';
+delete from t44 where col1='2006-08-17';
+delete from t55 where col1='2006-08-17';
+delete from t66 where col1='2006-08-17';
+select * from t11 order by col1;
+col1
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-11-15
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+insert into t11 values ('2006-08-17');
+insert into t22 values ('2006-08-17');
+insert into t33 values ('2006-08-17');
+insert into t44 values (60,'2006-08-17');
+insert into t55 values (60,'2006-08-17');
+insert into t66 values (60,'2006-08-17');
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t44 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t55 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+select * from t66 order by colint;
+colint col1
+1 2006-02-03
+2 2006-01-17
+3 2006-01-25
+4 2006-02-05
+60 2006-08-17
+alter table t11 drop partition p0;
+alter table t22 drop partition p0;
+alter table t44 drop partition p0;
+alter table t55 drop partition p0;
+alter table t66 drop partition p0;
+select * from t11 order by col1;
+col1
+2006-08-17
+2006-11-15
+select * from t22 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t33 order by col1;
+col1
+2006-03-25
+2006-08-17
+2006-11-15
+select * from t44 order by colint;
+colint col1
+60 2006-08-17
+select * from t55 order by colint;
+colint col1
+60 2006-08-17
+select * from t66 order by colint;
+colint col1
+60 2006-08-17
+-------------------------
+---- some alter table end
+-------------------------
+drop table if exists t1 ;
+drop table if exists t2 ;
+drop table if exists t3 ;
+drop table if exists t4 ;
+drop table if exists t5 ;
+drop table if exists t6 ;
+drop table if exists t11 ;
+drop table if exists t22 ;
+drop table if exists t33 ;
+drop table if exists t44 ;
+drop table if exists t55 ;
+drop table if exists t66 ;
diff --git a/mysql-test/suite/partitions/r/partition_t55.out b/mysql-test/suite/partitions/r/partition_t55.out
new file mode 100644
index 00000000000..d86ceda8c38
--- /dev/null
+++ b/mysql-test/suite/partitions/r/partition_t55.out
@@ -0,0 +1,68 @@
+show create table t55;
+Table Create Table
+t55 CREATE TABLE `t55` (
+ `colint` int(11) DEFAULT NULL,
+ `col1` int(11) DEFAULT NULL
+) ENGINE=MyISAM DEFAULT CHARSET=latin1 /*!50100 PARTITION BY LIST (colint) SUBPARTITION BY HASH (abs(col1)) SUBPARTITIONS 5 (PARTITION p0 VALUES IN (1,2,3,4,5,6,7,8,9,10) ENGINE = MyISAM, PARTITION p1 VALUES IN (11,12,13,14,15,16,17,18,19,20) ENGINE = MyISAM, PARTITION p2 VALUES IN (21,22,23,24,25,26,27,28,29,30) ENGINE = MyISAM, PARTITION p3 VALUES IN (31,32,33,34,35,36,37,38,39,40) ENGINE = MyISAM, PARTITION p4 VALUES IN (41,42,43,44,45,46,47,48,49,50) ENGINE = MyISAM, PARTITION p5 VALUES IN (51,52,53,54,55,56,57,58,59,60) ENGINE = MyISAM) */
+27 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp0.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp0.MYI
+18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp1.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp1.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp2.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp2.MYI
+18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp3.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp3.MYI
+18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp4.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p0#SP#p0sp4.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp0.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp0.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp1.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp1.MYI
+18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp2.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp2.MYI
+18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp3.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp3.MYI
+36 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp4.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p1#SP#p1sp4.MYI
+36 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp0.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp0.MYI
+0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp1.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp1.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp2.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp2.MYI
+18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp3.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp3.MYI
+27 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp4.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p2#SP#p2sp4.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp0.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp0.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp1.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp1.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp2.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp2.MYI
+18 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp3.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp3.MYI
+45 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp4.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p3#SP#p3sp4.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp0.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp0.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp1.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp1.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp2.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp2.MYI
+0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp3.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp3.MYI
+0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp4.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p4#SP#p4sp4.MYI
+0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp0.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp0.MYI
+0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp1.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp1.MYI
+0 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp2.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp2.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp3.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp3.MYI
+9 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp4.MYD
+1024 MYSQL_TEST_DIR/var/master-data/test/t55#P#p5#SP#p5sp4.MYI
+8594 MYSQL_TEST_DIR/var/master-data/test/t55.frm
+408 MYSQL_TEST_DIR/var/master-data/test/t55.par
diff --git a/mysql-test/suite/partitions/t/disabled.def b/mysql-test/suite/partitions/t/disabled.def
index ede5d6b6e60..212ca0206e2 100644
--- a/mysql-test/suite/partitions/t/disabled.def
+++ b/mysql-test/suite/partitions/t/disabled.def
@@ -13,4 +13,4 @@ partition_alter2_ndb : cannot create t1
partition_char_innodb : crash. Bug? More investigations
partition_sessions : needs system_3_init.inc
partition_engine_ndb : cannot create t1
-
+partition_supported_sql_func_ndb : cannot create t1
diff --git a/mysql-test/suite/partitions/t/partition_supported_sql_func_innodb.test b/mysql-test/suite/partitions/t/partition_supported_sql_func_innodb.test
index 4440f814d1e..135c869c841 100644
--- a/mysql-test/suite/partitions/t/partition_supported_sql_func_innodb.test
+++ b/mysql-test/suite/partitions/t/partition_supported_sql_func_innodb.test
@@ -2,8 +2,8 @@
# t/partition_supported_sql_funcs_innodb.test #
# #
# Purpose: #
-# Tests around sql functions #
-# INNODB branch #
+# Tests which SQL functions are allowed in partinioning clauses with #
+# INNODB. #
# #
#------------------------------------------------------------------------------#
# Original Author: HH #
@@ -18,16 +18,12 @@
# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
# THE SOURCED FILES ONLY.
#
-# Please read the README at the end of include/partition.pre before changing
-# any of the variables.
-#
-
#------------------------------------------------------------------------------#
# General not engine specific settings and requirements
##### Options, for debugging support #####
let $debug= 0;
-let $do_long_tests= 0;
+let $do_long_tests= 1;
# The server must support partitioning.
--source include/have_partition.inc
diff --git a/mysql-test/suite/partitions/t/partition_supported_sql_func_myisam.test b/mysql-test/suite/partitions/t/partition_supported_sql_func_myisam.test
index 3daa72c7ff7..131a5e23f39 100644
--- a/mysql-test/suite/partitions/t/partition_supported_sql_func_myisam.test
+++ b/mysql-test/suite/partitions/t/partition_supported_sql_func_myisam.test
@@ -2,8 +2,8 @@
# t/partition_supported_sql_funcs_myisam.test #
# #
# Purpose: #
-# Tests around sql functions #
-# MyISAM branch #
+# Tests which SQL functions are allowed in partinioning clauses with #
+# MYISAM. #
# #
#------------------------------------------------------------------------------#
# Original Author: HH #
@@ -27,7 +27,7 @@
##### Options, for debugging support #####
let $debug= 0;
-let $do_long_tests= 0;
+let $do_long_tests= 1;
# The server must support partitioning.
--source include/have_partition.inc
diff --git a/mysql-test/suite/partitions/t/partition_supported_sql_func_ndb.test b/mysql-test/suite/partitions/t/partition_supported_sql_func_ndb.test
new file mode 100644
index 00000000000..2a536fbce94
--- /dev/null
+++ b/mysql-test/suite/partitions/t/partition_supported_sql_func_ndb.test
@@ -0,0 +1,40 @@
+################################################################################
+# t/partition_supported_sql_funcs_myisam.test #
+# #
+# Purpose: #
+# Tests which SQL functions are allowed in partinioning clauses with #
+# NDB. #
+# #
+#------------------------------------------------------------------------------#
+# Original Author: HH #
+# Original Date: 2006-11-22 #
+# Change Author: #
+# Change Date: #
+# Change: #
+################################################################################
+
+#
+# NOTE: PLEASE DO NOT ADD NOT NDB SPECIFIC TESTCASES HERE !
+# TESTCASES WHICH MUST BE APPLIED TO ALL STORAGE ENGINES MUST BE ADDED IN
+# THE SOURCED FILES ONLY.
+#------------------------------------------------------------------------------#
+# General not engine specific settings and requirements
+
+##### Options, for debugging support #####
+let $debug= 0;
+let $do_long_tests= 1;
+
+# The server must support partitioning.
+--source include/have_partition.inc
+
+#------------------------------------------------------------------------------#
+# Engine specific settings and requirements
+
+--source include/have_ndb.inc
+##### Storage engine to be tested
+let $engine= 'NDB';
+
+#------------------------------------------------------------------------------#
+--source suite/partitions/include/partition_supported_sql_funcs_main.inc
+# --source include/partition_supported_sql_funcs_main.inc
+
diff --git a/mysql-test/suite/row_lock/include/row_lock.inc b/mysql-test/suite/row_lock/include/row_lock.inc
new file mode 100644
index 00000000000..8572bc0246e
--- /dev/null
+++ b/mysql-test/suite/row_lock/include/row_lock.inc
@@ -0,0 +1,83 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+--enable_warnings
+SET autocommit=0;
+# Create additional connections used through test
+CONNECT (root1, localhost, root,,);
+SET autocommit=0;
+--echo connection default;
+CONNECTION default;
+eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+eval $indext1;
+eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+eval $indext2;
+COMMIT;
+SELECT @@global.tx_isolation;
+
+# Both transaction are able to update the tables
+eval EXPLAIN $select;
+eval $select;
+
+--echo connection root1;
+CONNECTION root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+COMMIT;
+
+--echo connection root1;
+CONNECTION root1;
+ROLLBACK;
+
+--echo connection default;
+CONNECTION default;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+DISCONNECT root1;
+--echo connection default;
+CONNECTION default;
+DROP TABLE t1, t2;
+
diff --git a/mysql-test/suite/row_lock/include/row_lock_big_tab.inc b/mysql-test/suite/row_lock/include/row_lock_big_tab.inc
new file mode 100644
index 00000000000..f0823067eac
--- /dev/null
+++ b/mysql-test/suite/row_lock/include/row_lock_big_tab.inc
@@ -0,0 +1,94 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+SET autocommit=0;
+# Create additional connections used through test
+CONNECT (root1, localhost, root,,);
+SET autocommit=0;
+--echo connection default;
+CONNECTION default;
+eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+eval $indext1;
+eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+eval $indext2;
+DELIMITER |;
+CREATE PROCEDURE fill_t1 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+ INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
+ SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t1() RETURNS int
+BEGIN
+ DECLARE res int DEFAULT 0;
+ SELECT count(*)/2 INTO res FROM t1;
+ RETURN res;
+END;
+|
+CREATE PROCEDURE fill_t2 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+ INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
+ SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t2() RETURNS int
+BEGIN
+ DECLARE res int DEFAULT 0;
+ SELECT count(*)/2 INTO res FROM t2;
+ RETURN res;
+END;
+|
+DELIMITER ;|
+CALL fill_t1 (10);
+CALL fill_t2 (10);
+COMMIT;
+SELECT @@global.tx_isolation;
+# With the two separate selects (without join) the differs from
+# that select with join.
+
+# Both transaction are able to update the tables
+eval EXPLAIN $select;
+eval $select;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT k from t1 WHERE k < half_t1();
+SELECT k from t1 WHERE k >= half_t1();
+UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k < half_t1() AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k >= half_t1() AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+COMMIT;
+
+--echo connection root1;
+CONNECTION root1;
+ROLLBACK;
+
+--echo connection default;
+CONNECTION default;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+DISCONNECT root1;
+--echo connection default;
+CONNECTION default;
+DROP VIEW IF EXISTS v1;
+DROP TABLE t1, t2;
+#DROP VIEW v1;
+
diff --git a/mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc b/mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc
new file mode 100644
index 00000000000..8535c016819
--- /dev/null
+++ b/mysql-test/suite/row_lock/include/row_lock_big_tab_1.inc
@@ -0,0 +1,93 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+SET autocommit=0;
+# Create additional connections used through test
+CONNECT (root1, localhost, root,,);
+SET autocommit=0;
+--echo connection default;
+CONNECTION default;
+eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+eval $indext1;
+eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+eval $indext2;
+DELIMITER |;
+CREATE PROCEDURE fill_t1 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+ INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
+ SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t1() RETURNS int
+BEGIN
+ DECLARE res int DEFAULT 0;
+ SELECT MOD(k,2) INTO res FROM t1;
+ RETURN res;
+END;
+|
+CREATE PROCEDURE fill_t2 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+ INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
+ SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t2() RETURNS int
+BEGIN
+ DECLARE res int DEFAULT 0;
+ SELECT MOD(k,2) INTO res FROM t2;
+ RETURN res;
+END;
+|
+DELIMITER ;|
+eval CALL fill_t1 ($nbrows);
+eval CALL fill_t2 ($nbrows);
+COMMIT;
+SELECT @@global.tx_isolation;
+# With the two separate selects (without join) the differs from
+# that select with join.
+
+# Both transaction are able to update the tables
+eval EXPLAIN $select;
+eval $select;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k LOCK IN SHARE MODE;
+UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k % 2 = 1 AND t1.k = t2.k;
+SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
+SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
+SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
+SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
+
+COMMIT;
+
+--echo connection root1;
+CONNECTION root1;
+ROLLBACK;
+
+--echo connection default;
+CONNECTION default;
+SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
+SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
+SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
+DISCONNECT root1;
+--echo connection default;
+CONNECTION default;
+DROP TABLE t1, t2;
+
+
diff --git a/mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc b/mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc
new file mode 100644
index 00000000000..050f2a54016
--- /dev/null
+++ b/mysql-test/suite/row_lock/include/row_lock_big_tab_2.inc
@@ -0,0 +1,93 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+SET autocommit=0;
+# Create additional connections used through test
+CONNECT (root1, localhost, root,,);
+SET autocommit=0;
+--echo connection default;
+CONNECTION default;
+eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+eval $indext1;
+eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+eval $indext2;
+DELIMITER |;
+CREATE PROCEDURE fill_t1 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+ INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
+ SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t1() RETURNS int
+BEGIN
+ DECLARE res int DEFAULT 0;
+ SELECT MOD(k,2) INTO res FROM t1;
+ RETURN res;
+END;
+|
+CREATE PROCEDURE fill_t2 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+ INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
+ SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t2() RETURNS int
+BEGIN
+ DECLARE res int DEFAULT 0;
+ SELECT MOD(k,2) INTO res FROM t2;
+ RETURN res;
+END;
+|
+DELIMITER ;|
+eval CALL fill_t1 ($nbrows);
+eval CALL fill_t2 ($nbrows);
+COMMIT;
+SELECT @@global.tx_isolation;
+# With the two separate selects (without join) the differs from
+# that select with join.
+
+# Both transaction are able to update the tables
+eval EXPLAIN $select;
+eval $select;
+
+--echo connection root1;
+CONNECTION root1;
+#SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k FOR UPDATE;
+DELETE FROM t1 WHERE t1.k % 2 = 1;
+SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
+SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
+SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
+SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
+
+COMMIT;
+
+--echo connection root1;
+CONNECTION root1;
+ROLLBACK;
+
+--echo connection default;
+CONNECTION default;
+SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
+SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT * FROM t1 WHERE k < 40 ORDER BY t1.k;
+SELECT * FROM t2 WHERE k < 40 ORDER BY t2.k;
+DISCONNECT root1;
+--echo connection default;
+CONNECTION default;
+DROP TABLE t1, t2;
+
+
diff --git a/mysql-test/suite/row_lock/include/row_lock_trig.inc b/mysql-test/suite/row_lock/include/row_lock_trig.inc
new file mode 100644
index 00000000000..384f00f243e
--- /dev/null
+++ b/mysql-test/suite/row_lock/include/row_lock_trig.inc
@@ -0,0 +1,96 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+SET autocommit=0;
+# Create additional connections used through test
+CONNECT (root1, localhost, root,,);
+SET autocommit=0;
+--echo connection default;
+CONNECTION default;
+eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+eval $indext1;
+eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+eval $indext2;
+DELIMITER |;
+
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+ FOR EACH ROW BEGIN
+ UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
+ END;
+|
+
+DELIMITER ;|
+
+COMMIT;
+SELECT @@global.tx_isolation;
+# With the two separate selects (without join) the differs from
+# that select with join.
+
+# Both transaction are able to update the tables
+eval EXPLAIN $select;
+eval $select;
+--echo connection root1;
+CONNECTION root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE t2 SET t2.i=223 WHERE t2.i=123;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+UPDATE t2 SET t2.i=226 WHERE t2.i=126;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE t2 SET t2.i=224 WHERE t2.i=124;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+COMMIT;
+
+--echo connection root1;
+CONNECTION root1;
+ROLLBACK;
+
+--echo connection default;
+CONNECTION default;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+DISCONNECT root1;
+--echo connection default;
+CONNECTION default;
+DROP TABLE t1, t2;
+#DROP VIEW v1;
+
diff --git a/mysql-test/suite/row_lock/include/row_lock_view.inc b/mysql-test/suite/row_lock/include/row_lock_view.inc
new file mode 100644
index 00000000000..fbed8f64d3a
--- /dev/null
+++ b/mysql-test/suite/row_lock/include/row_lock_view.inc
@@ -0,0 +1,89 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+SET autocommit=0;
+# Create additional connections used through test
+CONNECT (root1, localhost, root,,);
+SET autocommit=0;
+--echo connection default;
+CONNECTION default;
+eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+eval $indext1;
+eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+eval $indext2;
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+# With the two separate selects (without join) the differs from
+# that select with join.
+
+# Both transaction are able to update the tables
+eval EXPLAIN $select;
+eval $select;
+
+--echo connection root1;
+CONNECTION root1;
+UPDATE v1 SET i=325 where i=125;
+SELECT * FROM v1 ORDER BY i,l;
+SELECT * FROM t1 ORDER BY t1.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE v1 SET i=323 where i=123;
+SELECT * FROM v1 ORDER BY i,l;
+SELECT * FROM t1 ORDER BY t1.k;
+
+--echo connection root1;
+CONNECTION root1;
+UPDATE v1 SET i=326 where i=126;
+SELECT * FROM v1 ORDER BY i,l;
+SELECT * FROM t1 ORDER BY t1.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE v1 SET i=324 where i=124;
+SELECT * FROM v1 ORDER BY i,l;
+SELECT * FROM t1 ORDER BY t1.k;
+
+--echo connection root1;
+CONNECTION root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+COMMIT;
+
+--echo connection root1;
+CONNECTION root1;
+ROLLBACK;
+
+--echo connection default;
+CONNECTION default;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+DISCONNECT root1;
+--echo connection default;
+CONNECTION default;
+DROP VIEW IF EXISTS v1;
+DROP TABLE t1, t2;
+#DROP VIEW v1;
+
diff --git a/mysql-test/suite/row_lock/include/row_lock_view_mix.inc b/mysql-test/suite/row_lock/include/row_lock_view_mix.inc
new file mode 100644
index 00000000000..9e8cf3d34fc
--- /dev/null
+++ b/mysql-test/suite/row_lock/include/row_lock_view_mix.inc
@@ -0,0 +1,92 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+SET autocommit=0;
+# Create additional connections used through test
+CONNECT (root1, localhost, root,,);
+SET autocommit=0;
+--echo connection default;
+CONNECTION default;
+eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+eval $indext1;
+eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+eval $indext2;
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+# With the two separate selects (without join) the differs from
+# that select with join.
+
+# Both transaction are able to update the tables
+eval EXPLAIN $select;
+eval $select;
+
+--echo connection root1;
+CONNECTION root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+#UPDATE v1 SET i=325 where i=125;
+#SELECT * FROM v1 ORDER BY i,l;
+#SELECT * FROM t1 ORDER BY t1.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE v1 SET i=323 where i=123;
+SELECT * FROM v1 ORDER BY i,l;
+SELECT * FROM t1 ORDER BY t1.k;
+
+--echo connection root1;
+CONNECTION root1;
+UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE v1 SET i=324 where i=124;
+SELECT * FROM v1 ORDER BY i,l;
+SELECT * FROM t1 ORDER BY t1.k;
+
+--echo connection root1;
+CONNECTION root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+COMMIT;
+
+--echo connection root1;
+CONNECTION root1;
+ROLLBACK;
+
+--echo connection default;
+CONNECTION default;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+DISCONNECT root1;
+--echo connection default;
+CONNECTION default;
+DROP VIEW IF EXISTS v1;
+DROP TABLE t1, t2;
+#DROP VIEW v1;
+
diff --git a/mysql-test/suite/row_lock/include/row_lock_view_storedp.inc b/mysql-test/suite/row_lock/include/row_lock_view_storedp.inc
new file mode 100644
index 00000000000..479392098be
--- /dev/null
+++ b/mysql-test/suite/row_lock/include/row_lock_view_storedp.inc
@@ -0,0 +1,126 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+DROP PROCEDURE IF EXISTS stp_t;
+--enable_warnings
+SET autocommit=0;
+# Create additional connections used through test
+CONNECT (root1, localhost, root,,);
+SET autocommit=0;
+CONNECT (root2, localhost, root,,);
+SET autocommit=0;
+--echo connection default;
+CONNECTION default;
+eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+INSERT INTO t1 VALUES (5,127,5,127);
+INSERT INTO t1 VALUES (6,128,6,128);
+eval $indext1;
+eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+INSERT INTO t2 VALUES (5,127,5,127);
+INSERT INTO t2 VALUES (6,128,6,128);
+eval $indext2;
+CREATE VIEW v1 AS SELECT t1.i from t1;
+DELIMITER |;
+
+CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
+ BEGIN
+ UPDATE t2 SET i = p2 WHERE i = p1;
+ UPDATE v1 SET i = p2 WHERE i = p1;
+ SELECT * FROM v1 ORDER BY i;
+ SELECT * FROM t1 ORDER BY t1.k;
+ SELECT * FROM t2 ORDER BY t2.k;
+ END;
+|
+
+DELIMITER ;|
+
+COMMIT;
+SELECT @@global.tx_isolation;
+eval EXPLAIN $select;
+eval $select;
+--echo connection root1;
+CONNECTION root1;
+CALL stp_t (125, 225);
+
+--echo connection root2;
+CONNECTION root2;
+CALL stp_t (127, 227);
+
+--echo connection default;
+CONNECTION default;
+CALL stp_t (123, 223);
+
+--echo connection root1;
+CONNECTION root1;
+CALL stp_t (126, 226);
+
+--echo connection root2;
+CONNECTION root2;
+CALL stp_t (128, 228);
+
+--echo connection default;
+CONNECTION default;
+CALL stp_t (124, 224);
+
+--echo connection root1;
+CONNECTION root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root2;
+CONNECTION root2;
+DELETE FROM t1 WHERE t1.i=228;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+COMMIT;
+
+--echo connection root1;
+CONNECTION root1;
+ROLLBACK;
+
+--echo connection root1;
+CONNECTION root1;
+COMMIT;
+
+--echo connection default;
+CONNECTION default;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+DISCONNECT root1;
+
+--echo connection root2;
+CONNECTION root2;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+DISCONNECT root2;
+
+--echo connection default;
+CONNECTION default;
+--disable_warnings
+DROP VIEW v1;
+DROP PROCEDURE stp_t;
+DROP TABLE t1, t2;
+--enable_warnings
diff --git a/mysql-test/suite/row_lock/include/row_lock_view_trig.inc b/mysql-test/suite/row_lock/include/row_lock_view_trig.inc
new file mode 100644
index 00000000000..785eb1b66a9
--- /dev/null
+++ b/mysql-test/suite/row_lock/include/row_lock_view_trig.inc
@@ -0,0 +1,99 @@
+--disable_warnings
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+--enable_warnings
+SET autocommit=0;
+# Create additional connections used through test
+CONNECT (root1, localhost, root,,);
+SET autocommit=0;
+--echo connection default;
+CONNECTION default;
+eval CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+eval $indext1;
+eval CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=$engine;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+eval $indext2;
+CREATE VIEW v1 AS SELECT t1.i from t1;
+DELIMITER |;
+
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+ FOR EACH ROW BEGIN
+ UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
+ END;
+|
+
+DELIMITER ;|
+
+COMMIT;
+SELECT @@global.tx_isolation;
+eval EXPLAIN $select;
+eval $select;
+--echo connection root1;
+CONNECTION root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE t2 SET t2.i=223 WHERE t2.i=123;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+UPDATE t2 SET t2.i=226 WHERE t2.i=126;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+UPDATE t2 SET t2.i=224 WHERE t2.i=124;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection default;
+CONNECTION default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+COMMIT;
+
+--echo connection root1;
+CONNECTION root1;
+ROLLBACK;
+
+--echo connection default;
+CONNECTION default;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+
+--echo connection root1;
+CONNECTION root1;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+DISCONNECT root1;
+--echo connection default;
+CONNECTION default;
+DROP TABLE t1, t2;
+DROP VIEW v1;
+
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_1.result b/mysql-test/suite/row_lock/r/innodb_row_lock_1.result
new file mode 100644
index 00000000000..54ed4350ba9
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_1.result
@@ -0,0 +1,142 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 2 Using where; Using index
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP TABLE t1, t2;
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_2.result b/mysql-test/suite/row_lock/r/innodb_row_lock_2.result
new file mode 100644
index 00000000000..56154e64489
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_2.result
@@ -0,0 +1,32 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_3.result b/mysql-test/suite/row_lock/r/innodb_row_lock_3.result
new file mode 100644
index 00000000000..a89c55973d2
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_3.result
@@ -0,0 +1,32 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_4.result b/mysql-test/suite/row_lock/r/innodb_row_lock_4.result
new file mode 100644
index 00000000000..310d24a456a
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_4.result
@@ -0,0 +1,142 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 2 Using where; Using index
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP TABLE t1, t2;
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_5.result b/mysql-test/suite/row_lock/r/innodb_row_lock_5.result
new file mode 100644
index 00000000000..ace5fddfad5
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_5.result
@@ -0,0 +1,32 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result b/mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result
new file mode 100644
index 00000000000..8f00c3a0bb7
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_big_tab.result
@@ -0,0 +1,97 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+CREATE INDEX ixi ON t2 (i);
+CREATE PROCEDURE fill_t1 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t1() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT count(*)/2 INTO res FROM t1;
+RETURN res;
+END;
+|
+CREATE PROCEDURE fill_t2 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t2() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT count(*)/2 INTO res FROM t2;
+RETURN res;
+END;
+|
+CALL fill_t1 (10);
+CALL fill_t2 (10);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 10 Using where; Using index
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 1 Using where; Using index
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
+i i
+connection root1;
+SELECT k from t1 WHERE k < half_t1();
+k
+0
+1
+2
+3
+4
+SELECT k from t1 WHERE k >= half_t1();
+k
+5
+6
+7
+8
+9
+UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k < half_t1() AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+0 1111 0 100
+1 1111 1 101
+2 1111 2 102
+3 1111 3 103
+4 1111 4 104
+5 105 5 105
+6 106 6 106
+7 107 7 107
+8 108 8 108
+9 109 9 109
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+0 2222 0 100
+1 2222 1 101
+2 2222 2 102
+3 2222 3 103
+4 2222 4 104
+5 105 5 105
+6 106 6 106
+7 107 7 107
+8 108 8 108
+9 109 9 109
+connection default;
+UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k >= half_t1() AND t2.i=t1.i;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result b/mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result
new file mode 100644
index 00000000000..0b12f149193
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_1.result
@@ -0,0 +1,145 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+CREATE INDEX ixi ON t2 (i);
+CREATE PROCEDURE fill_t1 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t1() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT MOD(k,2) INTO res FROM t1;
+RETURN res;
+END;
+|
+CREATE PROCEDURE fill_t2 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t2() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT MOD(k,2) INTO res FROM t2;
+RETURN res;
+END;
+|
+CALL fill_t1 (40);
+CALL fill_t2 (40);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index PRIMARY ixi 5 NULL 40 Using where; Using index
+1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.k 1
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
+i i
+100 100
+102 102
+104 104
+106 106
+108 108
+110 110
+112 112
+114 114
+116 116
+118 118
+120 120
+122 122
+124 124
+126 126
+128 128
+130 130
+132 132
+134 134
+136 136
+138 138
+connection root1;
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k LOCK IN SHARE MODE;
+i i
+101 101
+103 103
+105 105
+107 107
+109 109
+111 111
+113 113
+115 115
+117 117
+119 119
+121 121
+123 123
+125 125
+127 127
+129 129
+131 131
+133 133
+135 135
+137 137
+139 139
+UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k % 2 = 1 AND t1.k = t2.k;
+SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
+k i j l
+0 100 0 100
+1 1111 1 101
+2 102 2 102
+3 1111 3 103
+4 104 4 104
+5 1111 5 105
+6 106 6 106
+7 1111 7 107
+8 108 8 108
+9 1111 9 109
+10 110 10 110
+11 1111 11 111
+12 112 12 112
+13 1111 13 113
+14 114 14 114
+15 1111 15 115
+16 116 16 116
+17 1111 17 117
+18 118 18 118
+19 1111 19 119
+SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
+k i j l
+0 100 0 100
+1 2222 1 101
+2 102 2 102
+3 2222 3 103
+4 104 4 104
+5 2222 5 105
+6 106 6 106
+7 2222 7 107
+8 108 8 108
+9 2222 9 109
+10 110 10 110
+11 2222 11 111
+12 112 12 112
+13 2222 13 113
+14 114 14 114
+15 2222 15 115
+16 116 16 116
+17 2222 17 117
+18 118 18 118
+19 2222 19 119
+connection default;
+UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result b/mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result
new file mode 100644
index 00000000000..cc9f297f9fb
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_big_tab_2.result
@@ -0,0 +1,113 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+CREATE INDEX ixi ON t2 (i);
+CREATE PROCEDURE fill_t1 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t1() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT MOD(k,2) INTO res FROM t1;
+RETURN res;
+END;
+|
+CREATE PROCEDURE fill_t2 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t2() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT MOD(k,2) INTO res FROM t2;
+RETURN res;
+END;
+|
+CALL fill_t1 (40);
+CALL fill_t2 (40);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index PRIMARY ixi 5 NULL 40 Using where; Using index
+1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.k 1
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
+i i
+100 100
+102 102
+104 104
+106 106
+108 108
+110 110
+112 112
+114 114
+116 116
+118 118
+120 120
+122 122
+124 124
+126 126
+128 128
+130 130
+132 132
+134 134
+136 136
+138 138
+connection root1;
+DELETE FROM t1 WHERE t1.k % 2 = 1;
+SELECT * FROM t1 WHERE k < 20 ORDER BY t1.k;
+k i j l
+0 100 0 100
+2 102 2 102
+4 104 4 104
+6 106 6 106
+8 108 8 108
+10 110 10 110
+12 112 12 112
+14 114 14 114
+16 116 16 116
+18 118 18 118
+SELECT * FROM t2 WHERE k < 20 ORDER BY t2.k;
+k i j l
+0 100 0 100
+1 101 1 101
+2 102 2 102
+3 103 3 103
+4 104 4 104
+5 105 5 105
+6 106 6 106
+7 107 7 107
+8 108 8 108
+9 109 9 109
+10 110 10 110
+11 111 11 111
+12 112 12 112
+13 113 13 113
+14 114 14 114
+15 115 15 115
+16 116 16 116
+17 117 17 117
+18 118 18 118
+19 119 19 119
+connection default;
+UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k % 2 = 0 AND t1.k = t2.k;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result b/mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result
new file mode 100644
index 00000000000..dd43e5752e5
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_trig_1.result
@@ -0,0 +1,151 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+FOR EACH ROW BEGIN
+UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 225
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE t2 SET t2.i=223 WHERE t2.i=123;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE t2 SET t2.i=226 WHERE t2.i=126;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 225
+4 126 4 226
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+UPDATE t2 SET t2.i=224 WHERE t2.i=124;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 224
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 225
+4 126 4 226
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 224
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 224
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 224
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP TABLE t1, t2;
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result b/mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result
new file mode 100644
index 00000000000..cb3a5c692e9
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_trig_2.result
@@ -0,0 +1,37 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t2 (i);
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+FOR EACH ROW BEGIN
+UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result b/mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result
new file mode 100644
index 00000000000..834cb669833
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_view_1.result
@@ -0,0 +1,34 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 2 Using where; Using index
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE v1 SET i=325 where i=125;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result b/mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result
new file mode 100644
index 00000000000..440138d4cd1
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_view_2.result
@@ -0,0 +1,40 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
+1 SIMPLE t2 index NULL PRIMARY 4 NULL 4 Using index
+SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+i
+123
+124
+123
+124
+123
+124
+123
+124
+connection root1;
+UPDATE v1 SET i=325 where i=125;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_1.result b/mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_1.result
new file mode 100644
index 00000000000..230873b67a0
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_1.result
@@ -0,0 +1,48 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 2 Using where; Using index
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE v1 SET i=323 where i=123;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_2.result b/mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_2.result
new file mode 100644
index 00000000000..d792d573f8e
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_view_mix_2.result
@@ -0,0 +1,40 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
+1 SIMPLE t2 index NULL PRIMARY 4 NULL 4 Using index
+SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+i
+123
+124
+123
+124
+123
+124
+123
+124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_1.result b/mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_1.result
new file mode 100644
index 00000000000..77b9a4dd964
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_1.result
@@ -0,0 +1,312 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+INSERT INTO t1 VALUES (5,127,5,127);
+INSERT INTO t1 VALUES (6,128,6,128);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+INSERT INTO t2 VALUES (5,127,5,127);
+INSERT INTO t2 VALUES (6,128,6,128);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i from t1;
+CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
+BEGIN
+UPDATE t2 SET i = p2 WHERE i = p1;
+UPDATE v1 SET i = p2 WHERE i = p1;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 6 Using where; Using index
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+CALL stp_t (125, 225);
+i
+123
+124
+126
+127
+128
+225
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root2;
+CALL stp_t (127, 227);
+i
+123
+124
+125
+126
+128
+227
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 128 6 128
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 128 6 128
+connection default;
+CALL stp_t (123, 223);
+i
+124
+125
+126
+127
+128
+223
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root1;
+CALL stp_t (126, 226);
+i
+123
+124
+127
+128
+225
+226
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+5 127 5 127
+6 128 6 128
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+5 127 5 127
+6 128 6 128
+connection root2;
+CALL stp_t (128, 228);
+i
+123
+124
+125
+126
+227
+228
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 228 6 128
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 228 6 128
+connection default;
+CALL stp_t (124, 224);
+i
+125
+126
+127
+128
+223
+224
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+5 127 5 127
+6 128 6 128
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+5 127 5 127
+6 128 6 128
+connection root2;
+DELETE FROM t1 WHERE t1.i=228;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 228 6 128
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+COMMIT;
+connection root1;
+ROLLBACK;
+connection root1;
+COMMIT;
+connection default;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+127
+128
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root1;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+127
+128
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root2;
+SELECT * FROM v1 ORDER BY i;
+i
+123
+124
+125
+126
+227
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 228 6 128
+connection default;
+DROP TABLE t1, t2;
+DROP VIEW v1;
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_2.result b/mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_2.result
new file mode 100644
index 00000000000..73d8a3f4bea
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_view_storedp_2.result
@@ -0,0 +1,47 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+INSERT INTO t1 VALUES (5,127,5,127);
+INSERT INTO t1 VALUES (6,128,6,128);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+INSERT INTO t2 VALUES (5,127,5,127);
+INSERT INTO t2 VALUES (6,128,6,128);
+#CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i from t1;
+CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
+BEGIN
+UPDATE t2 SET i = p2 WHERE i = p1;
+UPDATE v1 SET i = p2 WHERE i = p1;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using where
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+CALL stp_t (125, 225);
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_1.result b/mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_1.result
new file mode 100644
index 00000000000..90383a9489f
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_1.result
@@ -0,0 +1,183 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i from t1;
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+FOR EACH ROW BEGIN
+UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 index ixi ixi 5 NULL 4 Using where; Using index
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
+SELECT * FROM v1 ORDER BY i;
+i
+123
+124
+126
+225
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE t2 SET t2.i=223 WHERE t2.i=123;
+SELECT * FROM v1 ORDER BY i;
+i
+124
+125
+126
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE t2 SET t2.i=226 WHERE t2.i=126;
+SELECT * FROM v1 ORDER BY i;
+i
+123
+124
+225
+226
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+UPDATE t2 SET t2.i=224 WHERE t2.i=124;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+223
+224
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP TABLE t1, t2;
+DROP VIEW v1;
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_2.result b/mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_2.result
new file mode 100644
index 00000000000..55793558b21
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/innodb_row_lock_view_trig_2.result
@@ -0,0 +1,38 @@
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=InnoDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i from t1;
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+FOR EACH ROW BEGIN
+UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_1.result b/mysql-test/suite/row_lock/r/ndb_row_lock_1.result
new file mode 100644
index 00000000000..248c7d5ea1f
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_1.result
@@ -0,0 +1,139 @@
+DROP TABLE IF EXISTS t1, t2;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 1 Using where
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_2.result b/mysql-test/suite/row_lock/r/ndb_row_lock_2.result
new file mode 100644
index 00000000000..109d99dd036
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_2.result
@@ -0,0 +1,31 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_3.result b/mysql-test/suite/row_lock/r/ndb_row_lock_3.result
new file mode 100644
index 00000000000..c936ea209ff
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_3.result
@@ -0,0 +1,30 @@
+DROP TABLE IF EXISTS t1, t2;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_4.result b/mysql-test/suite/row_lock/r/ndb_row_lock_4.result
new file mode 100644
index 00000000000..875c783bd81
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_4.result
@@ -0,0 +1,139 @@
+DROP TABLE IF EXISTS t1, t2;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 1 Using where
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE t1,t2 SET t1.i=223,t2.i=223 WHERE t1.i=123 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+UPDATE t1,t2 SET t1.i=224,t2.i=224 WHERE t1.i=124 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_5.result b/mysql-test/suite/row_lock/r/ndb_row_lock_5.result
new file mode 100644
index 00000000000..0d94f8abf72
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_5.result
@@ -0,0 +1,30 @@
+DROP TABLE IF EXISTS t1, t2;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_big_tab.result b/mysql-test/suite/row_lock/r/ndb_row_lock_big_tab.result
new file mode 100644
index 00000000000..94b67c63d94
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_big_tab.result
@@ -0,0 +1,177 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+CREATE INDEX ixi ON t2 (i);
+CREATE PROCEDURE fill_t1 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t1() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT count(*)/2 INTO res FROM t1;
+RETURN res;
+END;
+|
+CREATE PROCEDURE fill_t2 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t2() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT count(*)/2 INTO res FROM t2;
+RETURN res;
+END;
+|
+CALL fill_t1 (10);
+CALL fill_t2 (10);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 1 Using where
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
+i i
+connection root1;
+SELECT k from t1 WHERE k < half_t1();
+k
+0
+3
+1
+2
+4
+SELECT k from t1 WHERE k >= half_t1();
+k
+6
+7
+9
+5
+8
+UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k < half_t1() AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+0 1111 0 100
+1 1111 1 101
+2 1111 2 102
+3 1111 3 103
+4 1111 4 104
+5 105 5 105
+6 106 6 106
+7 107 7 107
+8 108 8 108
+9 109 9 109
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+0 2222 0 100
+1 2222 1 101
+2 2222 2 102
+3 2222 3 103
+4 2222 4 104
+5 105 5 105
+6 106 6 106
+7 107 7 107
+8 108 8 108
+9 109 9 109
+connection default;
+UPDATE t1,t2 SET t1.i=3333,t2.i=4444 WHERE t1.k >= half_t1() AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+0 100 0 100
+1 101 1 101
+2 102 2 102
+3 103 3 103
+4 104 4 104
+5 3333 5 105
+6 3333 6 106
+7 3333 7 107
+8 3333 8 108
+9 3333 9 109
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+0 100 0 100
+1 101 1 101
+2 102 2 102
+3 103 3 103
+4 104 4 104
+5 4444 5 105
+6 4444 6 106
+7 4444 7 107
+8 4444 8 108
+9 4444 9 109
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+0 100 0 100
+1 101 1 101
+2 102 2 102
+3 103 3 103
+4 104 4 104
+5 3333 5 105
+6 3333 6 106
+7 3333 7 107
+8 3333 8 108
+9 3333 9 109
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+0 100 0 100
+1 101 1 101
+2 102 2 102
+3 103 3 103
+4 104 4 104
+5 4444 5 105
+6 4444 6 106
+7 4444 7 107
+8 4444 8 108
+9 4444 9 109
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+0 100 0 100
+1 101 1 101
+2 102 2 102
+3 103 3 103
+4 104 4 104
+5 3333 5 105
+6 3333 6 106
+7 3333 7 107
+8 3333 8 108
+9 3333 9 109
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+0 100 0 100
+1 101 1 101
+2 102 2 102
+3 103 3 103
+4 104 4 104
+5 4444 5 105
+6 4444 6 106
+7 4444 7 107
+8 4444 8 108
+9 4444 9 109
+connection default;
+DROP VIEW IF EXISTS v1;
+Warnings:
+Note 1051 Unknown table 'test.v1'
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_1.result b/mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_1.result
new file mode 100644
index 00000000000..9803895e1a7
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_1.result
@@ -0,0 +1,357 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+CREATE INDEX ixi ON t2 (i);
+CREATE PROCEDURE fill_t1 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t1() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT MOD(k,2) INTO res FROM t1;
+RETURN res;
+END;
+|
+CREATE PROCEDURE fill_t2 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t2() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT MOD(k,2) INTO res FROM t2;
+RETURN res;
+END;
+|
+CALL fill_t1 (200);
+CALL fill_t2 (200);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 200 Using where
+1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.k 1
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
+i i
+135 135
+119 119
+211 211
+184 184
+232 232
+105 105
+188 188
+216 216
+255 255
+154 154
+197 197
+279 279
+218 218
+127 127
+203 203
+281 281
+194 194
+161 161
+276 276
+122 122
+139 139
+183 183
+114 114
+247 247
+144 144
+148 148
+174 174
+267 267
+142 142
+168 168
+226 226
+258 258
+231 231
+146 146
+253 253
+189 189
+230 230
+290 290
+178 178
+158 158
+130 130
+214 214
+133 133
+229 229
+294 294
+295 295
+108 108
+112 112
+297 297
+151 151
+251 251
+270 270
+291 291
+159 159
+132 132
+121 121
+244 244
+272 272
+293 293
+186 186
+111 111
+166 166
+201 201
+175 175
+180 180
+209 209
+192 192
+246 246
+195 195
+107 107
+233 233
+239 239
+103 103
+109 109
+128 128
+266 266
+143 143
+160 160
+187 187
+243 243
+273 273
+259 259
+110 110
+176 176
+141 141
+170 170
+215 215
+191 191
+200 200
+271 271
+162 162
+260 260
+106 106
+150 150
+126 126
+147 147
+155 155
+193 193
+207 207
+287 287
+235 235
+252 252
+129 129
+205 205
+268 268
+278 278
+116 116
+137 137
+199 199
+217 217
+234 234
+190 190
+236 236
+257 257
+100 100
+210 210
+212 212
+264 264
+221 221
+241 241
+256 256
+262 262
+265 265
+269 269
+277 277
+173 173
+177 177
+208 208
+219 219
+285 285
+101 101
+164 164
+113 113
+125 125
+202 202
+140 140
+156 156
+282 282
+181 181
+206 206
+299 299
+102 102
+145 145
+227 227
+196 196
+138 138
+198 198
+204 204
+237 237
+171 171
+284 284
+263 263
+292 292
+104 104
+149 149
+250 250
+296 296
+228 228
+280 280
+242 242
+248 248
+185 185
+220 220
+245 245
+275 275
+118 118
+120 120
+152 152
+153 153
+157 157
+182 182
+179 179
+254 254
+288 288
+172 172
+283 283
+286 286
+115 115
+238 238
+289 289
+131 131
+223 223
+134 134
+136 136
+222 222
+225 225
+261 261
+274 274
+123 123
+163 163
+224 224
+117 117
+298 298
+169 169
+124 124
+167 167
+240 240
+249 249
+165 165
+213 213
+connection root1;
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 1 AND t1.k = t2.k LOCK IN SHARE MODE;
+i i
+209 209
+195 195
+107 107
+233 233
+239 239
+103 103
+109 109
+143 143
+187 187
+243 243
+273 273
+259 259
+141 141
+215 215
+191 191
+271 271
+147 147
+155 155
+193 193
+207 207
+287 287
+235 235
+129 129
+205 205
+137 137
+199 199
+217 217
+257 257
+221 221
+241 241
+265 265
+269 269
+277 277
+173 173
+177 177
+135 135
+119 119
+211 211
+105 105
+255 255
+197 197
+279 279
+127 127
+203 203
+281 281
+161 161
+139 139
+183 183
+247 247
+267 267
+231 231
+253 253
+189 189
+133 133
+229 229
+295 295
+297 297
+151 151
+251 251
+291 291
+159 159
+121 121
+293 293
+111 111
+201 201
+175 175
+185 185
+245 245
+275 275
+153 153
+157 157
+179 179
+283 283
+115 115
+289 289
+131 131
+223 223
+225 225
+261 261
+123 123
+163 163
+117 117
+169 169
+167 167
+249 249
+165 165
+213 213
+219 219
+285 285
+101 101
+113 113
+125 125
+181 181
+299 299
+145 145
+227 227
+237 237
+171 171
+263 263
+149 149
+UPDATE t1,t2 SET t1.i=1111,t2.i=2222 WHERE t1.k % 2 = 1 AND t1.k = t2.k;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_2.result b/mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_2.result
new file mode 100644
index 00000000000..adb89b03480
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_big_tab_2.result
@@ -0,0 +1,255 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+CREATE INDEX ixi ON t2 (i);
+CREATE PROCEDURE fill_t1 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t1 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t1() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT MOD(k,2) INTO res FROM t1;
+RETURN res;
+END;
+|
+CREATE PROCEDURE fill_t2 (IN upb int)
+BEGIN
+DECLARE cnt int DEFAULT 0;
+WHILE cnt < upb DO
+INSERT INTO t2 VALUES (cnt, cnt+100, cnt, cnt+100);
+SET cnt= cnt+1;
+END WHILE;
+END;
+|
+CREATE FUNCTION half_t2() RETURNS int
+BEGIN
+DECLARE res int DEFAULT 0;
+SELECT MOD(k,2) INTO res FROM t2;
+RETURN res;
+END;
+|
+CALL fill_t1 (200);
+CALL fill_t2 (200);
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 200 Using where
+1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.k 1
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
+i i
+135 135
+119 119
+211 211
+184 184
+232 232
+105 105
+188 188
+216 216
+255 255
+154 154
+197 197
+279 279
+218 218
+127 127
+203 203
+281 281
+194 194
+161 161
+276 276
+122 122
+139 139
+183 183
+114 114
+247 247
+144 144
+148 148
+174 174
+267 267
+142 142
+168 168
+226 226
+258 258
+231 231
+146 146
+253 253
+189 189
+230 230
+290 290
+178 178
+158 158
+130 130
+214 214
+133 133
+229 229
+294 294
+295 295
+108 108
+112 112
+297 297
+151 151
+251 251
+270 270
+291 291
+159 159
+132 132
+121 121
+244 244
+272 272
+293 293
+186 186
+111 111
+166 166
+201 201
+175 175
+180 180
+209 209
+192 192
+246 246
+195 195
+107 107
+233 233
+239 239
+103 103
+109 109
+128 128
+266 266
+143 143
+160 160
+187 187
+243 243
+273 273
+259 259
+110 110
+176 176
+141 141
+170 170
+215 215
+191 191
+200 200
+271 271
+162 162
+260 260
+106 106
+150 150
+126 126
+147 147
+155 155
+193 193
+207 207
+287 287
+235 235
+252 252
+129 129
+205 205
+268 268
+278 278
+116 116
+137 137
+199 199
+217 217
+234 234
+190 190
+236 236
+257 257
+100 100
+210 210
+212 212
+264 264
+221 221
+241 241
+256 256
+262 262
+265 265
+269 269
+277 277
+173 173
+177 177
+208 208
+219 219
+285 285
+101 101
+164 164
+113 113
+125 125
+202 202
+140 140
+156 156
+282 282
+181 181
+206 206
+299 299
+102 102
+145 145
+227 227
+196 196
+138 138
+198 198
+204 204
+237 237
+171 171
+284 284
+263 263
+292 292
+104 104
+149 149
+250 250
+296 296
+228 228
+280 280
+242 242
+248 248
+185 185
+220 220
+245 245
+275 275
+118 118
+120 120
+152 152
+153 153
+157 157
+182 182
+179 179
+254 254
+288 288
+172 172
+283 283
+286 286
+115 115
+238 238
+289 289
+131 131
+223 223
+134 134
+136 136
+222 222
+225 225
+261 261
+274 274
+123 123
+163 163
+224 224
+117 117
+298 298
+169 169
+124 124
+167 167
+240 240
+249 249
+165 165
+213 213
+connection root1;
+DELETE FROM t1 WHERE t1.k % 2 = 1;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_trig_1.result b/mysql-test/suite/row_lock/r/ndb_row_lock_trig_1.result
new file mode 100644
index 00000000000..eb69fd2e306
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_trig_1.result
@@ -0,0 +1,148 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+FOR EACH ROW BEGIN
+UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 225
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE t2 SET t2.i=223 WHERE t2.i=123;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE t2 SET t2.i=226 WHERE t2.i=126;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 225
+4 126 4 226
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+UPDATE t2 SET t2.i=224 WHERE t2.i=124;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 224
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 225
+4 126 4 226
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 224
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 224
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 223
+2 124 2 224
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_trig_2.result b/mysql-test/suite/row_lock/r/ndb_row_lock_trig_2.result
new file mode 100644
index 00000000000..bedb75da93a
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_trig_2.result
@@ -0,0 +1,35 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t2 (i);
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+FOR EACH ROW BEGIN
+UPDATE t1 SET l = NEW.i WHERE i = OLD.i;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_view_1.result b/mysql-test/suite/row_lock/r/ndb_row_lock_view_1.result
new file mode 100644
index 00000000000..279f2626c73
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_view_1.result
@@ -0,0 +1,194 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 1 Using where
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE v1 SET i=325 where i=125;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+123 123
+123 124
+123 125
+123 126
+124 123
+124 124
+124 125
+124 126
+126 123
+126 124
+126 125
+126 126
+325 123
+325 124
+325 125
+325 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 325 3 125
+4 126 4 126
+connection default;
+UPDATE v1 SET i=323 where i=123;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+124 123
+124 124
+124 125
+124 126
+125 123
+125 124
+125 125
+125 126
+126 123
+126 124
+126 125
+126 126
+323 123
+323 124
+323 125
+323 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE v1 SET i=326 where i=126;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+123 123
+123 124
+123 125
+123 126
+124 123
+124 124
+124 125
+124 126
+325 123
+325 124
+325 125
+325 126
+326 123
+326 124
+326 125
+326 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 325 3 125
+4 326 4 126
+connection default;
+UPDATE v1 SET i=324 where i=124;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+125 123
+125 124
+125 125
+125 126
+126 123
+126 124
+126 125
+126 126
+323 123
+323 124
+323 125
+323 126
+324 123
+324 124
+324 125
+324 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 325 3 125
+4 326 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP VIEW IF EXISTS v1;
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_view_2.result b/mysql-test/suite/row_lock/r/ndb_row_lock_view_2.result
new file mode 100644
index 00000000000..9e74e93b0cc
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_view_2.result
@@ -0,0 +1,200 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 4
+SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+i
+123
+124
+123
+124
+123
+124
+123
+124
+connection root1;
+UPDATE v1 SET i=325 where i=125;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+123 123
+123 124
+123 125
+123 126
+124 123
+124 124
+124 125
+124 126
+126 123
+126 124
+126 125
+126 126
+325 123
+325 124
+325 125
+325 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 325 3 125
+4 126 4 126
+connection default;
+UPDATE v1 SET i=323 where i=123;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+124 123
+124 124
+124 125
+124 126
+125 123
+125 124
+125 125
+125 126
+126 123
+126 124
+126 125
+126 126
+323 123
+323 124
+323 125
+323 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE v1 SET i=326 where i=126;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+123 123
+123 124
+123 125
+123 126
+124 123
+124 124
+124 125
+124 126
+325 123
+325 124
+325 125
+325 126
+326 123
+326 124
+326 125
+326 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 325 3 125
+4 326 4 126
+connection default;
+UPDATE v1 SET i=324 where i=124;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+125 123
+125 124
+125 125
+125 126
+126 123
+126 124
+126 125
+126 126
+323 123
+323 124
+323 125
+323 126
+324 123
+324 124
+324 125
+324 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 325 3 125
+4 326 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP VIEW IF EXISTS v1;
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_1.result b/mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_1.result
new file mode 100644
index 00000000000..b5b1c519702
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_1.result
@@ -0,0 +1,169 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+1 SIMPLE t2 ref ixi ixi 5 test.t1.i 1 Using where
+SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+i i
+123 123
+124 124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE v1 SET i=323 where i=123;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+124 123
+124 124
+124 125
+124 126
+125 123
+125 124
+125 125
+125 126
+126 123
+126 124
+126 125
+126 126
+323 123
+323 124
+323 125
+323 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE t1,t2 SET t1.i=226,t2.i=226 WHERE t1.i=126 AND t2.i=t1.i;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+UPDATE v1 SET i=324 where i=124;
+SELECT * FROM v1 ORDER BY i,l;
+i l
+125 123
+125 124
+125 125
+125 126
+126 123
+126 124
+126 125
+126 126
+323 123
+323 124
+323 125
+323 126
+324 123
+324 124
+324 125
+324 126
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 323 1 123
+2 324 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP VIEW IF EXISTS v1;
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_2.result b/mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_2.result
new file mode 100644
index 00000000000..d92f9ad9664
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_view_mix_2.result
@@ -0,0 +1,38 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i, t2.l from t1,t2;
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+1 SIMPLE t2 ALL NULL NULL NULL NULL 4
+SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+i
+123
+124
+123
+124
+123
+124
+123
+124
+connection root1;
+UPDATE t1,t2 SET t1.i=225,t2.i=225 WHERE t1.i=125 AND t2.i=t1.i;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_1.result b/mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_1.result
new file mode 100644
index 00000000000..e2a2a6e7deb
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_1.result
@@ -0,0 +1,309 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+DROP PROCEDURE IF EXISTS stp_t;
+SET autocommit=0;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+INSERT INTO t1 VALUES (5,127,5,127);
+INSERT INTO t1 VALUES (6,128,6,128);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+INSERT INTO t2 VALUES (5,127,5,127);
+INSERT INTO t2 VALUES (6,128,6,128);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i from t1;
+CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
+BEGIN
+UPDATE t2 SET i = p2 WHERE i = p1;
+UPDATE v1 SET i = p2 WHERE i = p1;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+CALL stp_t (125, 225);
+i
+123
+124
+126
+127
+128
+225
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root2;
+CALL stp_t (127, 227);
+i
+123
+124
+125
+126
+128
+227
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 128 6 128
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 128 6 128
+connection default;
+CALL stp_t (123, 223);
+i
+124
+125
+126
+127
+128
+223
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root1;
+CALL stp_t (126, 226);
+i
+123
+124
+127
+128
+225
+226
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+5 127 5 127
+6 128 6 128
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+5 127 5 127
+6 128 6 128
+connection root2;
+CALL stp_t (128, 228);
+i
+123
+124
+125
+126
+227
+228
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 228 6 128
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 228 6 128
+connection default;
+CALL stp_t (124, 224);
+i
+125
+126
+127
+128
+223
+224
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+5 127 5 127
+6 128 6 128
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+5 127 5 127
+6 128 6 128
+connection root2;
+DELETE FROM t1 WHERE t1.i=228;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 228 6 128
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+COMMIT;
+connection root1;
+ROLLBACK;
+connection root1;
+COMMIT;
+connection default;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+127
+128
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root1;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+127
+128
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 127 5 127
+6 128 6 128
+connection root2;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+223
+227
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+5 227 5 127
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+5 227 5 127
+6 228 6 128
+connection default;
+DROP VIEW v1;
+DROP PROCEDURE stp_t;
+DROP TABLE t1, t2;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_2.result b/mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_2.result
new file mode 100644
index 00000000000..6dbd5f834ed
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_view_storedp_2.result
@@ -0,0 +1,46 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+DROP PROCEDURE IF EXISTS stp_t;
+SET autocommit=0;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+INSERT INTO t1 VALUES (5,127,5,127);
+INSERT INTO t1 VALUES (6,128,6,128);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+INSERT INTO t2 VALUES (5,127,5,127);
+INSERT INTO t2 VALUES (6,128,6,128);
+#CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i from t1;
+CREATE PROCEDURE stp_t (IN p1 int, IN p2 int) MODIFIES SQL DATA
+BEGIN
+UPDATE t2 SET i = p2 WHERE i = p1;
+UPDATE v1 SET i = p2 WHERE i = p1;
+SELECT * FROM v1 ORDER BY i;
+SELECT * FROM t1 ORDER BY t1.k;
+SELECT * FROM t2 ORDER BY t2.k;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using where
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+CALL stp_t (125, 225);
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_1.result b/mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_1.result
new file mode 100644
index 00000000000..f5c745ca41c
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_1.result
@@ -0,0 +1,180 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i from t1;
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+FOR EACH ROW BEGIN
+UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 range ixi ixi 5 NULL 10 Using where
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
+SELECT * FROM v1 ORDER BY i;
+i
+123
+124
+126
+225
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 126 4 126
+connection default;
+UPDATE t2 SET t2.i=223 WHERE t2.i=123;
+SELECT * FROM v1 ORDER BY i;
+i
+124
+125
+126
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 124 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+UPDATE t2 SET t2.i=226 WHERE t2.i=126;
+SELECT * FROM v1 ORDER BY i;
+i
+123
+124
+225
+226
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+UPDATE t2 SET t2.i=224 WHERE t2.i=124;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+223
+224
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+DELETE FROM t1 WHERE t1.i=226;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 123 1 123
+2 124 2 124
+3 225 3 125
+4 226 4 126
+connection default;
+DELETE FROM t1 WHERE t1.i=224;
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+COMMIT;
+connection root1;
+ROLLBACK;
+connection default;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection root1;
+SELECT * FROM v1 ORDER BY i;
+i
+125
+126
+223
+SELECT * FROM t1 ORDER BY t1.k;
+k i j l
+1 223 1 123
+3 125 3 125
+4 126 4 126
+SELECT * FROM t2 ORDER BY t2.k;
+k i j l
+1 223 1 123
+2 224 2 124
+3 125 3 125
+4 126 4 126
+connection default;
+DROP TABLE t1, t2;
+DROP VIEW v1;
diff --git a/mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_2.result b/mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_2.result
new file mode 100644
index 00000000000..d6a38753c1d
--- /dev/null
+++ b/mysql-test/suite/row_lock/r/ndb_row_lock_view_trig_2.result
@@ -0,0 +1,36 @@
+DROP TABLE IF EXISTS t1, t2;
+DROP VIEW IF EXISTS v1;
+SET autocommit=0;
+SET autocommit=0;
+connection default;
+CREATE TABLE t1 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t1 VALUES (1,123,1,123);
+INSERT INTO t1 VALUES (2,124,2,124);
+INSERT INTO t1 VALUES (3,125,3,125);
+INSERT INTO t1 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t1 (i);
+CREATE TABLE t2 (k INT NOT NULL PRIMARY KEY, i INT, j INT, l INT) ENGINE=NDB;
+INSERT INTO t2 VALUES (1,123,1,123);
+INSERT INTO t2 VALUES (2,124,2,124);
+INSERT INTO t2 VALUES (3,125,3,125);
+INSERT INTO t2 VALUES (4,126,4,126);
+#CREATE INDEX ixi ON t2 (i);
+CREATE VIEW v1 AS SELECT t1.i from t1;
+CREATE TRIGGER trig_t2 AFTER UPDATE ON t2
+FOR EACH ROW BEGIN
+UPDATE v1 SET i = NEW.i WHERE i = OLD.i;
+END;
+|
+COMMIT;
+SELECT @@global.tx_isolation;
+@@global.tx_isolation
+REPEATABLE-READ
+EXPLAIN SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+id select_type table type possible_keys key key_len ref rows Extra
+1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
+SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+i
+123
+124
+connection root1;
+UPDATE t2 SET t2.i=225 WHERE t2.i=125;
diff --git a/mysql-test/suite/row_lock/readme.txt b/mysql-test/suite/row_lock/readme.txt
new file mode 100644
index 00000000000..b43f04ecda4
--- /dev/null
+++ b/mysql-test/suite/row_lock/readme.txt
@@ -0,0 +1,9 @@
+All row lock test with InnoDB have to be executed with the options
+
+--innodb_lock_wait_timeout=1
+--innodb_locks_unsafe_for_binlog
+
+for example
+
+perl mysql-test-run.pl --mysqld=--innodb_lock_wait_timeout=2 --mysqld=--innodb_locks_unsafe_for_binlog --suite=row_lock innodb_row_lock_2
+
diff --git a/mysql-test/suite/row_lock/summary_of_sel_test.txt b/mysql-test/suite/row_lock/summary_of_sel_test.txt
new file mode 100644
index 00000000000..0fa332e957a
--- /dev/null
+++ b/mysql-test/suite/row_lock/summary_of_sel_test.txt
@@ -0,0 +1,36 @@
+Test plan:
+Create 2 tables with a primary key and 3 integer columns. Both get the same rows (1,123,1,123),(2,124,2,124),(3,125,3,125),(4,126,4,126). The second and third column may get an index to have cases with, without and mutilple index. Create views on the tables. Create an update trigger. Create a stored procedure updating the table. Create a stored function updating the table and deliver the key as result.
+
+The test isself consists of 2 sessions (transactions) running in "parallel" (same user "root") accessing and locking the same tables on basis of a row lock. Expected is that both sessions(transactions) can update the table successfully.
+
+First session
+execute an explain to every select and one of the following selects on the first half of table t1:
+- select <non index columns> ... where ... for update;
+- select <non index columns> ... where ... lock in share mode;
+- select <indexed columns> ... where ... for update;
+- select <indexed columns> ... where ... lock in share mode;
+- select <indexed columns> ... ignore index ... where ... for update;
+- select <indexed columns> ... ignore index ... where ... lock in share mode;
+- select ... where (select...) ... for update;
+- select ... where (select...) ... lock in share mode;
+- (select ... where) union (select ... where) for update;
+- (select ... where) union (select ... where) lock in...;
+- select <view> ... where ... for update;
+- select <view> ... where ... lock in ...;
+- select <join> ... where ... for update;
+- select <join> ... where ... lock in ...;
+Then executes
+- update
+- delete
+- trigger accessing table t1
+- stored procedure accessing table t1
+- stored function accessing table t1
+
+Second session
+executes the same on the last half of table t1
+
+call of mysqld with option
+--innodb_locks_unsafe_for_binlog
+
+As the tests above work with small tables (<10 rows) there must be at least one test with a big table (>1000 rows) doing a table scan.
+
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_1.test b/mysql-test/suite/row_lock/t/innodb_row_lock_1.test
new file mode 100644
index 00000000000..e0440fe2669
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_1.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_2.test b/mysql-test/suite/row_lock/t/innodb_row_lock_2.test
new file mode 100644
index 00000000000..5cb3ea9f2d9
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_2.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_3.test b/mysql-test/suite/row_lock/t/innodb_row_lock_3.test
new file mode 100644
index 00000000000..11f4dc423d6
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_3.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_4.test b/mysql-test/suite/row_lock/t/innodb_row_lock_4.test
new file mode 100644
index 00000000000..0a8ca9c13a0
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_4.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_5.test b/mysql-test/suite/row_lock/t/innodb_row_lock_5.test
new file mode 100644
index 00000000000..7e411d31649
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_5.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_big_tab.test b/mysql-test/suite/row_lock/t/innodb_row_lock_big_tab.test
new file mode 100644
index 00000000000..0c5b8b41bd5
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_big_tab.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_big_tab.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_1.test b/mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_1.test
new file mode 100644
index 00000000000..a12a07d82a9
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_1.test
@@ -0,0 +1,10 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $nbrows= 40;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_big_tab_1.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_2.test b/mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_2.test
new file mode 100644
index 00000000000..49e834eb2ce
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_big_tab_2.test
@@ -0,0 +1,10 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $nbrows= 40;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.k % 2= 0 AND t1.k = t2.k LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_big_tab_2.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_trig_1.test b/mysql-test/suite/row_lock/t/innodb_row_lock_trig_1.test
new file mode 100644
index 00000000000..225513d3f87
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_trig_1.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_trig.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_trig_2.test b/mysql-test/suite/row_lock/t/innodb_row_lock_trig_2.test
new file mode 100644
index 00000000000..88dee5f23f8
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_trig_2.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_trig.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_view_1.test b/mysql-test/suite/row_lock/t/innodb_row_lock_view_1.test
new file mode 100644
index 00000000000..d6381e1da5b
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_view_1.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_view_2.test b/mysql-test/suite/row_lock/t/innodb_row_lock_view_2.test
new file mode 100644
index 00000000000..ee45e683669
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_view_2.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_1.test b/mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_1.test
new file mode 100644
index 00000000000..49cba88dd23
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_1.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_mix.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_2.test b/mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_2.test
new file mode 100644
index 00000000000..b07f3a3378a
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_view_mix_2.test
@@ -0,0 +1,10 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+#let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+let $select= SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_mix.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_1.test b/mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_1.test
new file mode 100644
index 00000000000..d507ff3296f
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_1.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_storedp.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_2.test b/mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_2.test
new file mode 100644
index 00000000000..a1bfb16055e
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_view_storedp_2.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_storedp.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_1.test b/mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_1.test
new file mode 100644
index 00000000000..24c76532d17
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_1.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_trig.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_2.test b/mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_2.test
new file mode 100644
index 00000000000..a8a67d77979
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/innodb_row_lock_view_trig_2.test
@@ -0,0 +1,9 @@
+--source include/have_innodb.inc
+SELECT @@global.innodb_table_locks into @table_locks;
+SET @@global.innodb_table_locks= OFF;
+let $engine= InnoDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_trig.inc
+SET @@global.innodb_table_locks= @table_locks;
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_1.test b/mysql-test/suite/row_lock/t/ndb_row_lock_1.test
new file mode 100644
index 00000000000..6ac2e829008
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_1.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_2.test b/mysql-test/suite/row_lock/t/ndb_row_lock_2.test
new file mode 100644
index 00000000000..994ecba96b0
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_2.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_3.test b/mysql-test/suite/row_lock/t/ndb_row_lock_3.test
new file mode 100644
index 00000000000..2de43c61c2a
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_3.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_4.test b/mysql-test/suite/row_lock/t/ndb_row_lock_4.test
new file mode 100644
index 00000000000..72b20488c74
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_4.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_5.test b/mysql-test/suite/row_lock/t/ndb_row_lock_5.test
new file mode 100644
index 00000000000..045f127a4ef
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_5.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i,t2.i FROM t1 ignore index (ixi),t2 IGNORE INDEX (ixi) WHERE t1.i<125 AND t2.i=t1.i LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_big_tab.test b/mysql-test/suite/row_lock/t/ndb_row_lock_big_tab.test
new file mode 100644
index 00000000000..bf2df104e03
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_big_tab.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < half_t1() AND t2.i=t1.i LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_big_tab.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_1.test b/mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_1.test
new file mode 100644
index 00000000000..4d32991d379
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_1.test
@@ -0,0 +1,7 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $nbrows= 200;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_big_tab_1.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_2.test b/mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_2.test
new file mode 100644
index 00000000000..894a83fc1b0
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_big_tab_2.test
@@ -0,0 +1,7 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $nbrows= 200;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i < t1.k % 2 = 0 AND t2.k=t1.k LOCK IN SHARE MODE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_big_tab_2.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_trig_1.test b/mysql-test/suite/row_lock/t/ndb_row_lock_trig_1.test
new file mode 100644
index 00000000000..a5586a6101e
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_trig_1.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_trig.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_trig_2.test b/mysql-test/suite/row_lock/t/ndb_row_lock_trig_2.test
new file mode 100644
index 00000000000..7af13697ccc
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_trig_2.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_trig.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_view_1.test b/mysql-test/suite/row_lock/t/ndb_row_lock_view_1.test
new file mode 100644
index 00000000000..a1aaf5ab441
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_view_1.test
@@ -0,0 +1,7 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view.inc
+
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_view_2.test b/mysql-test/suite/row_lock/t/ndb_row_lock_view_2.test
new file mode 100644
index 00000000000..b8feef693e7
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_view_2.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_1.test b/mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_1.test
new file mode 100644
index 00000000000..a97626048d3
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_1.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i,t2.i FROM t1,t2 WHERE t1.i<125 AND t2.i=t1.i FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_mix.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_2.test b/mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_2.test
new file mode 100644
index 00000000000..e7a9a715785
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_view_mix_2.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT v1.i FROM v1 WHERE v1.i<125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_mix.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_1.test b/mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_1.test
new file mode 100644
index 00000000000..f57bcb3dd1b
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_1.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_storedp.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_2.test b/mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_2.test
new file mode 100644
index 00000000000..b0aaa38fb93
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_view_storedp_2.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_storedp.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_1.test b/mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_1.test
new file mode 100644
index 00000000000..9c4128d78bf
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_1.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= CREATE INDEX ixi ON t1 (i);
+let $indext2= CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_trig.inc
diff --git a/mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_2.test b/mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_2.test
new file mode 100644
index 00000000000..38c9472fb3d
--- /dev/null
+++ b/mysql-test/suite/row_lock/t/ndb_row_lock_view_trig_2.test
@@ -0,0 +1,6 @@
+--source include/have_ndb.inc
+let $engine= NDB;
+let $select= SELECT t1.i FROM t1 WHERE t1.i< 125 FOR UPDATE;
+let $indext1= #CREATE INDEX ixi ON t1 (i);
+let $indext2= #CREATE INDEX ixi ON t2 (i);
+--source suite/row_lock/include/row_lock_view_trig.inc