mariadb/storage/ndb/tools/listTables.cpp
unknown 36b058929f Merge mysql.com:/home/my/mysql-5.0
into  mysql.com:/home/my/mysql-5.1
Merge of 'remove compiler warnings when using -Wshadow'


BitKeeper/etc/ignore:
  auto-union
BitKeeper/deleted/.del-MetaData.hpp~538342afcd8ac53c:
  Auto merged
configure.in:
  Auto merged
client/mysql.cc:
  Auto merged
client/mysql_upgrade.c:
  Auto merged
client/mysqlbinlog.cc:
  Auto merged
client/mysqldump.c:
  Auto merged
extra/yassl/include/yassl_int.hpp:
  Auto merged
extra/yassl/taocrypt/include/algebra.hpp:
  Auto merged
include/m_ctype.h:
  Auto merged
include/my_global.h:
  Auto merged
include/my_pthread.h:
  Auto merged
include/my_sys.h:
  Auto merged
include/my_time.h:
  Auto merged
libmysql/libmysql.c:
  Auto merged
mysql-test/r/mysqltest.result:
  Auto merged
mysql-test/t/mysql.test:
  Auto merged
mysql-test/t/mysqlbinlog.test:
  Auto merged
mysql-test/t/mysqlcheck.test:
  Auto merged
mysql-test/t/mysqltest.test:
  Auto merged
mysql-test/t/wait_timeout.test:
  Auto merged
mysys/default.c:
  Auto merged
mysys/mf_iocache2.c:
  Auto merged
mysys/mf_keycache.c:
  Auto merged
server-tools/instance-manager/instance_options.cc:
  Auto merged
sql/filesort.cc:
  Auto merged
sql/item_cmpfunc.cc:
  Auto merged
sql/item_cmpfunc.h:
  Auto merged
sql/item_func.cc:
  Auto merged
sql/item_geofunc.cc:
  Auto merged
sql/item_row.h:
  Auto merged
sql/item_strfunc.cc:
  Auto merged
sql/item_subselect.cc:
  Auto merged
sql/item_subselect.h:
  Auto merged
sql/item_sum.cc:
  Auto merged
sql/item_timefunc.cc:
  Auto merged
sql/log_event.h:
  Auto merged
sql/mysql_priv.h:
  Auto merged
sql/net_serv.cc:
  Auto merged
sql/opt_range.cc:
  Auto merged
sql/opt_range.h:
  Auto merged
sql/password.c:
  Auto merged
sql/protocol.cc:
  Auto merged
sql/repl_failsafe.cc:
  Auto merged
sql/set_var.cc:
  Auto merged
sql/set_var.h:
  Auto merged
sql/sp.cc:
  Auto merged
sql/sp_head.cc:
  Auto merged
sql/sp_head.h:
  Auto merged
sql/spatial.h:
  Auto merged
sql/sql_cache.h:
  Auto merged
sql/sql_class.cc:
  Auto merged
sql/sql_derived.cc:
  Auto merged
sql/sql_lex.cc:
  Auto merged
sql/sql_lex.h:
  Auto merged
sql/sql_load.cc:
  Auto merged
sql/sql_prepare.cc:
  Auto merged
sql-common/client.c:
  Auto merged
sql-common/my_time.c:
  Auto merged
sql/sql_string.cc:
  Auto merged
sql/sql_string.h:
  Auto merged
sql/sql_trigger.h:
  Auto merged
sql/sql_union.cc:
  Auto merged
sql/sql_update.cc:
  Auto merged
sql/tztime.cc:
  Auto merged
storage/archive/ha_archive.h:
  Auto merged
storage/heap/hp_write.c:
  Auto merged
storage/myisam/ft_boolean_search.c:
  Auto merged
storage/myisam/mi_open.c:
  Auto merged
storage/myisam/mi_search.c:
  Auto merged
storage/myisam/mi_unique.c:
  Auto merged
storage/myisam/myisampack.c:
  Auto merged
storage/myisam/rt_index.c:
  Auto merged
storage/myisam/sort.c:
  Auto merged
storage/ndb/include/kernel/signaldata/ArbitSignalData.hpp:
  Auto merged
storage/ndb/include/kernel/signaldata/DictTabInfo.hpp:
  Auto merged
storage/ndb/include/ndbapi/NdbReceiver.hpp:
  Auto merged
