From: Date: September 10 2008 7:39pm Subject: bzr push into mysql-6.0-falcon branch (cpowers:2817 to 2820) Bug#39350 List-Archive: http://lists.mysql.com/commits/53723 X-Bug: 39350 Message-Id: <20080910173924.B869A1DB0726@xeno.mysql.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 2820 Christopher Powers 2008-09-10 Bug #39350 Falcon: Releasing deferred indexes causes crash Fixed regression to last commit that prevented deferred indexes from being released. modified: storage/falcon/Transaction.cpp 2819 John H. Embretsen 2008-09-10 [merge] Merging http://lists.mysql.com/commits/53704 into updated falcon-team branch. "Fix test segment for ALTER ONLINE ADD UNIQUE INDEX in falcon_online_index.test." modified: mysql-test/suite/falcon/r/falcon_online_index.result mysql-test/suite/falcon/t/falcon_online_index.test 2818 Hakan Kuecuekyilmaz 2008-09-10 [merge] Merge. modified: storage/falcon/ha_falcon.cpp 2817 Hakan Kuecuekyilmaz 2008-09-10 [merge] Merge. removed: mysql-test/suite/falcon/r/falcon_select_excerpt.result mysql-test/suite/falcon/t/falcon_select_excerpt.test added: mysql-test/suite/falcon/r/falcon_index_datatypes.result mysql-test/suite/falcon/r/falcon_online_index.result mysql-test/suite/falcon/t/falcon_index_datatypes.test mysql-test/suite/falcon/t/falcon_online_index.test modified: storage/falcon/Cache.cpp storage/falcon/Configuration.cpp storage/falcon/DeferredIndex.cpp storage/falcon/StorageTable.cpp storage/falcon/StorageTableShare.cpp storage/falcon/StorageTableShare.h storage/falcon/Transaction.cpp storage/falcon/Transaction.h storage/falcon/ha_falcon.cpp storage/falcon/ha_falcon.h === renamed file 'mysql-test/suite/falcon_team/r/falcon_bug_22189.result' => 'mysql-test/suite/falcon/r/falcon_bug_22189.result' --- a/mysql-test/suite/falcon_team/r/falcon_bug_22189.result 2008-04-28 11:21:52 +0000 +++ b/mysql-test/suite/falcon/r/falcon_bug_22189.result 2008-09-09 08:30:18 +0000 @@ -33,11 +33,12 @@ x1 x2 1 1 # Switch to connection conn1 UPDATE x1 SET x1 = 0, x2 = 5; +ERROR 23000: Duplicate entry '0' for key 'PRIMARY' INSERT INTO x1 VALUES (0,6); +ERROR 23000: Duplicate entry '0' for key 'PRIMARY' # Switch to connection default ROLLBACK; # Switch to connection conn1 -ERROR 23000: Duplicate entry '0' for key 'PRIMARY' INSERT INTO x1 VALUES (0,6); ERROR 23000: Duplicate entry '0' for key 'PRIMARY' INSERT INTO x1 VALUES (0,6); === added file 'mysql-test/suite/falcon/r/falcon_bug_22207-big.result' --- a/mysql-test/suite/falcon/r/falcon_bug_22207-big.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/falcon/r/falcon_bug_22207-big.result 2008-09-09 08:30:18 +0000 @@ -0,0 +1,150 @@ +*** Bug #22207 *** +SET @@storage_engine = 'Falcon'; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1 (c1 varchar(50), c2 int, c3 char(1)); +INSERT INTO t1 VALUES (repeat('A', 50), 0, 'A'); +INSERT INTO t1 VALUES (repeat('B', 50), 0, 'B'); +INSERT INTO t1 VALUES (repeat('C', 50), 0, 'C'); +INSERT INTO t1 VALUES (repeat('D', 50), 0, 'D'); +INSERT INTO t1 VALUES (repeat('E', 50), 0, 'E'); +INSERT INTO t1 VALUES (repeat('F', 50), 0, 'F'); +INSERT INTO t1 VALUES (repeat('G', 50), 0, 'G'); +INSERT INTO t1 VALUES (repeat('H', 50), 0, 'H'); +INSERT INTO t1 VALUES (repeat('I', 50), 0, 'I'); +INSERT INTO t1 VALUES (repeat('J', 50), 0, 'J'); +INSERT INTO t1 VALUES (repeat('K', 50), 0, 'K'); +COMMIT; +SELECT c1 from t1; +c1 +150000____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +150000____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +150000____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +150000____DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +150000____EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +150000____FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +150000____GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +150000____HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +150000____IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +150000____JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +150000____KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT c1 from t1; +c1 +300000____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +300000____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +300000____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +300000____DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +300000____EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +300000____FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +300000____GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +300000____HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +300000____IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +300000____JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +300000____KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT c1 from t1; +c1 +450000____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +450000____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +450000____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +450000____DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +450000____EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +450000____FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +450000____GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +450000____HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +450000____IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +450000____JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +450000____KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT c1 from t1; +c1 +600000____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +600000____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +600000____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +600000____DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +600000____EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +600000____FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +600000____GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +600000____HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +600000____IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +600000____JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +600000____KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT c1 from t1; +c1 +750000____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +750000____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +750000____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +750000____DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +750000____EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +750000____FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +750000____GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +750000____HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +750000____IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +750000____JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +750000____KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT c1 from t1; +c1 +900000____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +900000____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +900000____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +900000____DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +900000____EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +900000____FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +900000____GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +900000____HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +900000____IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +900000____JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +900000____KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT c1 from t1; +c1 +1050000___AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +1050000___BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +1050000___CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +1050000___DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +1050000___EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +1050000___FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +1050000___GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +1050000___HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +1050000___IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +1050000___JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +1050000___KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT c1 from t1; +c1 +1200000___AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +1200000___BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +1200000___CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +1200000___DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +1200000___EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +1200000___FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +1200000___GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +1200000___HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +1200000___IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +1200000___JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +1200000___KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT c1 from t1; +c1 +1350000___AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +1350000___BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +1350000___CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +1350000___DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +1350000___EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +1350000___FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +1350000___GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +1350000___HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +1350000___IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +1350000___JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +1350000___KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT c1 from t1; +c1 +1500000___AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +1500000___BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +1500000___CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +1500000___DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +1500000___EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +1500000___FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +1500000___GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG +1500000___HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH +1500000___IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII +1500000___JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ +1500000___KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK +SELECT count(*) FROM t1; +count(*) +11 +DROP TABLE t1; === renamed file 'mysql-test/suite/falcon_team/r/falcon_bug_22207.result' => 'mysql-test/suite/falcon/r/falcon_bug_22207.result' --- a/mysql-test/suite/falcon_team/r/falcon_bug_22207.result 2008-04-20 00:05:17 +0000 +++ b/mysql-test/suite/falcon/r/falcon_bug_22207.result 2008-09-09 08:30:18 +0000 @@ -1,4 +1,5 @@ -SET STORAGE_ENGINE = 'Falcon'; +*** Bug #22207 *** +SET @@storage_engine = 'Falcon'; DROP TABLE IF EXISTS t1; CREATE TABLE t1 (c1 varchar(50), c2 int, c3 char(1)); INSERT INTO t1 VALUES (repeat('A', 50), 0, 'A'); @@ -7,52 +8,55 @@ INSERT INTO t1 VALUES (repeat('C', 50), COMMIT; SELECT c1 from t1; c1 +2500______AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +2500______BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +2500______CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +SELECT c1 from t1; +c1 5000______AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 5000______BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 5000______CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SELECT c1 from t1; c1 +7500______AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +7500______BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +7500______CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +SELECT c1 from t1; +c1 10000_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 10000_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 10000_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SELECT c1 from t1; c1 +12500_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +12500_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +12500_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +SELECT c1 from t1; +c1 15000_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 15000_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 15000_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SELECT c1 from t1; c1 +17500_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +17500_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +17500_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +SELECT c1 from t1; +c1 20000_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 20000_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 20000_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC SELECT c1 from t1; c1 +22500_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +22500_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +22500_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +SELECT c1 from t1; +c1 25000_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 25000_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 25000_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -SELECT c1 from t1; -c1 -30000_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -30000_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB -30000_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -SELECT c1 from t1; -c1 -35000_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -35000_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB -35000_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -SELECT c1 from t1; -c1 -40000_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -40000_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB -40000_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -SELECT c1 from t1; -c1 -45000_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -45000_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB -45000_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC -SELECT c1 from t1; -c1 -50000_____AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA -50000_____BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB -50000_____CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +SELECT count(*) FROM t1; +count(*) +3 DROP TABLE t1; === modified file 'mysql-test/suite/falcon/r/falcon_bug_22972.result' --- a/mysql-test/suite/falcon/r/falcon_bug_22972.result 2008-07-15 00:06:43 +0000 +++ b/mysql-test/suite/falcon/r/falcon_bug_22972.result 2008-09-09 08:30:18 +0000 @@ -1,10 +1,21 @@ -CREATE TABLE t1(a INT) ENGINE=Falcon; +*** Bug #22972 *** +SET @@storage_engine = 'Falcon'; +DROP TABLE IF EXISTS t1; +CREATE TABLE t1(a int); +# Establish connection conn1 (root) +# Switch to connection conn1 START TRANSACTION; INSERT INTO t1 VALUES(1); +# Switch to connection default DROP TABLE t1; ERROR 42S02: Unknown table 't1' SHOW WARNINGS; Level Code Message Warning 178 Can't execute the given command because you have active locked tables or an active transaction +# Switch to connection conn1 COMMIT; +SELECT count(*) FROM t1; +count(*) +1 +# Switch to connection default DROP TABLE t1; === renamed file 'mysql-test/suite/falcon_team/r/falcon_bug_24024.result' => 'mysql-test/suite/falcon/r/falcon_bug_24024.result' --- a/mysql-test/suite/falcon_team/r/falcon_bug_24024.result 2008-04-20 00:05:17 +0000 +++ b/mysql-test/suite/falcon/r/falcon_bug_24024.result 2008-09-09 14:59:40 +0000 @@ -1,23 +1,31 @@ *** Bug #24024 *** -SET SESSION STORAGE_ENGINE = Falcon; +SET @@storage_engine = 'Falcon'; DROP TABLE IF EXISTS t1; -CREATE TABLE t1(a INT NOT NULL, b INT, primary key(a)); +CREATE TABLE t1(a int, b int, primary key(a)); INSERT INTO t1(a) VALUES (1); COMMIT; -SET AUTOCOMMIT = 0; +# Establish connection conn1 (user=root) +# Switch to connection default +SET @@autocommit = 0; UPDATE t1 SET b = 5 WHERE a = 1; -# Establish session con1 (user=root) +# Switch to connection conn1 INSERT INTO t1(a) VALUES(7); COMMIT; SELECT * FROM t1; a b 1 NULL 7 NULL +!!! Error message is total crap! +!!! Something like "Cannot drop locked table" or similar would be fine, +!!! But never the misleading ERROR 42S02: Unknown table 't1'. DROP TABLE t1; -!!! Error message has to be decided. -!!! Something like "Cannot drop locked table" or similar would be fine. -!!! But never the misleading ERROR 42S02: Unknown table 't1' -COMMIT; -# Switch to session default and disconnect session con1 +ERROR 42S02: Unknown table 't1' +SHOW WARNINGS; +Level Code Message +Warning 178 Can't execute the given command because you have active locked tables or an active transaction +SELECT count(*) FROM t1; +count(*) +2 +# Switch to connection default COMMIT; DROP TABLE t1; === modified file 'mysql-test/suite/falcon/r/falcon_online_index.result' --- a/mysql-test/suite/falcon/r/falcon_online_index.result 2008-09-08 11:23:10 +0000 +++ b/mysql-test/suite/falcon/r/falcon_online_index.result 2008-09-10 15:08:56 +0000 @@ -141,10 +141,10 @@ SHOW INDEXES FROM t1; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_Comment ALTER TABLE t1 ADD PRIMARY KEY (a); #-------- Test: UNIQUE --------# -ALTER ONLINE TABLE t2 ADD INDEX ix_unique_c (c); +ALTER ONLINE TABLE t2 ADD UNIQUE INDEX ix_unique_c (c); EXPLAIN SELECT * FROM t2 WHERE c < 25 AND c > 20 ORDER BY c; id select_type table type possible_keys key key_len ref rows Extra -1 SIMPLE t2 range ix_unique_c ix_unique_c 5 NULL 11 Using where; Using filesort +1 SIMPLE t2 range ix_unique_c ix_unique_c 5 NULL 1 Using where; Using filesort SELECT * FROM t2 WHERE c < 25 AND c > 20 ORDER BY c; a b c d 20 40 21 SomeString 20 for testing @@ -154,14 +154,17 @@ a b c d SHOW INDEXES FROM t2; Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_Comment t2 0 PRIMARY 1 a NULL 16 NULL NULL BTREE -t2 1 ix_unique_c 1 c NULL 16 NULL NULL YES BTREE +t2 0 ix_unique_c 1 c NULL 16 NULL NULL YES BTREE DESCRIBE t2; Field Type Null Key Default Extra a int(11) NO PRI NULL b int(11) YES NULL -c int(11) YES MUL NULL +c int(11) YES UNI NULL d varchar(65) YES NULL DROP ONLINE INDEX ix_unique_c ON t2; +SHOW INDEXES FROM t2; +Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_Comment +t2 0 PRIMARY 1 a NULL 16 NULL NULL BTREE #-------- Test: DESC --------# ALTER ONLINE TABLE t3 ADD INDEX ix_desc_b (b DESC); ALTER ONLINE TABLE t3 ADD INDEX ix_asc_b (b ASC); === modified file 'mysql-test/suite/falcon/t/disabled.def' --- a/mysql-test/suite/falcon/t/disabled.def 2008-08-11 13:22:53 +0000 +++ b/mysql-test/suite/falcon/t/disabled.def 2008-09-09 08:30:18 +0000 @@ -10,5 +10,5 @@ # ############################################################################## -falcon_bug_28095_I : Bug#xxxxx 2008-04-22 hakank Disabled until soft restart is in main tree -falcon_bug_28095_II : Bug#xxxxx 2008-03-22 hakank Disabled until soft restart is in main tree +falcon_bug_28095_I : Bug#39205 2008-09-09 hakank Disabled until soft restart is in main tree +falcon_bug_28095_II : Bug#39205 2008-09-09 hakank Disabled until soft restart is in main tree === renamed file 'mysql-test/suite/falcon_team/t/falcon_bug_22189.test' => 'mysql-test/suite/falcon/t/falcon_bug_22189.test' --- a/mysql-test/suite/falcon_team/t/falcon_bug_22189.test 2008-04-28 11:21:52 +0000 +++ b/mysql-test/suite/falcon/t/falcon_bug_22189.test 2008-09-09 08:30:18 +0000 @@ -68,8 +68,10 @@ SELECT * FROM x1; --echo # Switch to connection conn1 connection conn1; ---send UPDATE x1 SET x1 = 0, x2 = 5 ---send INSERT INTO x1 VALUES (0,6) +--error ER_DUP_ENTRY +UPDATE x1 SET x1 = 0, x2 = 5; +--error ER_DUP_ENTRY +INSERT INTO x1 VALUES (0,6); --echo # Switch to connection default connection default; @@ -78,8 +80,6 @@ ROLLBACK; --echo # Switch to connection conn1 connection conn1; --error ER_DUP_ENTRY ---reap ---error ER_DUP_ENTRY INSERT INTO x1 VALUES (0,6); --error ER_DUP_ENTRY INSERT INTO x1 VALUES (0,6); === added file 'mysql-test/suite/falcon/t/falcon_bug_22207-big.test' --- a/mysql-test/suite/falcon/t/falcon_bug_22207-big.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/suite/falcon/t/falcon_bug_22207-big.test 2008-09-09 08:30:18 +0000 @@ -0,0 +1,78 @@ +--source include/have_falcon.inc +--source include/big_test.inc + +# +# Bug #22207: falcon_record_cache_memory_leak2.test leads to crash sometimes. +# +# Record cache memory leak test inspired by Kevin. +# +# Note: Big test variant +# For Mantis bug #257, set the inner loop to 10 and the middle loop to 10,000. +# We set the middle loop to 15,000 for this --big_test version. +# +--echo *** Bug #22207 *** + +# ----------------------------------------------------- # +# --- Initialisation --- # +# ----------------------------------------------------- # +let $engine = 'Falcon'; +eval SET @@storage_engine = $engine; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1 (c1 varchar(50), c2 int, c3 char(1)); +INSERT INTO t1 VALUES (repeat('A', 50), 0, 'A'); +INSERT INTO t1 VALUES (repeat('B', 50), 0, 'B'); +INSERT INTO t1 VALUES (repeat('C', 50), 0, 'C'); +INSERT INTO t1 VALUES (repeat('D', 50), 0, 'D'); +INSERT INTO t1 VALUES (repeat('E', 50), 0, 'E'); +INSERT INTO t1 VALUES (repeat('F', 50), 0, 'F'); +INSERT INTO t1 VALUES (repeat('G', 50), 0, 'G'); +INSERT INTO t1 VALUES (repeat('H', 50), 0, 'H'); +INSERT INTO t1 VALUES (repeat('I', 50), 0, 'I'); +INSERT INTO t1 VALUES (repeat('J', 50), 0, 'J'); +INSERT INTO t1 VALUES (repeat('K', 50), 0, 'K'); +COMMIT; + +# ----------------------------------------------------- # +# --- Test --- # +# ----------------------------------------------------- # +# During this series of updates, there should be no increase in memory +# since each previous record version should be freed once it is replaced. + +# Outer loop controls how many SELECTs are done. +let $i= 10; +while ($i) +{ + # Middle loop controls how often a COMMIT is done. + --disable_query_log + let $j= 15000; + while ($j) + { + # Inner loop controls how many UPDATES are done. + BEGIN; + let $k= 10; + while ($k) + { + UPDATE t1 SET c2 = c2 + 1, c1 = concat(rpad(conv(c2,10,10),10,'_'), repeat(c3, 40)); + dec $k; + } + dec $j; + COMMIT; + } + --enable_query_log + SELECT c1 from t1; + dec $i; +} + +# ----------------------------------------------------- # +# --- Check --- # +# ----------------------------------------------------- # +SELECT count(*) FROM t1; + +# ----------------------------------------------------- # +# --- Final cleanup --- # +# ----------------------------------------------------- # +DROP TABLE t1; === renamed file 'mysql-test/suite/falcon_team/t/falcon_bug_22207.test' => 'mysql-test/suite/falcon/t/falcon_bug_22207.test' --- a/mysql-test/suite/falcon_team/t/falcon_bug_22207.test 2008-04-20 00:05:17 +0000 +++ b/mysql-test/suite/falcon/t/falcon_bug_22207.test 2008-09-09 08:30:18 +0000 @@ -1,12 +1,22 @@ --source include/have_falcon.inc + +# +# Bug #22207: falcon_record_cache_memory_leak2.test leads to crash sometimes. # # Record cache memory leak test inspired by Kevin. # # Note: Do not run in ramdisk! # For Mantis bug #257, set the inner loop to 10 and the middle loop to 10,000. -# We set the middle loop to 500 to cope with run time on various Pushbuild machines. +# We set the middle loop to 250 to cope with run time on various Pushbuild machines. # -SET STORAGE_ENGINE = 'Falcon'; +--echo *** Bug #22207 *** + +# ----------------------------------------------------- # +# --- Initialisation --- # +# ----------------------------------------------------- # +let $engine = 'Falcon'; +eval SET @@storage_engine = $engine; + --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings @@ -23,6 +33,9 @@ INSERT INTO t1 VALUES (repeat('C', 50), #INSERT INTO t1 VALUES (repeat('I', 50), 0, 'I'); COMMIT; +# ----------------------------------------------------- # +# --- Test --- # +# ----------------------------------------------------- # # During this series of updates, there should be no increase in memory # since each previous record version should be freed once it is replaced. @@ -30,9 +43,9 @@ COMMIT; let $i= 10; while ($i) { - # Next loop controls how often a COMMIT is done + # Middle loop controls how often a COMMIT is done. --disable_query_log - let $j= 500; + let $j= 250; while ($j) { # Inner loop controls how many UPDATES are done. @@ -51,6 +64,12 @@ while ($i) dec $i; } +# ----------------------------------------------------- # +# --- Check --- # +# ----------------------------------------------------- # +SELECT count(*) FROM t1; -# Final cleanup. +# ----------------------------------------------------- # +# --- Final cleanup --- # +# ----------------------------------------------------- # DROP TABLE t1; === modified file 'mysql-test/suite/falcon/t/falcon_bug_22972.test' --- a/mysql-test/suite/falcon/t/falcon_bug_22972.test 2007-11-28 14:07:24 +0000 +++ b/mysql-test/suite/falcon/t/falcon_bug_22972.test 2008-09-09 08:30:18 +0000 @@ -1,15 +1,51 @@ --source include/have_falcon.inc -CREATE TABLE t1(a INT) ENGINE=Falcon; -connect (con1,localhost,root,,); -connection con1; + +# +# Bug #22972: Falcon: Partitioned table with pending transaction leads to strange error +# +--echo *** Bug #22972 *** + +# ----------------------------------------------------- # +# --- Initialisation --- # +# ----------------------------------------------------- # +let $engine = 'Falcon'; +eval SET @@storage_engine = $engine; + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE t1(a int); + +--echo # Establish connection conn1 (root) +connect (conn1,localhost,root,,); + +# ----------------------------------------------------- # +# --- Test --- # +# ----------------------------------------------------- # +--echo # Switch to connection conn1 START TRANSACTION; INSERT INTO t1 VALUES(1); + +--echo # Switch to connection default connection default; ---error 1051 +--error ER_BAD_TABLE_ERROR DROP TABLE t1; SHOW WARNINGS; -connection con1; + +--echo # Switch to connection conn1 +connection conn1; COMMIT; + +# ----------------------------------------------------- # +# --- Check --- # +# ----------------------------------------------------- # +SELECT count(*) FROM t1; + +# ----------------------------------------------------- # +# --- Final cleanup --- # +# ----------------------------------------------------- # +--echo # Switch to connection default connection default; -disconnect con1; +disconnect conn1; DROP TABLE t1; === renamed file 'mysql-test/suite/falcon_team/t/falcon_bug_24024.test' => 'mysql-test/suite/falcon/t/falcon_bug_24024.test' --- a/mysql-test/suite/falcon_team/t/falcon_bug_24024.test 2008-04-20 00:05:17 +0000 +++ b/mysql-test/suite/falcon/t/falcon_bug_24024.test 2008-09-09 14:59:40 +0000 @@ -1,36 +1,61 @@ +--source include/have_falcon.inc + # -# Bug#24024 wrong error message when drop table (used by pending transaction) fails +# Bug #24024: wrong error message when drop table (used by pending transaction) fails # # This test is a derivate of a subtestcase in mix2.inc. # Therefore please delete this test when mix2_falcon is pushed. # - --echo *** Bug #24024 *** - ---source include/have_falcon.inc -SET SESSION STORAGE_ENGINE = Falcon; +# ----------------------------------------------------- # +# --- Initialisation --- # +# ----------------------------------------------------- # +let $engine = 'Falcon'; +eval SET @@storage_engine = $engine; --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings -CREATE TABLE t1(a INT NOT NULL, b INT, primary key(a)); + +CREATE TABLE t1(a int, b int, primary key(a)); INSERT INTO t1(a) VALUES (1); COMMIT; -SET AUTOCOMMIT = 0; + +--echo # Establish connection conn1 (user=root) +connect (conn1,localhost,root,,); + +# ----------------------------------------------------- # +# --- Test --- # +# ----------------------------------------------------- # +--echo # Switch to connection default +connection default; +SET @@autocommit = 0; UPDATE t1 SET b = 5 WHERE a = 1; ---echo # Establish session con1 (user=root) -connect (con1,localhost,root); + +--echo # Switch to connection conn1 +connection conn1; INSERT INTO t1(a) VALUES(7); COMMIT; SELECT * FROM t1; ---disable_abort_on_error +--echo !!! Error message is total crap! +--echo !!! Something like "Cannot drop locked table" or similar would be fine, +--echo !!! But never the misleading ERROR 42S02: Unknown table 't1'. +--error ER_BAD_TABLE_ERROR DROP TABLE t1; -COMMIT; +SHOW WARNINGS; ---echo # Switch to session default and disconnect session con1 +# ----------------------------------------------------- # +# --- Check --- # +# ----------------------------------------------------- # +SELECT count(*) FROM t1; + +# ----------------------------------------------------- # +# --- Final cleanup --- # +# ----------------------------------------------------- # +--echo # Switch to connection default connection default; -disconnect con1; +disconnect conn1; COMMIT; DROP TABLE t1; === modified file 'mysql-test/suite/falcon/t/falcon_online_index.test' --- a/mysql-test/suite/falcon/t/falcon_online_index.test 2008-09-08 11:23:10 +0000 +++ b/mysql-test/suite/falcon/t/falcon_online_index.test 2008-09-10 15:08:56 +0000 @@ -214,12 +214,13 @@ ALTER TABLE t1 ADD PRIMARY KEY (a); --echo #-------- Test: UNIQUE --------# ## Test adding UNIQUE index -ALTER ONLINE TABLE t2 ADD INDEX ix_unique_c (c); +ALTER ONLINE TABLE t2 ADD UNIQUE INDEX ix_unique_c (c); EXPLAIN SELECT * FROM t2 WHERE c < 25 AND c > 20 ORDER BY c; SELECT * FROM t2 WHERE c < 25 AND c > 20 ORDER BY c; SHOW INDEXES FROM t2; DESCRIBE t2; DROP ONLINE INDEX ix_unique_c ON t2; +SHOW INDEXES FROM t2; --echo #-------- Test: DESC --------# === modified file 'mysql-test/suite/falcon_team/r/falcon_bug_23945.result' --- a/mysql-test/suite/falcon_team/r/falcon_bug_23945.result 2008-04-20 00:05:17 +0000 +++ b/mysql-test/suite/falcon_team/r/falcon_bug_23945.result 2008-09-09 08:30:18 +0000 @@ -1,14 +1,14 @@ *** Bug #23945 *** -SET STORAGE_ENGINE = Falcon; +SET @@storage_engine = 'Falcon'; DROP TABLE IF EXISTS t1; -SET AUTOCOMMIT = 1; +SET @@autocommit = 1; CREATE TABLE t1 (PRIMARY KEY (a)) SELECT 1 AS a UNION ALL SELECT 1; ERROR 23000: Duplicate entry '1' for key 'PRIMARY' SELECT * FROM t1; ERROR 42S02: Table 'test.t1' doesn't exist DROP TABLE t1; ERROR 42S02: Unknown table 't1' -SET AUTOCOMMIT = 0; +SET @@autocommit = 0; CREATE TABLE t1 (PRIMARY KEY (a)) SELECT 1 AS a UNION ALL SELECT 1; ERROR 23000: Duplicate entry '1' for key 'PRIMARY' SELECT * FROM t1; === modified file 'mysql-test/suite/falcon_team/t/falcon_bug_23945.test' --- a/mysql-test/suite/falcon_team/t/falcon_bug_23945.test 2008-04-20 00:05:17 +0000 +++ b/mysql-test/suite/falcon_team/t/falcon_bug_23945.test 2008-09-09 08:30:18 +0000 @@ -1,19 +1,25 @@ +--source include/have_falcon.inc + # # Bug #23945: crash during drop table, AUTOCOMMIT=0, CREATE TABLE .. AS SELECT # --echo *** Bug #23945 *** - -# --source include/have_innodb.inc -# SET STORAGE_ENGINE = InnoDB; ---source include/have_falcon.inc -SET STORAGE_ENGINE = Falcon; +# ----------------------------------------------------- # +# --- Initialisation --- # +# ----------------------------------------------------- # +let $engine = 'Falcon'; +eval SET @@storage_engine = $engine; --disable_warnings DROP TABLE IF EXISTS t1; --enable_warnings -SET AUTOCOMMIT = 1; +SET @@autocommit = 1; + +# ----------------------------------------------------- # +# --- Test --- # +# ----------------------------------------------------- # --error ER_DUP_ENTRY CREATE TABLE t1 (PRIMARY KEY (a)) SELECT 1 AS a UNION ALL SELECT 1; --error ER_NO_SUCH_TABLE @@ -21,7 +27,7 @@ SELECT * FROM t1; --error ER_BAD_TABLE_ERROR DROP TABLE t1; -SET AUTOCOMMIT = 0; +SET @@autocommit = 0; --error ER_DUP_ENTRY CREATE TABLE t1 (PRIMARY KEY (a)) SELECT 1 AS a UNION ALL SELECT 1; --error ER_NO_SUCH_TABLE @@ -29,3 +35,15 @@ SELECT * FROM t1; # Here comes a server crash. --error ER_BAD_TABLE_ERROR DROP TABLE t1; + +# ----------------------------------------------------- # +# --- Check --- # +# ----------------------------------------------------- # +# Check not applicable in this test. +#SELECT count(*) FROM t1; + +# ----------------------------------------------------- # +# --- Final cleanup --- # +# ----------------------------------------------------- # +# Final cleanup not applicable in this test. +#DROP TABLE t1; === modified file 'storage/falcon/Transaction.cpp' --- a/storage/falcon/Transaction.cpp 2008-09-10 06:42:49 +0000 +++ b/storage/falcon/Transaction.cpp 2008-09-10 17:32:43 +0000 @@ -1502,6 +1502,7 @@ void Transaction::releaseDeferredIndexes { ASSERT(deferredIndex->transaction == this); deferredIndexes = deferredIndex->nextInTransaction; + deferredIndex->detachTransaction(); deferredIndexCount--; } } === modified file 'storage/falcon/ha_falcon.cpp' --- a/storage/falcon/ha_falcon.cpp 2008-09-09 23:15:17 +0000 +++ b/storage/falcon/ha_falcon.cpp 2008-09-10 13:42:36 +0000 @@ -34,6 +34,7 @@ #include "CmdGen.h" #include "InfoTable.h" #include "Format.h" +#include "Error.h" #ifdef _WIN32 #define I64FORMAT "%I64d" @@ -156,12 +157,34 @@ void flushFalconLogFile() fflush(falcon_log_file); } +bool checkExceptionSupport() +{ + // Validate that the code has been compiled with support for exceptions + // by throwing and catching an exception. If the executable does not + // support exceptions we will reach the return false statement + try + { + throw 1; + } + catch (int) + { + return true; + } + return false; +} + int StorageInterface::falcon_init(void *p) { DBUG_ENTER("falcon_init"); falcon_hton = (handlerton *)p; my_bool error = false; + if (!checkExceptionSupport()) + { + sql_print_error("Falcon must be compiled with C++ exceptions enabled to work"); + DBUG_RETURN(1); + } + StorageHandler::setDataDirectory(mysql_real_data_home); storageHandler = getFalconStorageHandler(sizeof(THR_LOCK)); @@ -2641,13 +2664,7 @@ void StorageInterface::encodeRecord(ucha continue; Field *field = fieldMap[fieldFormat->fieldId]; - - if (!field) - { - dataStream->encodeNull(); - - continue; - } + ASSERT(field); if (ptrDiff) field->move_field_offset(ptrDiff);