################################################################################
# t/partition_supported_sql_funcs_main.inc                                     #
#                                                                              #
# Purpose:                                                                     #
#  Tests which SQL functions are allowed in partinioning clauses.              #
#                                                                              #
#                                                                              #
#------------------------------------------------------------------------------#
# Original Author: HH                                                          #
# Original Date: 2006-11-22                                                    #
# 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                           # 
# "part_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 = part_supported_sql_funcs_int_int.inc;
let $val1 =  5 ;
let $val2 = 13 ;
let $val3 = 17 ;
let $val4 = 15 ;
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = mod(col1,10);
let $valsqlfunc = mod(15,10);
let $coltype = int;
let $infile = part_supported_sql_funcs_int_int.inc;
let $val1 =  5;
let $val2 = 19;
let $val3 = 17;
let $val4 = 15 ;
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = day(col1);
let $valsqlfunc = day('2006-12-21');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '2006-02-03';
let $val2 =  '2006-01-17';
let $val3 =  '2006-01-25';
let $val4 =  '2006-02-05';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = dayofmonth(col1);
let $valsqlfunc = dayofmonth('2006-12-24');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '2006-02-03';
let $val2 =  '2006-01-17';
let $val3 =  '2006-01-25';
let $val4 =  '2006-02-05';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = dayofweek(col1);
let $valsqlfunc = dayofweek('2006-12-24');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '2006-01-03';
let $val2 =  '2006-02-17';
let $val3 =  '2006-01-25';
let $val4 =  '2006-02-05';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = dayofyear(col1);
let $valsqlfunc = dayofyear('2006-12-25');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '2006-01-03';
let $val2 =  '2006-01-17';
let $val3 =  '2006-02-25';
let $val4 =  '2006-02-05';
--source suite/parts/inc/partition_supported_sql_funcs.inc
# Disabled after fixing bug#54483.
#let $coltype = char(30);
#--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = extract(month from col1);
let $valsqlfunc = extract(year from '1998-11-23');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '2006-01-03';
let $val2 =  '2006-02-17';
let $val3 =  '2006-01-25';
let $val4 =  '2006-02-05';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = hour(col1);
let $valsqlfunc = hour('18:30');
let $coltype = time;
let $infile = part_supported_sql_funcs_int_time.inc;
let $val1 =  '09:09';
let $val2 =  '14:30';
let $val3 =  '21:59';
let $val4 =  '10:30';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = microsecond(col1);
let $valsqlfunc = microsecond('10:30:10.000010');
let $coltype = time(6);
let $infile = part_supported_sql_funcs_int_time.inc;
let $val1 =  '09:09:15.000002';
let $val2 =  '04:30:01.000018';
let $val3 =  '00:59:22.000024';
let $val4 =  '05:30:34.000037';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = minute(col1);
let $valsqlfunc = minute('18:30');
let $coltype = time;
let $val1 =  '09:09:15';
let $val2 =  '14:30:45';
let $val3 =  '21:59:22';
let $val4 =  '10:24:23';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = second(col1);
let $valsqlfunc = second('18:30:14');
let $coltype = time;
let $infile = part_supported_sql_funcs_int_time.inc;
let $val1 =  '09:09:09';
let $val2 =  '14:30:20';
let $val3 =  '21:59:22';
let $val4 =  '10:22:33';
--source suite/parts/inc/partition_supported_sql_funcs.inc
# second(non_time_col) is disabled after bug#54483.
#let $coltype = char(30);
#--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = month(col1);
let $valsqlfunc = month('2006-10-14');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '2006-01-03';
let $val2 =  '2006-12-17';
let $val3 =  '2006-05-25';
let $val4 =  '2006-11-06';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = quarter(col1);
let $valsqlfunc = quarter('2006-10-14');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '2006-01-03';
let $val2 =  '2006-12-17';
let $val3 =  '2006-09-25';
let $val4 =  '2006-07-30';
--source suite/parts/inc/partition_supported_sql_funcs.inc

# time_to_sec() is now a double function, so it can't be portioned upon
--disable_parsing
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 = part_supported_sql_funcs_int_time.inc;
let $val1 =  '09:09:15';
let $val2 =  '14:30:45';
let $val3 =  '21:59:22';
let $val4 =  '10:33:11';
--source suite/parts/inc/partition_supported_sql_funcs.inc
--enable_parsing

# to_days(non_date_col) is disabled after bug#54483.
#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 = part_supported_sql_funcs_int_date.inc;
#let $val1 =  '2006-02-03';
#let $val2 =  '2006-01-17';
#let $val3 =  '2006-01-25';
#let $val4 =  '2006-02-06';
#--source suite/parts/inc/partition_supported_sql_funcs.inc

# to_days(non_date_col) is disabled after bug#54483.
# DATEDIFF() is implemented as (TO_DAYS(d1) - TO_DAYS(d2))
#let $sqlfunc = datediff(col1, '2006-01-01');
#let $valsqlfunc = datediff('2006-02-02', '2006-01-01');
#let $coltype = date;
#let $infile = part_supported_sql_funcs_int_date.inc;
#let $val1 =  '2006-02-03';
#let $val2 =  '2006-01-17';
#let $val3 =  '2006-01-25';
#let $val4 =  '2006-02-06';
#--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = weekday(col1);
let $valsqlfunc = weekday('2006-10-14');
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '2006-12-03';
let $val2 =  '2006-11-17';
let $val3 =  '2006-05-25';
let $val4 =  '2006-02-06';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = year(col1)-1990;
let $valsqlfunc = year('2005-10-14')-1990;
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '1996-01-03';
let $val2 =  '2000-02-17';
let $val3 =  '2004-05-25';
let $val4 =  '2002-02-15';
--source suite/parts/inc/partition_supported_sql_funcs.inc

let $sqlfunc = yearweek(col1)-200600;
let $valsqlfunc = yearweek('2006-10-14')-200600;
let $coltype = date;
let $infile = part_supported_sql_funcs_int_date.inc;
let $val1 =  '2006-01-03';
let $val2 =  '2006-08-17';
let $val3 =  '2006-03-25';
let $val4 =  '2006-11-15';
--source suite/parts/inc/partition_supported_sql_funcs.inc