storage/ndb/include/transporter/TransporterDefinitions.hpp:
  Auto merged
storage/ndb/include/util/OutputStream.hpp:
  Auto merged
storage/ndb/include/util/SimpleProperties.hpp:
  Auto merged
storage/ndb/include/util/SocketAuthenticator.hpp:
  Auto merged
storage/ndb/include/util/SocketServer.hpp:
  Auto merged
storage/ndb/src/common/portlib/NdbTick.c:
  Auto merged
storage/ndb/src/common/transporter/SHM_Transporter.cpp:
  Auto merged
storage/ndb/src/common/transporter/TCP_Transporter.cpp:
  Auto merged
storage/ndb/src/common/transporter/TCP_Transporter.hpp:
  Auto merged
storage/ndb/src/common/transporter/Transporter.cpp:
  Auto merged
storage/ndb/src/common/transporter/TransporterRegistry.cpp:
  Auto merged
storage/ndb/src/common/util/File.cpp:
  Auto merged
storage/ndb/src/common/util/Properties.cpp:
  Auto merged
storage/ndb/src/common/util/SocketClient.cpp:
  Auto merged
storage/ndb/src/common/util/random.c:
  Auto merged
storage/ndb/src/common/util/socket_io.cpp:
  Auto merged
storage/ndb/src/cw/cpcd/APIService.cpp:
  Auto merged
storage/ndb/src/cw/cpcd/main.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp:
  Auto merged
storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp:
  Auto merged
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp:
  Auto merged
storage/ndb/src/mgmapi/LocalConfig.cpp:
  Auto merged
storage/ndb/src/mgmapi/mgmapi.cpp:
  Auto merged
storage/ndb/src/mgmclient/CommandInterpreter.cpp:
  Auto merged
storage/ndb/src/mgmsrv/ConfigInfo.cpp:
  Auto merged
storage/ndb/src/mgmsrv/ConfigInfo.hpp:
  Auto merged
storage/ndb/src/mgmsrv/InitConfigFileParser.cpp:
  Auto merged
storage/ndb/src/mgmsrv/MgmtSrvr.hpp:
  Auto merged
storage/ndb/src/mgmsrv/Services.cpp:
  Auto merged
storage/ndb/src/mgmsrv/main.cpp:
  Auto merged
storage/ndb/src/ndbapi/ClusterMgr.hpp:
  Auto merged
storage/ndb/src/ndbapi/Ndb.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbIndexOperation.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbOperationExec.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbOperationSearch.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbScanFilter.cpp:
  Auto merged
storage/ndb/src/ndbapi/NdbScanOperation.cpp:
  Auto merged
storage/ndb/src/ndbapi/SignalSender.cpp:
  Auto merged
storage/ndb/src/ndbapi/ndb_cluster_connection.cpp:
  Auto merged
storage/ndb/tools/delete_all.cpp:
  Auto merged
storage/ndb/tools/desc.cpp:
  Auto merged
storage/ndb/tools/drop_index.cpp:
  Auto merged
storage/ndb/tools/drop_tab.cpp:
  Auto merged
storage/ndb/tools/listTables.cpp:
  Auto merged
storage/ndb/tools/ndb_condig.cpp:
  Auto merged
storage/ndb/tools/restore/Restore.hpp:
  Auto merged
storage/ndb/tools/restore/consumer.hpp:
  Auto merged
storage/ndb/tools/select_all.cpp:
  Auto merged
storage/ndb/tools/select_count.cpp:
  Auto merged
strings/ctype-bin.c:
  Auto merged
strings/ctype-cp932.c:
  Auto merged
strings/ctype-eucjpms.c:
  Auto merged
strings/ctype-mb.c:
  Auto merged
strings/ctype-simple.c:
  Auto merged
strings/ctype-sjis.c:
  Auto merged
strings/ctype-ujis.c:
  Auto merged
strings/ctype-utf8.c:
  Auto merged
strings/decimal.c:
  Auto merged
BUILD/SETUP.sh:
  manual merge
BUILD/compile-pentium-gcov:
  manual merge
Makefile.am:
  manual merge
client/mysqltest.c:
  Automatic merge
include/mysql.h:
  manual merge
libmysqld/lib_sql.cc:
  Automatic merge
mysql-test/r/mysqlbinlog.result:
  Automatic merge
mysql-test/r/mysqlcheck.result:
  Fixed test case (we should never drop 'test' database)
