2755 Davi Arnaut 2008-08-12 [merge]
Merge mysql-6.0 into mysql-6.0-bugteam
added:
mysql-test/suite/falcon/r/falcon_bug_35939.result
mysql-test/suite/falcon/r/falcon_bug_38039.result
mysql-test/suite/falcon/t/falcon_bug_35939.test
mysql-test/suite/falcon/t/falcon_bug_38039.test
renamed:
mysql-test/suite/falcon_team/r/falcon_bug_23962.result =>
mysql-test/suite/falcon/r/falcon_bug_23962.result
mysql-test/suite/falcon_team/r/falcon_bug_27997.result =>
mysql-test/suite/falcon/r/falcon_bug_27997.result
mysql-test/suite/falcon_team/r/falcon_bug_37080.result =>
mysql-test/suite/falcon/r/falcon_bug_37080.result
mysql-test/suite/falcon_team/t/falcon_bug_23962.test =>
mysql-test/suite/falcon/t/falcon_bug_23962.test
mysql-test/suite/falcon_team/t/falcon_bug_27997.test =>
mysql-test/suite/falcon/t/falcon_bug_27997.test
mysql-test/suite/falcon_team/t/falcon_bug_37080.test =>
mysql-test/suite/falcon/t/falcon_bug_37080.test
modified:
mysql-test/mysql-test-run.pl
mysql-test/suite/falcon/r/falcon_bug_22161.result
mysql-test/suite/falcon/r/falcon_bug_31295.result
mysql-test/suite/falcon/r/falcon_bug_33404.result
mysql-test/suite/falcon/r/falcon_options.result
mysql-test/suite/falcon/r/falcon_options2.result
mysql-test/suite/falcon/t/falcon_bug_22161.test
mysql-test/suite/falcon/t/falcon_bug_31295.test
mysql-test/suite/falcon/t/falcon_bug_33404.test
mysql-test/suite/falcon/t/falcon_options2.test
mysql-test/suite/funcs_1/r/is_columns_is_falcon.result
mysql-test/suite/funcs_1/r/is_tables_is_falcon.result
mysql-test/t/information_schema-master.opt
mysql-test/t/information_schema_db-master.opt
mysql-test/t/mysqlshow-master.opt
mysql-test/t/variables-master.opt
sql/probes.h
storage/falcon/BDB.cpp
storage/falcon/BDB.h
storage/falcon/BackLog.cpp
storage/falcon/Cache.cpp
storage/falcon/CollationManager.cpp
storage/falcon/CompiledStatement.cpp
storage/falcon/Configuration.cpp
storage/falcon/Configuration.h
storage/falcon/Connection.cpp
storage/falcon/Database.cpp
storage/falcon/DatabaseClone.cpp
storage/falcon/DatabaseCopy.cpp
storage/falcon/Dbb.cpp
storage/falcon/Dbb.h
storage/falcon/DeferredIndex.cpp
storage/falcon/DeferredIndex.h
storage/falcon/Gopher.cpp
storage/falcon/IO.cpp
storage/falcon/IOx.h
storage/falcon/Index.cpp
storage/falcon/IndexWalker.cpp
storage/falcon/IndexWalker.h
storage/falcon/Inversion.cpp
storage/falcon/LicenseManager.cpp
storage/falcon/Makefile.am
storage/falcon/MemMgr.cpp
storage/falcon/RecordLeaf.cpp
storage/falcon/RecordVersion.cpp
storage/falcon/RecoveryObjects.cpp
storage/falcon/RecoveryObjects.h
storage/falcon/Repository.cpp
storage/falcon/RepositoryManager.cpp
storage/falcon/RepositoryVolume.cpp
storage/falcon/ResultSet.cpp
storage/falcon/Role.cpp
storage/falcon/SQLParse.cpp
storage/falcon/SRLCreateTableSpace.cpp
storage/falcon/SRLCreateTableSpace.h
storage/falcon/SRLDeleteIndex.cpp
storage/falcon/SRLPrepare.cpp
storage/falcon/SRLRollback.cpp
storage/falcon/SRLUpdateIndex.cpp
storage/falcon/Scheduler.cpp
storage/falcon/SectorBuffer.cpp
storage/falcon/SectorCache.cpp
storage/falcon/SequenceManager.cpp
storage/falcon/SerialLog.cpp
storage/falcon/SerialLog.h
storage/falcon/SerialLogFile.cpp
storage/falcon/Server.cpp
storage/falcon/SessionManager.cpp
storage/falcon/Statement.cpp
storage/falcon/StorageDatabase.cpp
storage/falcon/StorageDatabase.h
storage/falcon/StorageHandler.cpp
storage/falcon/StorageHandler.h
storage/falcon/StorageTableShare.cpp
storage/falcon/SymbolManager.cpp
storage/falcon/Sync.cpp
storage/falcon/Sync.h
storage/falcon/SyncObject.cpp
storage/falcon/SyncObject.h
storage/falcon/SyncTest.cpp
storage/falcon/Table.cpp
storage/falcon/TableSpace.cpp
storage/falcon/TableSpace.h
storage/falcon/TableSpaceManager.cpp
storage/falcon/TableSpaceManager.h
storage/falcon/Thread.cpp
storage/falcon/Threads.cpp
storage/falcon/Transaction.cpp
storage/falcon/Transaction.h
storage/falcon/TransactionManager.cpp
storage/falcon/WalkDeferred.cpp
storage/falcon/WalkDeferred.h
storage/falcon/WalkIndex.cpp
storage/falcon/ha_falcon.cpp
storage/falcon/ha_falcon.h
mysql-test/suite/falcon/r/falcon_bug_23962.result
mysql-test/suite/falcon/r/falcon_bug_37080.result
mysql-test/suite/falcon/t/falcon_bug_23962.test
mysql-test/suite/falcon/t/falcon_bug_37080.test
2754 Chad MILLER 2008-08-11 [merge]
null-merge of backported changes for compiler warning.
=== modified file 'mysql-test/mysql-test-run.pl'
--- a/mysql-test/mysql-test-run.pl 2008-07-24 14:33:10 +0000
+++ b/mysql-test/mysql-test-run.pl 2008-08-07 14:19:54 +0000
@@ -1474,13 +1474,15 @@ sub executable_setup_ndb () {
$exe_ndbd=
mtr_exe_maybe_exists("$ndb_path/src/kernel/ndbd",
- "$ndb_path/ndbd");
+ "$ndb_path/ndbd",
+ "$glob_basedir/libexec/ndbd");
$exe_ndb_mgm=
mtr_exe_maybe_exists("$ndb_path/src/mgmclient/ndb_mgm",
"$ndb_path/ndb_mgm");
$exe_ndb_mgmd=
mtr_exe_maybe_exists("$ndb_path/src/mgmsrv/ndb_mgmd",
- "$ndb_path/ndb_mgmd");
+ "$ndb_path/ndb_mgmd",
+ "$glob_basedir/libexec/ndb_mgmd");
$exe_ndb_waiter=
mtr_exe_maybe_exists("$ndb_path/tools/ndb_waiter",
"$ndb_path/ndb_waiter");
@@ -4703,11 +4705,15 @@ sub run_mysqltest ($) {
# ----------------------------------------------------------------------
# If embedded server, we create server args to give mysqltest to pass on
+ # and remove existing falcon tables
# ----------------------------------------------------------------------
-
+
if ( $glob_use_embedded_server )
{
mysqld_arguments($args,$master->[0],$tinfo->{'master_opt'},[]);
+ #Remove falcon tables before each test, otherwise every start might fail
+ #if there is an error in falcon recovery
+ rm_falcon_tables($master->[0]->{'path_myddir'});
}
# ----------------------------------------------------------------------
=== modified file 'mysql-test/suite/falcon/r/falcon_bug_22161.result'
--- a/mysql-test/suite/falcon/r/falcon_bug_22161.result 2008-07-14 05:32:03 +0000
+++ b/mysql-test/suite/falcon/r/falcon_bug_22161.result 2008-07-31 10:37:43 +0000
@@ -9,10 +9,6 @@ CREATE INDEX i1 ON t1 (a);
ERROR 42000: BLOB column 'a' can't be used in key specification with the used table type
ALTER TABLE t1 MODIFY COLUMN a varchar(30000);
CREATE INDEX i1 ON t1 (a);
-Warnings:
-Warning 1071 Specified key was too long; max key length is 1100 bytes
-Warning 1071 Specified key was too long; max key length is 1100 bytes
-Warning 1071 Specified key was too long; max key length is 1100 bytes
SELECT count(*) FROM t1;
count(*)
1
=== renamed file 'mysql-test/suite/falcon_team/r/falcon_bug_23962.result' =>
'mysql-test/suite/falcon/r/falcon_bug_23962.result'
--- a/mysql-test/suite/falcon_team/r/falcon_bug_23962.result 2008-04-20 00:05:17 +0000
+++ b/mysql-test/suite/falcon/r/falcon_bug_23962.result 2008-07-16 16:00:34 +0000
@@ -1,5 +1,5 @@
-SET STORAGE_ENGINE = Falcon;
*** Bug #23962 ***
+SET @@storage_engine = 'Falcon';
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a char(5), KEY (a));
INSERT INTO t1 VALUES ('a'), ('aa'), ('aaa'), ('abc'), ('bbb');
@@ -14,4 +14,7 @@ a
aaa
abc
bbb
+SELECT count(*) FROM t1;
+count(*)
+5
DROP TABLE t1;
=== renamed file 'mysql-test/suite/falcon_team/r/falcon_bug_27997.result' =>
'mysql-test/suite/falcon/r/falcon_bug_27997.result'
=== modified file 'mysql-test/suite/falcon/r/falcon_bug_31295.result'
--- a/mysql-test/suite/falcon/r/falcon_bug_31295.result 2008-04-15 17:29:36 +0000
+++ b/mysql-test/suite/falcon/r/falcon_bug_31295.result 2008-07-29 10:45:39 +0000
@@ -1,22 +1,28 @@
*** Bug #31295 ***
-SET @@storage_engine = 'Falcon';
+SET @@storage_engine = Falcon;
DROP TABLE IF EXISTS t1;
-DROP TABLESPACE ts1 ENGINE 'Falcon';
-CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.fts' ENGINE 'Falcon';
+DROP TABLESPACE ts1 ENGINE Falcon;
+CREATE TABLESPACE ts1 ADD DATAFILE 'ts1.fts' ENGINE Falcon;
CREATE TABLE t1(a int);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE TABLE_NAME='t1';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 FALCON_USER T1
-ALTER TABLE t1 TABLESPACE ts1 ENGINE 'Falcon';
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE TABLE_NAME='t1';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 ts1 T1
-ALTER TABLE t1 ENGINE 'Falcon';
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE TABLE_NAME='t1';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 ts1 T1
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) ENGINE=ENGINE DEFAULT CHARSET=latin1
+ALTER TABLE t1 TABLESPACE ts1 ENGINE Falcon;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) /*!50100 TABLESPACE `ts1` */ ENGINE=ENGINE DEFAULT CHARSET=latin1
+ALTER TABLE t1 ENGINE Falcon;
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) /*!50100 TABLESPACE `ts1` */ ENGINE=ENGINE DEFAULT CHARSET=latin1
SELECT count(*) FROM t1;
count(*)
0
DROP TABLE t1;
-DROP TABLESPACE ts1 ENGINE 'Falcon';
+DROP TABLESPACE ts1 ENGINE Falcon;
=== modified file 'mysql-test/suite/falcon/r/falcon_bug_33404.result'
--- a/mysql-test/suite/falcon/r/falcon_bug_33404.result 2008-04-23 06:54:13 +0000
+++ b/mysql-test/suite/falcon/r/falcon_bug_33404.result 2008-07-29 10:45:39 +0000
@@ -12,23 +12,17 @@ SUBPARTITION p2s1,
SUBPARTITION p2s2
)
);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
-TABLE_NAME = 't1' AND SCHEMA_NAME='test';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 P1S1 ts3 T1#P#P1#SP#P1S1
-TEST T1 P1S2 ts2 T1#P#P1#SP#P1S2
-TEST T1 P2S1 ts1 T1#P#P2#SP#P2S1
-TEST T1 P2S2 ts1 T1#P#P2#SP#P2S2
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL
) /*!50100 TABLESPACE `ts1` */ ENGINE=Falcon DEFAULT CHARSET=latin1 /*!50100 PARTITION BY
RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p1 VALUES LESS THAN (100) (SUBPARTITION p1s1
TABLESPACE = ts3 ENGINE = Falcon, SUBPARTITION p1s2 TABLESPACE = ts2 ENGINE = Falcon),
PARTITION p2 VALUES LESS THAN MAXVALUE (SUBPARTITION p2s1 TABLESPACE = ts1 ENGINE =
Falcon, SUBPARTITION p2s2 TABLESPACE = ts1 ENGINE = Falcon)) */
ALTER TABLE t1 REMOVE PARTITIONING;
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
-TABLE_NAME = 't1' AND SCHEMA_NAME='test';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 ts1 T1
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) /*!50100 TABLESPACE `ts1` */ ENGINE=Falcon DEFAULT CHARSET=latin1
ALTER TABLE t1 TABLESPACE ts1
PARTITION BY RANGE(a) SUBPARTITION BY HASH(a) (
PARTITION p1 VALUES LESS THAN (100) TABLESPACE ts2 (
@@ -40,56 +34,38 @@ SUBPARTITION p2s1,
SUBPARTITION p2s2
)
);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
-TABLE_NAME = 't1' AND SCHEMA_NAME='test';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 P1S1 ts3 T1#P#P1#SP#P1S1
-TEST T1 P1S2 ts2 T1#P#P1#SP#P1S2
-TEST T1 P2S1 ts1 T1#P#P2#SP#P2S1
-TEST T1 P2S2 ts1 T1#P#P2#SP#P2S2
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) /*!50100 TABLESPACE `ts1` */ ENGINE=Falcon DEFAULT CHARSET=latin1 /*!50100 PARTITION BY
RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p1 VALUES LESS THAN (100) (SUBPARTITION p1s1
TABLESPACE = ts3 ENGINE = Falcon, SUBPARTITION p1s2 TABLESPACE = ts2 ENGINE = Falcon),
PARTITION p2 VALUES LESS THAN (200) (SUBPARTITION p2s1 TABLESPACE = ts1 ENGINE = Falcon,
SUBPARTITION p2s2 TABLESPACE = ts1 ENGINE = Falcon)) */
ALTER TABLE t1 ADD PARTITION (PARTITION p3 VALUES LESS THAN MAXVALUE);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
-TABLE_NAME = 't1' AND SCHEMA_NAME='test';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 P1S1 ts3 T1#P#P1#SP#P1S1
-TEST T1 P1S2 ts2 T1#P#P1#SP#P1S2
-TEST T1 P2S1 ts1 T1#P#P2#SP#P2S1
-TEST T1 P2S2 ts1 T1#P#P2#SP#P2S2
-TEST T1 P3SP0 ts1 T1#P#P3#SP#P3SP0
-TEST T1 P3SP1 ts1 T1#P#P3#SP#P3SP1
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) /*!50100 TABLESPACE `ts1` */ ENGINE=Falcon DEFAULT CHARSET=latin1 /*!50100 PARTITION BY
RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p1 VALUES LESS THAN (100) (SUBPARTITION p1s1
TABLESPACE = ts3 ENGINE = Falcon, SUBPARTITION p1s2 TABLESPACE = ts2 ENGINE = Falcon),
PARTITION p2 VALUES LESS THAN (200) (SUBPARTITION p2s1 TABLESPACE = ts1 ENGINE = Falcon,
SUBPARTITION p2s2 TABLESPACE = ts1 ENGINE = Falcon), PARTITION p3 VALUES LESS THAN
MAXVALUE (SUBPARTITION p3sp0 TABLESPACE = ts1 ENGINE = Falcon, SUBPARTITION p3sp1
TABLESPACE = ts1 ENGINE = Falcon)) */
ALTER TABLE t1 REORGANIZE PARTITION p3 INTO (PARTITION p3 VALUES LESS THAN
MAXVALUE TABLESPACE ts1);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
-TABLE_NAME = 't1' AND SCHEMA_NAME='test';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 P1S1 ts3 T1#P#P1#SP#P1S1
-TEST T1 P1S2 ts2 T1#P#P1#SP#P1S2
-TEST T1 P2S1 ts1 T1#P#P2#SP#P2S1
-TEST T1 P2S2 ts1 T1#P#P2#SP#P2S2
-TEST T1 P3SP0 ts1 T1#P#P3#SP#P3SP0
-TEST T1 P3SP1 ts1 T1#P#P3#SP#P3SP1
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) /*!50100 TABLESPACE `ts1` */ ENGINE=Falcon DEFAULT CHARSET=latin1 /*!50100 PARTITION BY
RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p1 VALUES LESS THAN (100) (SUBPARTITION p1s1
TABLESPACE = ts3 ENGINE = Falcon, SUBPARTITION p1s2 TABLESPACE = ts2 ENGINE = Falcon),
PARTITION p2 VALUES LESS THAN (200) (SUBPARTITION p2s1 TABLESPACE = ts1 ENGINE = Falcon,
SUBPARTITION p2s2 TABLESPACE = ts1 ENGINE = Falcon), PARTITION p3 VALUES LESS THAN
MAXVALUE (SUBPARTITION p3sp0 TABLESPACE = ts1 ENGINE = Falcon, SUBPARTITION p3sp1
TABLESPACE = ts1 ENGINE = Falcon)) */
ALTER TABLE t1 REORGANIZE PARTITION p3 INTO (PARTITION p3 VALUES LESS THAN
MAXVALUE TABLESPACE ts2);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
-TABLE_NAME = 't1' AND SCHEMA_NAME='test';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 P1S1 ts3 T1#P#P1#SP#P1S1
-TEST T1 P1S2 ts2 T1#P#P1#SP#P1S2
-TEST T1 P2S1 ts1 T1#P#P2#SP#P2S1
-TEST T1 P2S2 ts1 T1#P#P2#SP#P2S2
-TEST T1 P3SP0 ts2 T1#P#P3#SP#P3SP0
-TEST T1 P3SP1 ts2 T1#P#P3#SP#P3SP1
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) /*!50100 TABLESPACE `ts1` */ ENGINE=Falcon DEFAULT CHARSET=latin1 /*!50100 PARTITION BY
RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p1 VALUES LESS THAN (100) (SUBPARTITION p1s1
TABLESPACE = ts3 ENGINE = Falcon, SUBPARTITION p1s2 TABLESPACE = ts2 ENGINE = Falcon),
PARTITION p2 VALUES LESS THAN (200) (SUBPARTITION p2s1 TABLESPACE = ts1 ENGINE = Falcon,
SUBPARTITION p2s2 TABLESPACE = ts1 ENGINE = Falcon), PARTITION p3 VALUES LESS THAN
MAXVALUE (SUBPARTITION p3sp0 TABLESPACE = ts2 ENGINE = Falcon, SUBPARTITION p3sp1
TABLESPACE = ts2 ENGINE = Falcon)) */
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO (PARTITION p1 VALUES LESS THAN
(100) TABLESPACE ts2);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
-TABLE_NAME = 't1' AND SCHEMA_NAME='test';
-SCHEMA_NAME TABLE_NAME PARTITION TABLESPACE INTERNAL_NAME
-TEST T1 P2S1 ts1 T1#P#P2#SP#P2S1
-TEST T1 P2S2 ts1 T1#P#P2#SP#P2S2
-TEST T1 P3SP0 ts2 T1#P#P3#SP#P3SP0
-TEST T1 P3SP1 ts2 T1#P#P3#SP#P3SP1
-TEST T1 P1SP0 ts2 T1#P#P1#SP#P1SP0
-TEST T1 P1SP1 ts2 T1#P#P1#SP#P1SP1
+SHOW CREATE TABLE t1;
+Table Create Table
+t1 CREATE TABLE `t1` (
+ `a` int(11) DEFAULT NULL
+) /*!50100 TABLESPACE `ts1` */ ENGINE=Falcon DEFAULT CHARSET=latin1 /*!50100 PARTITION BY
RANGE (a) SUBPARTITION BY HASH (a) (PARTITION p1 VALUES LESS THAN (100) (SUBPARTITION
p1sp0 TABLESPACE = ts2 ENGINE = Falcon, SUBPARTITION p1sp1 TABLESPACE = ts2 ENGINE =
Falcon), PARTITION p2 VALUES LESS THAN (200) (SUBPARTITION p2s1 TABLESPACE = ts1 ENGINE =
Falcon, SUBPARTITION p2s2 TABLESPACE = ts1 ENGINE = Falcon), PARTITION p3 VALUES LESS THAN
MAXVALUE (SUBPARTITION p3sp0 TABLESPACE = ts2 ENGINE = Falcon, SUBPARTITION p3sp1
TABLESPACE = ts2 ENGINE = Falcon)) */
DROP TABLE t1;
DROP TABLESPACE ts1 ENGINE=Falcon;
DROP TABLESPACE ts2 ENGINE=Falcon;
=== added file 'mysql-test/suite/falcon/r/falcon_bug_35939.result'
--- a/mysql-test/suite/falcon/r/falcon_bug_35939.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/falcon/r/falcon_bug_35939.result 2008-07-31 10:04:30 +0000
@@ -0,0 +1,61 @@
+*** Bug #35939 ***
+SET @@storage_engine = 'Falcon';
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1(i int);
+INSERT INTO t1(i) VALUES (1),(2),(3),(4);
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+TABLE_ROWS
+4
+UPDATE t1 set i=i+1;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+TABLE_ROWS
+4
+DELETE FROM t1 WHERE i=2;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+TABLE_ROWS
+3
+SET AUTOCOMMIT=OFF;
+BEGIN;
+INSERT INTO t1(i) VALUES(42);
+DELETE FROM t1 WHERE i=42;
+COMMIT;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+TABLE_ROWS
+3
+BEGIN;
+DELETE FROM t1 WHERE i=4;
+INSERT INTO t1(i) VALUES(4);
+COMMIT;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+TABLE_ROWS
+3
+BEGIN;
+INSERT INTO t1(i) VALUES(42);
+UPDATE t1 SET i=43 WHERE i=42;
+DELETE FROM t1 WHERE i=43;
+COMMIT;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+TABLE_ROWS
+3
+BEGIN;
+DELETE FROM t1 WHERE i=4;
+INSERT INTO t1(i) VALUES(4);
+UPDATE t1 SET i=42 WHERE i=4;
+UPDATE t1 SET i=4 WHERE i=42;
+COMMIT;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+TABLE_ROWS
+3
+BEGIN;
+INSERT INTO t1(i) VALUES(42);
+UPDATE t1 SET i=43 WHERE i=42;
+DELETE FROM t1 WHERE i=43;
+ROLLBACK;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+TABLE_ROWS
+3
+SET AUTOCOMMIT=ON;
+SELECT count(*) FROM t1;
+count(*)
+3
+DROP TABLE t1;
=== renamed file 'mysql-test/suite/falcon_team/r/falcon_bug_37080.result' =>
'mysql-test/suite/falcon/r/falcon_bug_37080.result'
--- a/mysql-test/suite/falcon_team/r/falcon_bug_37080.result 2008-07-03 08:46:37 +0000
+++ b/mysql-test/suite/falcon/r/falcon_bug_37080.result 2008-07-16 17:52:19 +0000
@@ -1,5 +1,5 @@
*** Bug #37080 ***
SET @@storage_engine = 'Falcon';
-DROP TABLE IF EXISTS t;
-CREATE TABLE t(i int);
-DROP TABLE t;
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1(a int);
+DROP TABLE t1;
=== added file 'mysql-test/suite/falcon/r/falcon_bug_38039.result'
--- a/mysql-test/suite/falcon/r/falcon_bug_38039.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/falcon/r/falcon_bug_38039.result 2008-07-16 12:40:47 +0000
@@ -0,0 +1,18 @@
+*** Bug #38039 ***
+SET @@storage_engine = 'Falcon';
+DROP TABLE IF EXISTS t1;
+CREATE TABLE t1 (a_int INT) Engine = Falcon;
+ALTER TABLE t1 ADD KEY (a_int);
+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
+t1 1 a_int 1 a_int NULL 1 NULL NULL YES BTREE
+ALTER TABLE t1 ADD KEY (a_int);
+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
+t1 1 a_int 1 a_int NULL 1 NULL NULL YES BTREE
+t1 1 a_int_2 1 a_int NULL 1 NULL NULL YES BTREE
+ALTER TABLE t1 DROP KEY a_int;
+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
+t1 1 a_int_2 1 a_int NULL 1 NULL NULL YES BTREE
+DROP TABLE t1;
=== modified file 'mysql-test/suite/falcon/r/falcon_options.result'
--- a/mysql-test/suite/falcon/r/falcon_options.result 2008-07-10 19:00:14 +0000
+++ b/mysql-test/suite/falcon/r/falcon_options.result 2008-07-17 13:52:17 +0000
@@ -9,7 +9,6 @@ falcon_debug_trace 0
falcon_direct_io 1
falcon_gopher_threads 5
falcon_index_chill_threshold 4194304
-falcon_initial_allocation 0
falcon_io_threads 2
falcon_large_blob_threshold 160000
falcon_lock_wait_timeout 50
@@ -92,7 +91,6 @@ FALCON_DEBUG_TRACE 0
FALCON_DIRECT_IO 1
FALCON_GOPHER_THREADS 5
FALCON_INDEX_CHILL_THRESHOLD 1073741824
-FALCON_INITIAL_ALLOCATION 0
FALCON_IO_THREADS 2
FALCON_LARGE_BLOB_THRESHOLD 160000
FALCON_LOCK_WAIT_TIMEOUT 50
=== modified file 'mysql-test/suite/falcon/r/falcon_options2.result'
--- a/mysql-test/suite/falcon/r/falcon_options2.result 2008-07-10 19:00:14 +0000
+++ b/mysql-test/suite/falcon/r/falcon_options2.result 2008-07-17 13:52:17 +0000
@@ -10,7 +10,6 @@ FALCON_DEBUG_TRACE 0
FALCON_DIRECT_IO 1
FALCON_GOPHER_THREADS 5
FALCON_INDEX_CHILL_THRESHOLD 4194304
-FALCON_INITIAL_ALLOCATION 0
FALCON_IO_THREADS 2
FALCON_LARGE_BLOB_THRESHOLD 160000
FALCON_LOCK_WAIT_TIMEOUT 50
@@ -54,9 +53,6 @@ SELECT @@falcon_gopher_threads;
SELECT @@falcon_index_chill_threshold;
@@falcon_index_chill_threshold
4194304
-SELECT @@falcon_initial_allocation;
-@@falcon_initial_allocation
-0
SELECT @@falcon_io_threads;
@@falcon_io_threads
2
=== modified file 'mysql-test/suite/falcon/t/falcon_bug_22161.test'
--- a/mysql-test/suite/falcon/t/falcon_bug_22161.test 2008-02-06 15:21:13 +0000
+++ b/mysql-test/suite/falcon/t/falcon_bug_22161.test 2008-07-31 10:37:43 +0000
@@ -25,7 +25,9 @@ ALTER TABLE t1 MODIFY COLUMN a text;
--error ER_BLOB_USED_AS_KEY
CREATE INDEX i1 ON t1 (a);
ALTER TABLE t1 MODIFY COLUMN a varchar(30000);
+--disable_warnings
CREATE INDEX i1 ON t1 (a);
+--enable_warnings
# ----------------------------------------------------- #
# --- Check --- #
=== renamed file 'mysql-test/suite/falcon_team/t/falcon_bug_23962.test' =>
'mysql-test/suite/falcon/t/falcon_bug_23962.test'
--- a/mysql-test/suite/falcon_team/t/falcon_bug_23962.test 2008-04-20 00:05:17 +0000
+++ b/mysql-test/suite/falcon/t/falcon_bug_23962.test 2008-07-16 16:00:34 +0000
@@ -1,9 +1,16 @@
--source include/have_falcon.inc
-SET STORAGE_ENGINE = Falcon;
+
#
# Bug #23962: Wrong results with > search
#
--echo *** Bug #23962 ***
+
+# ----------------------------------------------------- #
+# --- Initialisation --- #
+# ----------------------------------------------------- #
+let $engine = 'Falcon';
+eval SET @@storage_engine = $engine;
+
--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings
@@ -11,8 +18,18 @@ DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (a char(5), KEY (a));
INSERT INTO t1 VALUES ('a'), ('aa'), ('aaa'), ('abc'), ('bbb');
+# ----------------------------------------------------- #
+# --- Test --- #
+# ----------------------------------------------------- #
SELECT * FROM t1 WHERE a > 'a' ORDER BY a;
SELECT * FROM t1 WHERE a > 'aa' ORDER BY a;
-# Final cleanup.
+# ----------------------------------------------------- #
+# --- Check --- #
+# ----------------------------------------------------- #
+SELECT count(*) FROM t1;
+
+# ----------------------------------------------------- #
+# --- Final cleanup --- #
+# ----------------------------------------------------- #
DROP TABLE t1;
=== renamed file 'mysql-test/suite/falcon_team/t/falcon_bug_27997.test' =>
'mysql-test/suite/falcon/t/falcon_bug_27997.test'
=== modified file 'mysql-test/suite/falcon/t/falcon_bug_31295.test'
--- a/mysql-test/suite/falcon/t/falcon_bug_31295.test 2008-04-15 17:29:36 +0000
+++ b/mysql-test/suite/falcon/t/falcon_bug_31295.test 2008-07-29 10:45:39 +0000
@@ -8,7 +8,7 @@
# ----------------------------------------------------- #
# --- Initialisation --- #
# ----------------------------------------------------- #
-let $engine = 'Falcon';
+let $engine = Falcon;
eval SET @@storage_engine = $engine;
--disable_warnings
@@ -23,12 +23,14 @@ CREATE TABLE t1(a int);
# ----------------------------------------------------- #
# --- Test --- #
# ----------------------------------------------------- #
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE TABLE_NAME='t1';
+--replace_result $engine ENGINE
+SHOW CREATE TABLE t1;
eval ALTER TABLE t1 TABLESPACE ts1 ENGINE $engine;
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE TABLE_NAME='t1';
+--replace_result $engine ENGINE
+SHOW CREATE TABLE t1;
eval ALTER TABLE t1 ENGINE $engine;
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE TABLE_NAME='t1';
-
+--replace_result $engine ENGINE
+SHOW CREATE TABLE t1;
# ----------------------------------------------------- #
# --- Check --- #
=== modified file 'mysql-test/suite/falcon/t/falcon_bug_33404.test'
--- a/mysql-test/suite/falcon/t/falcon_bug_33404.test 2008-04-23 06:54:13 +0000
+++ b/mysql-test/suite/falcon/t/falcon_bug_33404.test 2008-07-29 10:45:39 +0000
@@ -19,13 +19,10 @@ PARTITION BY RANGE(a) SUBPARTITION BY HA
SUBPARTITION p2s2
)
);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
- TABLE_NAME = 't1' AND SCHEMA_NAME='test';
SHOW CREATE TABLE t1;
ALTER TABLE t1 REMOVE PARTITIONING;
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
- TABLE_NAME = 't1' AND SCHEMA_NAME='test';
+SHOW CREATE TABLE t1;
ALTER TABLE t1 TABLESPACE ts1
PARTITION BY RANGE(a) SUBPARTITION BY HASH(a) (
@@ -38,27 +35,22 @@ PARTITION BY RANGE(a) SUBPARTITION BY HA
SUBPARTITION p2s2
)
);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
- TABLE_NAME = 't1' AND SCHEMA_NAME='test';
+SHOW CREATE TABLE t1;
ALTER TABLE t1 ADD PARTITION (PARTITION p3 VALUES LESS THAN MAXVALUE);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
- TABLE_NAME = 't1' AND SCHEMA_NAME='test';
+SHOW CREATE TABLE t1;
ALTER TABLE t1 REORGANIZE PARTITION p3 INTO (PARTITION p3 VALUES LESS THAN
MAXVALUE TABLESPACE ts1);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
- TABLE_NAME = 't1' AND SCHEMA_NAME='test';
+SHOW CREATE TABLE t1;
ALTER TABLE t1 REORGANIZE PARTITION p3 INTO (PARTITION p3 VALUES LESS THAN
MAXVALUE TABLESPACE ts2);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
- TABLE_NAME = 't1' AND SCHEMA_NAME='test';
+SHOW CREATE TABLE t1;
ALTER TABLE t1 REORGANIZE PARTITION p1 INTO (PARTITION p1 VALUES LESS THAN
(100) TABLESPACE ts2);
-SELECT * FROM INFORMATION_SCHEMA.FALCON_TABLES WHERE
- TABLE_NAME = 't1' AND SCHEMA_NAME='test';
+SHOW CREATE TABLE t1;
DROP TABLE t1;
DROP TABLESPACE ts1 ENGINE=Falcon;
=== added file 'mysql-test/suite/falcon/t/falcon_bug_35939.test'
--- a/mysql-test/suite/falcon/t/falcon_bug_35939.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/falcon/t/falcon_bug_35939.test 2008-07-31 10:04:30 +0000
@@ -0,0 +1,86 @@
+--source include/have_falcon.inc
+
+#
+# Bug #35939: Drift in Falcon row count reported by SHOW TABLE STATUS
+#
+--echo *** Bug #35939 ***
+
+# ----------------------------------------------------- #
+# --- Initialisation --- #
+# ----------------------------------------------------- #
+let $engine = 'Falcon';
+eval SET @@storage_engine = $engine;
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+# ----------------------------------------------------- #
+# --- Test --- #
+# ----------------------------------------------------- #
+CREATE TABLE t1(i int);
+INSERT INTO t1(i) VALUES (1),(2),(3),(4);
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+# Expect 4 rows
+UPDATE t1 set i=i+1;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+# Expect 4 rows, nothing added or deleted
+DELETE FROM t1 WHERE i=2;
+# One row deleted, expect count=3
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+
+# insert/delete on the same row, count does not change
+SET AUTOCOMMIT=OFF;
+# Next tests are transactional
+BEGIN;
+INSERT INTO t1(i) VALUES(42);
+DELETE FROM t1 WHERE i=42;
+COMMIT;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+# Count should not be changed,count=3
+
+#delete/insert, count does not change
+BEGIN;
+DELETE FROM t1 WHERE i=4;
+INSERT INTO t1(i) VALUES(4);
+COMMIT;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+# Count should not be changed,count=3
+
+# insert/update/delete on the same row, count does not change
+BEGIN;
+INSERT INTO t1(i) VALUES(42);
+UPDATE t1 SET i=43 WHERE i=42;
+DELETE FROM t1 WHERE i=43;
+COMMIT;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+# Count should not be changed,count=3
+
+#delete/insert/update/update, count does not change
+BEGIN;
+DELETE FROM t1 WHERE i=4;
+INSERT INTO t1(i) VALUES(4);
+UPDATE t1 SET i=42 WHERE i=4;
+UPDATE t1 SET i=4 WHERE i=42;
+COMMIT;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+# Count should not be changed,count=3
+
+# same as before, but with rollback
+BEGIN;
+INSERT INTO t1(i) VALUES(42);
+UPDATE t1 SET i=43 WHERE i=42;
+DELETE FROM t1 WHERE i=43;
+ROLLBACK;
+SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 't1';
+SET AUTOCOMMIT=ON;
+
+# ----------------------------------------------------- #
+# --- Check --- #
+# ----------------------------------------------------- #
+SELECT count(*) FROM t1;
+
+# ----------------------------------------------------- #
+# --- Final cleanup --- #
+# ----------------------------------------------------- #
+DROP TABLE t1;
=== renamed file 'mysql-test/suite/falcon_team/t/falcon_bug_37080.test' =>
'mysql-test/suite/falcon/t/falcon_bug_37080.test'
--- a/mysql-test/suite/falcon_team/t/falcon_bug_37080.test 2008-07-03 08:46:37 +0000
+++ b/mysql-test/suite/falcon/t/falcon_bug_37080.test 2008-07-16 17:52:19 +0000
@@ -1,7 +1,8 @@
--source include/have_falcon.inc
+
#
# Bug#37080: Falcon deadlock on parallel TRUNCATE and INSERT
-#
+#
--echo *** Bug #37080 ***
# ----------------------------------------------------- #
@@ -11,25 +12,24 @@ let $engine = 'Falcon';
eval SET @@storage_engine = $engine;
--disable_warnings
-DROP TABLE IF EXISTS t;
+DROP TABLE IF EXISTS t1;
--enable_warnings
-
-CREATE TABLE t(i int);
+CREATE TABLE t1(a int);
connect (conn1,localhost,root,,);
+
# ----------------------------------------------------- #
# --- Test --- #
# ----------------------------------------------------- #
-
let $num=10000;
--disable_query_log
while ($num)
{
connection conn1;
- --send insert into t values(1);
+ --send insert into t1 values(1), (3), (5), (7) , (11);
connection default;
- --send truncate table t;
+ --send truncate table t1;
connection conn1;
--reap
connection default;
@@ -45,4 +45,4 @@ while ($num)
# ----------------------------------------------------- #
# --- Final cleanup --- #
# ----------------------------------------------------- #
-DROP TABLE t;
+DROP TABLE t1;
=== added file 'mysql-test/suite/falcon/t/falcon_bug_38039.test'
--- a/mysql-test/suite/falcon/t/falcon_bug_38039.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/falcon/t/falcon_bug_38039.test 2008-07-16 12:40:47 +0000
@@ -0,0 +1,43 @@
+--source include/have_falcon.inc
+
+#
+# Bug #38039: Assertion lockState == 0 failed in StorageTableShare::deleteTable
SyncObject
+#
+
+--echo *** Bug #38039 ***
+
+# ----------------------------------------------------- #
+# --- Initialisation --- #
+# ----------------------------------------------------- #
+let $engine = 'Falcon';
+eval SET @@storage_engine = $engine;
+
+--disable_warnings
+DROP TABLE IF EXISTS t1;
+--enable_warnings
+
+CREATE TABLE t1 (a_int INT) Engine = Falcon;
+
+# ----------------------------------------------------- #
+# --- Test --- #
+# ----------------------------------------------------- #
+
+## SHOW INDEXES is not required to reproduce the bug, but
+## is included here to verify correct behavior.
+
+ALTER TABLE t1 ADD KEY (a_int);
+SHOW INDEXES FROM t1;
+
+ALTER TABLE t1 ADD KEY (a_int);
+SHOW INDEXES FROM t1;
+
+ALTER TABLE t1 DROP KEY a_int;
+SHOW INDEXES FROM t1;
+
+DROP TABLE t1;
+
+# ----------------------------------------------------- #
+# --- Final cleanup --- #
+# ----------------------------------------------------- #
+
+## None, DROP TABLE is part of the test.
=== modified file 'mysql-test/suite/falcon/t/falcon_options2.test'
--- a/mysql-test/suite/falcon/t/falcon_options2.test 2008-07-10 19:00:14 +0000
+++ b/mysql-test/suite/falcon/t/falcon_options2.test 2008-07-17 13:52:17 +0000
@@ -14,7 +14,6 @@ SELECT @@falcon_debug_trace;
SELECT @@falcon_direct_io;
SELECT @@falcon_gopher_threads;
SELECT @@falcon_index_chill_threshold;
-SELECT @@falcon_initial_allocation;
SELECT @@falcon_io_threads;
SELECT @@falcon_large_blob_threshold;
SELECT @@falcon_lock_wait_timeout;
=== modified file 'mysql-test/suite/funcs_1/r/is_columns_is_falcon.result'
--- a/mysql-test/suite/funcs_1/r/is_columns_is_falcon.result 2008-04-28 20:09:51 +0000
+++ b/mysql-test/suite/funcs_1/r/is_columns_is_falcon.result 2008-07-29 10:45:39 +0000
@@ -36,11 +36,6 @@ NULL information_schema FALCON_SYSTEM_ME
NULL information_schema FALCON_SYSTEM_MEMORY_SUMMARY SMALL_HUNKS 5 0 NO int NULL NULL 10 0 NULL NULL int(4) select Default Default
NULL information_schema FALCON_SYSTEM_MEMORY_SUMMARY TOTAL_SPACE 1 0 NO bigint NULL NULL 19 0 NULL NULL bigint(4) select Default Default
NULL information_schema FALCON_SYSTEM_MEMORY_SUMMARY UNIQUE_SIZES 6 0 NO int NULL NULL 10 0 NULL NULL int(4) select Default Default
-NULL information_schema FALCON_TABLES INTERNAL_NAME 5 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
-NULL information_schema FALCON_TABLES PARTITION 3 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
-NULL information_schema FALCON_TABLES SCHEMA_NAME 1 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
-NULL information_schema FALCON_TABLES TABLESPACE 4 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
-NULL information_schema FALCON_TABLES TABLE_NAME 2 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
NULL information_schema FALCON_TABLESPACES COMMENT 3 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
NULL information_schema FALCON_TABLESPACES TABLESPACE_NAME 1 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
NULL information_schema FALCON_TABLESPACES TYPE 2 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
@@ -161,11 +156,6 @@ NULL information_schema FALCON_SYSTEM_ME
NULL information_schema FALCON_SYSTEM_MEMORY_SUMMARY BIG_HUNKS int NULL NULL NULL NULL int(4)
NULL information_schema FALCON_SYSTEM_MEMORY_SUMMARY SMALL_HUNKS int NULL NULL NULL NULL int(4)
NULL information_schema FALCON_SYSTEM_MEMORY_SUMMARY UNIQUE_SIZES int NULL NULL NULL NULL int(4)
-4.0000 information_schema FALCON_TABLES SCHEMA_NAME varchar 127 508 utf8 utf8_general_ci varchar(127)
-4.0000 information_schema FALCON_TABLES TABLE_NAME varchar 127 508 utf8 utf8_general_ci varchar(127)
-4.0000 information_schema FALCON_TABLES PARTITION varchar 127 508 utf8 utf8_general_ci varchar(127)
-4.0000 information_schema FALCON_TABLES TABLESPACE varchar 127 508 utf8 utf8_general_ci varchar(127)
-4.0000 information_schema FALCON_TABLES INTERNAL_NAME varchar 127 508 utf8 utf8_general_ci varchar(127)
4.0000 information_schema FALCON_TABLESPACES TABLESPACE_NAME varchar 127 508 utf8 utf8_general_ci varchar(127)
4.0000 information_schema FALCON_TABLESPACES TYPE varchar 127 508 utf8 utf8_general_ci varchar(127)
4.0000 information_schema FALCON_TABLESPACES COMMENT varchar 127 508 utf8 utf8_general_ci varchar(127)
=== modified file 'mysql-test/suite/funcs_1/r/is_tables_is_falcon.result'
--- a/mysql-test/suite/funcs_1/r/is_tables_is_falcon.result 2008-06-19 18:56:48 +0000
+++ b/mysql-test/suite/funcs_1/r/is_tables_is_falcon.result 2008-07-29 10:45:39 +0000
@@ -153,29 +153,6 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME FALCON_TABLES
-TABLE_TYPE SYSTEM VIEW
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION utf8_general_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA information_schema
TABLE_NAME FALCON_TABLESPACES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
@@ -469,29 +446,6 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME FALCON_TABLES
-TABLE_TYPE SYSTEM VIEW
-ENGINE MEMORY
-VERSION 10
-ROW_FORMAT Fixed
-TABLE_ROWS #TBLR#
-AVG_ROW_LENGTH #ARL#
-DATA_LENGTH #DL#
-MAX_DATA_LENGTH #MDL#
-INDEX_LENGTH #IL#
-DATA_FREE #DF#
-AUTO_INCREMENT NULL
-CREATE_TIME #CRT#
-UPDATE_TIME #UT#
-CHECK_TIME #CT#
-TABLE_COLLATION utf8_general_ci
-CHECKSUM NULL
-CREATE_OPTIONS #CO#
-TABLE_COMMENT #TC#
-user_comment
-Separator -----------------------------------------------------
-TABLE_CATALOG NULL
-TABLE_SCHEMA information_schema
TABLE_NAME FALCON_TABLESPACES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
=== modified file 'mysql-test/t/information_schema-master.opt'
--- a/mysql-test/t/information_schema-master.opt 2007-11-30 03:26:57 +0000
+++ b/mysql-test/t/information_schema-master.opt 2008-07-29 10:45:39 +0000
@@ -6,7 +6,6 @@
--loose-skip-plugin-falcon_syncobjects
--loose-skip-plugin-falcon_system_memory_detail
--loose-skip-plugin-falcon_system_memory_summary
---loose-skip-plugin-falcon_tables
--loose-skip-plugin-falcon_transaction_summary
--loose-skip-plugin-falcon_transactions
--loose-skip-plugin-falcon_version
=== modified file 'mysql-test/t/information_schema_db-master.opt'
--- a/mysql-test/t/information_schema_db-master.opt 2007-11-30 03:26:57 +0000
+++ b/mysql-test/t/information_schema_db-master.opt 2008-07-29 10:45:39 +0000
@@ -6,7 +6,6 @@
--loose-skip-plugin-falcon_syncobjects
--loose-skip-plugin-falcon_system_memory_detail
--loose-skip-plugin-falcon_system_memory_summary
---loose-skip-plugin-falcon_tables
--loose-skip-plugin-falcon_transaction_summary
--loose-skip-plugin-falcon_transactions
--loose-skip-plugin-falcon_version
=== modified file 'mysql-test/t/mysqlshow-master.opt'
--- a/mysql-test/t/mysqlshow-master.opt 2007-11-30 03:26:57 +0000
+++ b/mysql-test/t/mysqlshow-master.opt 2008-07-29 10:45:39 +0000
@@ -6,7 +6,6 @@
--loose-skip-plugin-falcon_syncobjects
--loose-skip-plugin-falcon_system_memory_detail
--loose-skip-plugin-falcon_system_memory_summary
---loose-skip-plugin-falcon_tables
--loose-skip-plugin-falcon_transaction_summary
--loose-skip-plugin-falcon_transactions
--loose-skip-plugin-falcon_version
=== modified file 'mysql-test/t/variables-master.opt'
--- a/mysql-test/t/variables-master.opt 2007-09-28 19:51:23 +0000
+++ b/mysql-test/t/variables-master.opt 2008-07-29 10:45:39 +0000
@@ -6,6 +6,5 @@
--loose-skip-plugin-falcon_syncobjects
--loose-skip-plugin-falcon_system_memory_detail
--loose-skip-plugin-falcon_system_memory_summary
---loose-skip-plugin-falcon_tables
--loose-skip-plugin-falcon_transaction_summary
--loose-skip-plugin-falcon_transactions
=== modified file 'sql/probes.h'
--- a/sql/probes.h 2007-09-21 07:09:31 +0000
+++ b/sql/probes.h 2008-07-08 13:49:57 +0000
@@ -11,7 +11,7 @@
extern "C" {
#endif
-#if _DTRACE_VERSION
+#if _DTRACE_VERSION && defined(HAVE_DTRACE)
#define MYSQL_DELETE_END() \
__dtrace_mysql___delete_end()
=== modified file 'storage/falcon/BDB.cpp'
--- a/storage/falcon/BDB.cpp 2008-05-08 20:37:28 +0000
+++ b/storage/falcon/BDB.cpp 2008-07-24 08:45:03 +0000
@@ -57,8 +57,11 @@ Bdb::Bdb()
priorDirty = nextDirty = NULL;
flushIt = false;
dbb = NULL;
+ syncObject.setName("Bdb::syncObject");
+ syncWrite.setName("Bdb::syncWrite");
#ifdef COLLECT_BDB_HISTORY
+ syncHistory.setName("Bdb::syncHistory");
lockType = None;
initCount = 0;
historyCount = 0;
@@ -203,7 +206,7 @@ void Bdb::initHistory()
void Bdb::addHistory(int delta, const char *file, int line)
{
- Sync sync (&historySyncObject, "Bdb::addHistory");
+ Sync sync (&syncHistory, "Bdb::addHistory");
sync.lock (Exclusive);
unsigned int historyOffset = historyCount++ % MAX_BDB_HISTORY;
=== modified file 'storage/falcon/BDB.h'
--- a/storage/falcon/BDB.h 2008-05-10 04:18:41 +0000
+++ b/storage/falcon/BDB.h 2008-07-24 08:45:03 +0000
@@ -103,7 +103,7 @@ public:
volatile INTERLOCK_TYPE useCount;
#ifdef COLLECT_BDB_HISTORY
- SyncObject historySyncObject;
+ SyncObject syncHistory;
uint initCount;
uint historyCount;
struct bdb_history history[MAX_BDB_HISTORY];
=== modified file 'storage/falcon/BackLog.cpp'
--- a/storage/falcon/BackLog.cpp 2008-04-12 02:22:50 +0000
+++ b/storage/falcon/BackLog.cpp 2008-07-17 13:52:17 +0000
@@ -38,7 +38,7 @@ BackLog::BackLog(Database *db, const cha
database = db;
dbb = new Dbb(database->dbb, 0);
dbb->createPath(fileName);
- dbb->create(fileName, dbb->pageSize, 0, HdrTableSpace, 0, NULL, 0);
+ dbb->create(fileName, dbb->pageSize, 0, HdrTableSpace, 0, NULL);
dbb->noLog = true;
dbb->tableSpaceId = -1;
int32 sectionId = Section::createSection (dbb, NO_TRANSACTION);
=== modified file 'storage/falcon/Cache.cpp'
--- a/storage/falcon/Cache.cpp 2008-07-09 12:35:48 +0000
+++ b/storage/falcon/Cache.cpp 2008-07-24 08:45:03 +0000
@@ -89,9 +89,12 @@ Cache::Cache(Database *db, int pageSz, i
bufferHunks = new char* [numberHunks];
memset(bufferHunks, 0, numberHunks * sizeof(char*));
syncObject.setName("Cache::syncObject");
- syncDirty.setName("Cache::syncDirty");
syncFlush.setName("Cache::syncFlush");
+ syncDirty.setName("Cache::syncDirty");
+ syncThreads.setName("Cache::syncThreads");
syncWait.setName("Cache::syncWait");
+ bufferQueue.syncObject.setName("Cache::bufferQueue.syncObject");
+
flushBitmap = new Bitmap;
numberIoThreads = falcon_io_threads;
ioThreads = new Thread*[numberIoThreads];
@@ -359,8 +362,8 @@ Bdb* Cache::fakePage(Dbb *dbb, int32 pag
void Cache::flush(int64 arg)
{
- Sync flushLock(&syncFlush, "Cache::flush");
- Sync sync(&syncDirty, "Cache::ioThread");
+ Sync flushLock(&syncFlush, "Cache::flush(1)");
+ Sync sync(&syncDirty, "Cache::flush(2)");
flushLock.lock(Exclusive);
if (flushing)
@@ -513,7 +516,7 @@ void Cache::markClean(Bdb *bdb)
void Cache::writePage(Bdb *bdb, int type)
{
- Sync writer(&bdb->syncWrite, "Cache::writePage");
+ Sync writer(&bdb->syncWrite, "Cache::writePage(1)");
writer.lock(Exclusive);
if (!bdb->isDirty)
@@ -597,7 +600,7 @@ void Cache::writePage(Bdb *bdb, int type
if (dbb->shadows)
{
- Sync sync (&dbb->cloneSyncObject, "Cache::writePage");
+ Sync sync (&dbb->syncClone, "Cache::writePage(2)");
sync.lock (Shared);
for (DatabaseCopy *shadow = dbb->shadows; shadow; shadow = shadow->next)
@@ -665,9 +668,9 @@ void Cache::freePage(Dbb *dbb, int32 pag
void Cache::flush(Dbb *dbb)
{
- //Sync sync (&syncDirty, "Cache::flush(Dbb)");
+ //Sync sync (&syncDirty, "Cache::flush(1)");
//sync.lock (Exclusive);
- Sync sync (&syncObject, "Cache::freePage");
+ Sync sync (&syncObject, "Cache::flush(3)");
sync.lock (Shared);
for (Bdb *bdb = bdbs; bdb < endBdbs; ++bdb)
@@ -761,10 +764,10 @@ void Cache::ioThread(void* arg)
void Cache::ioThread(void)
{
- Sync syncThread(&syncThreads, "Cache::ioThread");
+ Sync syncThread(&syncThreads, "Cache::ioThread(1)");
syncThread.lock(Shared);
- Sync flushLock(&syncFlush, "Cache::ioThread");
- Sync sync(&syncObject, "Cache::ioThread");
+ Sync flushLock(&syncFlush, "Cache::ioThread(2)");
+ Sync sync(&syncObject, "Cache::ioThread(3)");
Priority priority(database->ioScheduler);
Thread *thread = Thread::getThread("Cache::ioThread");
UCHAR *rawBuffer = new UCHAR[ASYNC_BUFFER_SIZE];
=== modified file 'storage/falcon/CollationManager.cpp'
--- a/storage/falcon/CollationManager.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/CollationManager.cpp 2008-07-24 08:45:03 +0000
@@ -42,6 +42,7 @@ CollationManager::CollationManager()
{
memset(hashTable, 0, sizeof(hashTable));
add(&collationCaseless);
+ syncObject.setName("CollationManager::syncObject");
}
CollationManager::~CollationManager()
@@ -87,7 +88,7 @@ void CollationManager::add(Collation* co
Collation* CollationManager::find(const char* collationName)
{
- Sync sync(&syncObject, "CollationManager::addCollation");
+ Sync sync(&syncObject, "CollationManager::find");
sync.lock(Shared);
int slot = JString::hash(collationName, COLLATION_HASH_SIZE);
=== modified file 'storage/falcon/CompiledStatement.cpp'
--- a/storage/falcon/CompiledStatement.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/CompiledStatement.cpp 2008-07-24 08:45:03 +0000
@@ -96,6 +96,7 @@ CompiledStatement::CompiledStatement(Con
firstInstance = lastInstance = NULL;
select = NULL;
parse = NULL;
+ syncObject.setName("CompiledStatement::syncObject");
}
CompiledStatement::~CompiledStatement()
@@ -1093,7 +1094,7 @@ bool CompiledStatement::addFilter(TableF
int CompiledStatement::countInstances()
{
- Sync sync (&syncObject, "CompiledStatement::addInstance");
+ Sync sync (&syncObject, "CompiledStatement::countInstances");
sync.lock (Shared);
int count = 0;
@@ -1163,7 +1164,7 @@ Type CompiledStatement::getType(Syntax *
void CompiledStatement::invalidate()
{
- Sync sync (&syncObject, "CompiledStatement::addInstance");
+ Sync sync (&syncObject, "CompiledStatement::invalidate");
sync.lock (Shared);
for (Statement *instance = firstInstance; instance; instance = instance->next)
=== modified file 'storage/falcon/Configuration.cpp'
--- a/storage/falcon/Configuration.cpp 2008-07-10 09:01:32 +0000
+++ b/storage/falcon/Configuration.cpp 2008-07-17 13:52:17 +0000
@@ -62,7 +62,6 @@
extern uint64 max_memory_address;
extern uint64 falcon_record_memory_max;
-extern uint64 falcon_initial_allocation;
extern uint falcon_allocation_extent;
extern uint64 falcon_page_cache_size;
//extern uint falcon_debug_mask;
@@ -116,7 +115,6 @@ Configuration::Configuration(const char
recordMemoryMax = falcon_record_memory_max;
recordScavengeThresholdPct = falcon_record_scavenge_threshold;
recordScavengeFloorPct = falcon_record_scavenge_floor;
- initialAllocation = falcon_initial_allocation;
allocationExtent = falcon_allocation_extent;
serialLogWindows = falcon_serial_log_buffers;
pageCacheSize = falcon_page_cache_size;
@@ -164,7 +162,6 @@ Configuration::Configuration(const char
recordScavengeThreshold = (recordMemoryMax * 100) / recordScavengeThresholdPct;
recordScavengeFloor = (recordMemoryMax * 100) / recordScavengeFloorPct;
serialLogWindows = 10;
- initialAllocation = 0;
allocationExtent = 10;
pageCacheSize = getMemorySize(PAGE_CACHE_MEMORY);
indexChillThreshold = 4 * ONE_MB;
=== modified file 'storage/falcon/Configuration.h'
--- a/storage/falcon/Configuration.h 2008-03-11 16:15:47 +0000
+++ b/storage/falcon/Configuration.h 2008-07-17 13:52:17 +0000
@@ -49,7 +49,6 @@ public:
uint64 recordScavengeFloor;
int recordScavengeThresholdPct;
int recordScavengeFloorPct;
- uint64 initialAllocation;
uint64 allocationExtent;
uint64 pageCacheSize;
int64 javaInitialAllocation;
=== modified file 'storage/falcon/Connection.cpp'
--- a/storage/falcon/Connection.cpp 2008-07-10 09:01:32 +0000
+++ b/storage/falcon/Connection.cpp 2008-07-24 08:45:03 +0000
@@ -89,7 +89,7 @@ static Server *server;
static bool panicShutdown;
static Registry registry;
-static SyncObject databaseList;
+static SyncObject syncDatabaseList;
static const char *ddl [] = {
"grant all on system.sequences to %s",
@@ -169,6 +169,9 @@ void Connection::init(Configuration *con
isolationLevel = TRANSACTION_CONSISTENT_READ;
mySqlThreadId = 0;
currentStatement = NULL;
+ syncObject.setName("Connection::syncObject");
+ syncResultSets.setName("Connection::syncResultSets");
+ syncDatabaseList.setName("Connection::syncDatabaseList");
}
Connection::~Connection()
@@ -923,7 +926,7 @@ void Connection::openDatabase(const char
if (filename)
IO::expandFileName(filename, sizeof(dbFileName), dbFileName);
else
- {
+ {
if (!registry.findDatabase (dbName, sizeof (dbFileName), dbFileName))
throw SQLEXCEPTION (CONNECTION_ERROR, "can't find database \"%s\"", dbName);
}
@@ -968,7 +971,7 @@ void Connection::createDatabase(const ch
const char *password = parameters->findValue ("password", "");
char dbFileName [1024];
const char *dbFile = registry.findDatabase (dbName, sizeof (dbFileName), dbFileName);
- Sync sync (&databaseList, "Connection::createDatabase");
+ Sync sync (&syncDatabaseList, "Connection::createDatabase(1)");
sync.lock (Exclusive);
if (dbFile)
@@ -1027,7 +1030,10 @@ Database* Connection::createDatabase(con
if (database)
throw SQLEXCEPTION (CONNECTION_ERROR, "database is already open");
- Sync sync (&databaseList, "Connection::createDatabase");
+ if (!firstDatabase)
+ syncDatabaseList.setName("Connection::syncDatabaseList");
+
+ Sync sync (&syncDatabaseList, "Connection::createDatabase(2)");
sync.lock (Exclusive);
#ifndef STORAGE_ENGINE
@@ -1042,7 +1048,7 @@ Database* Connection::createDatabase(con
}
#ifdef STORAGE_ENGINE
- strcpy(dbFileName, fileName);
+ strcpy(dbFileName, fileName);
#else
registry.defineDatabase (dbName, fileName);
@@ -1617,7 +1623,7 @@ ResultList* Connection::findResultList(i
Database* Connection::getDatabase(const char* dbName, const char* dbFileName, Threads*
threads)
{
- Sync sync (&databaseList, "Connection::getDatabase");
+ Sync sync (&syncDatabaseList, "Connection::getDatabase");
sync.lock (Shared);
Database *db;
@@ -1665,7 +1671,7 @@ void Connection::dropDatabase()
if (!database)
throw SQLEXCEPTION (CONNECTION_ERROR, "database isn't open");
- Sync sync (&databaseList, "Connection::dropDatabase");
+ Sync sync (&syncDatabaseList, "Connection::dropDatabase");
sync.lock (Exclusive);
unlink(database);
detachDatabase();
=== modified file 'storage/falcon/Database.cpp'
--- a/storage/falcon/Database.cpp 2008-06-17 17:41:54 +0000
+++ b/storage/falcon/Database.cpp 2008-07-17 13:52:17 +0000
@@ -323,14 +323,6 @@ static const char *createTableSpaces =
"tablespace_id int not null,"
"filename varchar(512) not null,"
"type int,"
- /***
- "initial_size bigint,"
- "extent_size bigint,"
- "autoextend_size bigint,"
- "max_size bigint,"
- "nodegroup int,"
- "wait int,"
- ***/
"comment text)";
static const char *createTableSpaceSequence =
@@ -634,7 +626,7 @@ void Database::createDatabase(const char
int page_size = PAGE_SIZE;
#endif
- cache = dbb->create(filename, page_size, configuration->pageCacheSize,
HdrDatabaseFile, 0, "", 0);
+ cache = dbb->create(filename, page_size, configuration->pageCacheSize,
HdrDatabaseFile, 0, "");
try
{
@@ -995,7 +987,7 @@ Table* Database::findTable (const char *
schema = symbolManager->getSymbol (schema);
name = symbolManager->getSymbol (name);
- Sync syncTbl (&syncTables, "Database::findTable");
+ Sync syncTbl (&syncTables, "Database::findTable(1)");
syncTbl.lock (Shared);
int slot = HASH (name, TABLE_HASH_SIZE);
@@ -1012,7 +1004,7 @@ Table* Database::findTable (const char *
if (untable->name == name && untable->schemaName == schema)
return NULL;
- Sync syncDDL(&syncSysDDL, "Database::findTable");
+ Sync syncDDL(&syncSysDDL, "Database::findTable(2)");
syncDDL.lock(Shared);
PStatement statement = prepareStatement (
@@ -1145,7 +1137,7 @@ CompiledStatement* Database::getCompiled
Sync syncDDL(&syncSysDDL, "Database::getCompiledStatement(1)");
syncDDL.lock(Shared);
- Sync syncStmt(&syncStatements, "Database::getCompiledStatement(1)");
+ Sync syncStmt(&syncStatements, "Database::getCompiledStatement(2)");
syncStmt.lock(Shared);
//printf("%s\n", (const char*) sqlString);
@@ -1174,10 +1166,10 @@ CompiledStatement* Database::getCompiled
CompiledStatement* Database::getCompiledStatement(Connection *connection, const WCString
*sqlString)
{
- Sync syncDDL(&syncSysDDL, "Database::getCompiledStatement(WC)");
+ Sync syncDDL(&syncSysDDL, "Database::getCompiledStatement(3)");
syncDDL.lock(Shared);
- Sync syncStmt(&syncStatements, "Database::getCompiledStatement(WC)");
+ Sync syncStmt(&syncStatements, "Database::getCompiledStatement(4)");
syncStmt.lock(Shared);
//JString str(sqlString);
@@ -1208,7 +1200,7 @@ CompiledStatement* Database::getCompiled
CompiledStatement* Database::compileStatement(Connection *connection, JString sqlString)
{
- Sync syncDDL(&syncSysDDL, "Database::getCompiledStatement(WC)");
+ Sync syncDDL(&syncSysDDL, "Database::compileStatement(1)");
syncDDL.lock(Shared);
CompiledStatement *statement = new CompiledStatement (connection);
@@ -1227,9 +1219,9 @@ CompiledStatement* Database::compileStat
if (statement->useable &&
(statement->numberParameters > 0 || !statement->filters.isEmpty()))
{
- Sync syncStmt (&syncStatements, "Database::compileStatement(1)");
+ Sync syncStmt (&syncStatements, "Database::compileStatement(2)");
syncStmt.lock (Shared);
- Sync syncAddStmt (&syncAddStatement, "Database::compileStatement(2)");
+ Sync syncAddStmt (&syncAddStatement, "Database::compileStatement(3)");
syncAddStmt.lock (Exclusive);
statement->addRef();
statement->next = compiledStatements;
@@ -1265,7 +1257,7 @@ void Database::commitSystemTransaction()
void Database::rollbackSystemTransaction(void)
{
- Sync sync (&syncSysDDL, "Database::commitSystemTransaction");
+ Sync sync (&syncSysDDL, "Database::rollbackSystemTransaction");
sync.lock (Exclusive);
systemConnection->rollback();
}
@@ -1331,10 +1323,10 @@ Table* Database::getTable(int tableId)
Table* Database::loadTable(ResultSet * resultSet)
{
- Sync syncDDL(&syncSysDDL, "Database::loadTable");
+ Sync syncDDL(&syncSysDDL, "Database::loadTable(1)");
syncDDL.lock(Shared);
- Sync syncObj(&syncTables, "Database::loadTable");
+ Sync syncObj(&syncTables, "Database::loadTable(2)");
if (!resultSet->next())
return NULL;
@@ -1399,7 +1391,7 @@ void Database::flushInversion(Transactio
void Database::dropTable(Table *table, Transaction *transaction)
{
- Sync syncDDL(&syncSysDDL, "Database::dropTable");
+ Sync syncDDL(&syncSysDDL, "Database::dropTable(1)");
syncDDL.lock(Exclusive);
table->checkDrop();
@@ -1414,7 +1406,7 @@ void Database::dropTable(Table *table, T
transactionManager->dropTable(table, transaction);
- Sync syncTbl(&syncTables, "Database::dropTable");
+ Sync syncTbl(&syncTables, "Database::dropTable(2)");
syncTbl.lock(Exclusive);
// Remove table from linear table list
@@ -1455,7 +1447,7 @@ void Database::dropTable(Table *table, T
// Lock sections (factored out of SRLDropTable to avoid a deadlock)
- Sync syncSections(&serialLog->syncSections, "Database::dropTable");
+ Sync syncSections(&serialLog->syncSections, "Database::dropTable(3)");
syncSections.lock(Exclusive);
table->expunge(getSystemTransaction());
delete table;
@@ -1463,7 +1455,7 @@ void Database::dropTable(Table *table, T
void Database::truncateTable(Table *table, Sequence *sequence, Transaction *transaction)
{
- Sync syncDDL(&syncSysDDL, "Database::truncateTable");
+ Sync syncDDL(&syncSysDDL, "Database::truncateTable(1)");
syncDDL.lock(Exclusive);
table->checkDrop();
@@ -1476,19 +1468,19 @@ void Database::truncateTable(Table *tabl
// Block table drop/add, table list scans ok
- Sync syncTbl(&syncTables, "Database::truncateTable");
+ Sync syncTbl(&syncTables, "Database::truncateTable(2)");
syncTbl.lock(Shared);
//Lock sections (factored out of SRLDropTable to avoid a deadlock)
//The lock order (serialLog->syncSections before table->syncObject) is
//important
- Sync syncSections(&serialLog->syncSections, "Database::truncateTable");
+ Sync syncSections(&serialLog->syncSections, "Database::truncateTable(3)");
syncSections.lock(Exclusive);
// No table access until truncate completes
- Sync syncObj(&table->syncObject, "Database::truncateTable");
+ Sync syncObj(&table->syncObject, "Database::truncateTable(4)");
syncObj.lock(Exclusive);
table->deleting = true;
@@ -1675,10 +1667,10 @@ Role* Database::findRole(const WCString
void Database::validate(int optionMask)
{
- Sync syncDDL(&syncSysDDL, "Database::validate");
+ Sync syncDDL(&syncSysDDL, "Database::validate(1)");
syncDDL.lock(Shared);
- Sync syncObj(&syncObject, "Database::validate");
+ Sync syncObj(&syncObject, "Database::validate(2)");
syncObj.lock (Exclusive);
Log::debug ("Validation:\n");
@@ -1764,7 +1756,7 @@ void Database::retireRecords(bool forced
{
int cycle = scavengeCycle;
- Sync syncScavenger(&syncScavenge, "Database::retireRecords");
+ Sync syncScavenger(&syncScavenge, "Database::retireRecords(1)");
syncScavenger.lock(Exclusive);
if (forced && scavengeCycle > cycle)
@@ -1792,7 +1784,7 @@ void Database::retireRecords(bool forced
//LogStream stream;
//recordDataPool->analyze(0, &stream, NULL, NULL);
- Sync syncTbl(&syncTables, "Database::retireRecords");
+ Sync syncTbl(&syncTables, "Database::retireRecords(2)");
syncTbl.lock(Shared);
Table *table;
@@ -2006,7 +1998,7 @@ JString Database::analyze(int mask)
{
Stream stream;
stream.setMalloc (true);
- Sync syncDDL(&syncSysDDL, "Database::analyze");
+ Sync syncDDL(&syncSysDDL, "Database::analyze(1)");
if (mask & analyzeMemory)
MemMgrAnalyze (mask, &stream);
@@ -2048,7 +2040,7 @@ JString Database::analyze(int mask)
if (mask & analyzeStatements)
{
stream.putSegment ("\nStatements\n");
- Sync syncStmt(&syncStatements, "Database::analyze");
+ Sync syncStmt(&syncStatements, "Database::analyze(2)");
syncStmt.lock(Shared);
for (CompiledStatement *statement = compiledStatements; statement;
@@ -2359,10 +2351,10 @@ void Database::getTableSpaceFilesInfo(In
void Database::updateCardinalities(void)
{
- Sync syncDDL(&syncSysDDL, "Database::updateCardinalities");
+ Sync syncDDL(&syncSysDDL, "Database::updateCardinalities(1)");
syncDDL.lock(Shared);
- Sync syncTbl(&syncTables, "Database::updateCardinalities");
+ Sync syncTbl(&syncTables, "Database::updateCardinalities(2)");
syncTbl.lock(Shared);
bool hit = false;
=== modified file 'storage/falcon/DatabaseClone.cpp'
--- a/storage/falcon/DatabaseClone.cpp 2007-10-08 17:20:26 +0000
+++ b/storage/falcon/DatabaseClone.cpp 2008-07-17 13:52:17 +0000
@@ -50,7 +50,7 @@ void DatabaseClone::createFile(const cha
shadow = new IO;
shadow->pageSize = dbb->pageSize;
shadow->dbb = dbb;
- shadow->createFile(fileName, 0);
+ shadow->createFile(fileName);
}
const char* DatabaseClone::getFileName(void)
@@ -78,7 +78,7 @@ void DatabaseClone::writePage(Bdb* bdb)
void DatabaseClone::clone(void)
{
- Sync sync(&syncObject, "DatabaseClone::clone");
+ Sync sync(&syncObject, "DatabaseClone::clone(1)");
int n = 0;
for (;;)
@@ -111,7 +111,7 @@ void DatabaseClone::clone(void)
// In theory, we're done. Lock the cache against changes, and check again
- Sync syncCache(&dbb->cache->syncObject, "Dbb::cloneFile");
+ Sync syncCache(&dbb->cache->syncObject, "DatabaseClone::clone(2)");
syncCache.lock(Exclusive);
lastPage = PageInventoryPage::getLastPage(dbb);
=== modified file 'storage/falcon/DatabaseCopy.cpp'
--- a/storage/falcon/DatabaseCopy.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/DatabaseCopy.cpp 2008-07-24 08:45:03 +0000
@@ -31,6 +31,7 @@ DatabaseCopy::DatabaseCopy(Dbb *db)
rewrittenPages = NULL;
highWater = 0;
atEnd = false;
+ syncObject.setName("DatabaseCopy::syncObject");
}
DatabaseCopy::~DatabaseCopy(void)
=== modified file 'storage/falcon/Dbb.cpp'
--- a/storage/falcon/Dbb.cpp 2008-04-12 02:22:50 +0000
+++ b/storage/falcon/Dbb.cpp 2008-07-24 08:45:03 +0000
@@ -89,6 +89,8 @@ Dbb::Dbb(Database *dbase)
tableSpaceSectionId = 0;
tableSpaceId = 0;
noLog = false;
+ syncClone.setName("Dbb::syncClone");
+ syncSequences.setName("Dbb::syncSequences");
}
@@ -147,7 +149,7 @@ Dbb::~Dbb()
dbb->close();
}
-Cache* Dbb::create(const char * fileName, int pageSz, int64 cacheSize, FileType fileType,
TransId transId, const char *logRoot, uint64 initialAllocation)
+Cache* Dbb::create(const char * fileName, int pageSz, int64 cacheSize, FileType fileType,
TransId transId, const char *logRoot)
{
serialLog = database->serialLog;
odsVersion = ODS_VERSION;
@@ -155,7 +157,7 @@ Cache* Dbb::create(const char * fileName
sequence = 1;
init(pageSz, (int) ((cacheSize + pageSz - 1) / pageSz));
- createFile(fileName, initialAllocation);
+ createFile(fileName);
try
{
Hdr::create(this, fileType, transId, logRoot);
@@ -749,7 +751,7 @@ Bdb* Dbb::getSequencePage(int sequenceId
else
***/
{
- Sync sync(&sequencesSyncObject, "Dbb::updateSequence");
+ Sync sync(&syncSequences, "Dbb::getSequencePage");
sync.lock(Shared);
int sequencePageSequence = sequenceId / sequencesPerPage;
int32 sequencePageNumber = sequencePages.get(sequencePageSequence);
@@ -970,7 +972,7 @@ void Dbb::cloneFile(Database *database,
/***
void Dbb::cloneFile(DatabaseClone *shadow, bool isShadow)
{
- Sync sync (&cloneSyncObject, "Dbb::cloneFile(2)");
+ Sync sync (&syncClone, "Dbb::cloneFile(2)");
sync.lock (Exclusive);
shadow->next = shadows;
shadows = shadow;
@@ -1023,7 +1025,7 @@ void Dbb::cloneFile(DatabaseClone *shado
bool Dbb::deleteShadow(DatabaseCopy *shadow)
{
- Sync sync (&cloneSyncObject, "Dbb::deleteShadow");
+ Sync sync (&syncClone, "Dbb::deleteShadow");
sync.lock (Exclusive);
for (DatabaseCopy **ptr = &shadows; *ptr; ptr = &(*ptr)->next)
@@ -1352,7 +1354,7 @@ void Dbb::upgradeSequenceSection(void)
void Dbb::addShadow(DatabaseCopy* shadow)
{
- Sync sync (&cloneSyncObject, "Dbb::addShadow");
+ Sync sync (&syncClone, "Dbb::addShadow");
sync.lock (Exclusive);
shadow->next = shadows;
shadows = shadow;
=== modified file 'storage/falcon/Dbb.h'
--- a/storage/falcon/Dbb.h 2008-03-27 06:09:29 +0000
+++ b/storage/falcon/Dbb.h 2008-07-24 08:45:03 +0000
@@ -61,11 +61,11 @@ static const int FillLevels = 5;
struct SectionAnalysis
{
- int32 recordLocatorPages;
- int32 dataPages;
- int32 overflowPages;
- int32 spaceAvailable;
- int32 records;
+ int32 recordLocatorPages;
+ int32 dataPages;
+ int32 overflowPages;
+ int32 spaceAvailable;
+ int32 records;
};
struct IndexAnalysis
@@ -168,7 +168,7 @@ public:
Bdb* fakePage (int32 pageNumber, PageType pageType, TransId transId);
Bdb* trialFetch(int32 pageNumber, PageType pageType, LockType lockType);
void init(int pageSz, int cacheSize);
- Cache* create (const char *fileName, int pageSize, int64 cacheSize, FileType fileType,
TransId transId, const char *logRoot, uint64 initialAllocation);
+ Cache* create (const char *fileName, int pageSize, int64 cacheSize, FileType fileType,
TransId transId, const char *logRoot);
void validateCache(void);
void logUpdatedRecords(Transaction* transaction, RecordVersion* records, bool chill =
false);
void logIndexUpdates(DeferredIndex* deferredIndex);
@@ -214,8 +214,8 @@ public:
HdrState priorState;
Inversion *inversion;
DatabaseCopy *shadows;
- SyncObject cloneSyncObject;
- SyncObject sequencesSyncObject;
+ SyncObject syncClone;
+ SyncObject syncSequences;
SerialLog *serialLog;
JString logRoot;
SparseArray<int32, 100> sequencePages;
=== modified file 'storage/falcon/DeferredIndex.cpp'
--- a/storage/falcon/DeferredIndex.cpp 2008-04-12 02:22:50 +0000
+++ b/storage/falcon/DeferredIndex.cpp 2008-07-25 18:07:24 +0000
@@ -60,6 +60,8 @@ DeferredIndex::DeferredIndex(Index *idx,
haveMinValue = true;
haveMaxValue = true;
window = NULL;
+ syncObject.setName("DeferredIndex::syncObject");
+ useCount = 1; // the transaction that created it
}
DeferredIndex::~DeferredIndex(void)
@@ -357,11 +359,11 @@ bool DeferredIndex::deleteNode(IndexKey*
bool doingDIHash = ( (index->database->configuration->useDeferredIndexHash)
&& (INDEX_IS_UNIQUE(index->type)));
- Sync syncHash(&index->syncDIHash, "DeferredIndex::deleteNode");
+ Sync syncHash(&index->syncDIHash, "DeferredIndex::deleteNode(1)");
if (doingDIHash)
syncHash.lock(Exclusive);
- Sync sync(&syncObject, "DeferredIndex::deleteNode");
+ Sync sync(&syncObject, "DeferredIndex::deleteNode(2)");
sync.lock(Exclusive);
DIBucket *buckets[DEFERRED_INDEX_MAX_LEVELS];
@@ -823,7 +825,7 @@ void DeferredIndex::detachIndex(void)
void DeferredIndex::detachTransaction(void)
{
- Sync sync(&syncObject, "DeferredIndex::detachIndex");
+ Sync sync(&syncObject, "DeferredIndex::detachTransaction");
sync.lock(Exclusive);
transaction = NULL;
@@ -838,7 +840,7 @@ void DeferredIndex::detachTransaction(vo
else
sync.unlock();
- delete this;
+ releaseRef();
}
void DeferredIndex::chill(Dbb *dbb)
@@ -874,3 +876,16 @@ DINode* DeferredIndex::findMinValue(void
{
return NULL;
}
+
+void DeferredIndex::addRef()
+{
+ INTERLOCKED_INCREMENT (useCount);
+}
+
+void DeferredIndex::releaseRef()
+{
+ INTERLOCKED_DECREMENT(useCount);
+
+ if (useCount == 0)
+ delete this;
+}
\ No newline at end of file
=== modified file 'storage/falcon/DeferredIndex.h'
--- a/storage/falcon/DeferredIndex.h 2008-06-08 06:52:51 +0000
+++ b/storage/falcon/DeferredIndex.h 2008-07-25 18:07:24 +0000
@@ -102,6 +102,7 @@ public:
DINode* findMinValue(void);
SyncObject syncObject;
+ volatile INTERLOCK_TYPE useCount;
DeferredIndex *next;
DeferredIndex *prior;
DeferredIndex *nextInTransaction;
@@ -123,6 +124,8 @@ public:
uint64 virtualOffset; // virtual offset into the serial log where this DI was
flushed.
uint64 virtualOffsetAtEnd;
SerialLogWindow *window;
+ void addRef();
+ void releaseRef();
};
#endif
=== modified file 'storage/falcon/Gopher.cpp'
--- a/storage/falcon/Gopher.cpp 2008-07-09 19:23:23 +0000
+++ b/storage/falcon/Gopher.cpp 2008-07-15 18:57:27 +0000
@@ -39,11 +39,11 @@ void Gopher::gopherThread(void* arg)
void Gopher::gopherThread(void)
{
- Sync deadMan(&log->syncGopher, "Gopher::gopherThread");
+ Sync deadMan(&log->syncGopher, "Gopher::gopherThread(1)");
deadMan.lock(Shared);
workerThread = Thread::getThread("Gopher::gopherThread");
active = true;
- Sync syncPending (&log->pending.syncObject, "Gopher::gopherThread pending");
+ Sync syncPending (&log->pending.syncObject, "Gopher::gopherThread(2)");
syncPending.lock(Exclusive);
while (!workerThread->shutdownInProgress && !log->finishing)
=== modified file 'storage/falcon/IO.cpp'
--- a/storage/falcon/IO.cpp 2008-07-08 21:36:34 +0000
+++ b/storage/falcon/IO.cpp 2008-07-24 08:45:03 +0000
@@ -133,6 +133,7 @@ IO::IO()
forceFsync = true;
fatalError = false;
memset(writeTypes, 0, sizeof(writeTypes));
+ syncObject.setName("IO::syncObject");
}
IO::~IO()
@@ -184,7 +185,7 @@ bool IO::openFile(const char * name, boo
return fileId != -1;
}
-bool IO::createFile(const char *name, uint64 initialAllocation)
+bool IO::createFile(const char *name)
{
Log::debug("IO::createFile: creating file \"%s\"\n", name);
@@ -218,26 +219,6 @@ bool IO::createFile(const char *name, ui
#endif
#endif
- if (initialAllocation)
- {
- UCHAR *raw = new UCHAR[8192 * 257];
- UCHAR *aligned = (UCHAR*) (((UIPTR) raw + 8191) / 8192 * 8192);
- uint size = 8192 * 256;
- memset(aligned, 0, size);
- uint64 offset = 0;
-
- for (uint64 remaining = initialAllocation; remaining;)
- {
- uint n = (int) MIN(remaining, size);
- write(offset, n, aligned);
- offset += n;
- remaining -= n;
- }
-
- delete [] raw;
- sync();
- }
-
return fileId != -1;
}
=== modified file 'storage/falcon/IOx.h'
--- a/storage/falcon/IOx.h 2008-07-07 14:00:45 +0000
+++ b/storage/falcon/IOx.h 2008-07-18 08:15:54 +0000
@@ -54,8 +54,8 @@ public:
void writeHeader (Hdr *header);
int read(int length, UCHAR *buffer);
void write(uint32 length, const UCHAR *data);
- bool doesFileExist(const char *fileName);
- int fileStat(const char *fileName, struct stat *stats = NULL, int *errnum = NULL);
+ static bool doesFileExist(const char *fileName);
+ static int fileStat(const char *fileName, struct stat *stats = NULL, int *errnum =
NULL);
void declareFatalError();
void seek (int pageNumber);
void closeFile();
@@ -63,7 +63,7 @@ public:
void writePage (Bdb *buffer, int type);
void writePages(int32 pageNumber, int length, const UCHAR* data, int type);
void readPage (Bdb *page);
- bool createFile (const char *name, uint64 initialAllocation);
+ bool createFile (const char *name);
bool openFile (const char *name, bool readOnly);
void longSeek(int64 offset);
void read(int64 offset, int length, UCHAR* buffer);
=== modified file 'storage/falcon/Index.cpp'
--- a/storage/falcon/Index.cpp 2008-05-07 22:37:18 +0000
+++ b/storage/falcon/Index.cpp 2008-07-25 18:07:24 +0000
@@ -107,6 +107,10 @@ void Index::init(Table *tbl, const char
DIHashTable = NULL;
DIHashTableCounts = 0;
DIHashTableSlotsUsed = 0;
+
+ syncDIHash.setName("Index::syncDIHash");
+ syncUnique.setName("Index::syncUnique");
+ deferredIndexes.syncObject.setName("Index::deferredIndexes.syncObject");
}
Index::~Index()
@@ -227,7 +231,7 @@ DeferredIndex *Index::getDeferredIndex(T
if (deferredIndexes.count < transaction->deferredIndexCount)
{
- Sync sync(&deferredIndexes.syncObject, "Index::insert");
+ Sync sync(&deferredIndexes.syncObject, "Index::getDeferredIndex(1)");
sync.lock(Shared);
for (deferredIndex = deferredIndexes.first;
deferredIndex;
@@ -270,7 +274,7 @@ DeferredIndex *Index::getDeferredIndex(T
// Make a new one and attach to Index and Transaction.
- Sync sync(&deferredIndexes.syncObject, "Index::insert");
+ Sync sync(&deferredIndexes.syncObject, "Index::getDeferredIndex(2)");
deferredIndex = new DeferredIndex(this, transaction);
sync.lock(Exclusive);
deferredIndexes.append(deferredIndex);
@@ -510,12 +514,14 @@ IndexWalker* Index::positionIndex(IndexK
for (DeferredIndex *deferredIndex = deferredIndexes.first; deferredIndex; deferredIndex
= deferredIndex->next)
if (transaction->visible(deferredIndex->transaction,
deferredIndex->transactionId, FOR_WRITING))
{
+ deferredIndex->addRef();
+
if (!indexWalker)
{
indexWalker = new IndexWalker(this, transaction, searchFlags);
indexWalker->addWalker(walkIndex);
}
-
+
WalkDeferred *walkDeferred = new WalkDeferred(deferredIndex, transaction,
searchFlags, &walkIndex->lowerBound, &walkIndex->upperBound);
indexWalker->addWalker(walkDeferred);
}
@@ -835,7 +841,7 @@ UCHAR Index::getPadByte(void)
void Index::detachDeferredIndex(DeferredIndex *deferredIndex)
{
- Sync sync(&deferredIndexes.syncObject, "Index::detachDeferredIndex");
+ Sync sync(&deferredIndexes.syncObject, "Index::detachDeferredIndex(1)");
sync.lock(Exclusive);
deferredIndexes.remove(deferredIndex);
sync.unlock();
@@ -843,9 +849,9 @@ void Index::detachDeferredIndex(Deferred
if ( (database->configuration->useDeferredIndexHash)
&& (INDEX_IS_UNIQUE(type)))
{
- Sync syncHash(&syncDIHash, "Index::detachDeferredIndex");
+ Sync syncHash(&syncDIHash, "Index::detachDeferredIndex(2)");
syncHash.lock(Exclusive);
- Sync syncDI(&deferredIndex->syncObject, "Index::detachDeferredIndex");
+ Sync syncDI(&deferredIndex->syncObject, "Index::detachDeferredIndex(3)");
syncDI.lock(Exclusive);
DeferredIndexWalker walker(deferredIndex, NULL);
=== modified file 'storage/falcon/IndexWalker.cpp'
--- a/storage/falcon/IndexWalker.cpp 2008-07-14 16:53:51 +0000
+++ b/storage/falcon/IndexWalker.cpp 2008-07-29 11:12:34 +0000
@@ -39,6 +39,8 @@ IndexWalker::IndexWalker(Index *idx, Tra
balance = 0;
higher = NULL;
lower = NULL;
+ lastRecordNumber = 0;
+ firstRecord = true;
}
IndexWalker::~IndexWalker(void)
@@ -124,6 +126,18 @@ Record* IndexWalker::getNext(bool lockFo
Record* IndexWalker::getValidatedRecord(int32 recordId, bool lockForUpdate)
{
+ // If this is the same recordId as the last record we returned,
+ // then either we've got a duplicate copy because a deferred
+ // index has been merged with the main index and we read both
+ // or we're looking at a version we don't care about.
+
+ if (firstRecord)
+ firstRecord = false;
+ else if (recordId == lastRecordNumber)
+ return NULL;
+
+
+
// Fetch record. If it doesn't exist, that's ok.
Record *candidate = table->fetch(recordId);
@@ -165,7 +179,11 @@ Record* IndexWalker::getValidatedRecord(
return NULL;
}
-
+
+ // remember this record
+
+ lastRecordNumber = recordId;
+
return record;
}
@@ -334,7 +352,7 @@ void IndexWalker::rotateLeft(void)
root->lower = this;
balance -= (1 + MAX(root->balance, 0));
- validate ();
+// validate ();
root->balance -= (1 - MIN(balance, 0));
RESET_PARENT(root);
root->parent = parent;
@@ -363,7 +381,7 @@ void IndexWalker::rotateRight(void)
root->higher = this;
balance += (1 - MIN(root->balance, 0));
- validate ();
+// validate ();
root->balance += (1 + MAX(balance, 0));
RESET_PARENT(root);
root->parent = parent;
@@ -454,7 +472,7 @@ void IndexWalker::remove(void)
{
parent->higher = next;
parent->rebalanceUpward(-1);
- }
+ }
return;
}
=== modified file 'storage/falcon/IndexWalker.h'
--- a/storage/falcon/IndexWalker.h 2008-07-12 21:01:04 +0000
+++ b/storage/falcon/IndexWalker.h 2008-07-28 14:31:20 +0000
@@ -57,9 +57,11 @@ public:
UCHAR *key;
uint keyLength;
int32 recordNumber;
+ int32 lastRecordNumber;
int balance;
int searchFlags;
bool first;
+ bool firstRecord;
};
#endif
=== modified file 'storage/falcon/Inversion.cpp'
--- a/storage/falcon/Inversion.cpp 2008-02-26 20:18:33 +0000
+++ b/storage/falcon/Inversion.cpp 2008-07-24 08:45:03 +0000
@@ -61,6 +61,7 @@ Inversion::Inversion(Dbb *db)
runs = 0;
inserting = true;
state = 0;
+ syncObject.setName("Inversion::syncObject");
}
Inversion::~Inversion()
=== modified file 'storage/falcon/LicenseManager.cpp'
--- a/storage/falcon/LicenseManager.cpp 2008-03-03 18:40:17 +0000
+++ b/storage/falcon/LicenseManager.cpp 2008-07-15 18:57:27 +0000
@@ -130,7 +130,7 @@ void LicenseManager::initialize()
LicenseProduct* LicenseManager::getProduct(const char *name)
{
int slot = JString::hash (name, HASH_SIZE);
- LicenseProduct *product;
+ LicenseProduct *product;
for (product = hashTable [slot]; product; product->collision)
if (product->product.equalsNoCase (name))
=== modified file 'storage/falcon/Makefile.am'
--- a/storage/falcon/Makefile.am 2008-07-19 03:03:39 +0000
+++ b/storage/falcon/Makefile.am 2008-08-07 14:19:54 +0000
@@ -22,9 +22,8 @@ DEFS= @DEFS@ \
-D_REENTRANT -D_PTHREADS -DFALCONDB -DSTORAGE_ENGINE -DNAMESPACE=Nfs
INCLUDES= -I$(top_srcdir)/include -I$(top_builddir)/include \
- -I$(top_srcdir)/regex -I$(top_srcdir)/sql \
- -I$(srcdir) -I$(srcdir)/TransformLib @ZLIB_INCLUDES@ \
- @FALCON_SPARC_ASSEMBLY@
+ -I$(top_srcdir)/regex -I$(top_srcdir)/sql -I$(srcdir) \
+ -I$(srcdir)/TransformLib @ZLIB_INCLUDES@ @FALCON_SPARC_ASSEMBLY@
falcon_headers= Agent.h Alias.h Application.h \
AsciiBlob.h \
@@ -381,7 +380,7 @@ noinst_HEADERS= $(falcon_headers) \
EXTRA_LTLIBRARIES= ha_falcon.la
pkglib_LTLIBRARIES= @plugin_falcon_shared_target@
-ha_falcon_la_LDFLAGS= -module -rpath $(pkglibdir) -lstdc++
+ha_falcon_la_LDFLAGS= -module -rpath $(pkglibdir)
ha_falcon_la_CXXFLAGS= $(AM_CXXFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_falcon_la_CFLAGS= $(AM_CFLAGS) -DMYSQL_DYNAMIC_PLUGIN
ha_falcon_la_LIBADD= TransformLib/libtransform.la
=== modified file 'storage/falcon/MemMgr.cpp'
--- a/storage/falcon/MemMgr.cpp 2008-06-19 15:09:45 +0000
+++ b/storage/falcon/MemMgr.cpp 2008-08-07 14:19:54 +0000
@@ -543,7 +543,9 @@ void* MemMgr::allocateDebug(int size, co
{
length = ROUNDUP(size, defaultRounding) + OFFSET(MemBlock*, body) + sizeof(long);
memory = (MemBlock*) allocRaw(length);
+ memory->length = length;
memory->pool = NULL;
+ memory->length = length;
}
#ifdef MEM_DEBUG
=== modified file 'storage/falcon/RecordLeaf.cpp'
--- a/storage/falcon/RecordLeaf.cpp 2008-05-09 19:58:50 +0000
+++ b/storage/falcon/RecordLeaf.cpp 2008-07-15 18:57:27 +0000
@@ -118,7 +118,7 @@ int RecordLeaf::retireRecords (Table *ta
{
int count = 0;
Record **ptr, **end;
- Sync sync(&syncObject, "RecordLeaf::retireRecords");
+ Sync sync(&syncObject, "RecordLeaf::retireRecords(1)");
sync.lock(Shared);
// Get a shared lock to find at least one record to scavenge
@@ -134,7 +134,7 @@ int RecordLeaf::retireRecords (Table *ta
++count;
else if (record->isVersion())
{
- Sync syncPrior(record->getSyncPrior(), "RecordLeaf::retireRecords1");
+ Sync syncPrior(record->getSyncPrior(), "RecordLeaf::retireRecords(2)");
syncPrior.lock(Shared);
if (record->scavenge(recordScavenge, Shared))
@@ -167,7 +167,7 @@ int RecordLeaf::retireRecords (Table *ta
{
if (record->isVersion())
{
- Sync syncPrior(record->getSyncPrior(), "RecordLeaf::retireRecords2");
+ Sync syncPrior(record->getSyncPrior(), "RecordLeaf::retireRecords(3)");
syncPrior.lock(Exclusive);
if (record->scavenge(recordScavenge, Exclusive))
=== modified file 'storage/falcon/RecordVersion.cpp'
--- a/storage/falcon/RecordVersion.cpp 2008-04-27 03:13:23 +0000
+++ b/storage/falcon/RecordVersion.cpp 2008-07-15 18:57:27 +0000
@@ -247,7 +247,7 @@ void RecordVersion::scavenge(TransId tar
if (!priorVersion)
return;
- Sync syncPrior(getSyncPrior(), "RecordVersion::scavenge()-savepoint");
+ Sync syncPrior(getSyncPrior(), "RecordVersion::scavenge");
syncPrior.lock(Shared);
Record *rec = priorVersion;
=== modified file 'storage/falcon/RecoveryObjects.cpp'
--- a/storage/falcon/RecoveryObjects.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/RecoveryObjects.cpp 2008-07-24 08:45:03 +0000
@@ -23,6 +23,8 @@
#include "RecoveryObjects.h"
#include "RecoveryPage.h"
#include "SerialLog.h"
+#include "SyncObject.h"
+#include "Sync.h"
#ifdef _DEBUG
#undef THIS_FILE
@@ -38,6 +40,8 @@ RecoveryObjects::RecoveryObjects(SerialL
{
serialLog = log;
memset(recoveryObjects, 0, sizeof(recoveryObjects));
+ for (int n = 0; n < RPG_HASH_SIZE; n++)
+ syncArray[n].setName("RecoveryObjects::syncArray");
}
RecoveryObjects::~RecoveryObjects()
@@ -95,17 +99,24 @@ bool RecoveryObjects::isObjectActive(int
return object->pass1Count == object->currentCount;
}
-RecoveryPage* RecoveryObjects::findRecoveryObject(int objectNumber, int tableSpaceId)
-{
- int slot = objectNumber % RPG_HASH_SIZE;
- for (RecoveryPage *object = recoveryObjects[slot]; object; object =
object->collision)
+static inline RecoveryPage * findInHashBucket(RecoveryPage *head, int objectNumber, int
tableSpaceId)
+{
+ for (RecoveryPage *object = head ; object; object = object->collision)
if (object->objectNumber == objectNumber && object->tableSpaceId ==
tableSpaceId)
return object;
return NULL;
}
+RecoveryPage* RecoveryObjects::findRecoveryObject(int objectNumber, int tableSpaceId)
+{
+ int slot = objectNumber % RPG_HASH_SIZE;
+ Sync sync(&syncArray[slot], "RecoveryObjects::findRecoveryObject");
+ sync.lock(Shared);
+ return findInHashBucket(recoveryObjects[slot], objectNumber, tableSpaceId);
+}
+
void RecoveryObjects::setActive(int objectNumber, int tableSpaceId)
{
RecoveryPage *object = findRecoveryObject(objectNumber, tableSpaceId);
@@ -129,10 +140,25 @@ RecoveryPage* RecoveryObjects::getRecove
int slot = objectNumber % RPG_HASH_SIZE;
RecoveryPage *object;
- for (object = recoveryObjects[slot]; object; object = object->collision)
- if (object->objectNumber == objectNumber && object->tableSpaceId ==
tableSpaceId)
- return object;
+ Sync sync(&syncArray[slot], "RecoveryObjects::getRecoveryObject");
+ sync.lock(Shared);
+ object = findInHashBucket(recoveryObjects[slot], objectNumber, tableSpaceId);
+
+ if(object)
+ return object;
+
+ // Object not found, insert (need exlusive lock for this)
+ sync.unlock();
+ sync.lock(Exclusive);
+
+ // We need to traverse the collision list once again. Another thread
+ // may have inserted the entry while current thread was waiting
+ // for exclusive lock.
+ object = findInHashBucket(recoveryObjects[slot], objectNumber, tableSpaceId);
+ if (object)
+ return object;
+ // Add object to the start of the collision list
object = new RecoveryPage(objectNumber, tableSpaceId);
object->collision = recoveryObjects[slot];
recoveryObjects[slot] = object;
@@ -143,7 +169,9 @@ RecoveryPage* RecoveryObjects::getRecove
void RecoveryObjects::deleteObject(int objectNumber, int tableSpaceId)
{
int slot = objectNumber % RPG_HASH_SIZE;
-
+ Sync sync(&syncArray[slot], "RecoveryObjects::deleteObject");
+ sync.lock(Exclusive);
+
for (RecoveryPage **ptr = recoveryObjects + slot, *object; (object = *ptr); ptr =
&object->collision)
if (object->objectNumber == objectNumber && object->tableSpaceId ==
tableSpaceId)
{
=== modified file 'storage/falcon/RecoveryObjects.h'
--- a/storage/falcon/RecoveryObjects.h 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/RecoveryObjects.h 2008-07-18 21:24:52 +0000
@@ -26,6 +26,7 @@
static const int RPG_HASH_SIZE = 101;
+#include "SyncObject.h"
class RecoveryPage;
class SerialLog;
@@ -48,6 +49,7 @@ public:
SerialLog *serialLog;
RecoveryPage *recoveryObjects[RPG_HASH_SIZE];
+ SyncObject syncArray[RPG_HASH_SIZE];
};
#endif //
!defined(AFX_RECOVERYOBJECTS_H__00C7CE5F_3C33_435C_9521_9C274CAB0581__INCLUDED_)
=== modified file 'storage/falcon/Repository.cpp'
--- a/storage/falcon/Repository.cpp 2008-03-03 18:40:17 +0000
+++ b/storage/falcon/Repository.cpp 2008-07-24 08:45:03 +0000
@@ -61,6 +61,7 @@ Repository::Repository(const char *repos
setRollover (rollovers);
memset (volumes, 0, sizeof (volumes));
+ syncObject.setName("Repository::syncObject");
}
Repository::~Repository()
@@ -339,7 +340,7 @@ void Repository::setVolume(int volume)
void Repository::save()
{
- Sync syncDDL(&database->syncSysDDL, "Repository::update");
+ Sync syncDDL(&database->syncSysDDL, "Repository::save");
syncDDL.lock (Shared);
PreparedStatement *statement = database->prepareStatement (
"replace into system.repositories
(repositoryName,schema,sequenceName,filename,rollovers,currentVolume)"
=== modified file 'storage/falcon/RepositoryManager.cpp'
--- a/storage/falcon/RepositoryManager.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/RepositoryManager.cpp 2008-07-24 08:45:03 +0000
@@ -46,6 +46,7 @@ RepositoryManager::RepositoryManager(Dat
{
database = db;
memset (repositories, 0, sizeof (repositories));
+ syncObject.setName("RepositoryManager::syncObject");
}
RepositoryManager::~RepositoryManager()
@@ -113,7 +114,7 @@ Repository* RepositoryManager::getReposi
Repository* RepositoryManager::createRepository(const char *name, const char *schema,
Sequence *sequence, const char *fileName, int volume, const char *rolloverString)
{
- Sync sync (&syncObject, "RepositoryManager::getRepository");
+ Sync sync (&syncObject, "RepositoryManager::createRepository");
sync.lock (Exclusive);
Repository *repository = findRepository (schema, database->getSymbol (name));
@@ -135,7 +136,7 @@ Repository* RepositoryManager::createRep
void RepositoryManager::deleteRepository(Repository *repository)
{
repository->drop();
- Sync sync (&syncObject, "RepositoryManager::getRepository");
+ Sync sync (&syncObject, "RepositoryManager::deleteRepository");
sync.lock (Exclusive);
int slot = HASH (repository->schema, REPOSITORY_HASH_SIZE);
=== modified file 'storage/falcon/RepositoryVolume.cpp'
--- a/storage/falcon/RepositoryVolume.cpp 2008-03-28 22:44:36 +0000
+++ b/storage/falcon/RepositoryVolume.cpp 2008-07-24 08:45:03 +0000
@@ -75,6 +75,7 @@ RepositoryVolume::RepositoryVolume(Repos
lastAccess = 0;
rootPage = 0;
section = NULL;
+ syncObject.setName("RepositoryVolume::syncObject");
}
RepositoryVolume::~RepositoryVolume()
@@ -90,7 +91,7 @@ void RepositoryVolume::storeBlob(BlobRef
void RepositoryVolume::storeBlob(int64 blobId, Stream *stream, Transaction *transaction)
{
- Sync sync (&syncObject, "RepositoryVolume::getBlob");
+ Sync sync (&syncObject, "RepositoryVolume::storeBlob");
sync.lock (Shared);
while (!isWritable)
@@ -216,7 +217,7 @@ void RepositoryVolume::makeWritable()
if (isWritable)
return;
- Sync sync(&syncObject, "RepositoryVolume::getBlob");
+ Sync sync(&syncObject, "RepositoryVolume::makeWritable");
sync.lock(Exclusive);
if (isWritable)
@@ -232,7 +233,7 @@ void RepositoryVolume::makeWritable()
void RepositoryVolume::create()
{
IO::createPath (fileName);
- dbb->create(fileName, dbb->pageSize, 0, HdrRepositoryFile, 0, NULL, 0);
+ dbb->create(fileName, dbb->pageSize, 0, HdrRepositoryFile, 0, NULL);
Sync syncDDL(&database->syncSysDDL, "RepositoryVolume::create");
Transaction *transaction = database->getSystemTransaction();
syncDDL.lock(Exclusive);
@@ -399,7 +400,7 @@ int64 RepositoryVolume::getRepositorySiz
void RepositoryVolume::deleteBlob(int64 blobId, Transaction *transaction)
{
- Sync sync (&syncObject, "RepositoryVolume::getBlob");
+ Sync sync (&syncObject, "RepositoryVolume::deleteBlob");
sync.lock (Shared);
while (!isWritable)
@@ -464,7 +465,7 @@ void RepositoryVolume::scavenge()
if (!isOpen || lastAccess + TIMEOUT > database->timestamp)
return;
- Sync sync (&syncObject, "RepositoryVolume::getBlob");
+ Sync sync (&syncObject, "RepositoryVolume::scavenge");
sync.lock (Exclusive);
if (!isOpen || lastAccess + TIMEOUT > database->timestamp)
=== modified file 'storage/falcon/ResultSet.cpp'
--- a/storage/falcon/ResultSet.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/ResultSet.cpp 2008-07-24 08:45:03 +0000
@@ -96,6 +96,7 @@ void ResultSet::init(int count)
javaStatementCount = 0;
connection = NULL;
database = NULL;
+ syncObject.setName("ResultSet::syncObject");
}
ResultSet::~ResultSet()
=== modified file 'storage/falcon/Role.cpp'
--- a/storage/falcon/Role.cpp 2008-03-03 18:40:17 +0000
+++ b/storage/falcon/Role.cpp 2008-07-24 08:45:03 +0000
@@ -44,6 +44,7 @@ Role::Role(Database *db, const char* rol
setName (roleSchema, roleName);
useCount = 1;
memset (privileges, 0, sizeof (privileges));
+ syncObject.setName("Role::syncObject");
}
Role::~Role()
=== modified file 'storage/falcon/SQLParse.cpp'
--- a/storage/falcon/SQLParse.cpp 2008-04-05 22:09:17 +0000
+++ b/storage/falcon/SQLParse.cpp 2008-07-17 13:52:17 +0000
@@ -3298,21 +3298,6 @@ Syntax* SQLParse::parseCreateTableSpace(
for (;;)
{
- /***
- if (match("INITIAL_SIZE"))
- options.append (makeNode(nod_initial_size, parseNumber()));
- else if (match ("EXTENT_SIZE"))
- options.append (makeNode(nod_extent_size, parseNumber()));
- else if (match ("AUTOEXTEND_SIZE"))
- options.append (makeNode(nod_autoextend_size, parseNumber()));
- else if (match ("MAX_SIZE"))
- options.append (makeNode(nod_max_size, parseNumber()));
- else if (match ("NODEGROUP"))
- options.append (makeNode(nod_nodegroup, parseNumber()));
- else if (match ("WAIT"))
- options.append (makeNode(nod_wait, parseNumber()));
- else
- ***/
if (match ("COMMENT"))
options.append (makeNode(nod_comment, parseQuotedString()));
else if (match (","))
=== modified file 'storage/falcon/SRLCreateTableSpace.cpp'
--- a/storage/falcon/SRLCreateTableSpace.cpp 2008-04-05 22:09:17 +0000
+++ b/storage/falcon/SRLCreateTableSpace.cpp 2008-07-17 13:52:17 +0000
@@ -52,14 +52,6 @@ void SRLCreateTableSpace::append(TableSp
putInt(len);
putData(len, (const UCHAR*) p);
putInt(tableSpace->type);
- /***
- putInt64(tableSpace->initialSize);
- putInt64(tableSpace->extentSize);
- putInt64(tableSpace->autoextendSize);
- putInt64(tableSpace->maxSize);
- putInt(tableSpace->nodegroup);
- putInt(tableSpace->wait);
- ***/
p = tableSpace->comment;
len = (int)strlen(p);
putInt(len);
@@ -81,27 +73,11 @@ void SRLCreateTableSpace::read()
if (control->version >= srlVersion15)
{
- /***
- initialSize = getInt64();
- extentSize = getInt64();
- autoextendSize= getInt64();
- maxSize = getInt64();
- nodegroup = getInt();
- wait = getInt();
- ***/
commentLength = getInt();
comment = (const char*) getData(commentLength);
}
else
{
- /***
- initialSize = 0;
- extentSize = 0;
- autoextendSize= 0;
- maxSize = 0;
- nodegroup = 0;
- wait = 0;
- ***/
commentLength = 0;
comment = NULL;
}
@@ -110,17 +86,7 @@ void SRLCreateTableSpace::read()
void SRLCreateTableSpace::pass1()
{
TableSpaceInit tsInit;
-
- /***
- tsInit.initialSize = initialSize;
- tsInit.extentSize = extentSize;
- tsInit.autoextendSize = autoextendSize;
- tsInit.maxSize = maxSize;
- tsInit.nodegroup = nodegroup;
- tsInit.wait = wait;
- ***/
tsInit.comment = comment;
-
log->database->tableSpaceManager->redoCreateTableSpace(tableSpaceId,
nameLength, name, filenameLength, filename, type, &tsInit);
}
=== modified file 'storage/falcon/SRLCreateTableSpace.h'
--- a/storage/falcon/SRLCreateTableSpace.h 2008-04-05 22:09:17 +0000
+++ b/storage/falcon/SRLCreateTableSpace.h 2008-07-17 13:52:17 +0000
@@ -48,14 +48,6 @@ public:
int nameLength;
int filenameLength;
int type;
- /***
- int64 initialSize;
- int64 extentSize;
- int64 autoExtendSize;
- int64 maxSize;
- int nodegroup;
- int wait;
- ***/
const char *comment;
int commentLength;
};
=== modified file 'storage/falcon/SRLDeleteIndex.cpp'
--- a/storage/falcon/SRLDeleteIndex.cpp 2007-10-11 12:12:16 +0000
+++ b/storage/falcon/SRLDeleteIndex.cpp 2008-07-15 18:57:27 +0000
@@ -44,10 +44,10 @@ SRLDeleteIndex::~SRLDeleteIndex()
void SRLDeleteIndex::append(Dbb *dbb, TransId transId, int id, int idxVersion)
{
- Sync syncIndexes(&log->syncIndexes, "SRLDeleteIndex::append");
+ Sync syncIndexes(&log->syncIndexes, "SRLDeleteIndex::append(1)");
syncIndexes.lock(Exclusive);
- START_RECORD(srlDeleteIndex, "SRLDeleteIndex::append");
+ START_RECORD(srlDeleteIndex, "SRLDeleteIndex::append(2)");
putInt(dbb->tableSpaceId);
log->getTransaction(transId);
log->setIndexInactive(id, dbb->tableSpaceId);
=== modified file 'storage/falcon/SRLPrepare.cpp'
--- a/storage/falcon/SRLPrepare.cpp 2007-12-02 20:17:29 +0000
+++ b/storage/falcon/SRLPrepare.cpp 2008-07-24 08:45:03 +0000
@@ -43,7 +43,7 @@ SRLPrepare::~SRLPrepare()
void SRLPrepare::append(TransId transId, int xidLength, const UCHAR *xid)
{
- START_RECORD(srlPrepare, "");
+ START_RECORD(srlPrepare, "SRLPrepare::append");
putInt(transId);
putInt(xidLength);
putData(xidLength, xid);
=== modified file 'storage/falcon/SRLRollback.cpp'
--- a/storage/falcon/SRLRollback.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/SRLRollback.cpp 2008-07-24 08:45:03 +0000
@@ -40,7 +40,7 @@ SRLRollback::~SRLRollback()
void SRLRollback::append(TransId transId, bool updateTransaction)
{
- START_RECORD(srlRollback, "");
+ START_RECORD(srlRollback, "SRLRollback::append");
putInt(transId);
uint64 commitBlockNumber = log->nextBlockNumber;
SerialLogTransaction *transaction = log->findTransaction(transId);
=== modified file 'storage/falcon/SRLUpdateIndex.cpp'
--- a/storage/falcon/SRLUpdateIndex.cpp 2008-04-12 02:22:50 +0000
+++ b/storage/falcon/SRLUpdateIndex.cpp 2008-07-15 18:57:27 +0000
@@ -40,7 +40,7 @@ SRLUpdateIndex::~SRLUpdateIndex(void)
void SRLUpdateIndex::append(DeferredIndex* deferredIndex)
{
- Sync syncIndexes(&log->syncIndexes, "SRLUpdateIndex::append");
+ Sync syncIndexes(&log->syncIndexes, "SRLUpdateIndex::append(1)");
syncIndexes.lock(Shared);
Transaction *transaction = deferredIndex->transaction;
@@ -57,7 +57,7 @@ void SRLUpdateIndex::append(DeferredInde
for (DINode *node = walker.next(); node;)
{
- START_RECORD(srlUpdateIndex, "SRLUpdateIndex::append");
+ START_RECORD(srlUpdateIndex, "SRLUpdateIndex::append(2)");
log->updateIndexUseVector(indexId, tableSpaceId, 1);
SerialLogTransaction *srlTrans = log->getTransaction(transaction->transactionId);
srlTrans->setTransaction(transaction);
=== modified file 'storage/falcon/Scheduler.cpp'
--- a/storage/falcon/Scheduler.cpp 2008-03-05 20:28:53 +0000
+++ b/storage/falcon/Scheduler.cpp 2008-07-24 08:45:03 +0000
@@ -66,6 +66,7 @@ Scheduler::Scheduler(Database *db)
events = NULL;
useCount = 1;
thread = NULL;
+ syncObject.setName("Scheduler::syncObject");
}
Scheduler::~Scheduler()
@@ -210,10 +211,10 @@ void Scheduler::start()
void Scheduler::updateSchedule(const char *appName, const char *eventName, User *user,
const char *schedule)
{
- Sync syncDDL (&database->syncSysDDL, "Scheduler::updateSchedule(2)");
+ Sync syncDDL (&database->syncSysDDL, "Scheduler::updateSchedule(1)");
syncDDL.lock (Exclusive);
- Sync syncObj(&syncObject, "Scheduler::updateSchedule");
+ Sync syncObj(&syncObject, "Scheduler::updateSchedule(2)");
syncObj.lock(Exclusive);
// Ditch old event
=== modified file 'storage/falcon/SectorBuffer.cpp'
--- a/storage/falcon/SectorBuffer.cpp 2008-07-10 19:00:14 +0000
+++ b/storage/falcon/SectorBuffer.cpp 2008-07-24 08:45:03 +0000
@@ -25,6 +25,7 @@ SectorBuffer::SectorBuffer()
{
activeLength = 0;
sectorNumber = -1;
+ syncObject.setName("SectorBuffer::syncObject");
}
SectorBuffer::~SectorBuffer(void)
=== modified file 'storage/falcon/SectorCache.cpp'
--- a/storage/falcon/SectorCache.cpp 2008-06-17 21:00:45 +0000
+++ b/storage/falcon/SectorCache.cpp 2008-07-24 08:45:03 +0000
@@ -46,6 +46,8 @@ SectorCache::SectorCache(int numBuffers,
buffer->cache = this;
buffer->buffer = p;
}
+
+ syncObject.setName("SectorCache::syncObject");
}
SectorCache::~SectorCache(void)
@@ -56,7 +58,7 @@ SectorCache::~SectorCache(void)
void SectorCache::readPage(Bdb* bdb)
{
- Sync sync(&syncObject, "SectorCache::readPage");
+ Sync sync(&syncObject, "SectorCache::readPage(1)");
sync.lock(Shared);
int sectorNumber = bdb->pageNumber / pagesPerSector;
int slot = sectorNumber % SECTOR_HASH_SIZE;
@@ -89,7 +91,7 @@ void SectorCache::readPage(Bdb* bdb)
buffer = nextBuffer;
nextBuffer = buffer->next;
- Sync syncBuffer(&buffer->syncObject, "SectorCache::readPage(3)");
+ Sync syncBuffer(&buffer->syncObject, "SectorCache::readPage(4)");
syncBuffer.lock(Exclusive);
if (buffer->sectorNumber >= 0)
@@ -111,7 +113,7 @@ void SectorCache::readPage(Bdb* bdb)
void SectorCache::writePage(Bdb* bdb)
{
- Sync sync(&syncObject, "SectorCache::writePage");
+ Sync sync(&syncObject, "SectorCache::writePage(1)");
sync.lock(Shared);
int sectorNumber = bdb->pageNumber / pagesPerSector;
int slot = sectorNumber % SECTOR_HASH_SIZE;
=== modified file 'storage/falcon/SequenceManager.cpp'
--- a/storage/falcon/SequenceManager.cpp 2008-03-03 18:40:17 +0000
+++ b/storage/falcon/SequenceManager.cpp 2008-07-24 08:45:03 +0000
@@ -54,6 +54,7 @@ SequenceManager::SequenceManager(Databas
{
database = db;
memset (sequences, 0, sizeof (sequences));
+ syncObject.setName("SequenceManager::syncObject");
}
SequenceManager::~SequenceManager()
=== modified file 'storage/falcon/SerialLog.cpp'
--- a/storage/falcon/SerialLog.cpp 2008-07-09 19:23:23 +0000
+++ b/storage/falcon/SerialLog.cpp 2008-07-24 08:45:03 +0000
@@ -125,7 +125,9 @@ SerialLog::SerialLog(Database *db, JStri
syncIndexes.setName("SerialLog::syncIndexes");
syncGopher.setName("SerialLog::syncGopher");
syncUpdateStall.setName("SerialLog::syncUpdateStall");
- pending.syncObject.setName("SerialLog::pending transactions");
+ pending.syncObject.setName("SerialLog::pending.syncObject");
+ inactions.syncObject.setName("SerialLog::inactions.syncObject");
+ running.syncObject.setName("SerialLog::running.syncObject");
gophers = NULL;
wantToSerializeGophers = 0;
serializeGophers = 0;
@@ -1292,11 +1294,12 @@ bool SerialLog::indexInUse(int indexId,
TableSpaceInfo *info = getTableSpaceInfo(tableSpaceId);
return info->indexUseVector.get(indexId) > 0;
}
-
+/*
int SerialLog::getPageState(int32 pageNumber, int tableSpaceId)
{
return recoveryPages->getCurrentState(pageNumber, tableSpaceId);
}
+*/
void SerialLog::redoFreePage(int32 pageNumber, int tableSpaceId)
{
@@ -1366,7 +1369,7 @@ void SerialLog::reportStatistics(void)
void SerialLog::getSerialLogInfo(InfoTable* tableInfo)
{
- Sync sync(&pending.syncObject, "SerialLog::getSerialLogInfo");
+ Sync sync(&pending.syncObject, "SerialLog::getSerialLogInfo(1)");
sync.lock(Shared);
int numberTransactions = 0;
uint64 minBlockNumber = writeBlock->blockNumber;
@@ -1382,7 +1385,7 @@ void SerialLog::getSerialLogInfo(InfoTab
int64 delta = writeBlock->blockNumber - minBlockNumber;
sync.unlock();
- Sync syncWindows(&syncWrite, "SerialLog::getSerialLogInfo");
+ Sync syncWindows(&syncWrite, "SerialLog::getSerialLogInfo(1)");
syncWindows.lock(Shared);
int windows = 0;
int buffers = 0;
@@ -1439,13 +1442,13 @@ void SerialLog::preCommit(Transaction* t
if (!serialLogTransaction)
{
- Sync writeSync(&syncWrite, "SerialLog::preCommit");
+ Sync writeSync(&syncWrite, "SerialLog::preCommit(1)");
writeSync.lock(Exclusive);
startRecord();
serialLogTransaction = getTransaction(transaction->transactionId);
}
- Sync sync (&pending.syncObject, "SerialLog::activate");
+ Sync sync (&pending.syncObject, "SerialLog::preCommit(2)");
sync.lock(Exclusive);
running.remove(serialLogTransaction);
pending.append(serialLogTransaction);
=== modified file 'storage/falcon/SerialLog.h'
--- a/storage/falcon/SerialLog.h 2008-07-09 19:23:23 +0000
+++ b/storage/falcon/SerialLog.h 2008-07-24 08:45:03 +0000
@@ -132,7 +132,7 @@ public:
bool bumpSectionIncarnation (int sectionId, int tableSpaceId, int state);
bool bumpPageIncarnation (int32 pageNumber, int tableSpaceId, int state);
- int getPageState(int32 pageNumber, int tableSpaceId);
+// int getPageState(int32 pageNumber, int tableSpaceId);
void redoFreePage(int32 pageNumber, int tableSpaceId);
bool indexInUse(int indexId, int tableSpaceId);
=== modified file 'storage/falcon/SerialLogFile.cpp'
--- a/storage/falcon/SerialLogFile.cpp 2008-07-08 21:36:34 +0000
+++ b/storage/falcon/SerialLogFile.cpp 2008-07-15 18:57:27 +0000
@@ -169,7 +169,7 @@ void SerialLogFile::close()
void SerialLogFile::write(int64 position, uint32 length, const SerialLogBlock *data)
{
uint32 effectiveLength = ROUNDUP(length, sectorSize);
- time_t start = database->timestamp;
+ time_t start = database->timestamp;
Priority priority(database->ioScheduler);
if (!(position == writePoint || position == 0 || writePoint == 0))
@@ -202,7 +202,7 @@ void SerialLogFile::write(int64 position
#if defined(HAVE_PREAD) && !defined(HAVE_BROKEN_PREAD)
uint32 n = ::pwrite (handle, data, effectiveLength, position);
#else
- Sync sync (&syncObject, "IO::pwrite");
+ Sync sync (&syncObject, "SerialLogFile::write");
sync.lock (Exclusive);
if (position != offset)
@@ -244,7 +244,7 @@ void SerialLogFile::write(int64 position
uint32 SerialLogFile::read(int64 position, uint32 length, UCHAR *data)
{
uint32 effectiveLength = ROUNDUP(length, sectorSize);
- //Sync syncIO(&database->syncSerialLogIO, "SerialLogFile::read");
+ //Sync syncIO(&database->syncSerialLogIO, "SerialLogFile::read(1)");
Priority priority(database->ioScheduler);
if (falcon_serial_log_priority)
@@ -274,7 +274,7 @@ uint32 SerialLogFile::read(int64 positio
#if defined(HAVE_PREAD) && !defined(HAVE_BROKEN_PREAD)
int n = ::pread (handle, data, effectiveLength, position);
#else
- Sync sync(&syncObject, "SerialLogFile::read");
+ Sync sync(&syncObject, "SerialLogFile::read(2)");
sync.lock(Exclusive);
ASSERT(position < writePoint || writePoint == 0);
off_t loc = lseek(handle, position, SEEK_SET);
=== modified file 'storage/falcon/Server.cpp'
--- a/storage/falcon/Server.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/Server.cpp 2008-07-24 08:45:03 +0000
@@ -72,6 +72,7 @@ Server::Server(Server *server, Protocol
protocol = proto;
threads = NULL;
+ syncObject.setName("Server::syncObject");
}
Server::Server(int requestedPort, const char *configFileName)
=== modified file 'storage/falcon/SessionManager.cpp'
--- a/storage/falcon/SessionManager.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/SessionManager.cpp 2008-07-15 18:57:27 +0000
@@ -454,7 +454,7 @@ void SessionManager::purged(Session *ses
void SessionManager::removeSession(Session *session)
{
- Sync sync (&syncObject, "SessionManager::close");
+ Sync sync (&syncObject, "SessionManager::removeSession");
sync.lock (Exclusive);
// If it's in a queue, take it out now
@@ -485,7 +485,7 @@ LicenseToken* SessionManager::waitForLic
// If somebody else if waiting, and we're unwilling to
// wait, just say no.
- Sync sync (&syncObject, "SessionManager::getLicenseToken");
+ Sync sync (&syncObject, "SessionManager::waitForLicense");
sync.lock (Exclusive);
if (waiting.first && !target)
@@ -495,7 +495,7 @@ LicenseToken* SessionManager::waitForLic
if (target)
{
- target->thread = Thread::getThread("SessionManager::getLicenseToken");
+ target->thread = Thread::getThread("SessionManager::waitForLicense");
waiting.insert (target);
}
=== modified file 'storage/falcon/Statement.cpp'
--- a/storage/falcon/Statement.cpp 2008-07-09 04:38:02 +0000
+++ b/storage/falcon/Statement.cpp 2008-07-24 08:45:03 +0000
@@ -144,6 +144,7 @@ Statement::Statement(Connection *pConnec
special = false;
active = false;
memset (&stats, 0, sizeof (stats));
+ syncObject.setName("Statement::syncObject");
}
Statement::~Statement()
@@ -1959,7 +1960,7 @@ const char* Statement::getName(Syntax *
void Statement::connectionClosed()
{
addRef();
- Sync sync (&syncObject, "Statement::close");
+ Sync sync (&syncObject, "Statement::connectionClosed");
sync.lock (Exclusive);
/***
@@ -2965,26 +2966,6 @@ void Statement::createTableSpace(Syntax
switch (child->type)
{
- /***
- case nod_initial_size:
- tsInit.initial_size = child->getChild(0)->getQuad();
- break;
- case nod_extent_size:
- tsInit.extent_size = child->getChild(0)->getQuad();
- break;
- case nod_autoextend_size:
- tsInit.autoextend_size = child->getChild(0)->getQuad();
- break;
- case nod_max_size:
- tsInit.maxSize = child->getChild(0)->getQuad();
- break;
- case nod_nodegroup:
- tsInit.nodegroup = child->getChild(0)->getNumber();
- break;
- case nod_wait:
- tsInit.wait = child->getChild(0)->getNumber();
- break;
- ***/
case nod_comment:
tsInit.comment = child->getChild(0)->getString();
break;
=== modified file 'storage/falcon/StorageDatabase.cpp'
--- a/storage/falcon/StorageDatabase.cpp 2008-07-09 04:38:02 +0000
+++ b/storage/falcon/StorageDatabase.cpp 2008-07-24 08:45:03 +0000
@@ -100,6 +100,8 @@ StorageDatabase::StorageDatabase(Storage
//SyncTest syncTest;
//syncTest.test();
}
+ syncObject.setName("StorageDatabase::syncObject");
+ syncTrace.setName("StorageDatabase::syncTrace");
}
StorageDatabase::~StorageDatabase(void)
@@ -756,10 +758,10 @@ int StorageDatabase::renameTable(Storage
++numberIndexes;
}
- Sync syncDDL(&database->syncSysDDL, "StorageDatabase::renameTable");
+ Sync syncDDL(&database->syncSysDDL, "StorageDatabase::renameTable(1)");
syncDDL.lock(Exclusive);
- Sync syncTables(&database->syncTables, "StorageDatabase::renameTable");
+ Sync syncTables(&database->syncTables, "StorageDatabase::renameTable(2)");
syncTables.lock(Exclusive);
for (int n = firstIndex; n < numberIndexes; ++n)
@@ -1206,7 +1208,7 @@ void StorageDatabase::clearTransactions(
{
#ifdef TRACE_TRANSACTIONS
- Sync sync(&traceSyncObject, "StorageDatabase::clearTransactions");
+ Sync sync(&syncTrace, "StorageDatabase::clearTransactions");
sync.lock(Exclusive);
Statement *statement = masterConnection->createStatement();
statement->execute(traceTable);
@@ -1224,7 +1226,7 @@ void StorageDatabase::traceTransaction(i
{
try
{
- Sync sync(&traceSyncObject, "StorageDatabase::traceTransaction");
+ Sync sync(&syncTrace, "StorageDatabase::traceTransaction");
sync.lock(Exclusive);
char buffer [10000];
int length = stream->getSegment(0, sizeof(buffer) - 1, buffer);
=== modified file 'storage/falcon/StorageDatabase.h'
--- a/storage/falcon/StorageDatabase.h 2008-07-09 04:38:02 +0000
+++ b/storage/falcon/StorageDatabase.h 2008-07-24 08:45:03 +0000
@@ -111,7 +111,7 @@ public:
StorageDatabase *next;
StorageHandler *storageHandler;
SyncObject syncObject;
- SyncObject traceSyncObject;
+ SyncObject syncTrace;
User *user;
PreparedStatement *lookupIndexAlias;
PreparedStatement *insertTrace;
=== modified file 'storage/falcon/StorageHandler.cpp'
--- a/storage/falcon/StorageHandler.cpp 2008-07-10 19:00:14 +0000
+++ b/storage/falcon/StorageHandler.cpp 2008-07-31 08:52:32 +0000
@@ -35,6 +35,8 @@
#include "InfoTable.h"
#include "CmdGen.h"
#include "Dbb.h"
+#include "Database.h"
+#include "TableSpaceManager.h"
#define DICTIONARY_ACCOUNT "mysql"
#define DICTIONARY_PW "mysql"
@@ -51,7 +53,6 @@ struct StorageSavepoint {
int savepoint;
};
-extern uint64 falcon_initial_allocation;
static const char *createTempSpace = "upgrade tablespace " TEMPORARY_TABLESPACE "
filename '" FALCON_TEMPORARY "'";
//static const char *dropTempSpace = "drop tablespace " TEMPORARY_TABLESPACE;
@@ -122,6 +123,9 @@ StorageHandler::StorageHandler(int lockS
databaseList = NULL;
defaultDatabase = NULL;
initialized = false;
+ syncObject.setName("StorageHandler::syncObject");
+ hashSyncObject.setName("StorageHandler::hashSyncObject");
+ dictionarySyncObject.setName("StorageHandler::dictionarySyncObject");
}
StorageHandler::~StorageHandler(void)
@@ -191,7 +195,7 @@ void StorageHandler::databaseDropped(Sto
if (storageDatabase)
{
- Sync syncHash(&hashSyncObject, "StorageHandler::dropDatabase");
+ Sync syncHash(&hashSyncObject, "StorageHandler::databaseDropped(1)");
int slot = JString::hash(storageDatabase->name, databaseHashSize);
syncHash.lock(Exclusive);
StorageDatabase **ptr;
@@ -214,7 +218,7 @@ void StorageHandler::databaseDropped(Sto
storageDatabase->release();
}
- Sync sync(&syncObject, "StorageHandler::~dropDatabase");
+ Sync sync(&syncObject, "StorageHandler::databaseDropped(2)");
sync.lock(Exclusive);
for (int n = 0; n < connectionHashSize; ++n)
@@ -424,7 +428,7 @@ StorageDatabase* StorageHandler::getStor
void StorageHandler::closeDatabase(const char* path)
{
- Sync sync(&hashSyncObject, "StorageHandler::getStorageDatabase");
+ Sync sync(&hashSyncObject, "StorageHandler::closeDatabase");
int slot = JString::hash(path, databaseHashSize);
sync.lock(Exclusive);
@@ -464,43 +468,33 @@ Connection* StorageHandler::getDictionar
return dictionaryConnection;
}
-JString StorageHandler::genCreateTableSpace(const char* tableSpaceName, const char*
filename,
- unsigned long long initialSize,
- unsigned long long extentSize,
- unsigned long long autoextendSize,
- unsigned long long maxSize,
- int nodegroup, bool wait, const char* comment)
+JString StorageHandler::genCreateTableSpace(const char* tableSpaceName, const char*
filename, const char* comment)
{
CmdGen gen;
- /***
- gen.gen("create tablespace \"%s\" filename '%s' initial_size " I64FORMAT " extent_size "
I64FORMAT
- " autoextend_size " I64FORMAT " max_size " I64FORMAT " nodegroup %d wait %d comment
'%s'",
- tableSpaceName, filename, initialSize, extentSize, autoextendSize, maxSize,
nodegroup, (int)wait, comment ? comment : "");
- ***/
gen.gen("create tablespace \"%s\" filename '%s' comment '%s'", tableSpaceName, filename,
comment ? comment : "");
return (gen.getString());
}
-int StorageHandler::createTablespace(const char* tableSpaceName, const char* filename,
- unsigned long long initialSize,
- unsigned long long extentSize,
- unsigned long long autoextendSize,
- unsigned long long maxSize,
- int nodegroup, bool wait, const char* comment)
+int StorageHandler::createTablespace(const char* tableSpaceName, const char* filename,
const char* comment)
{
if (!defaultDatabase)
initialize();
if (!dictionaryConnection)
return StorageErrorTablesSpaceOperationFailed;
-
- //StorageDatabase *storageDatabase = NULL;
+
JString tableSpace = JString::upcase(tableSpaceName);
-
+
+ TableSpaceManager *tableSpaceManager =
+ dictionaryConnection->database->tableSpaceManager;
+
+ if (!tableSpaceManager->waitForPendingDrop(tableSpaceName, 10))
+ // file still exists after waiting for 10 seconds
+ return StorageErrorTableSpaceExist;
+
try
{
- JString cmd = genCreateTableSpace(tableSpaceName, filename, initialSize, extentSize,
- autoextendSize, maxSize, nodegroup, wait, comment);
+ JString cmd = genCreateTableSpace(tableSpaceName, filename, comment);
Sync sync(&dictionarySyncObject, "StorageHandler::createTablespace");
sync.lock(Exclusive);
Statement *statement = dictionaryConnection->createStatement();
@@ -543,7 +537,7 @@ int StorageHandler::deleteTablespace(con
{
CmdGen gen;
gen.gen("drop tablespace \"%s\"", tableSpaceName);
- Sync sync(&dictionarySyncObject, "StorageHandler::createTablespace");
+ Sync sync(&dictionarySyncObject, "StorageHandler::deleteTablespace");
sync.lock(Exclusive);
Statement *statement = dictionaryConnection->createStatement();
statement->executeUpdate(gen.getString());
@@ -664,7 +658,7 @@ StorageTableShare* StorageHandler::creat
void StorageHandler::addTable(StorageTableShare* table)
{
int slot = JString::hash(table->pathName, tableHashSize);
- Sync sync(&hashSyncObject, "StorageHandler::add");
+ Sync sync(&hashSyncObject, "StorageHandler::addTable");
sync.lock(Exclusive);
table->collision = tables[slot];
tables[slot] = table;
@@ -674,7 +668,7 @@ void StorageHandler::addTable(StorageTab
void StorageHandler::removeTable(StorageTableShare* table)
{
- Sync sync(&hashSyncObject, "StorageHandler::deleteTable");
+ Sync sync(&hashSyncObject, "StorageHandler::removeTable");
sync.lock(Exclusive);
int slot = JString::hash(table->pathName, tableHashSize);
@@ -688,7 +682,7 @@ void StorageHandler::removeTable(Storage
StorageConnection* StorageHandler::getStorageConnection(StorageTableShare* tableShare,
THD* mySqlThread, int mySqlThdId, OpenOption createFlag)
{
- Sync sync(&syncObject, "StorageConnection::getStorageConnection");
+ Sync sync(&syncObject, "StorageHandler::getStorageConnection");
if (!defaultDatabase)
initialize();
@@ -921,7 +915,7 @@ void StorageHandler::getTransactionInfo(
void StorageHandler::getSerialLogInfo(InfoTable* infoTable)
{
- Sync sync(&hashSyncObject, "StorageHandler::getTransactionInfo");
+ Sync sync(&hashSyncObject, "StorageHandler::getSerialLogInfo");
sync.lock(Shared);
for (StorageDatabase *storageDatabase = databaseList; storageDatabase; storageDatabase =
storageDatabase->next)
@@ -965,7 +959,7 @@ void StorageHandler::initialize(void)
if (initialized)
return;
- Sync sync(&syncObject, "StorageConnection::initialize");
+ Sync sync(&syncObject, "StorageHandler::initialize");
sync.lock(Exclusive);
if (initialized)
@@ -998,7 +992,7 @@ void StorageHandler::initialize(void)
IO::deleteFile(FALCON_TEMPORARY);
dictionaryConnection = defaultDatabase->getOpenConnection();
Statement *statement = dictionaryConnection->createStatement();
- JString createTableSpace = genCreateTableSpace(DEFAULT_TABLESPACE, FALCON_USER,
falcon_initial_allocation);
+ JString createTableSpace = genCreateTableSpace(DEFAULT_TABLESPACE, FALCON_USER);
statement->executeUpdate(createTableSpace);
for (const char **ddl = falconSchema; *ddl; ++ddl)
@@ -1047,67 +1041,6 @@ void StorageHandler::dropTempTables(void
statement->close();
}
-void StorageHandler::getTablesInfo(InfoTable* infoTable)
-{
- if (!defaultDatabase)
- initialize();
-
- if (!dictionaryConnection)
- return;
-
- try
- {
- PStatement statement = dictionaryConnection->prepareStatement(
- "select schema,tablename,tablespace from system.tables where tablespace <> ''");
- RSet resultSet = statement->executeQuery();
-
- while (resultSet->next())
- {
-
- // Parse table and partition name
-
- const char *pStr = resultSet->getString(2);
- char *pTable = NULL;
- char *pPart = NULL;
-
- if (pStr)
- {
- const int max_buf = 1024;
- char buffer[max_buf+1];
-
- pTable = buffer;
- *pTable = 0;
- strncpy(buffer, pStr, (size_t)max_buf);
-
- char *pBuf = strchr(buffer, '#');
-
- if (pBuf)
- {
- *pBuf = 0;
- if ((pPart = strrchr(++pBuf, '#')) != NULL)
- pPart++;
- }
- }
-
- infoTable->putString(0, resultSet->getString(1)); // database
- infoTable->putString(1, (pTable ? pTable : pStr)); // table
- infoTable->putString(2, (pPart ? pPart : "")); // partition
- infoTable->putString(3, resultSet->getString(3)); // tablespace
- infoTable->putString(4, resultSet->getString(2)); // internal name
-
- //for (int n = 0; n < 3; ++n)
- // infoTable->putString(n, resultSet->getString(n + 1));
-
- infoTable->putRecord();
- }
-
- dictionaryConnection->commit();
- }
- catch(...)
- {
- }
-}
-
void StorageHandler::setRecordMemoryMax(uint64 value)
{
if (dictionaryConnection)
=== modified file 'storage/falcon/StorageHandler.h'
--- a/storage/falcon/StorageHandler.h 2008-04-05 22:09:17 +0000
+++ b/storage/falcon/StorageHandler.h 2008-07-29 10:45:39 +0000
@@ -85,12 +85,7 @@ public:
virtual int rollbackByXid(int xidLength, const unsigned char* xis);
virtual Connection* getDictionaryConnection(void);
- virtual int createTablespace(const char* tableSpaceName, const char* filename,
- unsigned long long initialSize = 0,
- unsigned long long extentSize = 0,
- unsigned long long autoextendSize = 0,
- unsigned long long maxSize = 0,
- int nodegroup = 0, bool wait = false, const char* comment = NULL);
+ virtual int createTablespace(const char* tableSpaceName, const char* filename, const
char* comment = NULL);
virtual int deleteTablespace(const char* tableSpaceName);
virtual StorageTableShare* findTable(const char* pathname);
@@ -108,7 +103,6 @@ public:
virtual void getTransactionSummaryInfo(InfoTable* infoTable);
virtual void getTableSpaceInfo(InfoTable* infoTable);
virtual void getTableSpaceFilesInfo(InfoTable* infoTable);
- virtual void getTablesInfo(InfoTable* infoTable);
virtual void setIndexChillThreshold(uint value);
virtual void setRecordChillThreshold(uint value);
@@ -134,12 +128,7 @@ public:
void initialize(void);
void dropTempTables(void);
void cleanFileName(const char* pathname, char* filename, int filenameLength);
- JString genCreateTableSpace(const char* tableSpaceName, const char* filename,
- unsigned long long initialSize = 0,
- unsigned long long extentSize = 0,
- unsigned long long autoextendSize = 0,
- unsigned long long maxSize = 0,
- int nodegroup = 0, bool wait = false, const char* comment = NULL);
+ JString genCreateTableSpace(const char* tableSpaceName, const char* filename, const
char* comment = NULL);
StorageConnection *connections[connectionHashSize];
StorageDatabase *defaultDatabase;
=== modified file 'storage/falcon/StorageTableShare.cpp'
--- a/storage/falcon/StorageTableShare.cpp 2008-07-14 05:27:57 +0000
+++ b/storage/falcon/StorageTableShare.cpp 2008-07-15 18:57:27 +0000
@@ -463,7 +463,7 @@ void StorageTableShare::registerTable(vo
try
{
- Sync sync(&storageHandler->dictionarySyncObject, "StorageTableShare::save");
+ Sync sync(&storageHandler->dictionarySyncObject,
"StorageTableShare::registerTable");
sync.lock(Exclusive);
connection = storageHandler->getDictionaryConnection();
statement = connection->prepareStatement(
@@ -494,7 +494,7 @@ void StorageTableShare::registerTable(vo
void StorageTableShare::unRegisterTable(void)
{
- Sync sync(&storageHandler->dictionarySyncObject, "StorageTableShare::unsave");
+ Sync sync(&storageHandler->dictionarySyncObject,
"StorageTableShare::unRegisterTable");
sync.lock(Exclusive);
Connection *connection = storageHandler->getDictionaryConnection();
PreparedStatement *statement = connection->prepareStatement(
=== modified file 'storage/falcon/SymbolManager.cpp'
--- a/storage/falcon/SymbolManager.cpp 2008-06-06 12:34:19 +0000
+++ b/storage/falcon/SymbolManager.cpp 2008-07-24 08:45:03 +0000
@@ -55,6 +55,7 @@ SymbolManager::SymbolManager()
sections->next = NULL;
next = sections->space;
memset (hashTable, 0, sizeof (hashTable));
+ syncObject.setName("SymbolManager::syncObject");
}
SymbolManager::~SymbolManager()
@@ -98,7 +99,7 @@ const char* SymbolManager::getSymbol(con
if (section->space <= string && string < section->space + sizeof
(section->space))
return string;
- Sync sync (&syncObject, "SymbolManager::getSymbol");
+ Sync sync (&syncObject, "SymbolManager::getSymbol(1)");
sync.lock (Shared);
int value = 0, c;
const char *p;
@@ -156,7 +157,7 @@ const char* SymbolManager::getString(con
if (section->space <= string && string < section->space + sizeof
(section->space))
return string;
- Sync sync (&syncObject, "SymbolManager::getSymbol");
+ Sync sync (&syncObject, "SymbolManager::getString");
sync.lock (Shared);
int value = 0, c;
const char *p;
@@ -218,7 +219,7 @@ bool SymbolManager::isSymbol(const char
const char* SymbolManager::getSymbol(const WCString *string)
{
- Sync sync (&syncObject, "SymbolManager::getSymbol(WC)");
+ Sync sync (&syncObject, "SymbolManager::getSymbol(2)");
sync.lock (Shared);
int value = 0, c;
//int length = Unicode::getUtf8Length(string->count, (UCHAR*) string->string);
=== modified file 'storage/falcon/Sync.cpp'
--- a/storage/falcon/Sync.cpp 2007-10-31 20:06:07 +0000
+++ b/storage/falcon/Sync.cpp 2008-07-24 08:45:03 +0000
@@ -37,7 +37,7 @@ Sync::Sync(SynchronizationObject *obj, c
ASSERT (obj);
state = None;
syncObject = obj;
- where = fromWhere;
+ location = fromWhere;
prior = NULL;
marked = NULL;
}
@@ -70,7 +70,7 @@ void Sync::lock(LockType type, int timeo
/***
void Sync::lock(LockType type, const char *fromWhere)
{
- where = fromWhere;
+ location = fromWhere;
lock(type);
}
***/
@@ -110,7 +110,7 @@ void Sync::findLocks(LinkedList &threads
void Sync::print(const char *label)
{
LOG_DEBUG ("%s %s state %d (%d) syncObject %p\n",
- label, where, state, request, syncObject);
+ label, location, state, request, syncObject);
}
void Sync::mark(const char* text)
=== modified file 'storage/falcon/Sync.h'
--- a/storage/falcon/Sync.h 2007-10-31 20:06:07 +0000
+++ b/storage/falcon/Sync.h 2008-07-24 08:45:03 +0000
@@ -28,10 +28,10 @@
class LinkedList;
-class Sync
+class Sync
{
public:
- Sync(SynchronizationObject *obj, const char *where);
+ Sync(SynchronizationObject *obj, const char *location);
virtual ~Sync();
void print (const char* label);
@@ -40,14 +40,14 @@ public:
//void print(int level);
void setObject (SynchronizationObject *obj);
void unlock();
- void lock (LockType type);
+ void lock(LockType type);
void lock(LockType type, int timeout);
SynchronizationObject *syncObject;
LockType state;
LockType request;
Sync *prior;
- const char *where;
+ const char *location;
const char *marked;
void mark(const char* text);
};
=== modified file 'storage/falcon/SyncObject.cpp'
--- a/storage/falcon/SyncObject.cpp 2008-07-08 16:01:41 +0000
+++ b/storage/falcon/SyncObject.cpp 2008-08-01 17:56:28 +0000
@@ -117,7 +117,7 @@ SyncObject::SyncObject()
exclusiveCount = 0;
waitCount = 0;
queueLength = 0;
- where = NULL;
+ location = NULL;
name = NULL;
objectId = INTERLOCKED_INCREMENT(nextSyncObjectId);
@@ -133,9 +133,6 @@ SyncObject::~SyncObject()
#ifdef TRACE_SYNC_OBJECTS
if (objectId < MAX_SYNC_OBJECTS)
syncObjects[objectId] = NULL;
-
- if (name)
- delete [] name;
#endif
}
@@ -146,7 +143,7 @@ void SyncObject::lock(Sync *sync, LockTy
#ifdef TRACE_SYNC_OBJECTS
if (sync)
- where = sync->where;
+ location = sync->location;
#endif
// Shared case
@@ -313,7 +310,7 @@ void SyncObject::lock(Sync *sync, LockTy
#ifdef TRACE_SYNC_OBJECTS
if (sync)
- where = sync->where;
+ location = sync->location;
#endif
if (type == Shared)
@@ -979,7 +976,7 @@ void SyncObject::frequentStaller(Thread
Sync *lockPending = thread->lockPending;
if (sync)
- LOG_DEBUG("Frequent stall from %s\n", sync->where);
+ LOG_DEBUG("Frequent stall from %s\n", sync->location);
else
LOG_DEBUG("Frequent stall from unknown\n");
@@ -995,9 +992,9 @@ void SyncObject::analyze(Stream* stream)
stream->format("Where\tShares\tExclusives\tWaits\tAverage Queue\n");
for (int n = 1; n < MAX_SYNC_OBJECTS; ++n)
- if ( (syncObject = syncObjects[n]) && syncObject->where)
+ if ( (syncObject = syncObjects[n]) && syncObject->location)
stream->format("%s\t%d\t%d\t%d\t%d\t\n",
- syncObject->where,
+ syncObject->location,
syncObject->sharedCount,
syncObject->exclusiveCount,
syncObject->waitCount,
@@ -1019,7 +1016,7 @@ void SyncObject::dump(void)
for (int n = 1; n < MAX_SYNC_OBJECTS; ++n)
if ( (syncObject = syncObjects[n]) )
{
- const char *name = (syncObject->name) ? syncObject->name : syncObject->where;
+ const char *name = (syncObject->name) ? syncObject->name :
syncObject->location;
if (name)
fprintf(out, "%s\t%d\t%d\t%d\t%d\t\n",
@@ -1044,10 +1041,10 @@ void SyncObject::getSyncInfo(InfoTable*
SyncObject *syncObject;
for (int index = 1; index < MAX_SYNC_OBJECTS; ++index)
- if ( (syncObject = syncObjects[index]) && syncObject->where)
+ if ( (syncObject = syncObjects[index]) && syncObject->location)
{
int n = 0;
- infoTable->putString(n++, syncObject->where);
+ infoTable->putString(n++, syncObject->location);
infoTable->putInt(n++, syncObject->sharedCount);
infoTable->putInt(n++, syncObject->exclusiveCount);
infoTable->putInt(n++, syncObject->waitCount);
@@ -1060,19 +1057,7 @@ void SyncObject::getSyncInfo(InfoTable*
void SyncObject::setName(const char* string)
{
#ifdef TRACE_SYNC_OBJECTS
- if (name)
- {
- delete [] name;
- name = NULL;
- }
-
- if (string)
- {
- name = new char[strlen(string)+1];
- strcpy(name, string);
- }
-
- //name = string;
+ name = string;
#endif
}
=== modified file 'storage/falcon/SyncObject.h'
--- a/storage/falcon/SyncObject.h 2008-06-19 15:09:45 +0000
+++ b/storage/falcon/SyncObject.h 2008-08-01 17:56:28 +0000
@@ -108,8 +108,8 @@ protected:
int exclusiveCount;
int waitCount;
int queueLength;
- const char* where;
- char* name;
+ const char* location;
+ const char* name;
#endif
};
=== modified file 'storage/falcon/SyncTest.cpp'
--- a/storage/falcon/SyncTest.cpp 2008-06-30 16:58:45 +0000
+++ b/storage/falcon/SyncTest.cpp 2008-07-15 18:57:27 +0000
@@ -115,10 +115,10 @@ void SyncTest::testThread(void* paramete
void SyncTest::testThread(void)
{
count = 0;
- Sync syncStart(&starter, "SyncTest::thread");
+ Sync syncStart(&starter, "SyncTest::testThread(1)");
ready = true;
syncStart.lock(Shared);
- Sync sync(&parent->syncObject, "SyncTest::thread");
+ Sync sync(&parent->syncObject, "SyncTest::testThread(2)");
while (!parent->stop)
{
=== modified file 'storage/falcon/Table.cpp'
--- a/storage/falcon/Table.cpp 2008-05-21 15:21:46 +0000
+++ b/storage/falcon/Table.cpp 2008-08-01 17:56:28 +0000
@@ -396,10 +396,10 @@ Format* Table::getFormat(int version)
if (format->version == version)
return format;
- Sync syncObj(&syncObject, "Table::getFormat");
+ Sync syncObj(&syncObject, "Table::getFormat(1)");
syncObj.lock(Exclusive);
- Sync syncDDL(&database->syncSysDDL, "Table::getFormat");
+ Sync syncDDL(&database->syncSysDDL, "Table::getFormat(2)");
syncDDL.lock(Shared);
PStatement statement = database->prepareStatement(
@@ -814,11 +814,11 @@ void Table::init(int id, const char *sch
primaryKey = NULL;
formats = NEW Format* [FORMAT_HASH_SIZE];
+ static char name[SYNC_VERSIONS_SIZE][64];
for (int n = 0; n < SYNC_VERSIONS_SIZE; n++)
{
- char name[64];
- sprintf(name, "syncPriorVersions[%02d]", n);
- syncPriorVersions[n].setName(name);
+ sprintf(name[n], "syncPriorVersions[%02d]", n);
+ syncPriorVersions[n].setName(name[n]);
}
triggers = NULL;
@@ -836,6 +836,8 @@ void Table::init(int id, const char *sch
syncTriggers.setName("Table::syncTriggers");
syncScavenge.setName("Table::syncScavenge");
syncAlter.setName("Table::syncAlter");
+ for (int n = 0; n < SYNC_VERSIONS_SIZE; n++)
+ syncPriorVersions[n].setName("Table::syncPriorVersions");
}
Record* Table::fetch(int32 recordNumber)
@@ -1227,7 +1229,7 @@ void Table::update(Transaction * transac
RecordVersion *record = NULL;
bool updated = false;
int recordNumber = oldRecord->recordNumber;
- Sync scavenge(&syncScavenge, "Table::update(2)");
+ Sync scavenge(&syncScavenge, "Table::update(1)");
//scavenge.lock(Shared);
try
@@ -3064,7 +3066,7 @@ void Table::update(Transaction * transac
RecordVersion *record = NULL;
bool updated = false;
- Sync scavenge(&syncScavenge, "Table::update");
+ Sync scavenge(&syncScavenge, "Table::update(2)");
//scavenge.lock(Shared);
if (candidate->state == recLock && candidate->getTransaction() ==
transaction)
=== modified file 'storage/falcon/TableSpace.cpp'
--- a/storage/falcon/TableSpace.cpp 2008-04-05 22:09:17 +0000
+++ b/storage/falcon/TableSpace.cpp 2008-07-17 13:52:17 +0000
@@ -50,15 +50,7 @@ TableSpace::TableSpace(Database *db, con
TableSpaceInit spaceInit;
TableSpaceInit *init = (tsInit ? tsInit : &spaceInit);
- initialSize = init->initialSize;
comment = init->comment;
- /***
- extentSize = init->extentSize;
- autoExtendSize = init->autoExtendSize;
- maxSize = init->maxSize;
- nodegroup = init->nodegroup;
- wait = init->wait;
- ***/
}
TableSpace::~TableSpace()
@@ -132,7 +124,7 @@ void TableSpace::open()
void TableSpace::create()
{
dbb->createPath(filename);
- dbb->create(filename, dbb->pageSize, 0, HdrTableSpace, 0, NULL, initialSize);
+ dbb->create(filename, dbb->pageSize, 0, HdrTableSpace, 0, NULL);
active = true;
dbb->flush();
}
@@ -169,14 +161,6 @@ void TableSpace::save(void)
statement->setInt(n++, tableSpaceId);
statement->setString(n++, filename);
statement->setInt(n++, type);
- /***
- statement->setLong(n++, initialSize);
- statement->setLong(n++, extentSize);
- statement->setLong(n++, autoExtendSize);
- statement->setLong(n++, maxSize);
- statement->setInt(n++, nodegroup);
- statement->setInt(n++, wait);
- ***/
statement->setString(n++, comment);
statement->executeUpdate();
needSave = false;
=== modified file 'storage/falcon/TableSpace.h'
--- a/storage/falcon/TableSpace.h 2008-04-05 22:09:17 +0000
+++ b/storage/falcon/TableSpace.h 2008-07-17 13:52:17 +0000
@@ -29,17 +29,8 @@ static const int TABLESPACE_TYPE_REPOSIT
struct TableSpaceInit
{
- int64 initialSize;
JString comment;
- TableSpaceInit(): initialSize(0), comment("") {}
- /***
- int64 extentSize;
- int64 autoExtendSize;
- int64 maxSize;
- int nodegroup;
- int wait;
- TableSpaceInit(): initialSize(0), extentSize(0), autoExtendSize(0), maxSize(0),
nodegroup(0), wait(0), comment("") {}
- ***/
+ TableSpaceInit(): comment("") {}
};
class Dbb;
@@ -75,14 +66,6 @@ public:
bool active;
bool needSave;
- int64 initialSize;
- /***
- int64 extentSize;
- int64 autoExtendSize;
- int64 maxSize;
- int nodegroup;
- int wait;
- ***/
JString comment;
};
=== modified file 'storage/falcon/TableSpaceManager.cpp'
--- a/storage/falcon/TableSpaceManager.cpp 2008-07-09 19:23:23 +0000
+++ b/storage/falcon/TableSpaceManager.cpp 2008-07-24 08:45:03 +0000
@@ -59,6 +59,7 @@ TableSpaceManager::TableSpaceManager(Dat
memset(idHash, 0, sizeof(nameHash));
tableSpaces = NULL;
pendingDrops = 0;
+ syncObject.setName("TableSpaceManager::syncObject");
}
TableSpaceManager::~TableSpaceManager()
@@ -86,7 +87,7 @@ void TableSpaceManager::add(TableSpace *
TableSpace* TableSpaceManager::findTableSpace(const char *name)
{
- Sync syncObj(&syncObject, "TableSpaceManager::findTableSpace");
+ Sync syncObj(&syncObject, "TableSpaceManager::findTableSpace(1)");
syncObj.lock(Shared);
TableSpace *tableSpace;
@@ -101,7 +102,7 @@ TableSpace* TableSpaceManager::findTable
if (tableSpace->name == name)
return tableSpace;
- Sync syncDDL(&database->syncSysDDL, "TableSpaceManager::findTableSpace");
+ Sync syncDDL(&database->syncSysDDL, "TableSpaceManager::findTableSpace(2)");
syncDDL.lock(Shared);
PStatement statement = database->prepareStatement(
@@ -117,14 +118,6 @@ TableSpace* TableSpaceManager::findTable
int type = TABLESPACE_TYPE_TABLESPACE; // type (forced)
TableSpaceInit tsInit;
- /***
- tsInit.initialSize = resultSet->getLong(n++);
- tsInit.extentSize = resultSet->getLong(n++);
- tsInit.autoExtendSize = resultSet->getLong(n++);
- tsInit.maxSize = resultSet->getLong(n++);
- tsInit.nodegroup = resultSet->getInt(n++);
- tsInit.wait = resultSet->getInt(n++);
- ***/
tsInit.comment = resultSet->getString(n++); // comment
tableSpace = new TableSpace(database, name, id, fileName, type, &tsInit);
@@ -170,32 +163,10 @@ TableSpace* TableSpaceManager::createTab
TableSpace *tableSpace = new TableSpace(database, name, id, fileName, type, tsInit);
- if (!repository)
+ if (!repository && IO::doesFileExist(fileName))
{
- bool fileExists;
-
- // Check if table space file already exists.
- // Take into account, that tablespace might have been already dropped
- // by another transaction, yet file can still be present on the disk,
- // if log record is not yet fully committed by the gopher thread).
- // So we'll wait for a few seconds if there are pending drops and
- // tablespace file exists.
-
- for (int i=0; i < 10; i++)
- {
- fileExists = tableSpace->dbb->doesFileExist(fileName);
-
- if (fileExists && pendingDrops > 0)
- Thread::getThread("TableSpaceManager::createTableSpace")->sleep(1000);
- else
- break;
- }
-
- if (fileExists)
- {
- delete tableSpace;
- throw SQLError(TABLESPACE_DATAFILE_EXIST_ERROR, "table space file name \"%s\" already
exists\n", fileName);
- }
+ delete tableSpace;
+ throw SQLError(TABLESPACE_DATAFILE_EXIST_ERROR, "table space file name \"%s\" already
exists\n", fileName);
}
try
@@ -239,21 +210,9 @@ void TableSpaceManager::bootstrap(int se
p = EncodedDataStream::decode(p, &fileName, true);
p = EncodedDataStream::decode(p, &type, true);
/***
- p = EncodedDataStream::decode(p, &initialSize, true);
- p = EncodedDataStream::decode(p, &extentSsize, true);
- p = EncodedDataStream::decode(p, &autoExtendSize, true);
- p = EncodedDataStream::decode(p, &maxSize, true);
- p = EncodedDataStream::decode(p, &nodegroup, true);
- p = EncodedDataStream::decode(p, &wait, true);
p = EncodedDataStream::decode(p, &comment, true);
TableSpaceInit tsInit;
- tsInit.initialSize = initialSize.getQuad();
- tsInit.extentSize = extentSize.getQuad();
- tsInit.autoExtendSize = autoExtendSize.getQuad();
- tsInit.maxSize = maxSize.getQuad();
- tsInit.nodegroup = nodegroup.getInt();
- tsInit.wait = wait.getInt();
tsInit.comment = comment.getString();
***/
@@ -314,10 +273,10 @@ void TableSpaceManager::dropDatabase(voi
void TableSpaceManager::dropTableSpace(TableSpace* tableSpace)
{
- Sync syncObj(&syncObject, "TableSpaceManager::dropTableSpace");
+ Sync syncObj(&syncObject, "TableSpaceManager::dropTableSpace(1)");
syncObj.lock(Exclusive);
- Sync syncDDL(&database->syncSysDDL, "TableSpaceManager::dropTableSpace");
+ Sync syncDDL(&database->syncSysDDL, "TableSpaceManager::dropTableSpace(2)");
syncDDL.lock(Shared);
PStatement statement = database->prepareStatement(
@@ -542,3 +501,25 @@ void TableSpaceManager::getTableSpaceFil
}
+// Wait for specified amount of time for a file to be deleted.
+// Don't wait if pendingDrops count is 0.
+//
+// The function returns true, if wait was successfull, i.e file does not exist
+//(anymore)
+bool TableSpaceManager::waitForPendingDrop(const char *filename, int seconds)
+{
+ bool fileExists;
+
+ do
+ {
+ fileExists = IO::doesFileExist(filename);
+ if (fileExists && pendingDrops > 0 && seconds-- > 0)
+ Thread::getThread("TransactionManager::waitForPendingDrop")->sleep(1000);
+ else
+ break;
+ }
+ while(true);
+
+ return !fileExists;
+}
+
=== modified file 'storage/falcon/TableSpaceManager.h'
--- a/storage/falcon/TableSpaceManager.h 2008-06-08 22:12:35 +0000
+++ b/storage/falcon/TableSpaceManager.h 2008-07-17 20:38:45 +0000
@@ -62,6 +62,7 @@ public:
void reportWrites(void);
void redoCreateTableSpace(int id, int nameLength, const char* name, int
fileNameLength, const char* fileName, int type, TableSpaceInit* tsInit);
void initialize(void);
+ bool waitForPendingDrop(const char *filename, int seconds);
Database *database;
TableSpace *tableSpaces;
=== modified file 'storage/falcon/Thread.cpp'
--- a/storage/falcon/Thread.cpp 2008-06-19 15:09:45 +0000
+++ b/storage/falcon/Thread.cpp 2008-07-24 08:45:03 +0000
@@ -310,7 +310,7 @@ void Thread::validateLocks()
{
LOG_DEBUG ("thread %d has active locks:\n", thread->threadId);
for (Sync *sync = thread->locks; sync; sync = sync->prior)
- LOG_DEBUG (" %s\n", sync->where);
+ LOG_DEBUG (" %s\n", sync->location);
}
}
@@ -381,7 +381,7 @@ void Thread::setLock(Sync *sync)
ASSERT (sync->request == Shared || sync->request == Exclusive);
sync->prior = locks;
locks = sync;
- where = locks->where;
+ where = locks->location;
}
void Thread::clearLock(Sync *sync)
@@ -396,7 +396,7 @@ void Thread::clearLock(Sync *sync)
if ( (locks = sync->prior) )
{
ASSERT (locks->state == Shared || locks->state == Exclusive);
- where = locks->where;
+ where = locks->location;
}
}
@@ -467,8 +467,8 @@ void Thread::print(const char *label)
const char* Thread::getWhere()
{
- if (lockPending && lockPending->where)
- return lockPending->where;
+ if (lockPending && lockPending->location)
+ return lockPending->location;
return "";
}
=== modified file 'storage/falcon/Threads.cpp'
--- a/storage/falcon/Threads.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/Threads.cpp 2008-07-24 08:45:03 +0000
@@ -46,6 +46,7 @@ Threads::Threads(Threads *parentThreads,
threadsActive = 0;
firstPending = NULL;
lastPending = NULL;
+ syncObject.setName("Threads::syncObject");
}
Threads::~Threads()
=== modified file 'storage/falcon/Transaction.cpp'
--- a/storage/falcon/Transaction.cpp 2008-07-11 10:23:03 +0000
+++ b/storage/falcon/Transaction.cpp 2008-07-31 10:04:30 +0000
@@ -95,7 +95,7 @@ Transaction::Transaction(Connection *cnc
void Transaction::initialize(Connection* cnct, TransId seq)
{
- Sync sync(&syncObject, "Transaction::initialize");
+ Sync sync(&syncObject, "Transaction::initialize(1)");
sync.lock(Exclusive);
ASSERT(savePoints == NULL);
ASSERT(freeSavePoints == NULL);
@@ -155,7 +155,7 @@ void Transaction::initialize(Connection*
startTime = database->deltaTime;
blockingRecord = NULL;
- thread = Thread::getThread("Transaction::init");
+ thread = Thread::getThread("Transaction::initialize");
syncActive.lock(NULL, Exclusive);
Transaction *oldest = transactionManager->findOldest();
oldestActive = (oldest) ? oldest->transactionId : transactionId;
@@ -174,7 +174,7 @@ void Transaction::initialize(Connection*
!transaction->systemTransaction &&
transaction->transactionId < transactionId)
{
- Sync syncDependency(&transaction->syncObject, "Transaction::initialize");
+ Sync syncDependency(&transaction->syncObject, "Transaction::initialize(2)");
syncDependency.lock(Shared);
if (transaction->isActive() &&
@@ -254,7 +254,7 @@ void Transaction::commit()
if (state == Active)
{
- Sync sync(&syncIndexes, "Transaction::commit");
+ Sync sync(&syncIndexes, "Transaction::commit(1)");
sync.lock(Shared);
for (DeferredIndex *deferredIndex= deferredIndexes; deferredIndex;
@@ -290,19 +290,21 @@ void Transaction::commit()
releaseDependencies();
database->flushInversion(this);
- Sync syncActiveTransactions(&transactionManager->activeTransactions.syncObject,
"Transaction::commit");
- syncActiveTransactions.lock(Exclusive);
- Sync syncCommitted(&transactionManager->committedTransactions.syncObject,
"Transaction::commit");
+ Sync syncCommitted(&transactionManager->committedTransactions.syncObject,
"Transaction::commit(2)");
syncCommitted.lock(Exclusive);
+ Sync syncActiveTransactions(&transactionManager->activeTransactions.syncObject,
"Transaction::commit(3)");
+ syncActiveTransactions.lock(Exclusive);
transactionManager->activeTransactions.remove(this);
syncActiveTransactions.unlock();
for (RecordVersion *record = firstRecord; record; record = record->nextInTrans)
+ {
if (!record->getPriorVersion())
++record->format->table->cardinality;
- else if (record->state == recDeleted &&
record->format->table->cardinality > 0)
+ if (record->state == recDeleted &&
record->format->table->cardinality > 0)
--record->format->table->cardinality;
+ }
transactionManager->committedTransactions.append(this);
syncCommitted.unlock();
database->commit(this);
@@ -333,7 +335,7 @@ void Transaction::commitNoUpdates(void)
if (deferredIndexes)
{
- Sync sync(&syncIndexes, "Transaction::commitNoUpdates");
+ Sync sync(&syncIndexes, "Transaction::commitNoUpdates(1)");
sync.lock(Exclusive);
releaseDeferredIndexes();
}
@@ -341,7 +343,7 @@ void Transaction::commitNoUpdates(void)
if (hasLocks)
releaseRecordLocks();
- Sync syncActiveTransactions(&transactionManager->activeTransactions.syncObject,
"Transaction::commitNoUpdates");
+ Sync syncActiveTransactions(&transactionManager->activeTransactions.syncObject,
"Transaction::commitNoUpdates(2)");
syncActiveTransactions.lock(Shared);
releaseDependencies();
@@ -352,7 +354,7 @@ void Transaction::commitNoUpdates(void)
xidLength = 0;
}
- Sync sync(&syncObject, "Transaction::commitNoUpdates");
+ Sync sync(&syncObject, "Transaction::commitNoUpdates(3)");
sync.lock(Exclusive);
if (dependencies)
@@ -379,7 +381,7 @@ void Transaction::rollback()
if (deferredIndexes)
{
- Sync sync(&syncIndexes, "Transaction::rollback");
+ Sync sync(&syncIndexes, "Transaction::rollback(1)");
sync.lock(Exclusive);
releaseDeferredIndexes();
}
@@ -445,7 +447,7 @@ void Transaction::rollback()
xidLength = 0;
}
- Sync syncActiveTransactions (&transactionManager->activeTransactions.syncObject,
"Transaction::rollback");
+ Sync syncActiveTransactions (&transactionManager->activeTransactions.syncObject,
"Transaction::rollback(2)");
syncActiveTransactions.lock (Exclusive);
++transactionManager->rolledBack;
@@ -982,7 +984,7 @@ State Transaction::waitForTransaction(Tr
TransactionManager *transactionManager = database->transactionManager;
Sync syncActiveTransactions(&transactionManager->activeTransactions.syncObject,
- "Transaction::waitForTransaction");
+ "Transaction::waitForTransaction(1)");
syncActiveTransactions.lock(Shared);
if (!transaction)
@@ -1058,7 +1060,7 @@ void Transaction::waitForTransaction()
}
***/
- Sync sync(&syncActive, "Transaction::waitForTransaction");
+ Sync sync(&syncActive, "Transaction::waitForTransaction(2)");
sync.lock(Shared, falcon_lock_wait_timeout * 1000);
}
=== modified file 'storage/falcon/Transaction.h'
--- a/storage/falcon/Transaction.h 2008-06-16 15:39:33 +0000
+++ b/storage/falcon/Transaction.h 2008-07-24 08:45:03 +0000
@@ -168,9 +168,9 @@ public:
bool writePending;
bool pendingPageWrites;
bool hasLocks;
+ SyncObject syncObject;
SyncObject syncActive;
SyncObject syncIndexes;
- SyncObject syncObject;
SyncObject syncSavepoints;
uint64 totalRecordData; // total bytes of record data for this transaction (unchilled
+ thawed)
uint32 totalRecords; // total record count
=== modified file 'storage/falcon/TransactionManager.cpp'
--- a/storage/falcon/TransactionManager.cpp 2008-06-17 18:34:46 +0000
+++ b/storage/falcon/TransactionManager.cpp 2008-07-24 08:45:03 +0000
@@ -52,6 +52,8 @@ TransactionManager::TransactionManager(D
rolledBackTransaction->state = RolledBack;
rolledBackTransaction->inList = false;
syncObject.setName("TransactionManager::syncObject");
+ activeTransactions.syncObject.setName("TransactionManager::activeTransactions");
+ committedTransactions.syncObject.setName("TransactionManager::committedTransactions");
}
TransactionManager::~TransactionManager(void)
@@ -69,7 +71,7 @@ TransactionManager::~TransactionManager(
TransId TransactionManager::findOldestActive()
{
- Sync syncCommitted(&committedTransactions.syncObject,
"TransactionManager::findOldestActive");
+ Sync syncCommitted(&committedTransactions.syncObject,
"TransactionManager::findOldestActive(1)");
syncCommitted.lock(Shared);
TransId oldestActive = transactionSequence;
@@ -77,7 +79,7 @@ TransId TransactionManager::findOldestAc
oldestActive = MIN(trans->transactionId, oldestActive);
syncCommitted.unlock();
- Sync sync(&activeTransactions.syncObject, "TransactionManager::findOldestActive");
+ Sync sync(&activeTransactions.syncObject,
"TransactionManager::findOldestActive(2)");
sync.lock(Shared);
Transaction *oldest = findOldest();
@@ -216,9 +218,9 @@ void TransactionManager::rollbackByXid(i
void TransactionManager::print(void)
{
- Sync sync (&activeTransactions.syncObject, "TransactionManager::print");
+ Sync sync (&activeTransactions.syncObject, "TransactionManager::print(1)");
sync.lock (Exclusive);
- Sync committedTrans (&committedTransactions.syncObject,
"TransactionManager::print");
+ Sync committedTrans (&committedTransactions.syncObject,
"TransactionManager::print(2)");
committedTrans.lock (Exclusive);
Transaction *transaction;
Log::debug("Active Transaction:\n");
@@ -235,9 +237,9 @@ void TransactionManager::print(void)
void TransactionManager::getTransactionInfo(InfoTable* infoTable)
{
- Sync sync (&activeTransactions.syncObject,
"TransactionManager::getTransactionInfo");
+ Sync sync (&activeTransactions.syncObject,
"TransactionManager::getTransactionInfo(1)");
sync.lock (Exclusive);
- Sync committedTrans (&committedTransactions.syncObject,
"TransactionManager::getTransactionInfo");
+ Sync committedTrans (&committedTransactions.syncObject,
"TransactionManager::getTransactionInfo(2)");
committedTrans.lock (Exclusive);
Transaction *transaction;
@@ -250,7 +252,7 @@ void TransactionManager::getTransactionI
void TransactionManager::purgeTransactions()
{
- Sync syncCommitted(&committedTransactions.syncObject, "Transaction::commit");
+ Sync syncCommitted(&committedTransactions.syncObject,
"Transaction::purgeTransactions");
syncCommitted.lock(Exclusive);
// And, while we're at it, check for any fully mature transactions to ditch
@@ -276,9 +278,9 @@ void TransactionManager::purgeTransactio
void TransactionManager::getSummaryInfo(InfoTable* infoTable)
{
- Sync sync (&activeTransactions.syncObject, "TransactionManager::getSummaryInfo");
+ Sync sync (&activeTransactions.syncObject, "TransactionManager::getSummaryInfo(1)");
sync.lock (Exclusive);
- Sync committedTrans (&committedTransactions.syncObject,
"TransactionManager::getSummaryInfo");
+ Sync committedTrans (&committedTransactions.syncObject,
"TransactionManager::getSummaryInfo(2)");
committedTrans.lock (Exclusive);
int numberCommitted = committed;
int numberRolledBack = rolledBack;
@@ -371,7 +373,7 @@ void TransactionManager::expungeTransact
Transaction* TransactionManager::findTransaction(TransId transactionId)
{
- Sync syncActiveTrans(&activeTransactions.syncObject,
"TransactionManager::findTransaction");
+ Sync syncActiveTrans(&activeTransactions.syncObject,
"TransactionManager::findTransaction(1)");
syncActiveTrans.lock(Shared);
Transaction *transaction;
@@ -392,7 +394,7 @@ Transaction* TransactionManager::findTra
void TransactionManager::validateDependencies(void)
{
- Sync sync(&committedTransactions.syncObject,
"TransactionManager::validateDepedendencies");
+ Sync sync(&committedTransactions.syncObject,
"TransactionManager::validateDepedendencies(1)");
sync.lock(Shared);
Transaction *transaction;
@@ -401,7 +403,7 @@ void TransactionManager::validateDepende
transaction->validateDependencies(false);
sync.unlock();
- Sync syncCommitted(&committedTransactions.syncObject,
"TransactionManager::validateDepedendencies");
+ Sync syncCommitted(&committedTransactions.syncObject,
"TransactionManager::validateDepedendencies(2)");
syncCommitted.lock(Shared);
for (transaction = committedTransactions.first; transaction; transaction =
transaction->next)
@@ -412,7 +414,7 @@ void TransactionManager::removeTransacti
{
if (transaction->state == Committed)
{
- Sync sync(&committedTransactions.syncObject,
"TransactionManager::removeTransaction");
+ Sync sync(&committedTransactions.syncObject,
"TransactionManager::removeTransaction(1)");
sync.lock(Exclusive);
for (Transaction *trans = committedTransactions.first; trans; trans = trans->next)
@@ -424,7 +426,7 @@ void TransactionManager::removeTransacti
}
else
{
- Sync sync(&activeTransactions.syncObject, "TransactionManager::removeTransaction");
+ Sync sync(&activeTransactions.syncObject,
"TransactionManager::removeTransaction(2)");
sync.lock(Exclusive);
for (Transaction *trans = activeTransactions.first; trans; trans = trans->next)
=== modified file 'storage/falcon/WalkDeferred.cpp'
--- a/storage/falcon/WalkDeferred.cpp 2008-07-14 16:53:51 +0000
+++ b/storage/falcon/WalkDeferred.cpp 2008-07-25 18:07:24 +0000
@@ -16,15 +16,17 @@
#include "Engine.h"
#include "WalkDeferred.h"
-WalkDeferred::WalkDeferred(DeferredIndex *deferredIndex, Transaction *transaction, int
flags, IndexKey *lower, IndexKey *upper)
- : IndexWalker(deferredIndex->index, transaction, flags)
+WalkDeferred::WalkDeferred(DeferredIndex *deferredIdx, Transaction *transaction, int
flags, IndexKey *lower, IndexKey *upper)
+ : IndexWalker(deferredIdx->index, transaction, flags)
{
+ deferredIndex = deferredIdx;
walker.initialize(deferredIndex, lower, flags);
node = NULL;
}
WalkDeferred::~WalkDeferred(void)
{
+ deferredIndex->releaseRef();
}
Record* WalkDeferred::getNext(bool lockForUpdate)
=== modified file 'storage/falcon/WalkDeferred.h'
--- a/storage/falcon/WalkDeferred.h 2008-05-07 22:37:18 +0000
+++ b/storage/falcon/WalkDeferred.h 2008-07-25 18:07:24 +0000
@@ -22,13 +22,14 @@
class WalkDeferred : public IndexWalker
{
public:
- WalkDeferred(DeferredIndex *deferredIndex, Transaction *transaction, int flags, IndexKey
*lower, IndexKey *upper);
+ WalkDeferred(DeferredIndex *deferredIdx, Transaction *transaction, int flags, IndexKey
*lower, IndexKey *upper);
virtual ~WalkDeferred(void);
virtual Record* getNext(bool lockForUpdate);
DeferredIndexWalker walker;
DINode *node;
+ DeferredIndex *deferredIndex;
};
#endif
=== modified file 'storage/falcon/WalkIndex.cpp'
--- a/storage/falcon/WalkIndex.cpp 2008-07-09 21:37:50 +0000
+++ b/storage/falcon/WalkIndex.cpp 2008-07-15 18:57:27 +0000
@@ -88,9 +88,9 @@ int32 WalkIndex::getNextNode(void)
recordNumber = node.getNumber();
if (recordNumber >= 0)
- return recordNumber;
- else if (recordNumber == END_LEVEL)
- return -1;
+ return recordNumber;
+ else if (recordNumber == END_LEVEL)
+ return -1;
}
node.getNext(endNodes);
=== modified file 'storage/falcon/ha_falcon.cpp'
--- a/storage/falcon/ha_falcon.cpp 2008-07-19 03:03:39 +0000
+++ b/storage/falcon/ha_falcon.cpp 2008-08-07 14:19:54 +0000
@@ -83,7 +83,6 @@ static StorageHandler *storageHandler;
#undef PARAMETER_BOOL
ulonglong falcon_record_memory_max;
-ulonglong falcon_initial_allocation;
ulonglong falcon_serial_log_file_size;
uint falcon_allocation_extent;
ulonglong falcon_page_cache_size;
@@ -2041,16 +2040,22 @@ int StorageInterface::alter_tablespace(h
/*
CREATE TABLESPACE tablespace
ADD DATAFILE 'file'
- USE LOGFILE GROUP logfile_group
- [EXTENT_SIZE [=] extent_size]
- [INITIAL_SIZE [=] initial_size]
- [AUTOEXTEND_SIZE [=] autoextend_size]
- [MAX_SIZE [=] max_size]
- [NODEGROUP [=] nodegroup_id]
- [WAIT]
+ USE LOGFILE GROUP logfile_group // NDB only
+ [EXTENT_SIZE [=] extent_size] // Not supported
+ [INITIAL_SIZE [=] initial_size] // Not supported
+ [AUTOEXTEND_SIZE [=] autoextend_size] // Not supported
+ [MAX_SIZE [=] max_size] // Not supported
+ [NODEGROUP [=] nodegroup_id] // NDB only
+ [WAIT] // NDB only
[COMMENT [=] comment_text]
ENGINE [=] engine
+
+
+ Parameters EXTENT_SIZE, INITIAL,SIZE, AUTOEXTEND_SIZE and MAX_SIZE are
+ currently not supported by Falcon. LOGFILE GROUP, NODEGROUP and WAIT are
+ for NDB only.
*/
+
if (ts_info->data_file_name)
{
char buff[FN_REFLEN];
@@ -2068,15 +2073,7 @@ int StorageInterface::alter_tablespace(h
switch (ts_info->ts_cmd_type)
{
case CREATE_TABLESPACE:
- ret = storageHandler->createTablespace( ts_info->tablespace_name,
- ts_info->data_file_name,
- ts_info->initial_size,
- ts_info->extent_size,
- ts_info->autoextend_size,
- ts_info->max_size,
- ts_info->nodegroup_id,
- ts_info->wait_until_completed,
- ts_info->ts_comment);
+ ret = storageHandler->createTablespace( ts_info->tablespace_name,
ts_info->data_file_name, ts_info->ts_comment);
break;
case DROP_TABLESPACE:
@@ -3246,48 +3243,6 @@ int NfsPluginHandler::deinitTableSpaceFi
//*****************************************************************************
//
-// FALCON_TABLES
-//
-//*****************************************************************************
-
-int NfsPluginHandler::getTablesInfo(THD *thd, TABLE_LIST *tables, COND *cond)
-{
- InfoTableImpl infoTable(thd, tables, system_charset_info);
-
- if (storageHandler)
- storageHandler->getTablesInfo(&infoTable);
-
- return infoTable.error;
-}
-
-ST_FIELD_INFO tablesFieldInfo[]=
-{
- {"SCHEMA_NAME", 127, MYSQL_TYPE_STRING, 0, 0, "Schema Name", SKIP_OPEN_TABLE},
- {"TABLE_NAME", 127, MYSQL_TYPE_STRING, 0, 0, "Table Name", SKIP_OPEN_TABLE},
- {"PARTITION", 127, MYSQL_TYPE_STRING, 0, 0, "Partition Name", SKIP_OPEN_TABLE},
- {"TABLESPACE", 127, MYSQL_TYPE_STRING, 0, 0, "Tablespace", SKIP_OPEN_TABLE},
- {"INTERNAL_NAME", 127, MYSQL_TYPE_STRING, 0, 0, "Internal Name", SKIP_OPEN_TABLE},
- {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
-};
-
-int NfsPluginHandler::initTablesInfo(void *p)
-{
- DBUG_ENTER("initTablesInfo");
- ST_SCHEMA_TABLE *schema = (ST_SCHEMA_TABLE *)p;
- schema->fields_info = tablesFieldInfo;
- schema->fill_table = NfsPluginHandler::getTablesInfo;
-
- DBUG_RETURN(0);
-}
-
-int NfsPluginHandler::deinitTablesInfo(void *p)
-{
- DBUG_ENTER("deinitTablesInfo");
- DBUG_RETURN(0);
-}
-
-//*****************************************************************************
-//
// FALCON_TRANSACTIONS
//
//*****************************************************************************
@@ -3627,11 +3582,6 @@ static MYSQL_SYSVAR_ULONGLONG(record_mem
"The maximum size of the record memory cache.",
NULL, StorageInterface::updateRecordMemoryMax, LL(250)<<20, 0, (ulonglong)
max_memory_address, LL(1)<<20);
-static MYSQL_SYSVAR_ULONGLONG(initial_allocation, falcon_initial_allocation,
- PLUGIN_VAR_RQCMDARG, // | PLUGIN_VAR_READONLY,
- "Initial allocation (in bytes) of falcon user tablespace.",
- NULL, NULL, 0, 0, LL(4000000000), LL(1)<<20);
-
static MYSQL_SYSVAR_ULONGLONG(serial_log_file_size, falcon_serial_log_file_size,
PLUGIN_VAR_RQCMDARG,
"If serial log file grows larger than this value, it will be truncated when it is
reused",
@@ -3680,7 +3630,6 @@ static struct st_mysql_sys_var* falconVa
MYSQL_SYSVAR(scavenge_schedule),
//MYSQL_SYSVAR(debug_mask),
MYSQL_SYSVAR(record_memory_max),
- MYSQL_SYSVAR(initial_allocation),
//MYSQL_SYSVAR(allocation_extent),
MYSQL_SYSVAR(page_cache_size),
MYSQL_SYSVAR(consistent_read),
@@ -3700,7 +3649,6 @@ static st_mysql_information_schema falco
static st_mysql_information_schema falcon_serial_log_info = {
MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION};
static st_mysql_information_schema falcon_tablespaces = {
MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION};
static st_mysql_information_schema falcon_tablespace_files = {
MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION};
-static st_mysql_information_schema falcon_tables = {
MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION};
static st_mysql_information_schema falcon_version = {
MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION};
mysql_declare_plugin(falcon)
@@ -3897,21 +3845,6 @@ mysql_declare_plugin(falcon)
NULL, /* status variables */
NULL, /* system variables */
NULL /* config options */
- },
-
- {
- MYSQL_INFORMATION_SCHEMA_PLUGIN,
- &falcon_tables,
- "FALCON_TABLES",
- "MySQL AB",
- "Falcon Tables.",
- PLUGIN_LICENSE_GPL,
- NfsPluginHandler::initTablesInfo, /* plugin init */
- NfsPluginHandler::deinitTablesInfo, /* plugin deinit */
- 0x0005,
- NULL, /* status variables */
- NULL, /* system variables */
- NULL /* config options */
}
mysql_declare_plugin_end;
=== modified file 'storage/falcon/ha_falcon.h'
--- a/storage/falcon/ha_falcon.h 2008-07-09 04:38:02 +0000
+++ b/storage/falcon/ha_falcon.h 2008-07-29 10:45:39 +0000
@@ -253,8 +253,4 @@ public:
static int getTableSpaceFilesInfo(THD *thd, TABLE_LIST *tables, COND *cond);
static int initTableSpaceFilesInfo(void *p);
static int deinitTableSpaceFilesInfo(void *p);
-
- static int getTablesInfo(THD *thd, TABLE_LIST *tables, COND *cond);
- static int initTablesInfo(void *p);
- static int deinitTablesInfo(void *p);
};
| Thread |
|---|
| • bzr push into mysql-6.0-bugteam branch (davi:2754 to 2755) Bug#36990 | Davi Arnaut | 12 Aug |