List:Commits« Previous MessageNext Message »
From:Davi Arnaut Date:August 12 2008 4:43am
Subject:bzr push into mysql-6.0-bugteam branch (davi:2754 to 2755) Bug#36990
View as plain text  
 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#36990Davi Arnaut12 Aug