diff options
Diffstat (limited to 'mysql-test/misc/mysql-test_V1.9.pl')
-rw-r--r-- | mysql-test/misc/mysql-test_V1.9.pl | 1121 |
1 files changed, 0 insertions, 1121 deletions
diff --git a/mysql-test/misc/mysql-test_V1.9.pl b/mysql-test/misc/mysql-test_V1.9.pl deleted file mode 100644 index 129ec41b4d5..00000000000 --- a/mysql-test/misc/mysql-test_V1.9.pl +++ /dev/null @@ -1,1121 +0,0 @@ -#!/usr/bin/perl -# -# Tests MySQL. Output is given to the stderr. Use -# diff to check the possible differencies. -# - -use DBI; -use Getopt::Long; - -$VER = "1.9"; -$| = 1; - -$opt_db = "test"; -$opt_user = $opt_password = $opt_without = ""; -$opt_host = "localhost"; -$opt_port = "3306"; -$opt_socket = "/tmp/mysql.sock"; -$opt_help = 0; - -$NO_ERR = 0; # No error -$EXP_ERR = 1; # Expect error -$MAY_ERR = 2; # Maybe error -$HS = 0; # Horizontal style of output -$VS = 1; # Vertical style of output -$VERBOSE = 0; # Print the results -$SILENT = 1; # No output - -@test_packages = ("FUNC", "PROC", "SHOW"); - -#### -#### main program -#### - -main(); - -sub main() -{ - GetOptions("help", "db=s", "port=i", "host=s", "password=s", "user=s", "socket=s", - "without=s") || usage(); - - usage() if ($opt_help); - - $dbh = DBI->connect("DBI:mysql:$opt_db:$opt_host:port=$opt_port:mysql_socket=$opt_socket", $opt_user, $opt_password, { PrintError => 0 }) - || die $DBI::errstr; - -## QQ ###################################### - -$sth = $dbh->prepare("show felds from t2") -|| die "Couldn't prepare query: $DBI::errstr\n"; -if (!$sth->execute) -{ - print "Couldn't execute query: $DBI::errstr\n"; - $sth->finish; - die; -} -while (($row = $sth->fetchrow_arrayref)) -{ - print "$row->[1]\n"; -} - - -exit(0); - -## QQ ###################################### - - printf("####\n#### THIS IS mysql-test script RUNNING\n"); - printf("#### mysql-test version $VER\n####\n"); - - test_mysql_functions() if (&chk_package($opt_without, $test_packages[0])); - test_mysql_procedures() if (&chk_package($opt_without, $test_packages[1])); - test_mysql_show() if (&chk_package($opt_without, $test_packages[2])); - - print "\n"; - return; -} - -#### -#### test show -command of MySQL -#### - -sub test_mysql_show -{ - my ($query, $i); - - $query = create_show_tables(); - &exec_query(["drop table my_t"], $MAY_ERR, $SILENT); - for ($i = 0; $query[$i]; $i++) - { - &exec_query([$query[$i]], $NO_ERR, $VERBOSE, $HS); - &exec_query(["show fields from my_t"], $NO_ERR, $VERBOSE, $HS); - &exec_query(["show keys from my_t"], $NO_ERR, $VERBOSE, $HS); - &exec_query(["drop table my_t"], $NO_ERR, $SILENT); - } -} - -sub create_show_tables -{ - my ($query, $i); - - $query[0] = <<EOF; -create table my_t (i int, f float, s char(64), b blob, t text) -EOF - $query[1] = <<EOF; -create table my_t (i int, f float, s char(64), b blob, t text, primary key (i)) -EOF - $query[2] = <<EOF; -create table my_t (i int, f float, s char(64), b blob, t text, unique (i), unique(s)) -EOF - for ($i = 0; $query[$i]; $i++) { chop($query[$i]); } - return $query; -} - -#### -#### test procedures, currently only procedure analyze() -#### - -sub test_mysql_procedures -{ - test_analyze(); -} - -sub test_analyze -{ - my ($query, $i, $j); - - if ($opt_help) - { - usage(); - } - # invalid queries - &exec_query(["select * from mails procedure analyse(-1)"], - $EXP_ERR, $VERBOSE, $HS); - &exec_query(["select * from mails procedure analyse(10, -1)"], - $EXP_ERR, $VERBOSE, $HS); - &exec_query(["select * from mails procedure analyse(1, 2, 3)"], - $EXP_ERR, $VERBOSE, $HS); - &exec_query(["select * from mails procedure analyse(-10, 10)"], - $EXP_ERR, $VERBOSE, $HS); - &exec_query(["select * from mails procedure analyse('a', 'a')"], - $EXP_ERR, $VERBOSE, $HS); - # valid queries -# &exec_query(["select * from mails procedure analyse(10)"], 0, 0); -# &exec_query(["select * from mails procedure analyse(10, 10)"], 0, 0); -# &exec_query(["select hash from mails procedure analyse()"], 0, 0); - &exec_query(["use mysql_test"], $NO_ERR, $VERBOSE, $HS); -# &exec_query(["select timestamp from w32_user procedure analyse(0)"], 0, 0); - $query = create_test_tables(); - &exec_query(["drop table my_t"], $MAY_ERR, $SILENT); - for ($i = 0; $query[$i][0]; $i++) - { - &exec_query([$query[$i][0]], $NO_ERR, $SILENT); # create table - for ($j = 1; $query[$i][$j]; $j++) - { - &exec_query([$query[$i][$j]], $NO_ERR, $SILENT); # do inserts - } - &exec_query(["select * from my_t procedure analyse(0,0)"], - $NO_ERR, $VERBOSE, $HS); - &exec_query(["select * from my_t procedure analyse()"], - $NO_ERR, $VERBOSE, $HS); - &exec_query(["drop table my_t"], $NO_ERR, $SILENT); - } -} - -#### -#### if $opt is found as a part from the '--without=...' option string -#### return 0, else 1. if zero is returned, then that part of MySQL -#### won't be tested -#### - -sub chk_package -{ - my ($opt_str, $opt) = @_; - - $sub_opt_str = ''; - for ($i = 0, $ptr = substr($opt_str, $i, 1); $ptr || $ptr eq '0'; - $i++, $ptr = substr($opt_str, $i, 1)) - { - $sub_opt_str .= $ptr; - if ($sub_opt_str eq $opt) - { - $next_chr = substr($opt_str, ($i + 1), 1); - if ($next_chr eq ',' || (!$next_chr && $next_chr ne '0')) - { - return 0; - } - } - if ($ptr eq ',') - { - # next word on the opt_str - $sub_opt_str = ''; - } - } - return 1; -} - -#### -#### Tests given function(s) with given value(s) $count rounds -#### If function doesn't have an arg, test it once and continue. -#### ulargs (number of unlimited args) is the number of arguments -#### to be placed in place of '.' . '.' means that any number -#### of the last argument type is possible to the function. -#### If force is given, never mind about errors -#### args: $func: list of functions to be tested -#### $value: list of values to be used with functions -#### $count: number of times one function should be tested -#### $ulargs: number of unlimited args to be used when possible -#### $table_info: information about the table to be used, contains: -#### table name, info about the fields in the table, for example: -#### [mysql_test1, "Zi", "Rd"], where mysql_test1 is the name of the -#### table, "Zi" tells, that the first field name is 'i' and it is -#### type 'Z' (integer), see test_mysql_functions, 'Rd' tells that -#### the second field name is 'd' and the type is 'R' (real number) -#### $force: if given, never mind about errors -#### $mix: if 0, use the same argument at a time in a -#### function that has two or more same type arguments -#### if 1, use different values -#### - -sub test_func() -{ - my ($func, $value, $count, $ulargs, $table_info, $force, $mix) = @_; - my ($query, $i, $j, $k, $no_arg, $row, $ulimit, $tbinfo, $tbused, $arg); - - if (!$func->[0][0]) - { - printf("No function found!\n"); - if (!$force) { die; } - } - - for ($i = 0; $func->[$i][0]; $i++) - { - $tbused = 0; - $no_arg = 0; - for ($j = 0; $j < $count && !$no_arg; $j++) - { - if ($tbused || $no_arg) { next; } - $query = "select $func->[$i][0]("; - #search the values for the args - for ($k = 0; $k < length($func->[$i][1]) && !$no_arg; $k++) - { - if ($mix) - { - $arg = $j + 1 + $k; - } - else - { - $arg = $j + 1; - } - if (substr($func->[$i][1], $k, 1) eq 'E') - { - $no_arg = 1; - next; - } - if ($k) { $query .= ','; } - - if (substr($func->[$i][1], $k, 1) eq 'S') - { - $query .= &find_value(\@value, 'S', $arg); - } - elsif (substr($func->[$i][1], $k, 1) eq 'N') - { - $query .= &find_value(\@value, 'N', $arg); - } - elsif (substr($func->[$i][1], $k, 1) eq 'Z') - { - $query .= &find_value(\@value, 'Z', $arg); - } - elsif ((substr($func->[$i][1], $k, 1) eq 'R')) - { - $query .= &find_value(\@value, 'R', $arg); - } - elsif (substr($func->[$i][1], $k, 1) eq 'T') - { - $query .= &find_value(\@value, 'T', $arg); - } - elsif (substr($func->[$i][1], $k, 1) eq 'D') - { - $query .= &find_value(\@value, 'D', $arg); - } - elsif (substr($func->[$i][1], $k, 1) eq 'B') - { - $query .= &find_value(\@value, 'B', $arg); - } - elsif (substr($func->[$i][1], $k, 1) eq 'C') - { - $query .= &find_value(\@value, 'C', $arg); - } - elsif (substr($func->[$i][1], $k, 1) eq 'F') - { - $query .= &find_value(\@value, 'F', $arg); - } - elsif (substr($func->[$i][1], $k, 1) eq '.') - { - chop($query); - for ($ulimit = 0; $ulimit < $ulargs; $ulimit++) - { - $query .= ','; - $query .= &find_value(\@value, - substr($func->[$i][1], $k - 1, 1), - $j + $ulimit + 2); - } - } - elsif (substr($func->[$i][1], $k, 1) eq 'A') - { - for ($tbinfo = 1; substr($table_info->[$tbinfo], 0, 1) ne - substr($func->[$i][1], $k + 1, 1); $tbinfo++) - { - if (!defined($table_info->[$tbinfo])) - { - printf("Illegal function structure!\n"); - printf("A table was needed, but no type specified!\n"); - printf("Unready query was: $query\n"); - if (!$force) { die; } - else { next; } - } - } - if ($k) { $query .= ","; } - $query .= substr($table_info->[$tbinfo], 1, - length($table_info->[$tbinfo]) - 1); - $k++; - $tbused = 1; - } - else - { - printf("Not a valid type: \n"); - printf(substr($func->[$i][1], $k, 1)); - printf("\nAttempted to be used with unready query: \n"); - printf("$query\n"); - } - } - $query .= ")"; - if ($tbused) - { - $query .= " from "; - $query .= $table_info->[0]; - } - if (!($sth = $dbh->prepare($query))) - { - printf("Couldn't prepare: $query\n"); - if (!$force) { die; } - } - if (!$sth->execute) - { - printf("Execution failed: $DBI::errstr\n"); - printf("Attempted query was:\n$query\n"); - $sth->finish; - if (!$force) { die; } - } - else - { - printf("mysql> $query;\n"); - display($sth, 1); - printf("Query OK\n\n"); - } - } - } -} - -#### -#### mk_str returns a string where the first arg is repeated second arg times -#### if repeat is 1, return the original str -#### - -sub mk_str() -{ - my ($str, $repeat) = @_; - my ($res_str); - - if ($repeat <= 0) - { - die "Invalid repeat times!\n"; - } - - for ($repeat--, $res_str = $str; $repeat > 0; $repeat--) - { - $res_str .= $str; - } - return $res_str; -} - -#### -#### find_value: returns a value from list of values -#### args: $values: list of values -#### $type: type of argument (S = string, N = integer etc.) -#### $ordinal: the ordinal number of an argument in the list -#### - -sub find_value() -{ - my ($values, $type, $ordinal) = @_; - my ($total, $i, $j, $tmp, $val); - - $total = -1; # The first one is the type - - for ($i = 0; $values[$i][0]; $i++) - { - if ($values[$i][0] eq $type) - { - $tmp = $values[$i]; - foreach $val (@$tmp) { $total++; } - for ( ;$total < $ordinal; ) - { - $ordinal -= $total; - } - return $values[$i][$ordinal]; - } - } - printf("No type '$type' found in values\n"); - die; -} - -#### -#### exec_query: execute a query, print information if wanted and exit -#### args: $queries: list of queries to be executed -#### $expect_error: if 0, error is not expected. In this case if an -#### error occurs, inform about it and quit -#### if 1, error is expected. In this case if sql server -#### doesn't give an error message, inform about it -#### and quit -#### if 2, error may happen or not, don't care -#### $silent: if true, reduce output -#### $style: type of output, 0 == horizontal, 1 == vertical -#### - -sub exec_query() -{ - my ($queries, $expect_error, $silent, $style) = @_; - my ($query); - - foreach $query (@$queries) - { - if (!($sth = $dbh->prepare($query))) - { - printf("Couldn't prepare: $query\n"); - die; - } - if (!$sth->execute) - { - if ($expect_error == 1) - { - printf("An invalid instruction was purposely made,\n"); - printf("server failed succesfully:\n"); - printf("$DBI::errstr\n"); - printf("Everything OK, continuing...\n"); - return; - } - if ($expect_error != 2) - { - printf("Execution failed: $DBI::errstr\n"); - printf("Attempted query was:\n$query\n"); - die; - } - } - if ($expect_error == 1) - { - printf("An invalid instruction was purposely made,\n"); - printf("server didn't note, ALARM!\n"); - printf("The query made was: $query\n"); - printf("The output from the server:\n"); - } - if ($expect_error == 2) { return; } - if (!$silent) { printf("mysql> $query;\n"); } - display($sth, $style); - if (!$silent) { printf("Query OK\n\n"); } - if ($expect_error) { die; } - } - return; -} - -#### -#### Display to stderr -#### Args: 1: ($sth) statememt handler -#### 2: ($style) 0 == horizontal style, 1 == vertical style -#### - -sub display() -{ - my ($sth, $style) = @_; - my (@data, @max_length, $row, $nr_rows, $nr_cols, $i, $j, $tmp, $mxl); - - # Store the field names and values in @data. - # Store the max field lengths in @max_length - for ($i = 0; ($row = $sth->fetchrow_arrayref); $i++) - { - if (!$i) - { - $nr_cols = $#$row; - for ($j = 0; $j <= $#$row; $j++) - { - $data[$i][$j] = $sth->{NAME}->[$j]; - $max_length[$j] = length($data[$i][$j]); - } - $i++; - } - for ($j = 0; $j <= $#$row; $j++) - { - $data[$i][$j] = $row->[$j]; - $max_length[$j] = $tmp if ($max_length[$j] < - ($tmp = length($data[$i][$j]))); - } - } - if (!($nr_rows = $i)) - { - return; - } - # Display data - if ($style == 0) - { - for ($i = 0; $i < $nr_rows; $i++) - { - if (!$i) - { - for ($j = 0; $j <= $nr_cols; $j++) - { - print "+"; print "-" x ($max_length[$j] + 2); - } - print "+\n"; - } - print "|"; - for ($j = 0; $j <= $nr_cols; $j++) - { - print " "; - if (defined($data[$i][$j])) - { - print $data[$i][$j]; - $tmp = length($data[$i][$j]); - } - else - { - print "NULL"; - $tmp = 4; - } - print " " x ($max_length[$j] - $tmp); - print " |"; - } - print "\n"; - if (!$i) - { - for ($j = 0; $j <= $nr_cols; $j++) - { - print "+"; print "-" x ($max_length[$j] + 2); - } - print "+\n"; - } - } - for ($j = 0; $j <= $nr_cols; $j++) - { - print "+"; print "-" x ($max_length[$j] + 2); - } - print "+\n"; - return; - } - if ($style == 1) - { - for ($i = 0; $max_length[$i]; $i++) - { - $mxl = $max_length[$i] if ($mxl < $max_length[$i]); - } - - for ($i = 1; $i < $nr_rows; $i++) - { - print "*" x 27; - print " " . $i . ". row "; - print "*" x 27; - print "\n"; - for ($j = 0; $j <= $nr_cols; $j++) - { - print " " x ($mxl - length($data[0][$j])); - print "$data[0][$j]: "; - if (defined($data[$i][$j])) - { - print "$data[$i][$j] \n"; - } - else - { - print "NULL\n"; - } - } - } - return; - } -} - -#### -#### usage -#### - -sub usage -{ - print <<EOF; -mysql-test $VER by Jani Tolonen - -Usage: mysql-test [options] - -Options: ---help Show this help ---db= Database to use (Default: $opt_db) ---port= TCP/IP port to use for connection (Default: $opt_port) ---socket= UNIX socket to use for connection (Default: $opt_socket) ---host= Connect to host (Default: $opt_host) ---user= User for login if not current user ---password Password to use when connecting to server - ---without=PART_NAME1,PART_NAME2,... - test without a certain part of MySQL, optional parts listed below - -Optional parts: - -FUNC Ignore MySQL basic functions -PROC Ignore MySQL procedure functions -EOF - exit(0); -} - - -sub test_mysql_functions -{ - - #### - #### MySQL functions - #### - #### Types: S = string (or real number) , N = unsigned integer, Z = integer, - #### R = real number, T = time_stamp, E = no argument, D = date, - #### B = boolean, C = character - #### F = format (usually used with the date-types) - #### . = any number of the last argument type possible - #### A = require table for test, the following argument - #### is the argument for the function - - # Muista get_lock,group_unique_users, - # position, unique_users - - # ks. kaikki date function, kerää yhteen, testaa erikseen - # adddate, date_add, subdate, date_sub, between, benchmark, count - - # decode, encode, get_lock, make_set, position - - @functions = (["abs","R"],["acos","R"],["ascii","C"],["asin","R"], - ["atan","R"],["atan2","R"],["avg","AR"],["bin","Z"], - ["bit_count","Z"],["bit_or","AZ"],["bit_and","AZ"], - ["ceiling","R"],["char","N."],["char_length","S"], - ["concat","SS."],["conv","ZZZ"], - ["cos","R"],["cot","R"],["curdate","E"], - ["curtime","E"],["database","E"],["date_format","DF"], - ["dayofmonth","D"],["dayofyear","D"],["dayname","D"], - ["degrees","R"],["elt","NS."],["encode","SS"], - ["encrypt","S"],["encrypt","SS"],["exp","R"],["field","SS."], - ["find_in_set","SS"],["floor","R"],["format","RN"], - ["from_days","N"],["from_unixtime","N"], - ["from_unixtime","NF"],["greatest","RR."],["hex","Z"], - ["hour","D"],["if","ZSS"],["ifnull","SS"],["insert","SNNS"], - ["instr","SS"],["interval","RR."],["isnull","S"], - ["last_insert_id","E"],["lcase","S"],["least","RR."], - ["left","SN"],["length","S"],["locate","SS"], - ["log","R"],["log10","R"],["lpad","SNS"],["ltrim","S"], - ["max","AR"],["mid","SNN"],["min","AR"],["minute","D"], - ["mod","ZZ"],["monthname","D"], - ["month","D"],["now","E"],["oct","Z"], - ["octet_length","S"],["password","S"],["period_add","DD"], - ["period_diff","DD"],["pi","E"], - ["pow","RR"],["quarter","D"],["radians","R"], - ["rand","E"],["rand","R"],["release_lock","S"], - ["repeat","SN"],["replace","SSS"],["reverse","S"], - ["right","SN"],["round","R"],["round","RN"], - ["rpad","SNS"],["rtrim","S"],["sec_to_time","N"], - ["second","T"],["sign","R"],["sin","R"], - ["space","N"],["soundex","S"],["sqrt","R"],["std","AR"], - ["strcmp","SS"],["substring","SN"],["substring","SNN"], - ["substring_index","SSZ"],["sum","AR"], - ["tan","R"],["time_format","TF"],["time_to_sec","T"], - ["to_days","D"],["trim","S"], - ["truncate","RN"],["ucase","S"], - ["unix_timestamp","E"],["unix_timestamp","D"],["user","E"], - ["version","E"],["week","D"],["weekday","D"],["year","D"]); - - #### - #### Various tests for the functions above - #### - - &exec_query(["drop table mysql_test1"], $MAY_ERR, $SILENT); - - $query .= <<EOF; -create table mysql_test1 ( - i int, - d double -) -EOF - chop($query); - &exec_query([$query], $NO_ERR, $SILENT); - - #### - #### Basic tests - #### - - printf("####\n#### BASIC TESTS FOR FUNCTIONS\n####\n\n"); - - @bunch = ("insert into mysql_test1 values(-20,-10.5),(20,10.5),(50,100.00)", - "insert into mysql_test1 values(100,500.333)"); - &exec_query(\@bunch, $NO_ERR, $SILENT); - - printf("\n####\n#### First basic test part\n####\n\n"); - - @values = (["S", "'a'", "'abc'", "'abc def'", "'abcd'", "'QWERTY'", - "'\\\\'", "'*.!\"#¤%&/()'", "'" . &mk_str('a',1024) . "'", - "?", "<>", "#__#"], - ["N", -1000, -500, -100, -1, 0, 1, 40, 50, 70, 90, - 100, 500, 1000], - ["Z", -100, -50, 200, 1000], - ["R", -500.5, -10.333, 100.667, 400.0], - ["T", 19980728154204, 19980728154205, 19980728154206, - 19980728154207], - ["D", "'1997-12-06'", "'1997-12-07'", "'1997-12-08'", - "'1997-12-09'"], - ["B", 1, 0, 0, 1], - ["C", "'a'", "'e'", "'r'", "'q'"], - ["F", "'%a'", "'%b'", "'%d'", "'%H'"]); - &test_func(\@functions, \@values, 4, 5, ["mysql_test1","Zi","Rd"]); - - printf("\n####\n#### Second basic test part\n####\n\n"); - - @values = (["S", "'a'", "'BC'", "'def'", "'HIJK'", "'lmnop'", "'QRSTUV'"], - ["N", 0, 1, 2, 3, 4, 5], - ["Z", 0, 1, 2, 3, 4, 5], - ["R", 0, 1, 2, 3, 4, 5], - ["T", 19990608234530, 20000709014631, 20010810024732, - 20020911034833, 20031012044934, 20041113055035], - ["D", "'1999-06-08'", "'2000-07-09'", "'2001-08-10'", - "'2002-09-11'", "'2003-10-12'", "'2004-11-13'"], - ["B", 0, 1, 0, 1, 0, 1], - ["C", "'a'", "'BC'", "'def'", "'HIJK'", "'lmnop'", "'QRSTUV'"], - ["F", "'%a'", "'%b'", "'%d'", "'%h'", "'%H'", "'%i'"]); - &test_func(\@functions, \@values, 6, 6, ["mysql_test1","Zi","Rd"], 0, 1); - - printf("\n####\n#### Third basic test part\n####\n\n"); - - @values = (["S", "'Monty'", "'Jani'", "'MySQL'", "''"], - ["N", 10, 54, -70, -499], - ["Z", 11.03, "'Abo'", 54.333, "''"], - ["R", 12, "'gnome'", -34.211, "''"], - ["T", 3, "'Redhat'", -19984021774433, "''"], - ["D", "'1990-01-31'", "'-3333-10-23'", -5631_23_12, "''"], - ["B", 0, "'asb'", -4, "''"], - ["C", "'a'", 503, -45353453, "''"], - ["F", "'%a'", -231, "'Mitsubishi'", "''"]); - &test_func(\@functions, \@values, 3, 3, ["mysql_test1","Zi","Rd"], 0, 1); - - &exec_query(["delete from mysql_test1"], $NO_ERR, $SILENT); - - #### - #### Null tests - #### - - printf("\n\n####\n#### NULL TESTS FOR FUNCTIONS\n####\n\n\n"); - - &exec_query(["insert into mysql_test1 values(null,null)"], $NO_ERR, - $SILENT); - @values = (["S", "NULL"], - ["N", "NULL"], - ["Z", "NULL"], - ["R", "NULL"], - ["T", "NULL"], - ["D", "NULL"], - ["B", "NULL"], - ["C", "NULL"], - ["F", "NULL"]); - &test_func(\@functions, \@values, 1, 5, ["mysql_test1","Zi","Rd"], 1); - &exec_query(["delete from mysql_test1"], $NO_ERR, $SILENT); - - #### - #### Tests to fulfill the main part of function tests above - #### - - printf("\n\n####\n#### FULFILL TESTS \n####\n\n\n"); - - &exec_query(["drop table my_t"], $MAY_ERR, $SILENT); - &exec_query(["create table my_t (s1 char(64), s2 char(64))"], - $NO_ERR, $VERBOSE, $HS); - $query = <<EOF; -insert into my_t values('aaa','aaa'),('aaa|qqq','qqq'),('gheis','^[^a-dXYZ]+\$'),('aab','^aa?b'),('Baaan','^Ba*n'),('aaa','qqq|aaa'),('qqq','qqq|aaa'),('bbb','qqq|aaa'),('bbb','qqq'),('aaa','aba'),(null,'abc'),('def',null),(null,null),('ghi','ghi[') -EOF - chop($query); - &exec_query([$query], $NO_ERR, $VERBOSE, $HS); - &exec_query(["select s1 regexp s2 from my_t"], - $NO_ERR, $VERBOSE, $HS); - - - #### - #### ["position","SS"], - #### - -} - -sub create_test_tables -{ - $query[0][0] = <<EOF; - CREATE TABLE my_t ( - auto int(5) unsigned DEFAULT '0' NOT NULL auto_increment, - string varchar(10) DEFAULT 'hello', - binary_string varchar(10) binary DEFAULT '' NOT NULL, - tiny tinyint(4) DEFAULT '0' NOT NULL, - short smallint(6) DEFAULT '1' NOT NULL, - medium mediumint(8) DEFAULT '0' NOT NULL, - longint int(11) DEFAULT '0' NOT NULL, - longlong bigint(13) DEFAULT '0' NOT NULL, - num decimal(5,2) DEFAULT '0.00' NOT NULL, - num_fill decimal(6,2) unsigned zerofill DEFAULT '0000.00' NOT NULL, - real_float float(13,1) DEFAULT '0.0' NOT NULL, - real_double double(13,1), - utiny tinyint(3) unsigned DEFAULT '0' NOT NULL, - ushort smallint(5) unsigned zerofill DEFAULT '00000' NOT NULL, - umedium mediumint(8) unsigned DEFAULT '0' NOT NULL, - ulong int(11) unsigned DEFAULT '0' NOT NULL, - ulonglong bigint(13) unsigned DEFAULT '0' NOT NULL, - zero int(5) unsigned zerofill, - time_stamp timestamp(14), - date_field date, - time_field time, - date_time datetime, - blob_col blob, - tinyblob_col tinyblob, - mediumblob_col mediumblob NOT NULL, - longblob_col longblob NOT NULL, - options enum('one','two','three'), - flags set('one','two','three'), - PRIMARY KEY (auto) -) -EOF - chop($query[0][0]); - $query[0][1] = <<EOF; - INSERT INTO my_t VALUES (1,'hello','',0,1,0,0,0,0.00,0000.00,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154204,NULL,'01:00:00', - NULL,NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][1]); - $query[0][2] = <<EOF; - INSERT INTO my_t VALUES (2,'hello','',0,1,0,0,0,0.00,0000.00, - -340282346638528859811704183484516925440.0,NULL,0, - 00000,0,0,0,NULL,19980728154205,NULL,NULL,NULL,NULL, - NULL,'','',NULL,NULL) -EOF - chop($query[0][2]); - $query[0][3] = <<EOF; - INSERT INTO my_t VALUES (3,'hello','',0,1,0,0,0,0.00,0000.00,0.0,NULL,0,00000, - 0,0,0,NULL,19980728154205,NULL,NULL, - '2002-12-30 22:04:02',NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][3]); - $query[0][4] = <<EOF; - INSERT INTO my_t VALUES (4,'hello','',0,1,0,0,0,0.00,0000.00,0.0,NULL,0,00000, - 0,0,0,NULL,19980728154205,'1997-12-06',NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][4]); - $query[0][5] = <<EOF; - INSERT INTO my_t VALUES (5,'hello','',0,1,0,0,0,0.00,0000.00,0.0,NULL,0,00000, - 0,0,0,NULL,19980728154205,NULL,'20:10:08',NULL,NULL, - NULL,'','',NULL,NULL) -EOF - chop($query[0][5]); - $query[0][6] = <<EOF; - INSERT INTO my_t VALUES (6,'hello','',0,1,0,0,0,-0.22,0000.00,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154205,NULL,NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][6]); - $query[0][7] = <<EOF; - INSERT INTO my_t VALUES (7,'hello','',0,1,0,0,0,-0.00,0000.00,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154205,NULL,NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][7]); - $query[0][8] = <<EOF; - INSERT INTO my_t VALUES (8,'hello','',0,1,0,0,0,+0.00,0000.00,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154205,NULL,NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][8]); - $query[0][9] = <<EOF; - INSERT INTO my_t VALUES (9,'hello','',0,1,0,0,0,+0.90,0000.00,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154205,NULL,NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][9]); - $query[0][10] = <<EOF; - INSERT INTO my_t VALUES (10,'hello','',0,1,0,0,0,-999.99,0000.00,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154206,NULL,NULL,NULL,NULL, - NULL,'','',NULL,NULL) -EOF - chop($query[0][10]); - $query[0][11] = <<EOF; - INSERT INTO my_t VALUES (11,'hello','',127,32767,8388607,2147483647, - 9223372036854775807,9999.99,9999.99, - 329999996548271212625250308919809540096.0,9.0,255, - 65535,16777215,4294967295,18446744073709551615, - 4294967295,00000000000000,'9999-12-31','23:59:59', - '9999-12-31 23:59:59',NULL,NULL,' ',' ','', - 'one,two,three') -EOF - chop($query[0][11]); - $query[0][12] = <<EOF; - INSERT INTO my_t VALUES (12,'hello','',-128,-32768,-8388608,-2147483648, - -9223372036854775808,-999.99,0000.00, - -329999996548271212625250308919809540096.0,10.0,0, - 00000,0,0,0,00000,00000000000000, - '9999-12-31','23:59:59','9999-12-31 23:59:59',NULL, - NULL,' ,-',' ,-','','one,two,three') -EOF - chop($query[0][12]); - $query[0][13] = <<EOF; - INSERT INTO my_t VALUES (13,'hello','',0,1,0,0,0,0.09,0000.00,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154223,NULL,NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][13]); - $query[0][14] = <<EOF; - INSERT INTO my_t VALUES (14,'hello','',0,1,0,0,0,0.00,0000.00,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154223,NULL,NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][14]); - $query[0][15] = <<EOF; - INSERT INTO my_t VALUES (15,'hello','',0,1,0,0,0,0.00,0044.00,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154223,NULL,NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][15]); - $query[0][16] = <<EOF; - INSERT INTO my_t VALUES (16,'hello','',0,1,0,0,0,0.00,9999.99,0.0,NULL,0, - 00000,0,0,0,NULL,19980728154223,NULL,NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][16]); - $query[0][17] = <<EOF; - INSERT INTO my_t VALUES (17,'hello','',127,32767,8388607,2147483647, - 9223372036854775807,9999.99,9999.99, - 329999996548271212625250308919809540096.0,9.0,255, - 65535,16777215,4294967295,18446744073709551615, - 4294967295,00000000000000,'9999-12-31','23:59:59', - '9999-12-31 23:59:59',NULL,NULL,' ',' ','', - 'one,two,three') -EOF - chop($query[0][17]); - $query[0][18] = <<EOF; - INSERT INTO my_t VALUES (18,'hello','',127,32767,8388607,2147483647, - 9223372036854775807,9999.99,9999.99,0.0,NULL,255, - 65535,16777215,4294967295,18446744073709551615, - 4294967295,19980728154224,NULL,NULL,NULL,NULL, - NULL,'','',NULL,NULL) -EOF - chop($query[0][18]); - $query[0][19] = <<EOF; - INSERT INTO my_t VALUES (19,'hello','',127,32767,8388607,2147483647, - 9223372036854775807,9999.99,9999.99,0.0,NULL,255, - 65535,16777215,4294967295,0,4294967295, - 19980728154224,NULL,NULL,NULL,NULL,NULL,'','', - NULL,NULL) -EOF - chop($query[0][19]); - $query[0][20] = <<EOF; - INSERT INTO my_t VALUES (20,'hello','',-128,-32768,-8388608,-2147483648, - -9223372036854775808,-999.99,0000.00,0.0,NULL,0, - 00000,0,0,18446744073709551615,00000,19980728154224, - NULL,NULL,NULL,NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][20]); - $query[0][21] = <<EOF; - INSERT INTO my_t VALUES (21,'hello','',-128,-32768,-8388608,-2147483648, - -9223372036854775808,-999.99,0000.00,0.0,NULL,0, - 00000,0,0,0,00000,19980728154225,NULL,NULL,NULL, - NULL,NULL,'','',NULL,NULL) -EOF - chop($query[0][21]); - $query[0][22] = <<EOF; - INSERT INTO my_t VALUES (22,NULL,'1',1,1,1,1,1,1.00,0001.00,1.0,NULL,1,00001, - 1,1,1,00001,19980728154244,NULL,NULL,NULL,NULL,NULL, - '1','1',NULL,NULL) -EOF - chop($query[0][22]); - $query[0][23] = <<EOF; - INSERT INTO my_t VALUES (23,'2','2',2,2,2,2,2,2.00,0002.00,2.0,2.0,2,00002, - 2,2,2,00002,00000000000000,'0000-00-00','02:00:00', - '0000-00-00 00:00:00','2','2','2','2','','') -EOF - chop($query[0][23]); - $query[0][24] = <<EOF; - INSERT INTO my_t VALUES (24,'3','3',3,3,3,3,3,3.00,0003.00,3.0,3.0,3,00003, - 3,3,3,00003,00000000000000,'2000-00-03','00:00:03', - '0000-00-00 00:00:03','3.00','3.00','3.00','3.00', - 'three','one,two') -EOF - chop($query[0][24]); - $query[0][25] = <<EOF; - INSERT INTO my_t VALUES (25,'-4.7','-4.7',-5,-5,-5,-5,-5,-4.70,0000.00,-4.7, - -4.7,0,00000,0,0,0,00000,00000000000000,'0000-00-00', - '00:00:00','0000-00-00 00:00:00','-4.70','-4.70', - '-4.70','-4.70','','three') -EOF - chop($query[0][25]); - $query[0][26] = <<EOF; - INSERT INTO my_t VALUES (26,'+0.09','+0.09',0,0,0,0,0,+0.09,0000.00,0.1,0.1, - 0,00000,0,0,0,00000,00000000000000,'0000-00-00', - '00:09:00','0000-00-00 00:00:00','+0.09','+0.09', - '+0.09','+0.09','','') -EOF - chop($query[0][26]); - $query[0][27] = <<EOF; - INSERT INTO my_t VALUES (27,'1','1',1,1,1,1,1,1.00,0001.00,1.0,1.0,1,00001, - 1,1,1,00001,00000000000000,'2000-00-01','00:00:01', - '0000-00-00 00:00:01','1','1','1','1','one','one') -EOF - chop($query[0][27]); - $query[0][28] = <<EOF; - INSERT INTO my_t VALUES (28,'-1','-1',-1,-1,-1,-1,-1,-1.00,0000.00,-1.0,-1.0, - 0,00000,0,0,18446744073709551615,00000, - 00000000000000,'0000-00-00','00:00:00', - '0000-00-00 00:00:00','-1','-1','-1','-1','', - 'one,two,three') -EOF - chop($query[0][28]); - $query[0][29] = <<EOF; - INSERT INTO my_t VALUES (29,'','',0,0,0,0,0,0.00,0000.00,0.0,0.0,0,00000,0,0, - 0,00000,00000000000000,'0000-00-00','00:00:00', - '0000-00-00 00:00:00','','','','','','') -EOF - chop($query[0][29]); - $query[1][0] = "CREATE TABLE my_t (str char(64))"; - $query[1][1] = "INSERT INTO my_t VALUES ('5.5')"; - $query[1][2] = "INSERT INTO my_t VALUES ('6.8')"; - $query[2][0] = "CREATE TABLE my_t (str char(64))"; - $query[2][1] = <<EOF; - INSERT INTO my_t VALUES - ('9999999999993242342442323423443534529999.02235000054213') -EOF - chop($query[2][1]); - $query[3][0] = "CREATE TABLE my_t (str char(64))"; - $query[3][1] = <<EOF; - INSERT INTO my_t VALUES - ('8494357934579347593475349579347593845948793454350349543348736453') -EOF - chop($query[3][1]); - $query[4][0] = "CREATE TABLE my_t (d double(20,10))"; - $query[4][1] = "INSERT INTO my_t VALUES (10.0000000000)"; - $query[4][2] = "INSERT INTO my_t VALUES (-10.0000000000)"; - $query[5][0] = "CREATE TABLE my_t (d double(20,10))"; - $query[5][1] = "INSERT INTO my_t VALUES (50000.0000000000)"; - $query[6][0] = "CREATE TABLE my_t (d double(20,10))"; - $query[6][1] = "INSERT INTO my_t VALUES (5000000.0000000000)"; - $query[7][0] = "CREATE TABLE my_t (d double(20,10))"; - $query[7][1] = "INSERT INTO my_t VALUES (500000000.0000000000)"; - $query[8][0] = "CREATE TABLE my_t (d double(20,10))"; - $query[8][1] = "INSERT INTO my_t VALUES (50000000000.0000000000)"; - $query[8][2] = "INSERT INTO my_t VALUES (NULL)"; - $query[9][0] = "CREATE TABLE my_t (d double(60,10))"; - $query[9][1] = "INSERT INTO my_t VALUES (93850983054983462912.0000000000)"; - $query[9][2] = "INSERT INTO my_t VALUES (93850983.3495762944)"; - $query[9][3] = <<EOF; - INSERT INTO my_t VALUES (938509832438723448371221493568778534912.0000000000) -EOF - chop($query[9][3]); - $query[10][0] = "CREATE TABLE my_t (i int(11))"; - $query[10][1] = "INSERT INTO my_t VALUES (-100)"; - $query[10][2] = "INSERT INTO my_t VALUES (-200)"; - $query[11][0] = "CREATE TABLE my_t (s char(64))"; - $query[11][1] = "INSERT INTO my_t VALUES ('100.')"; - $query[12][0] = "CREATE TABLE my_t (s char(64))"; - $query[12][1] = "INSERT INTO my_t VALUES ('1e+50')"; - $query[13][0] = "CREATE TABLE my_t (s char(64))"; - $query[13][1] = "INSERT INTO my_t VALUES ('1E+50u')"; - $query[14][0] = "CREATE TABLE my_t (s char(64))"; - $query[14][1] = "INSERT INTO my_t VALUES ('1EU50')"; - $query[15][0] = "CREATE TABLE my_t (s char(64))"; - $query[15][1] = "INSERT INTO my_t VALUES ('123.000')"; - $query[15][2] = "INSERT INTO my_t VALUES ('123.000abc')"; - $query[16][0] = "CREATE TABLE my_t (s char(128))"; - $query[16][1] = <<EOF; - INSERT INTO my_t VALUES - ('-999999999999999999999999999999999999999999999999999999999999999999999999') -EOF - chop($query[16][1]); - $query[17][0] = "CREATE TABLE my_t (s char(128))"; - $query[17][1] = "INSERT INTO my_t VALUES ('-9999999999999999')"; - $query[18][0] = "CREATE TABLE my_t (s char(128))"; - $query[18][1] = "INSERT INTO my_t VALUES ('28446744073709551615001')"; - $query[18][2] = "INSERT INTO my_t VALUES ('184467440737095516150000000')"; - $query[19][0] = "CREATE TABLE my_t (s char(128))"; - $query[19][1] = "INSERT INTO my_t VALUES ('18446744073709551615')"; - $query[20][0] = "CREATE TABLE my_t (s char(128))"; - $query[20][1] = "INSERT INTO my_t VALUES ('18446744073709551616')"; - $query[21][0] = "CREATE TABLE my_t (s char(64))"; - $query[21][1] = "INSERT INTO my_t VALUES ('00740')"; - $query[21][2] = "INSERT INTO my_t VALUES ('00740.')"; - $query[22][0] = "CREATE TABLE my_t (s char(128))"; - $query[22][1] = "INSERT INTO my_t VALUES ('-18446744073709551615')"; - $query[23][0] = "CREATE TABLE my_t (s char(32))"; - $query[23][1] = "INSERT INTO my_t VALUES ('740')"; - $query[23][2] = "INSERT INTO my_t VALUES ('12345')"; - $query[23][3] = "INSERT INTO my_t VALUES ('12345')"; - $query[24][0] = "CREATE TABLE my_t (s char(32))"; - $query[24][1] = "INSERT INTO my_t VALUES ('00740')"; - $query[24][2] = "INSERT INTO my_t VALUES ('00730')"; - $query[24][3] = "INSERT INTO my_t VALUES ('00720')"; - $query[24][4] = "INSERT INTO my_t VALUES ('12345.02')"; - $query[25][0] = "CREATE TABLE my_t (i bigint(20) unsigned)"; - $query[25][1] = "INSERT INTO my_t VALUES (3000)"; - $query[25][2] = "INSERT INTO my_t VALUES (NULL)"; - $query[25][3] = "INSERT INTO my_t VALUES (900000000003)"; - $query[25][4] = "INSERT INTO my_t VALUES (90)"; - $query[26][0] = "CREATE TABLE my_t (i int(11))"; - $query[26][1] = "INSERT INTO my_t VALUES (NULL)"; - $query[27][0] = "CREATE TABLE my_t (d date)"; - $query[27][1] = "INSERT INTO my_t VALUES ('1999-05-01')"; - $query[28][0] = "CREATE TABLE my_t (y year(4))"; - $query[28][1] = "INSERT INTO my_t VALUES (1999)"; - $query[29][0] = "CREATE TABLE my_t (s char(128))"; - $query[29][1] = "INSERT INTO my_t VALUES ('453453444451.7976')"; - $query[30][0] = "CREATE TABLE my_t (s char(128))"; - $query[30][1] = "INSERT INTO my_t VALUES('')"; - $query[31][0] = "CREATE TABLE my_t (s char(128))"; - $query[31][1] = "INSERT INTO my_t VALUES(' ')"; - return $query; -} |