mysys/my_bitmap.c:
  manual merge
server-tools/instance-manager/commands.h:
  manual merge
server-tools/instance-manager/guardian.cc:
  manual merge
server-tools/instance-manager/mysql_connection.cc:
  manual merge
server-tools/instance-manager/options.cc:
  manual merge
server-tools/instance-manager/options.h:
  manual merge
server-tools/instance-manager/parse.cc:
  Automatic merge
server-tools/instance-manager/user_map.cc:
  manual merge
server-tools/instance-manager/user_map.h:
  manual merge
sql/field.cc:
  manual merge
sql/field.h:
  manual merge
sql/ha_ndbcluster.cc:
  manual merge
sql/handler.cc:
  manual merge
sql/item.cc:
  manual merge
sql/item.h:
  Automatic merge
sql/log.cc:
  manual merge
sql/log_event.cc:
  manual merge
sql/mysqld.cc:
  manual merge
sql/slave.cc:
  manual merge
sql/spatial.cc:
  Automatic merge
sql/sql_class.h:
  manual merge
sql/sql_insert.cc:
  manual merge
sql/sql_parse.cc:
  manual merge
sql/sql_select.cc:
  manual merge
sql/sql_show.cc:
  manual merge
sql/sql_table.cc:
  manual merge
sql/sql_trigger.cc:
  manual merge
sql/sql_view.cc:
  manual merge
sql/sql_yacc.yy:
  manual merge
  Made setting thd and lex uniform
sql/table.cc:
  manual merge
sql/unireg.cc:
  manual merge
storage/archive/ha_archive.cc:
  manual merge
storage/federated/ha_federated.cc:
  manual merge
storage/heap/ha_heap.cc:
  manual merge
storage/myisam/ha_myisam.cc:
  manual merge
storage/myisammrg/ha_myisammrg.cc:
  manual merge
storage/ndb/include/util/InputStream.hpp:
  manual merge
storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp:
  manual merge
storage/ndb/src/common/util/Bitmask.cpp:
  manual merge
storage/ndb/src/common/util/ConfigValues.cpp:
  Automatic merge
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp:
  manual merge
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp:
  manual merge
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp:
  manual merge
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp:
  manual merge
  Changed commented code to be #ifdef-ed instead
storage/ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp:
  manual merge
storage/ndb/src/kernel/blocks/suma/Suma.cpp:
  Automatic merge
storage/ndb/src/kernel/blocks/suma/Suma.hpp:
  manual merge
storage/ndb/src/mgmsrv/MgmtSrvr.cpp:
  Automatic merge
storage/ndb/src/ndbapi/NdbBlob.cpp:
  Automatic merge
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp:
  Automatic merge
storage/ndb/src/ndbapi/NdbOperationDefine.cpp:
  manual merge
storage/ndb/tools/restore/restore_main.cpp:
  manual merge
tests/mysql_client_test.c:
  manual merge
2007-01-27 03:46:45 +02:00

327 lines
10 KiB
C++

