#At bzr+ssh://bk-internal.mysql.com/bzrroot/server/mysql-6.0-sea
2692 Sergey Vojtovich 2008-08-07
WL#4483 - Falcon: fill INFORMATION_SCHEMA.TABLESPACES
Fill I_S.TABLESPACES with information about Falcon tablespaces. Remove
I_S.FALCON_TABLESPACES. Make backup use I_S.TABLESPACES instead of
I_S.FALCON_TABLESPACES.
modified:
mysql-test/suite/funcs_1/r/is_columns_is_falcon.result
mysql-test/suite/funcs_1/r/is_tables_is_falcon.result
sql/handler.h
sql/si_objects.cc
storage/falcon/InfoTable.cpp
storage/falcon/InfoTable.h
storage/falcon/TableSpaceManager.cpp
storage/falcon/ha_falcon.cpp
storage/falcon/ha_falcon.h
per-file messages:
mysql-test/suite/funcs_1/r/is_columns_is_falcon.result
Updated test result: there is no I_S.FALCON_TABLESPACES anymore.
mysql-test/suite/funcs_1/r/is_tables_is_falcon.result
Updated test result: there is no I_S.FALCON_TABLESPACES anymore.
sql/handler.h
Removed enum entry for I_S.FALCON_TABLESPACES.
sql/si_objects.cc
Switch from I_S.FALCON_TABLESPACES to I_S.TABLESPACES.
storage/falcon/InfoTable.cpp
Added methods to set/unset field NULL flag.
storage/falcon/InfoTable.h
Added methods to set/unset field NULL flag.
storage/falcon/TableSpaceManager.cpp
Changed tablespace type names according to WL#4483.
Reuse I_S.FALCON_TABLESPACES code to fill I_S.TABLESPACES
and fill fields properly.
storage/falcon/ha_falcon.cpp
Removed I_S.FALCON_TABLESPACES code.
Added code to fill I_S.TABLESPACES.
storage/falcon/ha_falcon.h
Removed I_S.FALCON_TABLESPACES code.
Added code to fill I_S.TABLESPACES.
=== 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-08-07 12:58:45 +0000
@@ -41,9 +41,6 @@ NULL information_schema FALCON_TABLES PA
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
NULL information_schema FALCON_TABLESPACE_FILES FILE_ID 3 0 NO int NULL NULL 10 0 NULL NULL int(127) select Default Default
NULL information_schema FALCON_TABLESPACE_FILES FILE_NAME 4 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
NULL information_schema FALCON_TABLESPACE_FILES TABLESPACE_NAME 1 NO varchar 127 508 NULL NULL utf8 utf8_general_ci varchar(127) select Default Default
@@ -166,9 +163,6 @@ NULL information_schema FALCON_SYSTEM_ME
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)
4.0000 information_schema FALCON_TABLESPACE_FILES TABLESPACE_NAME varchar 127 508 utf8 utf8_general_ci varchar(127)
4.0000 information_schema FALCON_TABLESPACE_FILES TYPE varchar 127 508 utf8 utf8_general_ci varchar(127)
NULL information_schema FALCON_TABLESPACE_FILES FILE_ID int NULL NULL NULL NULL int(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-08-07 12:58:45 +0000
@@ -176,29 +176,6 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME FALCON_TABLESPACES
-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_TABLESPACE_FILES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
@@ -492,29 +469,6 @@ user_comment
Separator -----------------------------------------------------
TABLE_CATALOG NULL
TABLE_SCHEMA information_schema
-TABLE_NAME FALCON_TABLESPACES
-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_TABLESPACE_FILES
TABLE_TYPE SYSTEM VIEW
ENGINE MEMORY
=== modified file 'sql/handler.h'
--- a/sql/handler.h 2008-08-02 18:22:09 +0000
+++ b/sql/handler.h 2008-08-07 12:58:45 +0000
@@ -613,7 +613,6 @@ enum enum_schema_tables
SCH_USER_PRIVILEGES,
SCH_VARIABLES,
SCH_VIEWS,
- SCH_FALCON_TABLESPACES,
SCH_FALCON_TABLESPACE_FILES
};
=== modified file 'sql/si_objects.cc'
--- a/sql/si_objects.cc 2008-07-09 07:12:43 +0000
+++ b/sql/si_objects.cc 2008-08-07 12:58:45 +0000
@@ -1043,9 +1043,9 @@ bool InformationSchemaIterator::prepare_
style fill methods nor does it use a wildcard condition.
*/
switch (is_table_idx) {
- case SCH_FALCON_TABLESPACES:
+ case SCH_TABLESPACES:
{
- st= find_schema_table(thd, "FALCON_TABLESPACES");
+ st= find_schema_table(thd, "TABLESPACES");
*is_table= open_schema_table(thd, st, NULL);
break;
}
@@ -2797,7 +2797,7 @@ static bool find_tablespace_schema_row(T
Attempt to locate the row in the tablespaces table.
If found, proceed to the retrieving the data.
*/
- is_table->field[0]->val_str(&found_ts_name);
+ is_table->field[IS_TABLESPACES_TABLESPACE_NAME]->val_str(&found_ts_name);
while (!ret && found_ts_name.length() &&
(strncasecmp(found_ts_name.ptr(), ts_name->ptr(),
ts_name->length()) != 0))
@@ -2805,7 +2805,7 @@ static bool find_tablespace_schema_row(T
ret= ha->rnd_next(is_table->record[0]);
found_ts_name.length(0); // reset the length of the string
if (!ret)
- is_table->field[0]->val_str(&found_ts_name);
+ is_table->field[IS_TABLESPACES_TABLESPACE_NAME]->val_str(&found_ts_name);
}
if (ret || (found_ts_name.length() == 0))
{
@@ -2814,14 +2814,14 @@ static bool find_tablespace_schema_row(T
}
/*
- TS name is in col 0 in FALCON_TABLESPACES
- TS comment is in col 2 in FALCON_TABLESPACES
+ TS name is in col IS_TABLESPACES_TABLESPACE_NAME in TABLESPACES
+ TS comment is in col IS_TABLESPACES_TABLESPACE_COMMENT in TABLESPACES
TS datafile is in col 3 in FALCON_TABLESPACE_FILES
*/
switch (is_table_idx) {
- case SCH_FALCON_TABLESPACES:
+ case SCH_TABLESPACES:
{
- is_table->field[2]->val_str(&data);
+ is_table->field[IS_TABLESPACES_TABLESPACE_COMMENT]->val_str(&data);
comments->copy(data);
break;
}
@@ -2875,9 +2875,9 @@ static bool get_tablespace_from_schema(T
DBUG_ENTER("obs::get_tablespace_from_schema()");
/*
- Locate the row in FALCON_TABLESPACES and get the comments.
+ Locate the row in TABLESPACES and get the comments.
*/
- if (find_tablespace_schema_row(thd, SCH_FALCON_TABLESPACES,
+ if (find_tablespace_schema_row(thd, SCH_TABLESPACES,
ts_name, &datafile, &comments))
DBUG_RETURN(TRUE);
=== modified file 'storage/falcon/InfoTable.cpp'
--- a/storage/falcon/InfoTable.cpp 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/InfoTable.cpp 2008-08-07 12:58:45 +0000
@@ -63,3 +63,13 @@ void InfoTableImpl::putString(int column
{
table->field[column]->store(string, stringLength, charSetInfo);
}
+
+void InfoTableImpl::setNull(int column)
+{
+ table->field[column]->set_null();
+}
+
+void InfoTableImpl::setNotNull(int column)
+{
+ table->field[column]->set_notnull();
+}
=== modified file 'storage/falcon/InfoTable.h'
--- a/storage/falcon/InfoTable.h 2007-09-20 15:44:25 +0000
+++ b/storage/falcon/InfoTable.h 2008-08-07 12:58:45 +0000
@@ -37,6 +37,8 @@ public:
virtual void putDouble(int column, double value) = 0;
virtual void putString(int column, const char *string) = 0;
virtual void putString(int column, unsigned int stringLength, const char *string) = 0;
+ virtual void setNull(int column) = 0;
+ virtual void setNotNull(int column) = 0;
};
class InfoTableImpl : public InfoTable
@@ -51,6 +53,8 @@ public:
virtual void putString(int column, const char *string);
virtual void putString(int column, unsigned int stringLength, const char *string);
virtual void putDouble(int column, double value);
+ virtual void setNull(int column);
+ virtual void setNotNull(int column);
int error;
st_table *table;
=== modified file 'storage/falcon/TableSpaceManager.cpp'
--- a/storage/falcon/TableSpaceManager.cpp 2008-07-09 19:23:23 +0000
+++ b/storage/falcon/TableSpaceManager.cpp 2008-08-07 12:58:45 +0000
@@ -500,12 +500,12 @@ JString TableSpaceManager::tableSpaceTyp
JString type;
if (name == "FALCON_USER")
- type = "FALCON_USER";
+ type = "DEFAULT";
else if (name == "FALCON_TEMPORARY")
- type = "FALCON_TEMPORARY";
+ type = "TEMPORARY";
else if (name == "FALCON_SYSTEM_BASE") //cwp tbd: fix this
- type = "SYSTEM_BASE";
- else type = "USER_DEFINED";
+ type = "MASTER CATALOG";
+ else type = "USER DEFINED";
return type;
}
@@ -519,8 +519,16 @@ void TableSpaceManager::getTableSpaceInf
while (resultSet->next())
{
infoTable->putString(0, resultSet->getString(1)); // tablespace name
- infoTable->putString(1, tableSpaceType(resultSet->getString(1))); // type based upon name
- infoTable->putString(2, resultSet->getString(2)); // comment
+ infoTable->putString(1, "Falcon");
+ infoTable->setNotNull(2);
+ infoTable->putString(2, tableSpaceType(resultSet->getString(1))); // type based upon name
+ infoTable->setNull(3);
+ infoTable->setNull(4);
+ infoTable->setNull(5);
+ infoTable->setNull(6);
+ infoTable->setNull(7);
+ infoTable->setNotNull(8);
+ infoTable->putString(8, resultSet->getString(2)); // comment
infoTable->putRecord();
}
}
=== 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 12:58:45 +0000
@@ -200,6 +200,7 @@ int StorageInterface::falcon_init(void *
falcon_hton->start_consistent_snapshot = StorageInterface::start_consistent_snapshot;
falcon_hton->alter_tablespace = StorageInterface::alter_tablespace;
+ falcon_hton->fill_is_table = StorageInterface::fill_is_table;
//falcon_hton->show_status = StorageInterface::show_status;
falcon_hton->flags = HTON_NO_FLAGS;
storageHandler->addNfsLogger(falcon_debug_mask, StorageInterface::logger, NULL);
@@ -2090,6 +2091,26 @@ int StorageInterface::alter_tablespace(h
DBUG_RETURN(getMySqlError(ret));
}
+int StorageInterface::fill_is_table(handlerton *hton, THD *thd, TABLE_LIST *tables, class Item *cond, enum enum_schema_tables schema_table_idx)
+{
+
+ InfoTableImpl infoTable(thd, tables, system_charset_info);
+
+ if (!storageHandler)
+ return 0;
+
+ switch (schema_table_idx)
+ {
+ case SCH_TABLESPACES:
+ storageHandler->getTableSpaceInfo(&infoTable);
+ break;
+ default:
+ return 0;
+ }
+
+ return infoTable.error;
+}
+
int StorageInterface::check_if_supported_alter(TABLE *altered_table, HA_CREATE_INFO *create_info, HA_ALTER_FLAGS *alter_flags, uint table_changes)
{
DBUG_ENTER("StorageInterface::check_if_supported_alter");
@@ -3165,46 +3186,6 @@ int NfsPluginHandler::deinitTableSpaceIO
//*****************************************************************************
//
-// FALCON_TABLESPACES
-//
-//*****************************************************************************
-
-int NfsPluginHandler::getTableSpaceInfo(THD *thd, TABLE_LIST *tables, COND *cond)
-{
- InfoTableImpl infoTableSpace(thd, tables, system_charset_info);
-
- if (storageHandler)
- storageHandler->getTableSpaceInfo(&infoTableSpace);
-
- return infoTableSpace.error;
-}
-
-ST_FIELD_INFO tableSpaceFieldInfo[]=
-{
- {"TABLESPACE_NAME", 127, MYSQL_TYPE_STRING, 0, 0, "TableSpace Name", SKIP_OPEN_TABLE},
- {"TYPE", 127, MYSQL_TYPE_STRING, 0, 0, "Type", SKIP_OPEN_TABLE},
- {"COMMENT", 127, MYSQL_TYPE_STRING, 0, 0, "Comment", SKIP_OPEN_TABLE},
- {0, 0, MYSQL_TYPE_STRING, 0, 0, 0, SKIP_OPEN_TABLE}
-};
-
-int NfsPluginHandler::initTableSpaceInfo(void *p)
-{
- DBUG_ENTER("initTableSpaceInfo");
- ST_SCHEMA_TABLE *schema = (ST_SCHEMA_TABLE *)p;
- schema->fields_info = tableSpaceFieldInfo;
- schema->fill_table = NfsPluginHandler::getTableSpaceInfo;
-
- DBUG_RETURN(0);
-}
-
-int NfsPluginHandler::deinitTableSpaceInfo(void *p)
-{
- DBUG_ENTER("deinitTableSpaceInfo");
- DBUG_RETURN(0);
-}
-
-//*****************************************************************************
-//
// FALCON_TABLESPACE_FILES
//
//*****************************************************************************
@@ -3698,7 +3679,6 @@ static st_mysql_information_schema falco
static st_mysql_information_schema falcon_transaction_summary = { MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION};
static st_mysql_information_schema falcon_syncobjects = { MYSQL_INFORMATION_SCHEMA_INTERFACE_VERSION};
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};
@@ -3871,21 +3851,6 @@ mysql_declare_plugin(falcon)
{
MYSQL_INFORMATION_SCHEMA_PLUGIN,
- &falcon_tablespaces,
- "FALCON_TABLESPACES",
- "MySQL AB",
- "Falcon TableSpaces.",
- PLUGIN_LICENSE_GPL,
- NfsPluginHandler::initTableSpaceInfo, /* plugin init */
- NfsPluginHandler::deinitTableSpaceInfo, /* plugin deinit */
- 0x0005,
- NULL, /* status variables */
- NULL, /* system variables */
- NULL /* config options */
- },
-
- {
- MYSQL_INFORMATION_SCHEMA_PLUGIN,
&falcon_tablespace_files,
"FALCON_TABLESPACE_FILES",
"MySQL AB",
=== 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-08-07 12:58:45 +0000
@@ -155,6 +155,7 @@ public:
static uint alter_table_flags(uint flags);
#endif
static int alter_tablespace(handlerton* hton, THD* thd, st_alter_tablespace* ts_info);
+ static int fill_is_table(handlerton *hton, THD *thd, TABLE_LIST *tables, class Item *cond, enum enum_schema_tables);
static int commit_by_xid(handlerton* hton, XID* xid);
static int rollback_by_xid(handlerton* hton, XID* xid);
@@ -246,10 +247,6 @@ public:
static int initSyncInfo(void *p);
static int deinitSyncInfo(void *p);
- static int getTableSpaceInfo(THD *thd, TABLE_LIST *tables, COND *cond);
- static int initTableSpaceInfo(void *p);
- static int deinitTableSpaceInfo(void *p);
-
static int getTableSpaceFilesInfo(THD *thd, TABLE_LIST *tables, COND *cond);
static int initTableSpaceFilesInfo(void *p);
static int deinitTableSpaceFilesInfo(void *p);