diff options
author | jan@hundin.mysql.fi <> | 2004-10-16 08:17:50 +0300 |
---|---|---|
committer | jan@hundin.mysql.fi <> | 2004-10-16 08:17:50 +0300 |
commit | 3c49aa7cfa77b42ac22b43ce6bcb49db95725117 (patch) | |
tree | ed505de6d4839e7daef26a3abb89829b5b9234d7 /mysql-test | |
parent | f45aacd9a3118c44dffceee4b45568c20dc83119 (diff) | |
parent | 37ab172624222a9c414cb265e4c2eff819fd17f5 (diff) | |
download | mariadb-git-3c49aa7cfa77b42ac22b43ce6bcb49db95725117.tar.gz |
Merge jlindstrom@bk-internal.mysql.com:/home/bk/mysql-4.1
into hundin.mysql.fi:/home/jan/talle/mysql-4.1
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/ps_11bugs.result | 115 | ||||
-rw-r--r-- | mysql-test/t/ps_11bugs.test | 115 |
2 files changed, 213 insertions, 17 deletions
diff --git a/mysql-test/r/ps_11bugs.result b/mysql-test/r/ps_11bugs.result index 2aa0df6a431..c0d7fe502af 100644 --- a/mysql-test/r/ps_11bugs.result +++ b/mysql-test/r/ps_11bugs.result @@ -1,13 +1,10 @@ -use test; -drop table if exists test_select; -Warnings: -Note 1051 Unknown table 'test_select' -CREATE TABLE test_select(session_id char(9) NOT NULL); -INSERT INTO test_select VALUES ("abc"); -SELECT * FROM test_select; +drop table if exists t1, t2; +CREATE TABLE t1(session_id char(9) NOT NULL); +INSERT INTO t1 VALUES ("abc"); +SELECT * FROM t1; session_id abc -prepare st_1180 from 'SELECT * FROM test_select WHERE ?="1111" and session_id = "abc"'; +prepare st_1180 from 'SELECT * FROM t1 WHERE ?="1111" and session_id = "abc"'; set @arg1= 'abc'; execute st_1180 using @arg1; session_id @@ -18,4 +15,104 @@ abc set @arg1= 'abc'; execute st_1180 using @arg1; session_id -drop table test_select; +drop table t1; +create table t1 ( +c_01 char(6), c_02 integer, c_03 real, c_04 int(3), c_05 varchar(20), +c_06 date, c_07 char(1), c_08 real, c_09 int(11), c_10 time, +c_11 char(6), c_12 integer, c_13 real, c_14 int(3), c_15 varchar(20), +c_16 date, c_17 char(1), c_18 real, c_19 int(11), c_20 text); +prepare st_1644 from 'insert into t1 values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; +set @arg01= 'row_1'; +set @arg02= 1; +set @arg03= 1.1; +set @arg04= 111; +set @arg05= 'row_one'; +set @arg06= '2004-10-12'; +set @arg07= '1'; +set @arg08= 1.1; +set @arg09= '100100100'; +set @arg10= '12:34:56'; +set @arg11= 'row_1'; +set @arg12= 1; +set @arg13= 1.1; +set @arg14= 111; +set @arg15= 'row_one'; +set @arg16= '2004-10-12'; +set @arg17= '1'; +set @arg18= 1.1; +set @arg19= '100100100'; +set @arg20= '12:34:56'; +execute st_1644 using @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09, @arg10, +@arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17, @arg18, @arg19, @arg20; +set @arg01= NULL; +set @arg02= NULL; +set @arg03= NULL; +set @arg04= NULL; +set @arg05= NULL; +set @arg06= NULL; +set @arg07= NULL; +set @arg08= NULL; +set @arg09= NULL; +set @arg10= NULL; +set @arg11= NULL; +set @arg12= NULL; +set @arg13= NULL; +set @arg14= NULL; +set @arg15= NULL; +set @arg16= NULL; +set @arg17= NULL; +set @arg18= NULL; +set @arg19= NULL; +set @arg20= NULL; +execute st_1644 using @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09, @arg10, +@arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17, @arg18, @arg19, @arg20; +set @arg01= 'row_3'; +set @arg02= 3; +set @arg03= 3.3; +set @arg04= 333; +set @arg05= 'row_three'; +set @arg06= '2004-10-12'; +set @arg07= '3'; +set @arg08= 3.3; +set @arg09= '300300300'; +set @arg10= '12:34:56'; +set @arg11= 'row_3'; +set @arg12= 3; +set @arg13= 3.3; +set @arg14= 333; +set @arg15= 'row_three'; +set @arg16= '2004-10-12'; +set @arg17= '3'; +set @arg18= 3.3; +set @arg19= '300300300'; +set @arg20= '12:34:56'; +execute st_1644 using @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09, @arg10, +@arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17, @arg18, @arg19, @arg20; +select * from t1; +c_01 c_02 c_03 c_04 c_05 c_06 c_07 c_08 c_09 c_10 c_11 c_12 c_13 c_14 c_15 c_16 c_17 c_18 c_19 c_20 +row_1 1 1.1 111 row_one 2004-10-12 1 1.1 100100100 12:34:56 row_1 1 1.1 111 row_one 2004-10-12 1 1.1 100100100 12:34:56 +NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL +row_3 3 3.3 333 row_three 2004-10-12 3 3.3 300300300 12:34:56 row_3 3 3.3 333 row_three 2004-10-12 3 3.3 300300300 12:34:56 +drop table t1; +create table t1( +cola varchar(50) not null, +colb varchar(8) not null, +colc varchar(12) not null, +cold varchar(2) not null, +primary key (cola, colb, cold)); +create table t2( +cola varchar(50) not null, +colb varchar(8) not null, +colc varchar(2) not null, +cold float, +primary key (cold)); +insert into t1 values ('aaaa', 'yyyy', 'yyyy-dd-mm', 'R'); +insert into t2 values ('aaaa', 'yyyy', 'R', 203), ('bbbb', 'zzzz', 'C', 201); +prepare st_1676 from 'select a.cola, a.colb, a.cold from t1 a, t2 b where a.cola = ? and a.colb = ? and a.cold = ? and b.cola = a.cola and b.colb = a.colb and b.colc = a.cold'; +set @arg0= "aaaa"; +set @arg1= "yyyy"; +set @arg2= "R"; +execute st_1676 using @arg0, @arg1, @arg2; +cola colb cold +aaaa yyyy R +drop table t1, t2; diff --git a/mysql-test/t/ps_11bugs.test b/mysql-test/t/ps_11bugs.test index 53afc8b5a78..d0aeaf265bb 100644 --- a/mysql-test/t/ps_11bugs.test +++ b/mysql-test/t/ps_11bugs.test @@ -3,19 +3,25 @@ # Prepared Statements # # re-testing bug DB entries # # # +# The bugs are reported as "closed". # +# Command sequences taken from bug report. # +# No other test contains the bug# as comment. # +# # +# Tests drop/create tables 't1', 't2', ... # +# # ############################################### -use test; +--disable_warnings +drop table if exists t1, t2; +--enable_warnings # bug#1180: optimized away part of WHERE clause cause incorect prepared satatement results -drop table if exists test_select; +CREATE TABLE t1(session_id char(9) NOT NULL); +INSERT INTO t1 VALUES ("abc"); +SELECT * FROM t1; -CREATE TABLE test_select(session_id char(9) NOT NULL); -INSERT INTO test_select VALUES ("abc"); -SELECT * FROM test_select; - -prepare st_1180 from 'SELECT * FROM test_select WHERE ?="1111" and session_id = "abc"'; +prepare st_1180 from 'SELECT * FROM t1 WHERE ?="1111" and session_id = "abc"'; # Must not find a row set @arg1= 'abc'; @@ -29,4 +35,97 @@ execute st_1180 using @arg1; set @arg1= 'abc'; execute st_1180 using @arg1; -drop table test_select; +drop table t1; + +# end of bug#1180 + + +# bug#1644: Insertion of more than 3 NULL columns with parameter binding fails + +# Using prepared statements, insertion of more than three columns with NULL +# values fails to insert additional NULLS. After the third column NULLS will +# be inserted into the database as zeros. +# First insert four columns of a value (i.e. 22) to verify binding is working +# correctly. Then Bind to each columns bind parameter an is_null value of 1. +# Then insert four more columns of integers, just for sanity. +# A subsequent select on the server will result in this: +# mysql> select * from foo_dfr; +# +------+------+------+------+ +# | col1 | col2 | col3 | col4 | +# +------+------+------+------+ +# | 22 | 22 | 22 | 22 | +# | NULL | NULL | NULL | 0 | +# | 88 | 88 | 88 | 88 | +# +------+------+------+------+ + +# Test is extended to more columns - code stores bit vector in bytes. + +create table t1 ( + c_01 char(6), c_02 integer, c_03 real, c_04 int(3), c_05 varchar(20), + c_06 date, c_07 char(1), c_08 real, c_09 int(11), c_10 time, + c_11 char(6), c_12 integer, c_13 real, c_14 int(3), c_15 varchar(20), + c_16 date, c_17 char(1), c_18 real, c_19 int(11), c_20 text); +# Do not use "timestamp" type, because it has a non-NULL default as of 4.1.2 + +prepare st_1644 from 'insert into t1 values ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)'; + +set @arg01= 'row_1'; set @arg02= 1; set @arg03= 1.1; set @arg04= 111; set @arg05= 'row_one'; +set @arg06= '2004-10-12'; set @arg07= '1'; set @arg08= 1.1; set @arg09= '100100100'; set @arg10= '12:34:56'; +set @arg11= 'row_1'; set @arg12= 1; set @arg13= 1.1; set @arg14= 111; set @arg15= 'row_one'; +set @arg16= '2004-10-12'; set @arg17= '1'; set @arg18= 1.1; set @arg19= '100100100'; set @arg20= '12:34:56'; +execute st_1644 using @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09, @arg10, + @arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17, @arg18, @arg19, @arg20; + +set @arg01= NULL; set @arg02= NULL; set @arg03= NULL; set @arg04= NULL; set @arg05= NULL; +set @arg06= NULL; set @arg07= NULL; set @arg08= NULL; set @arg09= NULL; set @arg10= NULL; +set @arg11= NULL; set @arg12= NULL; set @arg13= NULL; set @arg14= NULL; set @arg15= NULL; +set @arg16= NULL; set @arg17= NULL; set @arg18= NULL; set @arg19= NULL; set @arg20= NULL; +execute st_1644 using @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09, @arg10, + @arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17, @arg18, @arg19, @arg20; + +set @arg01= 'row_3'; set @arg02= 3; set @arg03= 3.3; set @arg04= 333; set @arg05= 'row_three'; +set @arg06= '2004-10-12'; set @arg07= '3'; set @arg08= 3.3; set @arg09= '300300300'; set @arg10= '12:34:56'; +set @arg11= 'row_3'; set @arg12= 3; set @arg13= 3.3; set @arg14= 333; set @arg15= 'row_three'; +set @arg16= '2004-10-12'; set @arg17= '3'; set @arg18= 3.3; set @arg19= '300300300'; set @arg20= '12:34:56'; +execute st_1644 using @arg01, @arg02, @arg03, @arg04, @arg05, @arg06, @arg07, @arg08, @arg09, @arg10, + @arg11, @arg12, @arg13, @arg14, @arg15, @arg16, @arg17, @arg18, @arg19, @arg20; + +select * from t1; + +drop table t1; + +# end of bug#1644 + + +# bug#1677: Prepared statement two-table join returns no rows when one is expected + +create table t1( + cola varchar(50) not null, + colb varchar(8) not null, + colc varchar(12) not null, + cold varchar(2) not null, + primary key (cola, colb, cold)); + +create table t2( + cola varchar(50) not null, + colb varchar(8) not null, + colc varchar(2) not null, + cold float, + primary key (cold)); + +insert into t1 values ('aaaa', 'yyyy', 'yyyy-dd-mm', 'R'); + +insert into t2 values ('aaaa', 'yyyy', 'R', 203), ('bbbb', 'zzzz', 'C', 201); + +prepare st_1676 from 'select a.cola, a.colb, a.cold from t1 a, t2 b where a.cola = ? and a.colb = ? and a.cold = ? and b.cola = a.cola and b.colb = a.colb and b.colc = a.cold'; + +set @arg0= "aaaa"; +set @arg1= "yyyy"; +set @arg2= "R"; + +execute st_1676 using @arg0, @arg1, @arg2; + +drop table t1, t2; + +# end of bug#1676 + |