/* Copyright (C) 2003 MySQL AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/*
* list_tables
*
* List objects(tables, triggers, etc.) in NDB Cluster
*
*/
#include <ndb_global.h>
#include <ndb_opts.h>
#include <NdbApi.hpp>
#include <NDBT.hpp>
static Ndb_cluster_connection *ndb_cluster_connection= 0;
static Ndb* ndb = 0;
static const NdbDictionary::Dictionary * dic = 0;
static int _unqualified = 0;
static int _parsable = 0;
static int show_temp_status = 0;
const char *load_default_groups[]= { "mysql_cluster",0 };
static void
fatal(char const* fmt, ...)
{
va_list ap;
char buf[500];
va_start(ap, fmt);
BaseString::vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
ndbout << buf;
if (ndb)
ndbout << " - " << ndb->getNdbError();
ndbout << endl;
NDBT_ProgramExit(NDBT_FAILED);
exit(1);
}
static void
fatal_dict(char const* fmt, ...)
{
va_list ap;
char buf[500];
va_start(ap, fmt);
BaseString::vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
ndbout << buf;
if (dic)
ndbout << " - " << dic->getNdbError();
ndbout << endl;
NDBT_ProgramExit(NDBT_FAILED);
exit(1);
}
static void
list(const char * tabname,
NdbDictionary::Object::Type type)
{
NdbDictionary::Dictionary::List list;
if (tabname == 0) {
if (dic->listObjects(list, type) == -1)
fatal_dict("listObjects");
} else {
if (dic->listIndexes(list, tabname) == -1)
fatal_dict("listIndexes");
}
if (!_parsable)
{
if (ndb->usingFullyQualifiedNames())
{
if (show_temp_status)
ndbout_c("%-5s %-20s %-8s %-7s %-4s %-12s %-8s %s", "id", "type", "state", "logging", "temp", "database", "schema", "name");
else
ndbout_c("%-5s %-20s %-8s %-7s %-12s %-8s %s", "id", "type", "state", "logging", "database", "schema", "name");
}
else
{
if (show_temp_status)
ndbout_c("%-5s %-20s %-8s %-7s %-4s %s", "id", "type", "state", "logging", "temp", "name");
else
ndbout_c("%-5s %-20s %-8s %-7s %s", "id", "type", "state", "logging", "name");
}
}
for (unsigned i = 0; i < list.count; i++) {
NdbDictionary::Dictionary::List::Element& elt = list.elements[i];
char type[100];
bool isTable = false;
switch (elt.type) {
case NdbDictionary::Object::SystemTable:
strcpy(type, "SystemTable");
isTable = true;
break;
case NdbDictionary::Object::UserTable:
strcpy(type, "UserTable");
isTable = true;
break;
case NdbDictionary::Object::UniqueHashIndex:
strcpy(type, "UniqueHashIndex");
isTable = true;
break;
case NdbDictionary::Object::OrderedIndex:
strcpy(type, "OrderedIndex");
isTable = true;
break;
case NdbDictionary::Object::HashIndexTrigger:
strcpy(type, "HashIndexTrigger");
break;
case NdbDictionary::Object::IndexTrigger:
strcpy(type, "IndexTrigger");
break;
case NdbDictionary::Object::SubscriptionTrigger:
strcpy(type, "SubscriptionTrigger");
break;
case NdbDictionary::Object::ReadOnlyConstraint:
strcpy(type, "ReadOnlyConstraint");
break;
case NdbDictionary::Object::Tablespace:
strcpy(type, "Tablespace");
break;
case NdbDictionary::Object::LogfileGroup:
strcpy(type, "LogfileGroup");
break;
case NdbDictionary::Object::Datafile:
strcpy(type, "Datafile");
break;
case NdbDictionary::Object::Undofile:
strcpy(type, "Undofile");
break;
default:
sprintf(type, "%d", (int)elt.type);
break;
}
char state[100];
switch (elt.state) {
case NdbDictionary::Object::StateOffline:
strcpy(state, "Offline");
break;
case NdbDictionary::Object::StateBuilding:
strcpy(state, "Building");
break;
case NdbDictionary::Object::StateDropping:
strcpy(state, "Dropping");
break;
case NdbDictionary::Object::StateOnline:
strcpy(state, "Online");
break;
case NdbDictionary::Object::StateBackup:
strcpy(state, "Backup");
break;
case NdbDictionary::Object::StateBroken:
strcpy(state, "Broken");
break;
default:
sprintf(state, "%d", (int)elt.state);
break;
}
char store[100];
if (! isTable)
strcpy(store, "-");
else {
switch (elt.store) {
case NdbDictionary::Object::StoreNotLogged:
strcpy(store, "No");
break;
case NdbDictionary::Object::StorePermanent:
strcpy(store, "Yes");
break;
default:
sprintf(store, "%d", (int)elt.store);
break;
}
}
char temp[100];
if (show_temp_status)
{
if (! isTable)
strcpy(temp, "-");
else {
switch (elt.temp) {
case NDB_TEMP_TAB_PERMANENT:
strcpy(temp, "No");
break;
case NDB_TEMP_TAB_TEMPORARY:
strcpy(temp, "Yes");
break;
default:
sprintf(temp, "%d", (int)elt.temp);
break;
}
}
}
if (ndb->usingFullyQualifiedNames())
{
if (_parsable)
{
if (show_temp_status)
ndbout_c("%d\t'%s'\t'%s'\t'%s'\t'%s'\t'%s'\t'%s'\t'%s'", elt.id, type, state, store, temp, (elt.database)?elt.database:"", (elt.schema)?elt.schema:"", elt.name);
else
ndbout_c("%d\t'%s'\t'%s'\t'%s'\t'%s'\t'%s'\t'%s'", elt.id, type, state, store, (elt.database)?elt.database:"", (elt.schema)?elt.schema:"", elt.name);
}
else
{
if (show_temp_status)
ndbout_c("%-5d %-20s %-8s %-7s %-4s %-12s %-8s %s", elt.id, type, state, store, temp, (elt.database)?elt.database:"", (elt.schema)?elt.schema:"", elt.name);
else
ndbout_c("%-5d %-20s %-8s %-7s %-12s %-8s %s", elt.id, type, state, store, (elt.database)?elt.database:"", (elt.schema)?elt.schema:"", elt.name);
}
}
else
{
if (_parsable)
{
if (show_temp_status)
ndbout_c("%d\t'%s'\t'%s'\t'%s'\t'%s'\t'%s'", elt.id, type, state, store, temp, elt.name);
else
ndbout_c("%d\t'%s'\t'%s'\t'%s'\t'%s'", elt.id, type, state, store, elt.name);
}
else
{
if (show_temp_status)
ndbout_c("%-5d %-20s %-8s %-7s %-4s %s", elt.id, type, state, store, temp, elt.name);
else
ndbout_c("%-5d %-20s %-8s %-7s %s", elt.id, type, state, store, elt.name);
}
}
}
if (_parsable)
exit(0);
}
NDB_STD_OPTS_VARS;
static const char* _dbname = "TEST_DB";
static int _loops;
static int _type;
enum options_ndb_show_tables
{
OPT_SHOW_TMP_STATUS=256
};
static struct my_option my_long_options[] =
{
NDB_STD_OPTS("ndb_show_tables"),
{ "database", 'd', "Name of database table is in",
(gptr*) &_dbname, (gptr*) &_dbname, 0,
GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{ "loops", 'l', "loops",
(gptr*) &_loops, (gptr*) &_loops, 0,
GET_INT, REQUIRED_ARG, 1, 0, 0, 0, 0, 0 },
{ "type", 't', "type",
(gptr*) &_type, (gptr*) &_type, 0,
GET_INT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0 },
{ "unqualified", 'u', "Use unqualified table names",
(gptr*) &_unqualified, (gptr*) &_unqualified, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
{ "parsable", 'p', "Return output suitable for mysql LOAD DATA INFILE",
(gptr*) &_parsable, (gptr*) &_parsable, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
{ "show-temp-status", OPT_SHOW_TMP_STATUS, "Show table temporary flag",
(gptr*) &show_temp_status, (gptr*) &show_temp_status, 0,
GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
};
static void usage()
{
#ifdef NOT_USED
char desc[] =
"tabname\n"\
"This program list all system objects in NDB Cluster.\n"\
"Type of objects to display can be limited with -t option\n"\
" ex: ndb_show_tables -t 2 would show all UserTables\n"\
"To show all indexes for a table write table name as final argument\n"\
" ex: ndb_show_tables T1\n";
#endif
ndb_std_print_version();
print_defaults(MYSQL_CONFIG_NAME,load_default_groups);
puts("");
my_print_help(my_long_options);
my_print_variables(my_long_options);
}
int main(int argc, char** argv){
NDB_INIT(argv[0]);
const char* _tabname;
load_defaults("my",load_default_groups,&argc,&argv);
int ho_error;
#ifndef DBUG_OFF
opt_debug= "d:t:O,/tmp/ndb_show_tables.trace";
#endif
if ((ho_error=handle_options(&argc, &argv, my_long_options,
ndb_std_get_one_option)))
return NDBT_ProgramExit(NDBT_WRONGARGS);
_tabname = argv[0];
ndb_cluster_connection = new Ndb_cluster_connection(opt_connect_str);
if (ndb_cluster_connection->connect(12,5,1))
fatal("Unable to connect to management server.");
if (ndb_cluster_connection->wait_until_ready(30,0) < 0)
fatal("Cluster nodes not ready in 30 seconds.");
ndb = new Ndb(ndb_cluster_connection, _dbname);
if (ndb->init() != 0)
fatal("init");
dic = ndb->getDictionary();
for (int i = 0; _loops == 0 || i < _loops; i++) {
list(_tabname, (NdbDictionary::Object::Type)_type);
}
delete ndb;
delete ndb_cluster_connection;
return NDBT_ProgramExit(NDBT_OK);
}
// vim: set sw=4: