You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-04 04:42:30 +03:00
681 lines
29 KiB
C++
681 lines
29 KiB
C++
/*
|
|
* $Id: brmtest.cpp 1739 2012-03-22 12:57:59Z pleblanc $
|
|
*/
|
|
|
|
#include <iostream>
|
|
#include <vector>
|
|
#include <cassert>
|
|
#include <stdexcept>
|
|
#include <sstream>
|
|
using namespace std;
|
|
|
|
#include <sys/types.h>
|
|
#include <sys/stat.h>
|
|
#include <fcntl.h>
|
|
|
|
#include "calpontsystemcatalog.h"
|
|
using namespace execplan;
|
|
|
|
#include "extentmap.h"
|
|
#include "blockresolutionmanager.h"
|
|
using namespace BRM;
|
|
|
|
#include "configcpp.h"
|
|
using namespace config;
|
|
|
|
extern int query_locks();
|
|
extern int reset_locks();
|
|
|
|
namespace
|
|
{
|
|
|
|
boost::shared_ptr<CalpontSystemCatalog> Cat;
|
|
|
|
void LBIDList(CalpontSystemCatalog::OID OID, ostringstream& cout_str)
|
|
{
|
|
LBIDRange_v LBIDRanges;
|
|
|
|
LBIDRange_v::size_type RangeCount;
|
|
ExtentMap em;
|
|
LBIDRange_v::size_type i;
|
|
LBIDRange LBIDR;
|
|
|
|
cout_str << "HWM = " << em.getHWM(OID) << endl;
|
|
|
|
em.lookup(OID, LBIDRanges);
|
|
RangeCount = LBIDRanges.size();
|
|
idbassert(RangeCount < 1000);
|
|
|
|
for (i = 0; i < RangeCount; i++)
|
|
{
|
|
LBIDR = LBIDRanges[i];
|
|
cout_str << LBIDR.start << " - " << (LBIDR.start + LBIDR.size - 1) << " (" << LBIDR.size << ')';
|
|
int64_t max = -1, min = -1;
|
|
int32_t seqNum = 0;
|
|
em.getMaxMin(LBIDR.start, max, min, seqNum);
|
|
cout_str << " min: " << min << ", max: " << max << ", seqNum: " << seqNum << endl;
|
|
}
|
|
|
|
cout_str << endl;
|
|
}
|
|
|
|
void doit(const CalpontSystemCatalog::TableColName& tcn, ostringstream& cout_str)
|
|
{
|
|
CalpontSystemCatalog::OID OID;
|
|
|
|
try
|
|
{
|
|
OID = Cat->columnRID(tcn).objnum;
|
|
}
|
|
catch (...)
|
|
{
|
|
cout_str << tcn.schema << '.' << tcn.table << '.' << tcn.column << ": OID not found" << endl;
|
|
return;
|
|
}
|
|
|
|
if (OID > 0)
|
|
{
|
|
|
|
CalpontSystemCatalog::OID ioid = Cat->lookupOID(tcn);
|
|
CalpontSystemCatalog::ColType CT = Cat->colType(ioid);
|
|
|
|
CalpontSystemCatalog::DictOID DOID = CT.ddn;
|
|
|
|
int DictOID = DOID.dictOID;
|
|
int ListOID = DOID.listOID;
|
|
int TreeOID = DOID.treeOID;
|
|
|
|
cout_str << tcn.schema << '.' << tcn.table << '.' << tcn.column << ": OID = " << OID << endl;
|
|
|
|
try
|
|
{
|
|
LBIDList(OID, cout_str);
|
|
}
|
|
catch (exception& ex)
|
|
{
|
|
cerr << ex.what() << endl;
|
|
}
|
|
|
|
if (DictOID > 0)
|
|
{
|
|
cout_str << tcn.schema << '.' << tcn.table << '.' << tcn.column << ": DictOID = " << DictOID << endl;
|
|
|
|
try
|
|
{
|
|
LBIDList(DictOID, cout_str);
|
|
}
|
|
catch (exception& ex)
|
|
{
|
|
cerr << ex.what() << endl;
|
|
}
|
|
}
|
|
|
|
if (ListOID > 0)
|
|
{
|
|
cout_str << tcn.schema << '.' << tcn.table << '.' << tcn.column << ": DictListOID = " << ListOID << endl;
|
|
|
|
try
|
|
{
|
|
LBIDList(ListOID, cout_str);
|
|
}
|
|
catch (exception& ex)
|
|
{
|
|
cerr << ex.what() << endl;
|
|
}
|
|
}
|
|
|
|
if (TreeOID > 0)
|
|
{
|
|
cout_str << tcn.schema << '.' << tcn.table << '.' << tcn.column << ": DictTreeOID = " << TreeOID << endl;
|
|
|
|
try
|
|
{
|
|
LBIDList(TreeOID, cout_str);
|
|
}
|
|
catch (exception& ex)
|
|
{
|
|
cerr << ex.what() << endl;
|
|
}
|
|
}
|
|
|
|
CalpontSystemCatalog::IndexOID IOID = Cat->lookupIndexNbr(tcn);
|
|
|
|
if (IOID.objnum > 0)
|
|
{
|
|
cout_str << tcn.schema << '.' << tcn.table << '.' << tcn.column << ": IndexOID = " << IOID.objnum << endl;
|
|
|
|
try
|
|
{
|
|
LBIDList(IOID.objnum, cout_str);
|
|
}
|
|
catch (exception& ex)
|
|
{
|
|
cerr << ex.what() << endl;
|
|
}
|
|
}
|
|
|
|
if (IOID.listOID > 0)
|
|
{
|
|
cout_str << tcn.schema << '.' << tcn.table << '.' << tcn.column << ": IndexLstOID = " << IOID.listOID << endl;
|
|
|
|
try
|
|
{
|
|
LBIDList(IOID.listOID, cout_str);
|
|
}
|
|
catch (exception& ex)
|
|
{
|
|
cerr << ex.what() << endl;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
cout_str << tcn.schema << '.' << tcn.table << '.' << tcn.column << ": OID was zero!" << endl;
|
|
}
|
|
}
|
|
|
|
void usage(ostringstream& cout_str)
|
|
{
|
|
cout_str << "usage: brmtest [-hrts] [-l LBID] [-c schema]" << endl;
|
|
cout_str << "\t-h display this help" << endl;
|
|
cout_str << "\t-r reset brm locks" << endl;
|
|
cout_str << "\t-l LBID display info about LBID" << endl;
|
|
cout_str << "\t-t dump TPC-H tables" << endl;
|
|
cout_str << "\t-s don't dump system catalog" << endl;
|
|
cout_str << "\t-c schema seach for TPC-H tables in schema" << endl;
|
|
}
|
|
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
int c;
|
|
|
|
bool rflg = false;
|
|
bool lflg = false;
|
|
bool tflg = false;
|
|
bool sflg = true;
|
|
bool qflg = false;
|
|
|
|
opterr = 0;
|
|
|
|
uint64_t lbid = 0;
|
|
|
|
ostringstream cout_str;
|
|
ostringstream cerr_str;
|
|
|
|
string schema("tpch");
|
|
|
|
while ((c = getopt(argc, argv, "hrl:tsc:q")) != EOF)
|
|
switch (c)
|
|
{
|
|
case 'r':
|
|
rflg = true;
|
|
break;
|
|
|
|
case 'l':
|
|
lflg = true;
|
|
lbid = strtoul(optarg, 0, 0);
|
|
break;
|
|
|
|
case 'h':
|
|
usage(cout_str);
|
|
cerr << cout_str.str() << endl;
|
|
exit(0);
|
|
break;
|
|
|
|
case 't':
|
|
tflg = true;
|
|
break;
|
|
|
|
case 's':
|
|
sflg = false;
|
|
break;
|
|
|
|
case 'c':
|
|
schema = optarg;
|
|
break;
|
|
|
|
case 'q':
|
|
qflg = true;
|
|
break;
|
|
|
|
default:
|
|
usage(cout_str);
|
|
cerr << cout_str.str() << endl;
|
|
exit(1);
|
|
break;
|
|
}
|
|
|
|
if (rflg)
|
|
{
|
|
reset_locks();
|
|
return 0;
|
|
}
|
|
|
|
if (query_locks() != 0)
|
|
{
|
|
cerr << "BRM is locked!" << endl;
|
|
return 1;
|
|
}
|
|
|
|
if (lflg)
|
|
{
|
|
BlockResolutionManager brm;
|
|
uint16_t ver = 0;
|
|
BRM::OID_t oid;
|
|
uint32_t fbo;
|
|
int rc;
|
|
rc = brm.lookup(lbid, ver, false, oid, fbo);
|
|
idbassert(rc == 0);
|
|
|
|
if (qflg)
|
|
cout << oid << endl;
|
|
else
|
|
cout << "LBID " << lbid << " is part of OID " << oid << " at FBO " << fbo << endl;
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Now, close out all output so we don't get any debug from PG/RA
|
|
int fd;
|
|
::close(2);
|
|
::close(1);
|
|
//fd = open("./brmtest.out", O_WRONLY|O_CREAT|O_TRUNC, 0666);
|
|
fd = open("/dev/null", O_WRONLY);
|
|
idbassert(fd >= 0);
|
|
|
|
if (fd != 1) dup2(fd, 1);
|
|
|
|
//fd = open("./brmtest.err", O_WRONLY|O_CREAT|O_TRUNC, 0666);
|
|
fd = open("/dev/null", O_WRONLY);
|
|
idbassert(fd >= 0);
|
|
|
|
if (fd != 2) dup2(fd, 2);
|
|
|
|
Cat = CalpontSystemCatalog::makeCalpontSystemCatalog();
|
|
|
|
fd = ::open("/dev/tty", O_WRONLY);
|
|
idbassert(fd >= 0);
|
|
|
|
string status;
|
|
|
|
if (tflg)
|
|
{
|
|
const string region("region");
|
|
const string nation("nation");
|
|
const string customer("customer");
|
|
const string orders("orders");
|
|
const string supplier("supplier");
|
|
const string partsupp("partsupp");
|
|
const string lineitem("lineitem");
|
|
const string part("part");
|
|
|
|
status = "Reading REGION...\n";
|
|
::write(fd, status.c_str(), status.length());
|
|
|
|
doit(make_tcn(schema, region, "r_regionkey"), cout_str);
|
|
doit(make_tcn(schema, region, "r_name"), cout_str);
|
|
doit(make_tcn(schema, region, "r_comment"), cout_str);
|
|
|
|
status = "Reading NATION...\n";
|
|
::write(fd, status.c_str(), status.length());
|
|
|
|
doit(make_tcn(schema, nation, "n_nationkey"), cout_str);
|
|
doit(make_tcn(schema, nation, "n_name"), cout_str);
|
|
doit(make_tcn(schema, nation, "n_regionkey"), cout_str);
|
|
doit(make_tcn(schema, nation, "n_comment"), cout_str);
|
|
|
|
status = "Reading CUSTOMER...\n";
|
|
::write(fd, status.c_str(), status.length());
|
|
|
|
doit(make_tcn(schema, customer, "c_custkey"), cout_str);
|
|
doit(make_tcn(schema, customer, "c_name"), cout_str);
|
|
doit(make_tcn(schema, customer, "c_address"), cout_str);
|
|
doit(make_tcn(schema, customer, "c_nationkey"), cout_str);
|
|
doit(make_tcn(schema, customer, "c_phone"), cout_str);
|
|
doit(make_tcn(schema, customer, "c_acctbal"), cout_str);
|
|
doit(make_tcn(schema, customer, "c_mktsegment"), cout_str);
|
|
doit(make_tcn(schema, customer, "c_comment"), cout_str);
|
|
|
|
status = "Reading ORDERS...\n";
|
|
::write(fd, status.c_str(), status.length());
|
|
|
|
doit(make_tcn(schema, orders, "o_orderkey"), cout_str);
|
|
doit(make_tcn(schema, orders, "o_custkey"), cout_str);
|
|
doit(make_tcn(schema, orders, "o_orderstatus"), cout_str);
|
|
doit(make_tcn(schema, orders, "o_totalprice"), cout_str);
|
|
doit(make_tcn(schema, orders, "o_orderdate"), cout_str);
|
|
doit(make_tcn(schema, orders, "o_orderpriority"), cout_str);
|
|
doit(make_tcn(schema, orders, "o_clerk"), cout_str);
|
|
doit(make_tcn(schema, orders, "o_shippriority"), cout_str);
|
|
doit(make_tcn(schema, orders, "o_comment"), cout_str);
|
|
|
|
status = "Reading PART...\n";
|
|
::write(fd, status.c_str(), status.length());
|
|
|
|
doit(make_tcn(schema, part, "p_partkey"), cout_str);
|
|
doit(make_tcn(schema, part, "p_name"), cout_str);
|
|
doit(make_tcn(schema, part, "p_mfgr"), cout_str);
|
|
doit(make_tcn(schema, part, "p_brand"), cout_str);
|
|
doit(make_tcn(schema, part, "p_type"), cout_str);
|
|
doit(make_tcn(schema, part, "p_size"), cout_str);
|
|
doit(make_tcn(schema, part, "p_container"), cout_str);
|
|
doit(make_tcn(schema, part, "p_retailprice"), cout_str);
|
|
doit(make_tcn(schema, part, "p_comment"), cout_str);
|
|
|
|
status = "Reading SUPPLIER...\n";
|
|
::write(fd, status.c_str(), status.length());
|
|
|
|
doit(make_tcn(schema, supplier, "s_suppkey"), cout_str);
|
|
doit(make_tcn(schema, supplier, "s_name"), cout_str);
|
|
doit(make_tcn(schema, supplier, "s_address"), cout_str);
|
|
doit(make_tcn(schema, supplier, "s_nationkey"), cout_str);
|
|
doit(make_tcn(schema, supplier, "s_phone"), cout_str);
|
|
doit(make_tcn(schema, supplier, "s_acctbal"), cout_str);
|
|
doit(make_tcn(schema, supplier, "s_comment"), cout_str);
|
|
|
|
status = "Reading PARTSUPP...\n";
|
|
::write(fd, status.c_str(), status.length());
|
|
|
|
doit(make_tcn(schema, partsupp, "ps_partkey"), cout_str);
|
|
doit(make_tcn(schema, partsupp, "ps_suppkey"), cout_str);
|
|
doit(make_tcn(schema, partsupp, "ps_availqty"), cout_str);
|
|
doit(make_tcn(schema, partsupp, "ps_supplycost"), cout_str);
|
|
doit(make_tcn(schema, partsupp, "ps_comment"), cout_str);
|
|
|
|
status = "Reading LINEITEM...\n";
|
|
::write(fd, status.c_str(), status.length());
|
|
|
|
doit(make_tcn(schema, lineitem, "l_orderkey"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_linenumber"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_partkey"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_suppkey"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_quantity"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_extendedprice"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_discount"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_tax"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_returnflag"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_linestatus"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_shipdate"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_commitdate"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_receiptdate"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_shipinstruct"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_shipmode"), cout_str);
|
|
doit(make_tcn(schema, lineitem, "l_comment"), cout_str);
|
|
}
|
|
|
|
if (sflg)
|
|
{
|
|
status = "Reading CALPONTSYS...\n\n";
|
|
::write(fd, status.c_str(), status.length());
|
|
|
|
schema = CALPONT_SCHEMA;
|
|
string table = SYSCOLUMN_TABLE;
|
|
doit(make_tcn(schema, table, SCHEMA_COL), cout_str);
|
|
doit(make_tcn(schema, table, TABLENAME_COL), cout_str);
|
|
doit(make_tcn(schema, table, COLNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INDEXNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INDEXTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MULTICOLFLAG_COL), cout_str);
|
|
doit(make_tcn(schema, table, OBJECTID_COL), cout_str);
|
|
doit(make_tcn(schema, table, DICTOID_COL), cout_str);
|
|
doit(make_tcn(schema, table, LISTOBJID_COL), cout_str);
|
|
doit(make_tcn(schema, table, TREEOBJID_COL), cout_str);
|
|
doit(make_tcn(schema, table, DATATYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNTYPE_COL), cout_str);
|
|
doit(make_tcn(schema, table, COLUMNLEN_COL), cout_str);
|
|
doit(make_tcn(schema, table, COLUMNPOS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CREATEDATE_COL), cout_str);
|
|
doit(make_tcn(schema, table, LASTUPDATE_COL), cout_str);
|
|
doit(make_tcn(schema, table, DEFAULTVAL_COL), cout_str);
|
|
doit(make_tcn(schema, table, NULLABLE_COL), cout_str);
|
|
doit(make_tcn(schema, table, SCALE_COL), cout_str);
|
|
doit(make_tcn(schema, table, PRECISION_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMNULLS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMDISTINCTVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MINVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MAXVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DENSITY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGRECORDLEN_COL), cout_str);
|
|
///doit(make_tcn(schema, table, RECORDCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LASTANYLDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SAMPLESIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, PROPERTY_COL), cout_str);
|
|
doit(make_tcn(schema, table, AUTOINC_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DATANAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CATEGORY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DESC_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INIT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNUM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTPRIM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTSTATUS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, TREELEVEL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LEAFCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DISTINCTKEYS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LEAFBLOCKS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGLEAFCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGDATABLOCK_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CLUSTERFACTOR_COL), cout_str);
|
|
|
|
table = SYSTABLE_TABLE;
|
|
doit(make_tcn(schema, table, SCHEMA_COL), cout_str);
|
|
doit(make_tcn(schema, table, TABLENAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INDEXNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INDEXTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MULTICOLFLAG_COL), cout_str);
|
|
doit(make_tcn(schema, table, OBJECTID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DICTOID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LISTOBJID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, TREEOBJID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DATATYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNLEN_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNPOS_COL), cout_str);
|
|
doit(make_tcn(schema, table, CREATEDATE_COL), cout_str);
|
|
doit(make_tcn(schema, table, LASTUPDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DEFAULTVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NULLABLE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SCALE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, PRECISION_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMNULLS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMDISTINCTVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MINVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MAXVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DENSITY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGRECORDLEN_COL), cout_str);
|
|
///doit(make_tcn(schema, table, RECORDCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LASTANYLDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SAMPLESIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, PROPERTY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AUTOINC_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DATANAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CATEGORY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DESC_COL), cout_str);
|
|
doit(make_tcn(schema, table, INIT_COL), cout_str);
|
|
doit(make_tcn(schema, table, NEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNUM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTPRIM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTSTATUS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, TREELEVEL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LEAFCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DISTINCTKEYS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LEAFBLOCKS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGLEAFCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGDATABLOCK_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CLUSTERFACTOR_COL), cout_str);
|
|
|
|
table = SYSSCHEMA_TABLE;
|
|
///doit(make_tcn(schema, table, SCHEMA_COL), cout_str);
|
|
///doit(make_tcn(schema, table, TABLENAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INDEXNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INDEXTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MULTICOLFLAG_COL), cout_str);
|
|
///doit(make_tcn(schema, table, OBJECTID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DICTOID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LISTOBJID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, TREEOBJID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DATATYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNLEN_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNPOS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CREATEDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LASTUPDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DEFAULTVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NULLABLE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SCALE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, PRECISION_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMNULLS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMDISTINCTVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MINVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MAXVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DENSITY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGRECORDLEN_COL), cout_str);
|
|
///doit(make_tcn(schema, table, RECORDCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LASTANYLDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SAMPLESIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, PROPERTY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AUTOINC_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DATANAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CATEGORY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DESC_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INIT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNUM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTPRIM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTSTATUS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, TREELEVEL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LEAFCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DISTINCTKEYS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LEAFBLOCKS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGLEAFCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGDATABLOCK_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CLUSTERFACTOR_COL), cout_str);
|
|
|
|
table = SYSINDEX_TABLE;
|
|
doit(make_tcn(schema, table, SCHEMA_COL), cout_str);
|
|
doit(make_tcn(schema, table, TABLENAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLNAME_COL), cout_str);
|
|
doit(make_tcn(schema, table, INDEXNAME_COL), cout_str);
|
|
doit(make_tcn(schema, table, INDEXTYPE_COL), cout_str);
|
|
doit(make_tcn(schema, table, MULTICOLFLAG_COL), cout_str);
|
|
///doit(make_tcn(schema, table, OBJECTID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DICTOID_COL), cout_str);
|
|
doit(make_tcn(schema, table, LISTOBJID_COL), cout_str);
|
|
doit(make_tcn(schema, table, TREEOBJID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DATATYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNLEN_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNPOS_COL), cout_str);
|
|
doit(make_tcn(schema, table, CREATEDATE_COL), cout_str);
|
|
doit(make_tcn(schema, table, LASTUPDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DEFAULTVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NULLABLE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SCALE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, PRECISION_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMNULLS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMDISTINCTVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MINVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MAXVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DENSITY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGRECORDLEN_COL), cout_str);
|
|
doit(make_tcn(schema, table, RECORDCOUNT_COL), cout_str);
|
|
doit(make_tcn(schema, table, LASTANYLDATE_COL), cout_str);
|
|
doit(make_tcn(schema, table, SAMPLESIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, PROPERTY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AUTOINC_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DATANAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CATEGORY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DESC_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INIT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNUM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTPRIM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTSTATUS_COL), cout_str);
|
|
doit(make_tcn(schema, table, TREELEVEL_COL), cout_str);
|
|
doit(make_tcn(schema, table, LEAFCOUNT_COL), cout_str);
|
|
doit(make_tcn(schema, table, DISTINCTKEYS_COL), cout_str);
|
|
doit(make_tcn(schema, table, LEAFBLOCKS_COL), cout_str);
|
|
doit(make_tcn(schema, table, AVGLEAFCOUNT_COL), cout_str);
|
|
doit(make_tcn(schema, table, AVGDATABLOCK_COL), cout_str);
|
|
doit(make_tcn(schema, table, CLUSTERFACTOR_COL), cout_str);
|
|
|
|
table = SYSINDEXCOL_TABLE;
|
|
doit(make_tcn(schema, table, SCHEMA_COL), cout_str);
|
|
doit(make_tcn(schema, table, TABLENAME_COL), cout_str);
|
|
doit(make_tcn(schema, table, COLNAME_COL), cout_str);
|
|
doit(make_tcn(schema, table, INDEXNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INDEXTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MULTICOLFLAG_COL), cout_str);
|
|
///doit(make_tcn(schema, table, OBJECTID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DICTOID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LISTOBJID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, TREEOBJID_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DATATYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, COLUMNLEN_COL), cout_str);
|
|
doit(make_tcn(schema, table, COLUMNPOS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CREATEDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LASTUPDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DEFAULTVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NULLABLE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SCALE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, PRECISION_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMNULLS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NUMDISTINCTVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MINVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, MAXVAL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DENSITY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGRECORDLEN_COL), cout_str);
|
|
///doit(make_tcn(schema, table, RECORDCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LASTANYLDATE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SAMPLESIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, PROPERTY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AUTOINC_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DATANAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CATEGORY_COL), cout_str);
|
|
///doit(make_tcn(schema, table, SIZE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DESC_COL), cout_str);
|
|
///doit(make_tcn(schema, table, INIT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, NEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNAME_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTNUM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTYPE_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTPRIM_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTTEXT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CONSTRAINTSTATUS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, TREELEVEL_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LEAFCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, DISTINCTKEYS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, LEAFBLOCKS_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGLEAFCOUNT_COL), cout_str);
|
|
///doit(make_tcn(schema, table, AVGDATABLOCK_COL), cout_str);
|
|
///doit(make_tcn(schema, table, CLUSTERFACTOR_COL), cout_str);
|
|
}
|
|
|
|
cout_str << ends;
|
|
::write(fd, cout_str.str().c_str(), cout_str.str().length());
|
|
|
|
return 0;
|
|
}
|
|
|