################################################################################
# t/partition_supported_sql_funcs.inc   #                                                                              #
# Purpose:                                                                     #
#  Tests around sql functions                                                  #
#                                                                              #
#                                                                              #
#------------------------------------------------------------------------------#
# Original Author: HH                                                          #
# Original Date: 2006-11-22                                                    #
# Change Author:                                                               #
# Change Date:                                                                 #
# Change:                                                                      #
################################################################################
--echo -------------------------------------------------------------------------
--echo ---  $sqlfunc  in partition with coltype  $coltype
--echo -------------------------------------------------------------------------
--disable_abort_on_error
--disable_warnings
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 ;
--enable_warnings
--enable_abort_on_error

--echo -------------------------------------------------------------------------
--echo ---  Create tables with $sqlfunc
--echo -------------------------------------------------------------------------
eval create table t1 (col1 $coltype) engine=$engine 
partition by range($sqlfunc) 
(partition p0 values less than (15),
 partition p1 values less than maxvalue);

eval create table t2 (col1 $coltype) engine=$engine 
partition by list($sqlfunc) 
(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)
);

eval create table t3 (col1 $coltype) engine=$engine 
partition by hash($sqlfunc);

eval create table t4 (colint int, col1 $coltype) engine=$engine 
partition by range(colint) 
subpartition by hash($sqlfunc) subpartitions 2 
(partition p0 values less than (15),
 partition p1 values less than maxvalue);

eval create table t5 (colint int, col1 $coltype) engine=$engine 
partition by list(colint)
subpartition by hash($sqlfunc) 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)
);

eval create table t6 (colint int, col1 $coltype) engine=$engine 
partition by range(colint) 
(partition p0 values less than ($valsqlfunc),
 partition p1 values less than maxvalue);

--echo -------------------------------------------------------------------------
--echo ---  Access tables with $sqlfunc 
--echo -------------------------------------------------------------------------

eval insert into t1 values ($val1);
eval insert into t1 values ($val2);

eval insert into t2 values ($val1);
eval insert into t2 values ($val2);
eval insert into t2 values ($val3);

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);

eval insert into t5 values (1,$val1);
eval insert into t5 values (2,$val2);
eval insert into t5 values (3,$val3);

eval insert into t6 values (1,$val2);
eval insert into t6 values (2,$val3);

eval select $sqlfunc from t1;

select * from t1;
select * from t2;
select * from t3;
select * from t4;
select * from t5;
select * from t6;

if ($do_long_tests)
{
	eval update t1 set col1=$val4 where col1=$val1;
	eval update t2 set col1=$val4 where col1=$val1;
	eval update t3 set col1=$val4 where col1=$val1;
	eval update t4 set col1=$val4 where col1=$val1;
	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;
}

--echo -------------------------------------------------------------------------
--echo ---  Alter tables with $sqlfunc
--echo -------------------------------------------------------------------------

--disable_abort_on_error
--disable_warnings
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 ;
--enable_warnings
--enable_abort_on_error

eval create table t11 engine=$engine as select * from t1;
eval create table t22 engine=$engine as select * from t2;
eval create table t33 engine=$engine as select * from t3;
eval create table t44 engine=$engine as select * from t4;
eval create table t55 engine=$engine as select * from t5;
eval create table t66 engine=$engine as select * from t6;
eval alter table t11
partition by range($sqlfunc) 
(partition p0 values less than (15),
 partition p1 values less than maxvalue);
eval alter table t22
partition by list($sqlfunc) 
(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)
);
eval alter table t33
partition by hash($sqlfunc);
eval alter table t44
partition by range(colint) 
subpartition by hash($sqlfunc) subpartitions 2 
(partition p0 values less than (15),
 partition p1 values less than maxvalue);
eval alter table t55
partition by list(colint)
subpartition by hash($sqlfunc) 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)
);
eval alter table t66
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;
 
if ($do_long_tests)
{
	eval alter table t11
	reorganize partition p0,p1 into
	(partition s1 values less than maxvalue);
	select * from t11;

	eval alter table t11
	reorganize partition s1 into
	(partition p0 values less than (15),
	 partition p1 values less than maxvalue);
	select * from t11;

	eval alter table t66
	reorganize partition p0,p1 into
	(partition s1 values less than maxvalue);
	select * from t66;

	eval alter table t66
	reorganize partition s1 into
	(partition p0 values less than ($valsqlfunc),
	 partition p1 values less than maxvalue);
	select * from t66;
	
	eval alter table t66
        reorganize partition p0,p1 into
        (partition s1 values less than maxvalue);
        select * from t66;

        eval alter table t66
        add partition s0 
        (partition p0 values less than ($valsqlfunc);
        select * fromt t66;

	let $t1=t1;
	let $t2=t2;
	let $t3=t3;
	let $t4=t4;
	let $t5=t5;
	let $t6=t6;
	--source suite/partitions/include/partition_supported_sql_funcs_delete.inc
	# --source include/partition_supported_sql_funcs_delete.inc

	let $t1=t11;
	let $t2=t22;
	let $t3=t33;
	let $t4=t44;
	let $t5=t55;
	let $t6=t66;
	--source suite/partitions/include/partition_supported_sql_funcs_delete.inc
	# --source include/partition_supported_sql_funcs_delete.inc
}
--disable_warnings
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 ;
--enable_warnings

