2025-11-28 00:35:46 +09:00

3229 lines
101 KiB
C

//--------------------------------------------------------------------
// Microsoft OLE DB Test
//
// Copyright 1995-2000 Microsoft Corporation.
//
// @doc
//
// @module IDBSCHMR.H | Header file for IDBSchemaRowset test module.
//
// @rev 01 | 03-21-95 | Microsoft | Created
// @rev 02 | 02-23-98 | Microsoft | Updated
//
#ifndef _IDBSCHMR_H_
#define _IDBSCHMR_H_
#define SQL_SCHEMAS
#ifdef SQL_SCHEMAS
#define DBINITCONSTANTS
#define INITGUID
#endif
// #include "oledb.h" // OLE DB Header Files
#include "oledberr.h"
#include "privlib.h" // Private Library
// Disable warnings about deprecated functions until all team members have migrated to VS2005
#pragma warning(disable:4996)
//-----------------------------------------------------------------------------
// Defines
//-----------------------------------------------------------------------------
#define GET_ROWS 20
#define MAXPROP 5
#define MAXRESTRICTION 7
#define MAX_STATISTIC_ERROR 0.10
#define MAX_MSG_BUF 1000
#define CCHMAXLENGTH_UNKNOWN (ULONG)~0
#define MAX_PARAM_COUNT 1000
#define MAX_STATS_COLS 30
//-----------------------------------------------------------------------------
// ENUM
//-----------------------------------------------------------------------------
enum ETXN {ETXN_COMMIT, ETXN_ABORT};
typedef enum tagROW_COUNT
{
DEFAULT, // Use the default for the schema obtained in GetSchemaInfo.
MIN_VALUE, // Row count must be at least some number if any rows, warning if 0.
MIN_REQUIRED, // Row count must be at least some number
EXACT_VALUE // Row count must be exactly some number
} ROW_COUNT;
typedef enum tagCARDINALITY
{
COLUMN_CARDINALITY,
TUPLE_CARDINALITY,
TABLE_CARDINALITY,
RANGE_ROWS_CARDINALITY,
EQ_ROWS_CARDINALITY,
DISTINCT_RANGE_ROWS_CARDINALITY
} CARDINALITY;
typedef enum tagRESTRICT_CAT
{
RC_UND, // Undefined restriction type (default)
RC_CATALOG, // Catalog name restriction
RC_SCHEMA, // Schema name
RC_TABLE, // Table name
RC_CONSTRAINT, // Constraint name
RC_COLUMN, // Column name
RC_USER, // User name
RC_INDEX, // Index name
RC_SERVER, // Server name
RC_PROCEDURE, // Procedure name
RC_PARAMETER, // Parameter name
RC_CONSTRAINT_TYPE, // Constraint type name
RC_STATISTICS, // Statistics name
RC_TABLE_TYPE // Table type name
} RESTRICT_CAT;
//-----------------------------------------------------------------------------
// String constants
//-----------------------------------------------------------------------------
const WCHAR wszErrorCreatingSession[] = L"Error Creating Session, CreateDBSession FAILED\n";
const WCHAR wszVerifyInterfaceFailed[] = L"Verify Interface FAILED\n";
const WCHAR wszGetSchemasFailed[] = L"IDBSchemaRowset::GetSchemas FAILED\n";
const WCHAR wszGetRowsetFailed[] = L"IDBSchemaRowset::GetRowset FAILED\n";
const WCHAR wszGetColumnInfoFailed[]= L"IColumnsInfo::GetColumnInfo FAILED\n";
const WCHAR wszRowsetIsNull[]= L"Rowset Is Null\n";
const WCHAR wszDropProc[]= L"DROP PROCEDURE %s";
const WCHAR wszCreateProc[]= L"CREATE PROCEDURE %s (@IntIn int =1, @IntOut int =2 OUTPUT) AS Select * from %s RETURN (1)";
const WCHAR wszProcDesignator[]= L"_proc";
const WCHAR wszCATALOG[]= L"nstl";
const WCHAR wszSCHEMA[]= L"ODBC";
const WCHAR wszTABLETYPE[]= L"SYSTEM TABLE";
const WCHAR wszGRANTOR[]= L"ODBC";
const WCHAR wszGRANTEE[]= L"ODBC2";
const WCHAR wszTABLETYPE_ALIAS[] =L"ALIAS";
const WCHAR wszTABLETYPE_BASETABLE[] =L"TABLE";
const WCHAR wszTABLETYPE_SYNONYM[] =L"SYNONYM";
const WCHAR wszTABLETYPE_SYSTEMTABLE[] =L"SYSTEM TABLE";
const WCHAR wszTABLETYPE_VIEW[] =L"VIEW";
const WCHAR wszTABLETYPE_GLOBALTEMPORARY[] =L"GLOBAL TEMPORARY";
const WCHAR wszTABLETYPE_LOCALTEMPORARY[] =L"LOCAL TEMPORARY";
const WCHAR wszCONSTRAINT_TYPE[] =L"UNIQUE";
const WCHAR wszCREATESTORPROC[] =L"Create procedure STORPROC as select * from %s";
const WCHAR wszSTORPROC[] =L"STORPROC";
const WCHAR wszPUBS[] =L"Pubs";
const WCHAR wszNWIND[] =L"NWIND";
const WCHAR wszDBSCHEMA_ASSERTIONS[] =L"DBSCHEMA_ASSERTIONS";
const WCHAR wszDBSCHEMA_CATALOGS[] =L"DBSCHEMA_CATALOGS";
const WCHAR wszDBSCHEMA_CHARACTER_SETS[] =L"DBSCHEMA_CHARACTER_SETS";
const WCHAR wszDBSCHEMA_CHECK_CONSTRAINTS[] =L"DBSCHEMA_CHECK_CONSTRAINTS";
const WCHAR wszDBSCHEMA_COLLATIONS[] =L"DBSCHEMA_COLLATIONS";
const WCHAR wszDBSCHEMA_COLUMN_DOMAIN_USAGE[]=L"DBSCHEMA_COLUMN_DOMAIN_USAGE";
const WCHAR wszDBSCHEMA_COLUMN_PRIVILEGES[] =L"DBSCHEMA_COLUMN_PRIVILEGES";
const WCHAR wszDBSCHEMA_COLUMNS[] =L"DBSCHEMA_COLUMNS";
const WCHAR wszDBSCHEMA_CONSTRAINT_COLUMN_USAGE[]=L"DBSCHEMA_CONSTRAINT_COLUMN_USAGE";
const WCHAR wszDBSCHEMA_CONSTRAINT_TABLE_USAGE[]=L"DBSCHEMA_CONSTRAINT_TABLE_USAGE";
const WCHAR wszDBSCHEMA_FOREIGN_KEYS[] =L"DBSCHEMA_FOREIGN_KEYS";
const WCHAR wszDBSCHEMA_INDEXES[] =L"DBSCHEMA_INDEXES";
const WCHAR wszDBSCHEMA_KEY_COLUMN_USAGE[] =L"DBSCHEMA_KEY_COLUMN_USAGE";
const WCHAR wszDBSCHEMA_PRIMARY_KEYS[] =L"DBSCHEMA_PRIMARY_KEYS";
const WCHAR wszDBSCHEMA_PROCEDURE_COLUMNS[] =L"DBSCHEMA_PROCEDURE_COLUMNS";
const WCHAR wszDBSCHEMA_PROCEDURE_PARAMETERS[]=L"DBSCHEMA_PROCEDURE_PARAMETERS";
const WCHAR wszDBSCHEMA_PROCEDURES[] =L"DBSCHEMA_PROCEDURES";
const WCHAR wszDBSCHEMA_PROVIDER_TYPES[] =L"DBSCHEMA_PROVIDER_TYPES";
const WCHAR wszDBSCHEMA_REFERENTIAL_CONSTRAINTS[]=L"DBSCHEMA_REFERENTIAL_CONSTRAINTS";
const WCHAR wszDBSCHEMA_SCHEMATA[] =L"DBSCHEMA_SCHEMATA";
const WCHAR wszDBSCHEMA_SQL_LANGUAGES[] =L"DBSCHEMA_SQL_LANGUAGES";
const WCHAR wszDBSCHEMA_STATISTICS[] =L"DBSCHEMA_STATISTICS";
const WCHAR wszDBSCHEMA_TABLES[] =L"DBSCHEMA_TABLES";
const WCHAR wszDBSCHEMA_TABLES_INFO[] =L"DBSCHEMA_TABLES_INFO";
const WCHAR wszDBSCHEMA_TABLE_CONSTRAINTS[] =L"DBSCHEMA_TABLE_CONSTRAINTS";
const WCHAR wszDBSCHEMA_TABLE_PRIVILEGES[] =L"DBSCHEMA_TABLE_PRIVILEGES";
const WCHAR wszDBSCHEMA_TABLE_STATISTICS[] =L"DBSCHEMA_TABLE_STATISTICS";
const WCHAR wszDBSCHEMA_TRANSLATIONS[] =L"DBSCHEMA_TRANSLATIONS";
const WCHAR wszDBSCHEMA_TRUSTEE[] =L"DBSCHEMA_TRUSTEE";
const WCHAR wszDBSCHEMA_USAGE_PRIVILEGES[] =L"DBSCHEMA_USAGE_PRIVILEGES";
const WCHAR wszDBSCHEMA_VIEW_COLUMN_USAGE[] =L"DBSCHEMA_VIEW_COLUMN_USAGE";
const WCHAR wszDBSCHEMA_VIEW_TABLE_USAGE[] =L"DBSCHEMA_VIEW_TABLE_USAGE";
const WCHAR wszDBSCHEMA_VIEWS[] =L"DBSCHEMA_VIEWS";
const WCHAR wszDBSCHEMA_GUID[] =L"DBSCHEMA_GUID not recognized or not supported";
const WCHAR wszNOROWS[] =L"No rows returned";
const WCHAR wszABORTPRESERVE[] =L"ABORTPRESERVE";
const WCHAR wszACCESSORDER[] =L"ACCESSORDER";
const WCHAR wszAPPENDONLY[] =L"APPENDONLY";
const WCHAR wszBLOCKINGSTORAGEOBJECTS[] =L"BLOCKINGSTORAGEOBJECTS";
const WCHAR wszBOOKMARKINFO[] =L"BOOKMARKINFO";
const WCHAR wszBOOKMARKS[] =L"BOOKMARKS";
const WCHAR wszBOOKMARKSKIPPED[] =L"BOOKMARKSKIPPED";
const WCHAR wszBOOKMARKTYPE[] =L"BOOKMARKTYPE";
const WCHAR wszCACHEDEFERRED[] =L"CACHEDEFERRED";
const WCHAR wszCANFETCHBACKWARDS[] =L"CANFETCHBACKWARDS";
const WCHAR wszCANHOLDROWS[] =L"CANHOLDROWS";
const WCHAR wszCANRELEASELOCKS[] =L"CANRELEASELOCKS";
const WCHAR wszCANSCROLLBACKWARDS[] =L"CANSCROLLBACKWARDS";
const WCHAR wszCHANGEINSERTEDROWS[] =L"CHANGEINSERTEDROWS";
const WCHAR wszCOLUMNRESTRICT[] =L"COLUMNRESTRICT";
const WCHAR wszCOMMANDTIMEOUT[] =L"COMMANDTIMEOUT";
const WCHAR wszCOMMITPRESERVE[] =L"COMMITPRESERVE";
const WCHAR wszDEFERRED[] =L"DEFERRED";
const WCHAR wszDELAYSTORAGEOBJECTS[] =L"DELAYSTORAGEOBJECTS";
const WCHAR wszFILTERCOMPAREOPS[] =L"FILTERCOMPAREOPS";
const WCHAR wszFINDCOMPAREOPS[] =L"FINDCOMPAREOPS";
const WCHAR wszHIDDENCOLUMNS[] =L"HIDDENCOLUMNS";
const WCHAR wszIMMOBILEROWS[] =L"IMMOBILEROWS";
const WCHAR wszLITERALBOOKMARKS[] =L"LITERALBOOKMARKS";
const WCHAR wszLITERALIDENTITY[] =L"LITERALIDENTITY";
const WCHAR wszLOCKMODE[] =L"LOCKMODE";
const WCHAR wszMAXOPENROWS[] =L"MAXOPENROWS";
const WCHAR wszMAXPENDINGROWS[] =L"MAXPENDINGROWS";
const WCHAR wszMAXROWS[] =L"MAXROWS";
const WCHAR wszMAYWRITECOLUMN[] =L"MAYWRITECOLUMN";
const WCHAR wszMEMORYUSAGE[] =L"MEMORYUSAGE";
const WCHAR wszNOTIFICATIONGRANULARITY[] =L"NOTIFICATIONGRANULARITY";
const WCHAR wszNOTIFICATIONPHASES[] =L"NOTIFICATIONPHASES";
const WCHAR wszNOTIFYCOLUMNSET[] =L"NOTIFYCOLUMNSET";
const WCHAR wszNOTIFYROWDELETE[] =L"NOTIFYROWDELETE";
const WCHAR wszNOTIFYROWFIRSTCHANGE[] =L"NOTIFYROWFIRSTCHANGE";
const WCHAR wszNOTIFYROWINSERT[] =L"NOTIFYROWINSERT";
const WCHAR wszNOTIFYROWRESYNCH[] =L"NOTIFYROWRESYNCH";
const WCHAR wszNOTIFYROWSETRELEASE[] =L"NOTIFYROWSETRELEASE";
const WCHAR wszNOTIFYROWSETFETCHPOSITIONCHANGE[]=L"NOTIFYROWSETFETCHPOSITIONCHANGE";
const WCHAR wszNOTIFYROWUNDOCHANGE[] =L"NOTIFYROWUNDOCHANGE";
const WCHAR wszNOTIFYROWUNDODELETE[] =L"NOTIFYROWUNDODELETE";
const WCHAR wszNOTIFYROWUNDOINSERT[] =L"NOTIFYROWUNDOINSERT";
const WCHAR wszNOTIFYROWUPDATE[] =L"NOTIFYROWUPDATE";
const WCHAR wszORDEREDBOOKMARKS[] =L"ORDEREDBOOKMARKS";
const WCHAR wszOTHERINSERT [] =L"OTHERINSERT";
const WCHAR wszOTHERUPDATEDELETE[] =L"OTHERUPDATEDELETE";
const WCHAR wszOWNINSERT[] =L"OWNINSERT";
const WCHAR wszOWNUPDATEDELETE[] =L"OWNUPDATEDELETE";
const WCHAR wszPROPERTIESINERROR[] =L"PROPERTIESINERROR";
const WCHAR wszQUICKRESTART[] =L"QUICKRESTART";
const WCHAR wszREENTRANTEVENTS[] =L"REENTRANTEVENTS";
const WCHAR wszREMOVEDELETED[] =L"REMOVEDELETED";
const WCHAR wszREPORTMULTIPLECHANGES[] =L"REPORTMULTIPLECHANGES";
const WCHAR wszRETURNPENDINGINSERTS[] =L"RETURNPENDINGINSERTS";
const WCHAR wszROWRESTRICT[] =L"ROWRESTRICT";
const WCHAR wszROWSET_ASYNCH[] =L"ROWSET_ASYNCH";
const WCHAR wszROWTHREADMODEL[] =L"ROWTHREADMODEL";
const WCHAR wszSERVERCURSOR[] =L"SERVERCURSOR";
const WCHAR wszSERVERDATAONINSERT[] =L"SERVERDATAONINSERT";
const WCHAR wszTRANSACTEDOBJECT[] =L"TRANSACTEDOBJECT";
const WCHAR wszUPDATABILITY[] =L"UPDATABILITY";
const WCHAR wszUNIQUEROWS[] =L"UNIQUEROWS";
const WCHAR wszSTRONGIDENTITY[] =L"STRONGIDENTITY";
const WCHAR wszIAccessor[] =L"IAccessor";
const WCHAR wszIChapteredRowset[] =L"IChapteredRowset";
const WCHAR wszIColumnsInfo[] =L"IColumnsInfo";
const WCHAR wszIColumnsRowset[] =L"IColumnsRowset";
const WCHAR wszIConnectionPointContainer[] =L"IConnectionPointContainer";
const WCHAR wszIConvertType[] =L"IConvertType";
const WCHAR wszIDBAsynchStatus[] =L"IDBAsynchStatus";
const WCHAR wszILockBytes[] =L"ILockBytes";
const WCHAR wszIMultipleResults[] =L"IMultipleResults";
const WCHAR wszIParentRowset[] =L"IParentRowset";
const WCHAR wszIRowset[] =L"IRowset";
const WCHAR wszIRowsetChange[] =L"IRowsetChange";
const WCHAR wszIRowsetCurrentIndex[] =L"IRowsetCurrentIndex";
// const WCHAR wszIRowsetExactScroll[] =L"IRowsetExactScroll";
const WCHAR wszIRowsetFind[] =L"IRowsetFind";
const WCHAR wszIRowsetIdentity[] =L"IRowsetIdentity";
const WCHAR wszIRowsetIndex[] =L"IRowsetIndex";
const WCHAR wszIRowsetInfo[] =L"IRowsetInfo";
const WCHAR wszIRowsetLocate[] =L"IRowsetLocate";
const WCHAR wszIRowsetRefresh[] =L"IRowsetRefresh";
const WCHAR wszIRowsetResynch[] =L"IRowsetResynch";
const WCHAR wszIRowsetScroll[] =L"IRowsetScroll";
const WCHAR wszIRowsetUpdate[] =L"IRowsetUpdate";
const WCHAR wszIRowsetView[] =L"IRowsetView";
const WCHAR wszISupportErrorInfo[] =L"ISupportErrorInfo";
const WCHAR wszISequentialStream[] =L"ISequentialStream";
const WCHAR wszIStorage[] =L"IStorage";
const WCHAR wszIStream[] =L"IStream";
const WCHAR wszROWSETPROP[] =L"Rowset Property NOT recognized";
const WCHAR wszRESTRICTION[] =L"Restriction not known, so can't test\n";
const WCHAR wszRESTRICTIONNOTSUPPORTED[] =L"This schema/restriction is not supported\n";
// Alter table strings for Primary, Foriegnkeys.
const WCHAR g_wszAddPrimaryKey[] =L"ALTER TABLE %s ADD CONSTRAINT pk%d%s PRIMARY KEY (%s)";
const WCHAR g_wszAddPrimaryKey2[] =L"ALTER TABLE %s ADD CONSTRAINT pk%d%s PRIMARY KEY (%s, %s)";
const WCHAR g_wszAddForeignKey[] =L"ALTER TABLE %s ADD CONSTRAINT fk%d%s FOREIGN KEY (%s) REFERENCES %s (%s)";
const WCHAR g_wszAddForeignKey2[] =L"ALTER TABLE %s ADD CONSTRAINT fk%d%s FOREIGN KEY (%s, %s) REFERENCES %s (%s, %s)";
const WCHAR g_wszDropPrimaryKeyConstraint[] =L"ALTER TABLE %s DROP CONSTRAINT pk%d%s";
const WCHAR g_wszDropForeignKeyConstraint[] =L"ALTER TABLE %s DROP CONSTRAINT fk%d%s";
typedef DWORD RESTRICTIONS;
enum RESTRICTIONSENUM
{
ZERO = 0x0,
FIRST = 0x1,
SECOND = 0x2,
THIRD = 0x4,
FOURTH = 0x8,
FIFTH = 0x10,
SIXTH = 0x20,
SEVENTH = 0x40,
ALLRES = 0x80
};
typedef DWORD SUPPORTEDRESTRICTIONS;
enum SUPPORTEDRESTRICTIONSENUM
{
one = 0x1,
two = 0x2,
three = 0x4,
four = 0x8,
five = 0x10,
six = 0x20,
seven = 0x40
};
enum REQUESTED_SCHEMA
{
SUPPORTED, // only a supported schema
SPECIFIC // schema, supported or not, that I am requesting
};
struct SUP_RESTRICT
{
GUID schema;
ULONG bitmask;
};
#define TYPE_I1 signed char
#define TYPE_I2 SHORT
#define TYPE_I4 LONG
#define TYPE_I8 LARGE_INTEGER
#define TYPE_UI1 BYTE
#define TYPE_UI2 unsigned short
#define TYPE_UI4 unsigned int
#define TYPE_UI8 ULARGE_INTEGER
#define TYPE_R4 float
#define TYPE_R8 double
#define TYPE_CY LARGE_INTEGER
#define TYPE_DECIMAL DBDECIMAL
#define TYPE_NUMERIC DBNUMERIC
#define TYPE_DATE DATE
#define TYPE_BOOL VARIANT_BOOL
#define TYPE_BYTES BYTE *
#define TYPE_BSTR BSTR
#define TYPE_STR char *
#define TYPE_WSTR wchar_t *
#define TYPE_VARIANT VARIANT
#define TYPE_IDISPATCH Dispatch *
#define TYPE_IUNKNOWN IUnknown *
#define TYPE_GUID GUID
#define TYPE_ERROR SCODE
#define TYPE_BYREF void *
#define TYPE_ARRAY SAFEARRAY *
#define TYPE_VECTOR DBVECTOR
#define TYPE_DBDATE DBDATE
#define TYPE_DBTIME DBTIME
#define TYPE_DBTIMESTAMP DBTIMESTAMP
//-----------------------------------------------------------------------------
// MANDATORY SCHEMA
//-----------------------------------------------------------------------------
#define cMANDATORY_SCHEMA 3
#define cSCHEMA 31
//-----------------------------------------------------------------------------
// ROWSET RIIDs, want non-mandatory
//-----------------------------------------------------------------------------
#define cROWSET_RIID 18
const WCHAR * rgwszRIID[]={
L"IID_IAccessor",
L"IID_IColumnsInfo",
L"IID_IColumnsRowset",
L"IID_IConnectionPointContainer",
L"IID_IConvertType",
L"IID_IRowset",
L"IID_IRowsetChange",
L"IID_IRowsetIdentity",
L"IID_IRowsetInfo",
L"IID_IRowsetLocate",
L"IID_IRowsetResynch",
L"IID_IRowsetScroll",
L"IID_IRowsetUpdate",
L"IID_ISupportErrorInfo",
L"IID_IChapteredRowset",
L"IID_IDBAsynchStatus",
L"IID_IRowsetFind",
L"IID_IRowsetView"
};
const IID * rgRowsetIID[]={
&IID_IAccessor,
&IID_IColumnsInfo,
&IID_IColumnsRowset,
&IID_IConnectionPointContainer,
&IID_IConvertType,
&IID_IRowset,
&IID_IRowsetChange,
&IID_IRowsetIdentity,
&IID_IRowsetInfo,
&IID_IRowsetLocate,
&IID_IRowsetResynch,
&IID_IRowsetScroll,
&IID_IRowsetUpdate,
&IID_ISupportErrorInfo,
&IID_IChapteredRowset,
&IID_IDBAsynchStatus,
&IID_IRowsetFind,
&IID_IRowsetView
};
const DBPROPID rgRowsetDBPROP_IID[]={
DBPROP_IAccessor,
DBPROP_IColumnsInfo,
DBPROP_IColumnsRowset,
DBPROP_IConnectionPointContainer,
DBPROP_IConvertType,
DBPROP_IRowset,
DBPROP_IRowsetChange,
DBPROP_IRowsetIdentity,
DBPROP_IRowsetInfo,
DBPROP_IRowsetLocate,
DBPROP_IRowsetResynch,
DBPROP_IRowsetScroll,
DBPROP_IRowsetUpdate,
DBPROP_ISupportErrorInfo,
DBPROP_IChapteredRowset,
DBPROP_IDBAsynchStatus,
DBPROP_IRowsetFind,
DBPROP_IRowsetView
};
//-----------------------------------------------------------------------------
// COLUMNS
//-----------------------------------------------------------------------------
#define cCOLUMNS 28
#define cCOLUMNS_RESTRICTIONS 4
const DBTYPE rgtypeCOLUMNS[cCOLUMNS]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_BOOL,
DBTYPE_WSTR,
DBTYPE_UI4,
DBTYPE_BOOL,
DBTYPE_UI2,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_UI2,
DBTYPE_I2,
DBTYPE_UI4,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
const WCHAR * rgwszCOLUMNS[cCOLUMNS]={
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID",
L"ORDINAL_POSITION",
L"COLUMN_HASDEFAULT",
L"COLUMN_DEFAULT",
L"COLUMN_FLAGS",
L"IS_NULLABLE",
L"DATA_TYPE",
L"TYPE_GUID",
L"CHARACTER_MAXIMUM_LENGTH",
L"CHARACTER_OCTET_LENGTH",
L"NUMERIC_PRECISION",
L"NUMERIC_SCALE",
L"DATETIME_PRECISION",
L"CHARACTER_SET_CATALOG",
L"CHARACTER_SET_SCHEMA",
L"CHARACTER_SET_NAME",
L"COLLATION_CATALOG",
L"COLLATION_SCHEMA",
L"COLLATION_NAME",
L"DOMAIN_CATALOG",
L"DOMAIN_SCHEMA",
L"DOMAIN_NAME",
L"DESCRIPTION"
};
//-----------------------------------------------------------------------------
// TABLES
//-----------------------------------------------------------------------------
#define cTABLES 9
#define cTABLES_RESTRICTIONS 4
const WCHAR * rgwszTABLES[cTABLES]={
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"TABLE_TYPE",
L"TABLE_GUID",
L"DESCRIPTION",
L"TABLE_PROPID",
L"DATE_CREATED",
L"DATE_MODIFIED"
};
const DBTYPE rgtypeTABLES[cTABLES]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_WSTR,
DBTYPE_UI4,
DBTYPE_DATE,
DBTYPE_DATE
};
//-----------------------------------------------------------------------------
// PROVIDER_TYPES
//-----------------------------------------------------------------------------
#define cPROVIDER_TYPES 21
#define cPROVIDER_TYPES_RESTRICTIONS 2
const WCHAR * rgwszPROVIDER_TYPES[cPROVIDER_TYPES]={
L"TYPE_NAME",
L"DATA_TYPE",
L"COLUMN_SIZE",
L"LITERAL_PREFIX",
L"LITERAL_SUFFIX",
L"CREATE_PARAMS",
L"IS_NULLABLE",
L"CASE_SENSITIVE",
L"SEARCHABLE",
L"UNSIGNED_ATTRIBUTE",
L"FIXED_PREC_SCALE",
L"AUTO_UNIQUE_VALUE",
L"LOCAL_TYPE_NAME",
L"MINIMUM_SCALE",
L"MAXIMUM_SCALE",
L"GUID",
L"TYPELIB",
L"VERSION",
L"IS_LONG",
L"BEST_MATCH",
L"IS_FIXEDLENGTH"
};
const DBTYPE rgtypePROVIDER_TYPES[cPROVIDER_TYPES]={
DBTYPE_WSTR,
DBTYPE_UI2,
DBTYPE_UI4,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_UI4,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_WSTR,
DBTYPE_I2,
DBTYPE_I2,
DBTYPE_GUID,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_BOOL
};
//-----------------------------------------------------------------------------
// ASSERTIONS
//-----------------------------------------------------------------------------
#define cASSERTIONS 6
#define cASSERTIONS_RESTRICTIONS 3
const WCHAR * rgwszASSERTIONS[cASSERTIONS]= {
L"CONSTRAINT_CATALOG",
L"CONSTRAINT_SCHEMA",
L"CONSTRAINT_NAME",
L"IS_DEFERRABLE",
L"INITIALLY_DEFERRED",
L"DESCRIPTION"
};
const DBTYPE rgtypeASSERTIONS[cASSERTIONS]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// CHARACTER_SETS
//-----------------------------------------------------------------------------
#define cCHARACTER_SETS 8
#define cCHARACTER_SETS_RESTRICTIONS 3
const WCHAR * rgwszCHARACTER_SETS[cCHARACTER_SETS]={
L"CHARACTER_SET_CATALOG",
L"CHARACTER_SET_SCHEMA",
L"CHARACTER_SET_NAME",
L"FORM_OF_USE",
L"NUMBER_OF_CHARACTERS",
L"DEFAULT_COLLATE_CATALOG",
L"DEFAULT_COLLATE_SCHEMA",
L"DEFAULT_COLLATE_NAME"
};
const DBTYPE rgtypeCHARACTER_SETS[cCHARACTER_SETS]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_I8,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// CHECK_CONSTRAINTS
//-----------------------------------------------------------------------------
#define cCHECK_CONSTRAINTS 5
#define cCHECK_CONSTRAINTS_RESTRICTIONS 3
const WCHAR * rgwszCHECK_CONSTRAINTS[cCHECK_CONSTRAINTS]={
L"CONSTRAINT_CATALOG",
L"CONSTRAINT_SCHEMA",
L"CONSTRAINT_NAME",
L"CHECK_CLAUSE",
L"DESCRIPTION"
};
const DBTYPE rgtypeCHECK_CONSTRAINTS[cCHECK_CONSTRAINTS]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// COLLATIONS
//-----------------------------------------------------------------------------
#define cCOLLATIONS 7
#define cCOLLATIONS_RESTRICTIONS 3
const WCHAR * rgwszCOLLATIONS[cCOLLATIONS]={
L"COLLATION_CATALOG",
L"COLLATION_SCHEMA",
L"COLLATION_NAME",
L"CHARACTER_SET_CATALOG",
L"CHARACTER_SET_SCHEMA",
L"CHARACTER_SET_NAME",
L"PAD_ATTRIBUTE"
};
const DBTYPE rgtypeCOLLATIONS[cCOLLATIONS]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// COLUMN_DOMAIN_USAGE
//-----------------------------------------------------------------------------
#define cCOLUMN_DOMAIN_USAGE 9
#define cCOLUMN_DOMAIN_USAGE_RESTRICTIONS 4
const WCHAR * rgwszCOLUMN_DOMAIN_USAGE[cCOLUMN_DOMAIN_USAGE]= {
L"DOMAIN_CATALOG",
L"DOMAIN_SCHEMA",
L"DOMAIN_NAME",
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID"
};
const DBTYPE rgtypeCOLUMN_DOMAIN_USAGE[cCOLUMN_DOMAIN_USAGE]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4
};
//-----------------------------------------------------------------------------
// COLUMN_PRIVILEGES
//-----------------------------------------------------------------------------
#define cCOLUMN_PRIVILEGES 10
#define cCOLUMN_PRIVILEGES_RESTRICTIONS 6
const WCHAR * rgwszCOLUMN_PRIVILEGES[cCOLUMN_PRIVILEGES]= {
L"GRANTOR",
L"GRANTEE",
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID",
L"PRIVILEGE_TYPE",
L"IS_GRANTABLE"
};
const DBTYPE rgtypeCOLUMN_PRIVILEGES[cCOLUMN_PRIVILEGES]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_WSTR,
DBTYPE_BOOL
};
//-----------------------------------------------------------------------------
// CONSTRAINT_COLUMN_USAGE
//-----------------------------------------------------------------------------
#define cCONSTRAINT_COLUMN_USAGE 9
#define cCONSTRAINT_COLUMN_USAGE_RESTRICTIONS 4
const WCHAR * rgwszCONSTRAINT_COLUMN_USAGE[cCONSTRAINT_COLUMN_USAGE]= {
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID",
L"CONSTRAINT_CATALOG",
L"CONSTRAINT_SCHEMA",
L"CONSTRAINT_NAME"
};
const DBTYPE rgtypeCONSTRAINT_COLUMN_USAGE[cCONSTRAINT_COLUMN_USAGE]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// CONSTRAINT_TABLE_USAGE
//-----------------------------------------------------------------------------
#define cCONSTRAINT_TABLE_USAGE 6
#define cCONSTRAINT_TABLE_USAGE_RESTRICTIONS 3
const WCHAR * rgwszCONSTRAINT_TABLE_USAGE[cCONSTRAINT_TABLE_USAGE]={
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"CONSTRAINT_CATALOG",
L"CONSTRAINT_SCHEMA",
L"CONSTRAINT_NAME"
};
const DBTYPE rgtypeCONSTRAINT_TABLE_USAGE[cCONSTRAINT_TABLE_USAGE]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// KEY_COLUMN_USAGE
//-----------------------------------------------------------------------------
#define cKEY_COLUMN_USAGE 10
#define cKEY_COLUMN_USAGE_RESTRICTIONS 7
const WCHAR * rgwszKEY_COLUMN_USAGE[cKEY_COLUMN_USAGE]={
L"CONSTRAINT_CATALOG",
L"CONSTRAINT_SCHEMA",
L"CONSTRAINT_NAME",
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID",
L"ORDINAL_POSITION"
};
const DBTYPE rgtypeKEY_COLUMN_USAGE[cKEY_COLUMN_USAGE]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_UI4
};
//-----------------------------------------------------------------------------
// PROCEDURES
//-----------------------------------------------------------------------------
#define cPROCEDURES 8
#define cPROCEDURES_RESTRICTIONS 4
#define cPROCEDURE_TYPES 3
const WCHAR * rgwszPROCEDURE_TYPES[cPROCEDURE_TYPES]={
L"DB_PT_UNKNOWN",
L"DB_PT_PROCEDURE",
L"DB_PT_FUNCTION"
};
const WCHAR * rgwszPROCEDURES[cPROCEDURES]={
L"PROCEDURE_CATALOG",
L"PROCEDURE_SCHEMA",
L"PROCEDURE_NAME",
L"PROCEDURE_TYPE",
L"PROCEDURE_DEFINITION",
L"DESCRIPTION",
L"DATE_CREATED",
L"DATE_MODIFIED"
};
const DBTYPE rgtypePROCEDURES[cPROCEDURES]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_I2,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_DATE,
DBTYPE_DATE
};
//-----------------------------------------------------------------------------
// REFERENTIAL_CONSTRAINTS
//-----------------------------------------------------------------------------
#define cREFERENTIAL_CONSTRAINTS 10
#define cREFERENTIAL_CONSTRAINTS_RESTRICTIONS 3
const WCHAR * rgwszREFERENTIAL_CONSTRAINTS[cREFERENTIAL_CONSTRAINTS]={
L"CONSTRAINT_CATALOG",
L"CONSTRAINT_SCHEMA",
L"CONSTRAINT_NAME",
L"UNIQUE_CONSTRAINT_CATALOG",
L"UNIQUE_CONSTRAINT_SCHEMA",
L"UNIQUE_CONSTRAINT_NAME",
L"MATCH_OPTION",
L"UPDATE_RULE",
L"DELETE_RULE",
L"DESCRIPTION"
};
const DBTYPE rgtypeREFERENTIAL_CONSTRAINTS[cREFERENTIAL_CONSTRAINTS]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// SCHEMATA
//-----------------------------------------------------------------------------
#define cSCHEMATA 6
#define cSCHEMATA_RESTRICTIONS 3
const WCHAR * rgwszSCHEMATA[cSCHEMATA]={
L"CATALOG_NAME",
L"SCHEMA_NAME",
L"SCHEMA_OWNER",
L"DEFAULT_CHARACTER_SET_CATALOG",
L"DEFAULT_CHARACTER_SET_SCHEMA",
L"DEFAULT_CHARACTER_SET_NAME"
};
const DBTYPE rgtypeSCHEMATA[cSCHEMATA]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// SQL_LANGUAGES
//-----------------------------------------------------------------------------
#define cSQL_LANGUAGES 7
#define cSQL_LANGUAGES_RESTRICTIONS 0
const WCHAR * rgwszSQL_LANGUAGES[cSQL_LANGUAGES]={
L"SQL_LANGUAGE_SOURCE",
L"SQL_LANGUAGE_YEAR",
L"SQL_LANGUAGE_CONFORMANCE",
L"SQL_LANGUAGE_INTEGRITY",
L"SQL_LANGUAGE_IMPLEMENTATION",
L"SQL_LANGUAGE_BINDING_STYLE",
L"SQL_LANGUAGE_PROGRAMMING_LANGUAGE"
};
const DBTYPE rgtypeSQL_LANGUAGES[cSQL_LANGUAGES]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
};
//-----------------------------------------------------------------------------
// TABLES_INFO
//-----------------------------------------------------------------------------
#define cTABLES_INFO 14
#define cTABLES_INFO_RESTRICTIONS 4
const WCHAR * rgwszTABLES_INFO[cTABLES_INFO]={
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"TABLE_TYPE",
L"TABLE_GUID",
L"BOOKMARKS",
L"BOOKMARK_TYPE",
L"BOOKMARK_DATATYPE",
L"BOOKMARK_MAXIMUM_LENGTH",
L"BOOKMARK_INFORMATION",
L"TABLE_VERSION",
L"CARDINALITY",
L"DESCRIPTION",
L"TABLE_PROPID",
};
const DBTYPE rgtypeTABLES_INFO[cTABLES_INFO]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_BOOL,
DBTYPE_I4,
DBTYPE_UI2,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_I8,
DBTYPE_UI8,
DBTYPE_WSTR,
DBTYPE_UI4
};
//-----------------------------------------------------------------------------
// TABLE_CONSTRAINTS
//-----------------------------------------------------------------------------
#define cTABLE_CONSTRAINTS 10
#define cTABLE_CONSTRAINTS_RESTRICTIONS 7
const WCHAR * rgwszTABLE_CONSTRAINTS[cTABLE_CONSTRAINTS]={
L"CONSTRAINT_CATALOG",
L"CONSTRAINT_SCHEMA",
L"CONSTRAINT_NAME",
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"CONSTRAINT_TYPE",
L"IS_DEFERRABLE",
L"INITIALLY_DEFERRED",
L"DESCRIPTION"
};
const DBTYPE rgtypeTABLE_CONSTRAINTS[cTABLE_CONSTRAINTS]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// TABLE_PRIVILEGES
//-----------------------------------------------------------------------------
#define cTABLE_PRIVILEGES 7
#define cTABLE_PRIVILEGES_RESTRICTIONS 5
const WCHAR * rgwszTABLE_PRIVILEGES[cTABLE_PRIVILEGES]= {
L"GRANTOR",
L"GRANTEE",
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"PRIVILEGE_TYPE",
L"IS_GRANTABLE"
};
const DBTYPE rgtypeTABLE_PRIVILEGES[cTABLE_PRIVILEGES]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_BOOL
};
//-----------------------------------------------------------------------------
// TABLE_STATISTICS
//-----------------------------------------------------------------------------
#define cTABLE_STATISTICS 18
#define cTABLE_STATISTICS_RESTRICTIONS 7
const WCHAR * rgwszTABLESTATISTICS[cTABLE_STATISTICS]={
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"STATISTICS_CATALOG",
L"STATISTICS_SCHEMA",
L"STATISTICS_NAME",
L"STATISTICS_TYPE",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID",
L"ORDINAL_POSITION",
L"SAMPLE_PCT",
L"LAST_UPDATE_TIME",
L"NO_OF_RANGES",
L"COLUMN_CARDINALITY",
L"TUPLE_CARDINALITY",
L"TABLE_CARDINALITY",
L"AVG_COLUMN_LENGTH"
};
const DBTYPE rgtypeTABLESTATISTICS[cTABLE_STATISTICS]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_UI2,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_UI2,
DBTYPE_DATE,
DBTYPE_UI4,
DBTYPE_I8,
DBTYPE_I8,
DBTYPE_I8,
DBTYPE_UI4
};
enum TS_ENUM // Table Statistics column ordinals
{
TS_TABLE_CATALOG = 1,
TS_TABLE_SCHEMA,
TS_TABLE_NAME,
TS_STATISTICS_CATALOG,
TS_STATISTICS_SCHEMA,
TS_STATISTICS_NAME,
TS_STATISTICS_TYPE,
TS_COLUMN_NAME,
TS_COLUMN_GUID,
TS_COLUMN_PROPID,
TS_ORDINAL_POSITION,
TS_SAMPLE_PCT,
TS_LAST_UPDATE_TIME,
TS_NO_OF_RANGES,
TS_COLUMN_CARDINALITY,
TS_TUPLE_CARDINALITY,
TS_TABLE_CARDINALITY,
TS_AVG_COLUMN_LENGTH
};
//-----------------------------------------------------------------------------
// TRANSLATIONS
//-----------------------------------------------------------------------------
#define cTRANSLATIONS 9
#define cTRANSLATIONS_RESTRICTIONS 3
const WCHAR * rgwszTRANSLATIONS[cTRANSLATIONS]={
L"TRANSLATION_CATALOG",
L"TRANSLATION_SCHEMA",
L"TRANSLATION_NAME",
L"SOURCE_CHARACTER_SET_CATALOG",
L"SOURCE_CHARACTER_SET_SCHEMA",
L"SOURCE_CHARACTER_SET_NAME",
L"TARGET_CHARACTER_SET_CATALOG",
L"TARGET_CHARACTER_SET_SCHEMA",
L"TARGET_CHARACTER_SET_NAME"
};
const DBTYPE rgtypeTRANSLATIONS[cTRANSLATIONS]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// TRUSTEE
//-----------------------------------------------------------------------------
#define cTRUSTEE 4
#define cTRUSTEE_RESTRICTIONS 4
const WCHAR * rgwszTRUSTEE[]={
L"TRUSTEE_NAME",
L"TRUSTEE_GUID",
L"TRUSTEE_PROPID",
L"TRUSTEE_TYPE"
};
const DBTYPE rgtypeTRUSTEE[]= {
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_UI4
};
//-----------------------------------------------------------------------------
// USAGE_PRIVILEGES
//-----------------------------------------------------------------------------
#define cUSAGE_PRIVILEGES 8
#define cUSAGE_PRIVILEGES_RESTRICTIONS 6
#define cOBJECT_TYPES 4
const WCHAR * rgwszOBJECT_TYPES[cOBJECT_TYPES]={
L"DOMAIN",
L"CHARACTER_SET",
L"COLLATION",
L"TRANSLATION"
};
const WCHAR * rgwszUSAGE_PRIVILEGES [cUSAGE_PRIVILEGES ]= {
L"GRANTOR",
L"GRANTEE",
L"OBJECT_CATALOG",
L"OBJECT_SCHEMA",
L"OBJECT_NAME",
L"OBJECT_TYPE",
L"PRIVILEGE_TYPE",
L"IS_GRANTABLE"
};
const DBTYPE rgtypeUSAGE_PRIVILEGES [cUSAGE_PRIVILEGES ]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_BOOL
};
//-----------------------------------------------------------------------------
// VIEW_TABLE_USAGE
//-----------------------------------------------------------------------------
#define cVIEW_TABLE_USAGE 6
#define cVIEW_TABLE_USAGE_RESTRICTIONS 3
const WCHAR * rgwszVIEW_TABLE_USAGE[cVIEW_TABLE_USAGE]={
L"VIEW_CATALOG",
L"VIEW_SCHEMA",
L"VIEW_NAME",
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME"
};
const DBTYPE rgtypeVIEW_TABLE_USAGE[cVIEW_TABLE_USAGE]= {
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// VIEW_COLUMN_USAGE
//-----------------------------------------------------------------------------
#define cVIEW_COLUMN_USAGE 9
#define cVIEW_COLUMN_USAGE_RESTRICTIONS 3
const WCHAR * rgwszVIEW_COLUMN_USAGE[cVIEW_COLUMN_USAGE]= {
L"VIEW_CATALOG",
L"VIEW_SCHEMA",
L"VIEW_NAME",
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID"
};
const DBTYPE rgtypeVIEW_COLUMN_USAGE[cVIEW_COLUMN_USAGE]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4
};
//-----------------------------------------------------------------------------
// VIEWS
//-----------------------------------------------------------------------------
#define cVIEWS 9
#define cVIEWS_RESTRICTIONS 3
const WCHAR * rgwszVIEWS[cVIEWS]={
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"VIEW_DEFINITION",
L"CHECK_OPTION",
L"IS_UPDATABLE",
L"DESCRIPTION",
L"DATE_CREATED",
L"DATE_MODIFIED"
};
const DBTYPE rgtypeVIEWS[cVIEWS]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_WSTR,
DBTYPE_DATE,
DBTYPE_DATE
};
//-----------------------------------------------------------------------------
// CATALOGS
//-----------------------------------------------------------------------------
#define cCATALOGS 2
#define cCATALOGS_RESTRICTIONS 1
const WCHAR * rgwszCATALOGS[cCATALOGS]={
L"CATALOG_NAME",
L"DESCRIPTION",
};
const DBTYPE rgtypeCATALOGS[cCATALOGS]={
DBTYPE_WSTR,
DBTYPE_WSTR,
};
//-----------------------------------------------------------------------------
// INDEXES
//-----------------------------------------------------------------------------
#define cINDEXES 25
#define cINDEXES_RESTRICTIONS 5
#define cINDEX_TYPES 4
const WCHAR * rgwszINDEX_TYPES[cINDEX_TYPES]={
L"DBPROP_IT_BTREE",
L"DBPROP_IT_HASH",
L"DBPROP_IT_CONTENT",
L"DBPROP_IT_OTHER"
};
const WCHAR * rgwszINDEXES[cINDEXES]= {
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"INDEX_CATALOG",
L"INDEX_SCHEMA",
L"INDEX_NAME",
L"PRIMARY_KEY",
L"UNIQUE",
L"CLUSTERED",
L"TYPE",
L"FILL_FACTOR",
L"INITIAL_SIZE",
L"NULLS",
L"SORT_BOOKMARKS",
L"AUTO_UPDATE",
L"NULL_COLLATION",
L"ORDINAL_POSITION",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID",
L"COLLATION",
L"CARDINALITY",
L"PAGES",
L"FILTER_CONDITION",
L"INTEGRATED"
};
const DBTYPE rgtypeINDEXES[cINDEXES]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_UI2,
DBTYPE_I4,
DBTYPE_I4,
DBTYPE_I4,
DBTYPE_BOOL,
DBTYPE_BOOL,
DBTYPE_I4,
DBTYPE_UI4,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_I2,
DBTYPE_UI8,
DBTYPE_I4,
DBTYPE_WSTR,
DBTYPE_BOOL
};
//-----------------------------------------------------------------------------
// STATISTICS
//-----------------------------------------------------------------------------
#define cSTATISTICS 4
#define cSTATISTICS_RESTRICTIONS 3
const WCHAR * rgwszSTATISTICS[cSTATISTICS]={
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"CARDINALITY"
};
const DBTYPE rgtypeSTATISTICS[cSTATISTICS]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_UI8,
};
//-----------------------------------------------------------------------------
// PROCEDURE_PARAMETERS
//-----------------------------------------------------------------------------
#define cPROCEDURE_PARAMETERS 17
#define cPROCEDURE_PARAMETERS_RESTRICTIONS 4
const WCHAR * rgwszPROCEDURE_PARAMETERS[cPROCEDURE_PARAMETERS]={
L"PROCEDURE_CATALOG",
L"PROCEDURE_SCHEMA",
L"PROCEDURE_NAME",
L"PARAMETER_NAME",
L"ORDINAL_POSITION",
L"PARAMETER_TYPE",
L"PARAMETER_HASDEFAULT",
L"PARAMETER_DEFAULT",
L"IS_NULLABLE",
L"DATA_TYPE",
L"CHARACTER_MAXIMUM_LENGTH",
L"CHARACTER_OCTET_LENGTH",
L"NUMERIC_PRECISION",
L"NUMERIC_SCALE",
L"DESCRIPTION",
L"TYPE_NAME",
L"LOCAL_TYPE_NAME"
};
const DBTYPE rgtypePROCEDURE_PARAMETERS[cPROCEDURE_PARAMETERS]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_UI2,
DBTYPE_UI2,
DBTYPE_BOOL,
DBTYPE_WSTR,
DBTYPE_BOOL,
DBTYPE_UI2,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_UI2,
DBTYPE_I2,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// FOREIGN KEYS
//-----------------------------------------------------------------------------
#define cFOREIGN_KEYS 18
#define cFOREIGN_KEYS_RESTRICTIONS 6
const WCHAR * rgwszFOREIGN_KEYS[cFOREIGN_KEYS]={
L"PK_TABLE_CATALOG",
L"PK_TABLE_SCHEMA",
L"PK_TABLE_NAME",
L"PK_COLUMN_NAME",
L"PK_COLUMN_GUID",
L"PK_COLUMN_PROPID",
L"FK_TABLE_CATALOG",
L"FK_TABLE_SCHEMA",
L"FK_TABLE_NAME",
L"FK_COLUMN_NAME",
L"FK_COLUMN_GUID",
L"FK_COLUMN_PROPID",
L"ORDINAL",
L"UPDATE_RULE",
L"DELETE_RULE",
L"PK_NAME",
L"FK_NAME",
L"DEFERRABILITY",
};
const DBTYPE rgtypeFOREIGN_KEYS[cFOREIGN_KEYS]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_I2
};
//-----------------------------------------------------------------------------
// PRIMARY KEYS
//-----------------------------------------------------------------------------
#define cPRIMARY_KEYS 8
#define cPRIMARY_KEYS_RESTRICTIONS 3
const WCHAR * rgwszPRIMARY_KEYS[cPRIMARY_KEYS]={
L"TABLE_CATALOG",
L"TABLE_SCHEMA",
L"TABLE_NAME",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID",
L"ORDINAL",
L"PK_NAME"
};
const DBTYPE rgtypePRIMARY_KEYS[cPRIMARY_KEYS]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// PROCEDURE_COLUMNS
//-----------------------------------------------------------------------------
#define cPROCEDURE_COLUMNS 16
#define cPROCEDURE_COLUMNS_RESTRICTIONS 4
const WCHAR * rgwszPROCEDURE_COLUMNS[cPROCEDURE_COLUMNS]={
L"PROCEDURE_CATALOG",
L"PROCEDURE_SCHEMA",
L"PROCEDURE_NAME",
L"COLUMN_NAME",
L"COLUMN_GUID",
L"COLUMN_PROPID",
L"ROWSET_NUMBER",
L"ORDINAL_POSITION",
L"IS_NULLABLE",
L"DATA_TYPE",
L"TYPE_GUID",
L"CHARACTER_MAXIMUM_LENGTH",
L"CHARACTER_OCTET_LENGTH",
L"NUMERIC_PRECISION",
L"NUMERIC_SCALE",
L"DESCRIPTION"
};
const DBTYPE rgtypePROCEDURE_COLUMNS[cPROCEDURE_COLUMNS]={
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_WSTR,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_BOOL,
DBTYPE_UI2,
DBTYPE_GUID,
DBTYPE_UI4,
DBTYPE_UI4,
DBTYPE_UI2,
DBTYPE_I2,
DBTYPE_WSTR
};
//-----------------------------------------------------------------------------
// Histogram Rowset column info
//-----------------------------------------------------------------------------
#define cHistogramCols 4
const WCHAR * rgwszHistogramCols[cHistogramCols]={
L"RANGE_HI_KEY",
L"RANGE_ROWS",
L"EQ_ROWS",
L"DISTINCT_RANGE_ROWS"
};
DBTYPE rgtypeHistogramCols[cHistogramCols]={
DBTYPE_EMPTY, // Changed at runtime to match base column
DBTYPE_R8,
DBTYPE_R8,
DBTYPE_I8
};
//-----------------------------------------------------------------------------
// Updateable Properties
//-----------------------------------------------------------------------------
#define cUPDATE_PROPERTIES 6
const DBPROPID rgUpdateProperties[cUPDATE_PROPERTIES]=
{
DBPROP_APPENDONLY,
DBPROP_OTHERINSERT,
DBPROP_OTHERUPDATEDELETE,
DBPROP_REMOVEDELETED,
DBPROP_IRowsetChange,
DBPROP_IRowsetUpdate
};
const WCHAR * rgwszUpdateProperties[cUPDATE_PROPERTIES]=
{
L"DBPROP_APPENDONLY",
L"DBPROP_OTHERINSERT",
L"DBPROP_OTHERUPDATEDELETE",
L"DBPROP_REMOVEDELETED",
L"DBPROP_IRowsetChange",
L"DBPROP_IRowsetUpdate"
};
inline ULONG
GetLongRandomNumber()
{
LONG num = 0;
static ULONG seed=5;
// Seed the random number generator
srand((unsigned)time(NULL)*seed);
// We don't want a number more than 4 characters.
num = rand()%99999;
// Update the seed value
seed = (ULONG)num;
return (num < 0)? (0-num):(num);
}
const GUID * g_prgSchemas[] =
{
&DBSCHEMA_ASSERTIONS,
&DBSCHEMA_CATALOGS,
&DBSCHEMA_CHARACTER_SETS,
&DBSCHEMA_COLLATIONS,
&DBSCHEMA_COLUMNS,
&DBSCHEMA_CHECK_CONSTRAINTS,
&DBSCHEMA_CONSTRAINT_COLUMN_USAGE,
&DBSCHEMA_CONSTRAINT_TABLE_USAGE,
&DBSCHEMA_KEY_COLUMN_USAGE,
&DBSCHEMA_REFERENTIAL_CONSTRAINTS,
&DBSCHEMA_TABLE_CONSTRAINTS,
&DBSCHEMA_COLUMN_DOMAIN_USAGE,
&DBSCHEMA_INDEXES,
&DBSCHEMA_COLUMN_PRIVILEGES,
&DBSCHEMA_TABLE_PRIVILEGES,
&DBSCHEMA_USAGE_PRIVILEGES,
&DBSCHEMA_PROCEDURES,
&DBSCHEMA_SCHEMATA,
&DBSCHEMA_SQL_LANGUAGES,
&DBSCHEMA_STATISTICS,
&DBSCHEMA_TABLES,
&DBSCHEMA_TABLES_INFO,
&DBSCHEMA_TRANSLATIONS,
&DBSCHEMA_PROVIDER_TYPES,
&DBSCHEMA_VIEWS,
&DBSCHEMA_VIEW_COLUMN_USAGE,
&DBSCHEMA_VIEW_TABLE_USAGE,
&DBSCHEMA_PROCEDURE_PARAMETERS,
&DBSCHEMA_FOREIGN_KEYS,
&DBSCHEMA_PRIMARY_KEYS,
&DBSCHEMA_PROCEDURE_COLUMNS,
&DBSCHEMA_TABLE_STATISTICS
};
// This lists provider specific syntax for sorting and statistics updating.
// For the statistics update syntax, the test currently expects that if there is a replacable param
// then it is the schema (owner).
struct DBMSList
{
LPWSTR pwszDBMSName;
LPWSTR pwszUpdateStatsFormat;
LPWSTR pwszSortSetting;
} g_DBMSList[] =
{
// L"Microsoft SQL Server", L"sp_updatestats", NULL,
// L"Oracle", L"{call DBMS_STATS.GATHER_SCHEMA_STATS('%s',NULL, FALSE, 'FOR ALL COLUMNS SIZE 10')}", L"ALTER SESSION SET NLS_SORT = PUNCTUATION"
L"Microsoft SQL Server", L"update statistics %s", NULL,
L"Oracle", L"analyze table %s estimate statistics", L"ALTER SESSION SET NLS_SORT = PUNCTUATION"
// L"Oracle", L"analyze table %s compute statistics for all columns",L"ALTER SESSION SET NLS_SORT = PUNCTUATION"
};
typedef struct tagColList
{
LPWSTR pwszName;
DBTYPE wType;
ULONG cValidVals;
LPVOID pValidVals;
BOOL fAllowNull;
} ColList;
typedef struct tagSchemaList
{
const GUID * pguid;
LPWSTR pwszName;
ULONG cRestrictions;
ULONG * pulRestrictions;
RESTRICT_CAT * peRestrictCat;
ULONG cColumns;
ColList * pColList;
ULONG cSort;
ULONG * pulSort;
ULONG * pulColCount; // Count of columns in this schema for each OLEDB version
} SchemaList;
enum RESTRICTIONS_ENUM
{
// Restriction Values
RV_ONE = 1,
RV_TWO,
RV_THREE,
RV_FOUR,
RV_FIVE,
RV_SIX,
RV_SEVEN,
RV_NULL = 1000,
RV_ALL,
};
enum RESTRICT_ARRAY
{
RT_CACHED,
RT_SUPPORTED,
RT_CUSTOM
};
enum eOLEDBVER
{
// Version of OLEDB supported by the provider
VER_20 = 0,
VER_21,
VER_25,
VER_26,
VER_27,
VER_MAX // Must remain last enum value
};
//-----------------------------------------------------------------------------
// DBSCHEMA_ASSERTIONS
//-----------------------------------------------------------------------------
VARIANT_BOOL rgBoolList[] = {VARIANT_TRUE, VARIANT_FALSE};
enum ASSERTIONS_ENUM // Column ordinals
{
AS_CONSTRAINT_CATALOG = 1,
AS_CONSTRAINT_SCHEMA,
AS_CONSTRAINT_NAME,
AS_IS_DEFERRABLE,
AS_INITIALLY_DEFERRED,
AS_DESCRIPTION
};
ULONG rgAssertionsRestrict[] = {AS_CONSTRAINT_CATALOG, AS_CONSTRAINT_SCHEMA, AS_CONSTRAINT_NAME};
RESTRICT_CAT rgAssertionsCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE};
ULONG rgAssertionsSort[] = {AS_CONSTRAINT_CATALOG, AS_CONSTRAINT_SCHEMA, AS_CONSTRAINT_NAME};
ColList AssertionsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"CONSTRAINT_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRINT_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"IS_DEFERRABLE", DBTYPE_BOOL, NUMELEM(rgBoolList),rgBoolList, FALSE,
L"INITIALLY_DEFERRED", DBTYPE_BOOL, NUMELEM(rgBoolList),rgBoolList, FALSE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE
};
//-----------------------------------------------------------------------------
// DBSCHEMA_CATALOGS
//-----------------------------------------------------------------------------
enum CATALOGS_ENUM
{
CATS_CATALOG_NAME = 1,
CATS_DESCRIPTION
};
ULONG rgCatalogsSort[] = {CATS_CATALOG_NAME};
ULONG rgCatalogsRestrict[] = {CATS_CATALOG_NAME};
RESTRICT_CAT rgCatalogsCat[]= {RC_CATALOG};
ColList CatalogsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"CATALOG_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_CHARACTER_SETS
//-----------------------------------------------------------------------------
enum CHARACTER_SETS_ENUM
{
CHSS_CHARACTER_SET_CATALOG = 1,
CHSS_CHARACTER_SET_SCHEMA,
CHSS_CHARACTER_SET_NAME,
CHSS_FORM_OF_USE,
CHSS_NUMBER_OF_CHARACTERS,
CHSS_DEFAULT_COLLATE_CATALOG,
CHSS_DEFAULT_COLLATE_SCHEMA,
CHSS_DEFAULT_COLLATE_NAME
};
ULONG rgCharacterSetsSort[] = {CHSS_CHARACTER_SET_CATALOG, CHSS_CHARACTER_SET_SCHEMA, CHSS_CHARACTER_SET_NAME};
ULONG rgCharacterSetsRestrict[] = {CHSS_CHARACTER_SET_CATALOG, CHSS_CHARACTER_SET_SCHEMA, CHSS_CHARACTER_SET_NAME};
RESTRICT_CAT rgCharacterSetsCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE};
ColList CharacterSetsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"CHARACTER_SET_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CHARACTER_SET_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CHARACTER_SET_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"FORM_OF_USE", DBTYPE_WSTR, 0, NULL, FALSE,
L"NUMBER_OF_CHARACTERS", DBTYPE_I8, 0, NULL, FALSE,
L"DEFAULT_COLLATE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"DEFAULT_COLLATE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"DEFAULT_COLLATE_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_COLLATIONS
//-----------------------------------------------------------------------------
LPWSTR rgwszPadVals[] = {L"NO PAD", L"PAD SPACE"};
enum COLLATIONS_ENUM
{
COLLS_COLLATION_CATALOG = 1,
COLLS_COLLATION_SCHEMA,
COLLS_COLLATION_NAME,
COLLS_CHARACTER_SET_CATALOG,
COLLS_CHARACTER_SET_SCHEMA,
COLLS_CHARACTER_SET_NAME,
COLLS_PAD_ATTRIBUTE
};
ULONG rgCollationsSort[] = {COLLS_COLLATION_CATALOG, COLLS_COLLATION_SCHEMA, COLLS_COLLATION_NAME,
COLLS_CHARACTER_SET_CATALOG, COLLS_CHARACTER_SET_SCHEMA, COLLS_CHARACTER_SET_NAME};
ULONG rgCollationsRestrict[] = {COLLS_COLLATION_CATALOG, COLLS_COLLATION_SCHEMA, COLLS_COLLATION_NAME};
RESTRICT_CAT rgCollationsCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE};
ColList CollationsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"COLLATION_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLLATION_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLLATION_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"CHARACTER_SET_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CHARACTER_SET_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CHARACTER_SET_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"PAD_ATTRIBUTE", DBTYPE_WSTR, NUMELEM(rgwszPadVals), rgwszPadVals,FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_COLUMNS
//-----------------------------------------------------------------------------
// OLEDB defined columns
enum COLUMNS_ENUM
{
COLS_TABLE_CATALOG = 1,
COLS_TABLE_SCHEMA,
COLS_TABLE_NAME,
COLS_COLUMN_NAME,
COLS_COLUMN_GUID,
COLS_COLUMN_PROPID,
COLS_ORDINAL_POSITION,
COLS_COLUMN_HASDEFAULT,
COLS_COLUMN_DEFAULT,
COLS_COLUMN_FLAGS,
COLS_IS_NULLABLE,
COLS_DATA_TYPE,
COLS_TYPE_GUID,
COLS_CHARACTER_MAXIMUM_LENGTH,
COLS_CHARACTER_OCTET_LENGTH,
COLS_NUMERIC_PRECISION,
COLS_NUMERIC_SCALE,
COLS_DATETIME_PRECISION,
COLS_CHARACTER_SET_CATALOG,
COLS_CHARACTER_SET_SCHEMA,
COLS_CHARACTER_SET_NAME,
COLS_COLLATION_CATALOG,
COLS_COLLATION_SCHEMA,
COLS_COLLATION_NAME,
COLS_DOMAIN_CATALOG,
COLS_DOMAIN_SCHEMA,
COLS_DOMAIN_NAME,
COLS_DESCRIPTION
};
ULONG rgColumnsRestrict[] = {COLS_TABLE_CATALOG, COLS_TABLE_SCHEMA, COLS_TABLE_NAME, COLS_COLUMN_NAME};
RESTRICT_CAT rgColumnsCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_COLUMN};
ULONG rgColumnsSort[] = {COLS_TABLE_CATALOG, COLS_TABLE_SCHEMA, COLS_TABLE_NAME};
ULONG rgColumnsCount[VER_MAX] = {COLS_DESCRIPTION};
ColList ColumnsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"ORDINAL_POSITION", DBTYPEFOR_DBORDINAL,0, NULL, TRUE,
L"COLUMN_HASDEFAULT", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"COLUMN_DEFAULT", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_FLAGS", DBTYPE_UI4, 0, NULL, FALSE,
L"IS_NULLABLE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"DATA_TYPE", DBTYPE_UI2, 0, NULL, FALSE,
L"TYPE_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"CHARACTER_MAXIMUM_LENGTH", DBTYPEFOR_DBLENGTH,0, NULL, TRUE,
L"CHARACTER_OCTET_LENGTH", DBTYPEFOR_DBLENGTH,0, NULL, TRUE,
L"NUMERIC_PRECISION", DBTYPE_UI2, 0, NULL, TRUE,
L"NUMERIC_SCALE", DBTYPE_I2, 0, NULL, TRUE,
L"DATETIME_PRECISION", DBTYPE_UI4, 0, NULL, TRUE,
L"CHARACTER_SET_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CHARACTER_SET_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CHARACTER_SET_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLLATION_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLLATION_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLLATION_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"DOMAIN_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"DOMAIN_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"DOMAIN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_CHECK_CONSTRAINTS
//-----------------------------------------------------------------------------
enum CHECK_CONSTRAINTS_ENUM
{
CCS_CONSTRAINT_CATALOG = 1,
CCS_CONSTRAINT_SCHEMA,
CCS_CONSTRAINT_NAME,
CCS_CHECK_CLAUSE,
CCS_DESCRIPTION,
};
ULONG rgCheckConstraintsSort[] = {CCS_CONSTRAINT_CATALOG, CCS_CONSTRAINT_SCHEMA, CCS_CONSTRAINT_NAME};
ULONG rgCheckConstraintsRestrict[] = {CCS_CONSTRAINT_CATALOG, CCS_CONSTRAINT_SCHEMA, CCS_CONSTRAINT_NAME};
RESTRICT_CAT rgCheckConstraintsCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_CONSTRAINT};
ColList CheckConstraintsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"CONSTRAINT_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"CHECK_CLAUSE", DBTYPE_WSTR, 0, NULL, FALSE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE
//-----------------------------------------------------------------------------
enum CHECK_CONSTRAINTS_BY_TABLE_ENUM
{
CCBTS_TABLE_CATALOG = 1,
CCBTS_TABLE_SCHEMA,
CCBTS_TABLE_NAME,
CCBTS_CONSTRAINT_CATALOG,
CCBTS_CONSTRAINT_SCHEMA,
CCBTS_CONSTRAINT_NAME,
CCBTS_CHECK_CLAUSE,
CCBTS_DESCRIPTION,
};
ULONG rgCheckConstraintsByTableRestrict[] = {CCBTS_TABLE_CATALOG, CCBTS_TABLE_SCHEMA, CCBTS_TABLE_NAME, CCBTS_CONSTRAINT_CATALOG,
CCBTS_CONSTRAINT_SCHEMA, CCBTS_CONSTRAINT_NAME};
RESTRICT_CAT rgCheckConstraintsByTableCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_CATALOG, RC_SCHEMA, RC_CONSTRAINT};
ULONG rgCheckConstraintsByTableSort[] = {CCBTS_TABLE_CATALOG, CCBTS_TABLE_SCHEMA, CCBTS_TABLE_NAME, CCBTS_CONSTRAINT_CATALOG,
CCBTS_CONSTRAINT_SCHEMA, CCBTS_CONSTRAINT_NAME};
ColList CheckConstraintsByTableCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"CONSTRAINT_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"CHECK_CLAUSE", DBTYPE_WSTR, 0, NULL, FALSE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_COLUMN_DOMAIN_USAGE
//-----------------------------------------------------------------------------
enum COLUMN_DOMAIN_USAGE_ENUM
{
CDUS_DOMAIN_CATALOG = 1,
CDUS_DOMAIN_SCHEMA,
CDUS_DOMAIN_NAME,
CDUS_TABLE_CATALOG,
CDUS_TABLE_SCHEMA,
CDUS_TABLE_NAME,
CDUS_COLUMN_NAME,
CDUS_COLUMN_GUID,
CDUS_COLUMN_PROPID,
};
ULONG rgColumnDomainUsageSort[] = {CDUS_DOMAIN_CATALOG, CDUS_DOMAIN_SCHEMA, CDUS_DOMAIN_NAME, CDUS_TABLE_CATALOG,
CDUS_TABLE_SCHEMA, CDUS_TABLE_NAME, CDUS_COLUMN_NAME, CDUS_COLUMN_GUID, CDUS_COLUMN_PROPID};
ULONG rgColumnDomainUsageRestrict[] = {CDUS_DOMAIN_CATALOG, CDUS_DOMAIN_SCHEMA, CDUS_DOMAIN_NAME, CDUS_COLUMN_NAME};
RESTRICT_CAT rgColumnDomainUsageCat[]= {RC_CATALOG, RC_SCHEMA, RC_UND, RC_COLUMN};
ColList ColumnDomainUsageCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"DOMAIN_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"DOMAIN_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"DOMAIN_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_COLUMN_PRIVILEGES
//-----------------------------------------------------------------------------
LPWSTR rgwszPrivilegeTypeVals[] = {L"SELECT", L"DELETE", L"INSERT", L"UPDATE", L"REFERENCES"};
enum COLUMN_PRIVILEGES_ENUM
{
CPS_GRANTOR = 1,
CPS_GRANTEE,
CPS_TABLE_CATALOG,
CPS_TABLE_SCHEMA,
CPS_TABLE_NAME,
CPS_COLUMN_NAME,
CPS_COLUMN_GUID,
CPS_COLUMN_PROPID,
CPS_PRIVILEGE_TYPE,
CPS_IS_GRANTABLE,
};
ULONG rgColumnPrivilegesSort[] = {CPS_TABLE_CATALOG, CPS_TABLE_SCHEMA, CPS_TABLE_NAME, CPS_COLUMN_NAME,
CPS_COLUMN_GUID, CPS_COLUMN_PROPID, CPS_PRIVILEGE_TYPE};
ULONG rgColumnPrivilegesRestrict[] = {CPS_TABLE_CATALOG, CPS_TABLE_SCHEMA, CPS_TABLE_NAME, CPS_COLUMN_NAME,
CPS_GRANTOR, CPS_GRANTEE};
RESTRICT_CAT rgColumnPrivilegesCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_COLUMN, RC_USER, RC_USER};
ColList ColumnPrivilegesCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"GRANTOR", DBTYPE_WSTR, 0, NULL, FALSE,
L"GRANTEE", DBTYPE_WSTR, 0, NULL, FALSE,
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"PRIVILEGE_TYPE", DBTYPE_WSTR, NUMELEM(rgwszPrivilegeTypeVals), rgwszPrivilegeTypeVals, FALSE,
L"IS_GRANTABLE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_CONSTRAINT_COLUMN_USAGE
//-----------------------------------------------------------------------------
enum CONSTRAINT_COLUMN_USAGE_ENUM
{
CCUS_TABLE_CATALOG = 1,
CCUS_TABLE_SCHEMA,
CCUS_TABLE_NAME,
CCUS_COLUMN_NAME,
CCUS_COLUMN_GUID,
CCUS_COLUMN_PROPID,
CCUS_CONSTRAINT_CATALOG,
CCUS_CONSTRAINT_SCHEMA,
CCUS_CONSTRAINT_NAME,
};
ULONG rgConstraintColumnUsageRestrict[] = {CCUS_TABLE_CATALOG, CCUS_TABLE_SCHEMA, CCUS_TABLE_NAME, CCUS_COLUMN_NAME,
CCUS_CONSTRAINT_CATALOG, CCUS_CONSTRAINT_SCHEMA, CCUS_CONSTRAINT_NAME};
ULONG rgConstraintColumnUsageSort[] = {CCUS_TABLE_CATALOG, CCUS_TABLE_SCHEMA, CCUS_TABLE_NAME, CCUS_COLUMN_NAME,
CCUS_COLUMN_GUID, CCUS_COLUMN_PROPID, CCUS_CONSTRAINT_CATALOG, CCUS_CONSTRAINT_SCHEMA, CCUS_CONSTRAINT_NAME};
RESTRICT_CAT rgConstraintColumnUsageCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_COLUMN, RC_UND, RC_UND, RC_CATALOG, RC_SCHEMA, RC_CONSTRAINT};
ColList ConstraintColumnUsageCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"CONSTRAINT_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_CONSTRAINT_TABLE_USAGE
//-----------------------------------------------------------------------------
enum CONSTRAINT_TABLE_USAGE_ENUM
{
CTUS_TABLE_CATALOG = 1,
CTUS_TABLE_SCHEMA,
CTUS_TABLE_NAME,
CTUS_CONSTRAINT_CATALOG,
CTUS_CONSTRAINT_SCHEMA,
CTUS_CONSTRAINT_NAME,
};
ULONG rgConstraintTableUsageSort[] = {CTUS_TABLE_CATALOG, CTUS_TABLE_SCHEMA, CTUS_TABLE_NAME, CTUS_CONSTRAINT_CATALOG,
CTUS_CONSTRAINT_SCHEMA, CTUS_CONSTRAINT_NAME};
ULONG rgConstraintTableUsageRestrict[] = {CCUS_TABLE_CATALOG, CCUS_TABLE_SCHEMA, CCUS_TABLE_NAME, CCUS_COLUMN_NAME,
CCUS_CONSTRAINT_CATALOG, CCUS_CONSTRAINT_SCHEMA, CCUS_CONSTRAINT_NAME};
RESTRICT_CAT rgConstraintTableUsageCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_COLUMN, RC_CATALOG, RC_SCHEMA, RC_CONSTRAINT};
ColList ConstraintTableUsageCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"CONSTRAINT_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_FOREIGN_KEYS
//-----------------------------------------------------------------------------
LPWSTR rgwszRuleVals[] = {L"CASCADE", L"SET NULL", L"SET DEFAULT", L"NO ACTION"};
SHORT rgDeferrabilityVals[] = {DBPROPVAL_DF_INITIALLY_DEFERRED, DBPROPVAL_DF_INITIALLY_IMMEDIATE,
DBPROPVAL_DF_NOT_DEFERRABLE};
enum FOREIGN_KEYS
{
FKS_PK_TABLE_CATALOG = 1,
FKS_PK_TABLE_SCHEMA,
FKS_PK_TABLE_NAME,
FKS_PK_COLUMN_NAME,
FKS_PK_COLUMN_GUID,
FKS_PK_COLUMN_PROPID,
FKS_FK_TABLE_CATALOG,
FKS_FK_TABLE_SCHEMA,
FKS_FK_TABLE_NAME,
FKS_FK_COLUMN_NAME,
FKS_FK_COLUMN_GUID,
FKS_FK_COLUMN_PROPID,
FKS_ORDINAL,
FKS_UPDATE_RULE,
FKS_DELETE_RULE,
FKS_PK_NAME,
FKS_FK_NAME,
FKS_DEFERRABILITY,
};
ULONG rgForeignKeysRestrict[] = {FKS_PK_TABLE_CATALOG, FKS_PK_TABLE_SCHEMA, FKS_PK_TABLE_NAME,
FKS_FK_TABLE_CATALOG, FKS_FK_TABLE_SCHEMA, FKS_FK_TABLE_NAME
};
ULONG rgForeignKeysSort[] = {FKS_FK_TABLE_CATALOG, FKS_FK_TABLE_SCHEMA, FKS_FK_TABLE_NAME};
RESTRICT_CAT rgForeignKeysCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_CATALOG, RC_SCHEMA, RC_TABLE};
ColList ForeignKeysCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"PK_TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"PK_TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"PK_TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"PK_COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"PK_COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"PK_COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"FK_TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"FK_TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"FK_TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"FK_COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"FK_COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"FK_COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"ORDINAL", DBTYPEFOR_DBORDINAL,0, NULL, FALSE,
L"UPDATE_RULE", DBTYPE_WSTR, NUMELEM(rgwszRuleVals), rgwszRuleVals, TRUE,
L"DELETE_RULE", DBTYPE_WSTR, NUMELEM(rgwszRuleVals), rgwszRuleVals, TRUE,
L"PK_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"FK_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"DEFERRABILITY", DBTYPE_I2, NUMELEM(rgDeferrabilityVals), rgDeferrabilityVals, FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_INDEXES
//-----------------------------------------------------------------------------
USHORT rgIndexTypeVals[]={DBPROPVAL_IT_BTREE, DBPROPVAL_IT_HASH, DBPROPVAL_IT_CONTENT, DBPROPVAL_IT_OTHER};
LONG rgNullVals[] = {DBPROPVAL_IN_DISALLOWNULL, DBPROPVAL_IN_IGNORENULL, DBPROPVAL_IN_IGNOREANYNULL};
LONG rgNullCollationVals[] = {DBPROPVAL_NC_END, DBPROPVAL_NC_START, DBPROPVAL_NC_HIGH, DBPROPVAL_NC_LOW};
LONG rgCollationVals[] = {DB_COLLATION_ASC, DB_COLLATION_DESC};
enum INDEXES_ENUM
{
IS_TABLE_CATALOG = 1,
IS_TABLE_SCHEMA,
IS_TABLE_NAME,
IS_INDEX_CATALOG,
IS_INDEX_SCHEMA,
IS_INDEX_NAME,
IS_PRIMARY_KEY,
IS_UNIQUE,
IS_CLUSTERED,
IS_TYPE,
IS_FILL_FACTOR,
IS_INITIAL_SIZE,
IS_NULLS,
IS_SORT_BOOKMARKS,
IS_AUTO_UPDATE,
IS_NULL_COLLATION,
IS_ORDINAL_POSITION,
IS_COLUMN_NAME,
IS_COLUMN_GUID,
IS_COLUMN_PROPID,
IS_COLLATION,
IS_CARDINALITY,
IS_PAGES,
IS_FILTER_CONDITION,
IS_INTEGRATED,
};
ULONG rgIndexesRestrict[] = {IS_TABLE_CATALOG, IS_TABLE_SCHEMA, IS_INDEX_NAME, IS_TYPE, IS_TABLE_NAME};
ULONG rgIndexesSort[] = {IS_UNIQUE, IS_TYPE, IS_INDEX_CATALOG, IS_INDEX_SCHEMA,
IS_INDEX_NAME, IS_ORDINAL_POSITION};
RESTRICT_CAT rgIndexesCat[]= {RC_CATALOG, RC_SCHEMA, RC_INDEX, RC_UND, RC_TABLE};
ColList IndexesCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"INDEX_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"INDEX_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"INDEX_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"PRIMARY_KEY", DBTYPE_BOOL, 0, NULL, TRUE,
L"UNIQUE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"CLUSTERED", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
L"TYPE", DBTYPE_UI2, NUMELEM(rgIndexTypeVals), rgIndexTypeVals, TRUE,
L"FILL_FACTOR", DBTYPE_I4, 0, NULL, TRUE,
L"INITIAL_SIZE", DBTYPEFOR_DBROWCOUNT,0, NULL, TRUE,
L"NULLS", DBTYPE_I4, NUMELEM(rgNullVals), rgNullVals, TRUE,
L"SORT_BOOKMARKS", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
L"AUTO_UPDATE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"NULL_COLLATION", DBTYPE_I4, NUMELEM(rgNullCollationVals), rgNullCollationVals, FALSE,
L"ORDINAL_POSITION", DBTYPEFOR_DBORDINAL,0, NULL, TRUE,
L"COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"COLLATION", DBTYPE_I2, NUMELEM(rgCollationVals),rgCollationVals, TRUE,
L"CARDINALITY", DBTYPE_UI8, 0, NULL, TRUE,
L"PAGES", DBTYPE_I4, 0, NULL, TRUE,
L"FILTER_CONDITION", DBTYPE_WSTR, 0, NULL, TRUE,
L"INTEGRATED", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_KEY_COLUMN_USAGE
//-----------------------------------------------------------------------------
enum KEY_COLUMN_USAGE_ENUM
{
KCUS_CONSTRAINT_CATALOG = 1,
KCUS_CONSTRAINT_SCHEMA,
KCUS_CONSTRAINT_NAME,
KCUS_TABLE_CATALOG,
KCUS_TABLE_SCHEMA,
KCUS_TABLE_NAME,
KCUS_COLUMN_NAME,
KCUS_COLUMN_GUID,
KCUS_COLUMN_PROPID,
KCUS_ORDINAL_POSITION,
};
ULONG rgKeyColumnUsageRestrict[] = {KCUS_CONSTRAINT_CATALOG, KCUS_CONSTRAINT_SCHEMA, KCUS_CONSTRAINT_NAME, KCUS_TABLE_CATALOG,
KCUS_TABLE_SCHEMA, KCUS_TABLE_NAME, KCUS_COLUMN_NAME};
ULONG rgKeyColumnUsageSort[] = {KCUS_CONSTRAINT_CATALOG, KCUS_CONSTRAINT_SCHEMA, KCUS_CONSTRAINT_NAME, KCUS_TABLE_CATALOG,
KCUS_TABLE_SCHEMA, KCUS_TABLE_NAME, KCUS_ORDINAL_POSITION};
RESTRICT_CAT rgKeyColumnUsageCat[]= {RC_CATALOG, RC_SCHEMA, RC_CONSTRAINT, RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_COLUMN};
ColList KeyColumnUsageCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"CONSTRAINT_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"ORDINAL_POSITION", DBTYPEFOR_DBORDINAL, 0, NULL, FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_PRIMARY_KEYS
//-----------------------------------------------------------------------------
enum PRIMARY_KEYS
{
PKS_TABLE_CATALOG = 1,
PKS_TABLE_SCHEMA,
PKS_TABLE_NAME,
PKS_COLUMN_NAME,
PKS_COLUMN_GUID,
PKS_COLUMN_PROPID,
PKS_ORDINAL,
PKS_PK_NAME,
};
ULONG rgPrimaryKeysRestrict[] = {PKS_TABLE_CATALOG, PKS_TABLE_SCHEMA, PKS_TABLE_NAME};
ULONG rgPrimaryKeysSort[] = {PKS_TABLE_CATALOG, PKS_TABLE_SCHEMA, PKS_TABLE_NAME};
RESTRICT_CAT rgPrimaryKeysCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE};
ColList PrimaryKeysCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"ORDINAL", DBTYPEFOR_DBORDINAL,0, NULL, FALSE,
L"PK_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_PROCEDURES
//-----------------------------------------------------------------------------
SHORT rgProcedureTypeVals[]={DB_PT_UNKNOWN, DB_PT_PROCEDURE, DB_PT_FUNCTION};
enum PROCEDURES
{
PRS_PROCEDURE_CATALOG = 1,
PRS_PROCEDURE_SCHEMA,
PRS_PROCEDURE_NAME,
PRS_PROCEDURE_TYPE,
PRS_PROCEDURE_DEFINITION,
PRS_DESCRIPTION,
PRS_DATE_CREATED,
PRS_DATE_MODIFIED,
};
ULONG rgProceduresRestrict[] = {PRS_PROCEDURE_CATALOG, PRS_PROCEDURE_SCHEMA, PRS_PROCEDURE_NAME, PRS_PROCEDURE_TYPE};
ULONG rgProceduresSort[] = {PRS_PROCEDURE_CATALOG, PRS_PROCEDURE_SCHEMA, PRS_PROCEDURE_NAME};
RESTRICT_CAT rgProceduresCat[]= {RC_CATALOG, RC_SCHEMA, RC_PROCEDURE};
ColList ProceduresCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"PROCEDURE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"PROCEDURE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"PROCEDURE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"PROCEDURE_TYPE", DBTYPE_I2, NUMELEM(rgProcedureTypeVals),rgProcedureTypeVals, FALSE,
L"PROCEDURE_DEFINITION", DBTYPE_WSTR, 0, NULL, TRUE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
L"DATE_CREATED", DBTYPE_DATE, 0, NULL, TRUE,
L"DATE_MODIFIED", DBTYPE_DATE, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_PROCEDURE_COLUMNS
//-----------------------------------------------------------------------------
enum PROCEDURE_COLUMNS
{
PCS_PROCEDURE_CATALOG = 1,
PCS_PROCEDURE_SCHEMA,
PCS_PROCEDURE_NAME,
PCS_COLUMN_NAME,
PCS_COLUMN_GUID,
PCS_COLUMN_PROPID,
PCS_ROWSET_NUMBER,
PCS_ORDINAL_POSITION,
PCS_COLS_IS_NULLABLE,
PCS_COLS_DATA_TYPE,
PCS_COLS_TYPE_GUID,
PCS_COLS_CHARACTER_MAXIMUM_LENGTH,
PCS_COLS_CHARACTER_OCTET_LENGTH,
PCS_COLS_NUMERIC_PRECISION,
PCS_COLS_NUMERIC_SCALE,
PCS_COLS_DESCRIPTION
};
ULONG rgProcedureColumnsRestrict[] = {PCS_PROCEDURE_CATALOG, PCS_PROCEDURE_SCHEMA, PCS_PROCEDURE_NAME, PCS_COLUMN_NAME};
ULONG rgProcedureColumnsSort[] = {PCS_PROCEDURE_CATALOG, PCS_PROCEDURE_SCHEMA, PCS_PROCEDURE_NAME};
RESTRICT_CAT rgProcedureColumnsCat[]= {RC_CATALOG, RC_SCHEMA, RC_PROCEDURE};
ColList ProcedureColumnsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"PROCEDURE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"PROCEDURE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"PROCEDURE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"COLUMN_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"ROWSET_NUMBER", DBTYPE_UI4, 0, NULL, TRUE,
L"ORDINAL_POSITION", DBTYPEFOR_DBORDINAL,0, NULL, TRUE,
L"IS_NULLABLE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"DATA_TYPE", DBTYPE_UI2, 0, NULL, FALSE,
L"TYPE_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"CHARACTER_MAXIMUM_LENGTH", DBTYPEFOR_DBLENGTH,0, NULL, TRUE,
L"CHARACTER_OCTET_LENGTH", DBTYPEFOR_DBLENGTH,0, NULL, TRUE,
L"NUMERIC_PRECISION", DBTYPE_UI2, 0, NULL, TRUE,
L"NUMERIC_SCALE", DBTYPE_I2, 0, NULL, TRUE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_PROCEDURE_PARAMETERS
//-----------------------------------------------------------------------------
USHORT rgParameterTypeVals[] = {DBPARAMTYPE_INPUT, DBPARAMTYPE_INPUTOUTPUT, DBPARAMTYPE_OUTPUT,
DBPARAMTYPE_RETURNVALUE};
enum PROCEDURE_PARAMETERS
{
PPS_PROCEDURE_CATALOG = 1,
PPS_PROCEDURE_SCHEMA,
PPS_PROCEDURE_NAME,
PPS_PARAMETER_NAME,
PPS_ORDINAL_POSITION,
PPS_PARAMETER_TYPE,
PPS_PARAMETER_HASDEFAULT,
PPS_PARAMETER_DEFAULT,
PPS_IS_NULLABLE,
PPS_DATA_TYPE,
PPS_CHARACTER_MAXIMUM_LENGTH,
PPS_CHARACTER_OCTET_LENGTH,
PPS_NUMERIC_PRECISION,
PPS_NUMERIC_SCALE,
PPS_DESCRIPTION,
PPS_TYPE_NAME,
PPS_LOCAL_TYPE_NAME
};
ULONG rgProcedureParametersRestrict[] = {PPS_PROCEDURE_CATALOG, PPS_PROCEDURE_SCHEMA, PPS_PROCEDURE_NAME, PPS_PARAMETER_NAME};
ULONG rgProcedureParametersSort[] = {PPS_PROCEDURE_CATALOG, PPS_PROCEDURE_SCHEMA, PPS_PROCEDURE_NAME};
ULONG rgProcedureParametersCount[VER_MAX] = {PPS_LOCAL_TYPE_NAME};
RESTRICT_CAT rgProcedureParametersCat[]= {RC_CATALOG, RC_SCHEMA, RC_PROCEDURE, RC_PARAMETER};
ColList ProcedureParametersCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"PROCEDURE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"PROCEDURE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"PROCEDURE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"PARAMETER_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"ORDINAL_POSITION", DBTYPE_UI2, 0, NULL, FALSE,
L"PARAMETER_TYPE", DBTYPE_UI2, NUMELEM(rgParameterTypeVals), rgParameterTypeVals,TRUE,
L"PARAMETER_HASDEFAULT", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
L"PARAMETER_DEFAULT", DBTYPE_WSTR, 0, NULL, TRUE,
L"IS_NULLABLE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"DATA_TYPE", DBTYPE_UI2, 0, NULL, FALSE,
L"CHARACTER_MAXIMUM_LENGTH", DBTYPEFOR_DBLENGTH,0, NULL, TRUE,
L"CHARACTER_OCTET_LENGTH", DBTYPEFOR_DBLENGTH,0, NULL, TRUE,
L"NUMERIC_PRECISION", DBTYPE_UI2, 0, NULL, TRUE,
L"NUMERIC_SCALE", DBTYPE_I2, 0, NULL, TRUE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
L"TYPE_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"LOCAL_TYPE_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_PROVIDER_TYPES
//-----------------------------------------------------------------------------
ULONG rgSearchableVals[] = {DB_UNSEARCHABLE, DB_LIKE_ONLY, DB_ALL_EXCEPT_LIKE, DB_SEARCHABLE};
enum PROVIDER_TYPES
{
PTS_TYPE_NAME = 1,
PTS_DATA_TYPE,
PTS_COLUMN_SIZE,
PTS_LITERAL_PREFIX,
PTS_LITERAL_SUFFIX,
PTS_CREATE_PARAMS,
PTS_IS_NULLABLE,
PTS_CASE_SENSITIVE,
PTS_SEARCHABLE,
PTS_UNSIGNED_ATTRIBUTE,
PTS_FIXED_PREC_SCALE,
PTS_AUTO_UNIQUE_VALUE,
PTS_LOCAL_TYPE_NAME,
PTS_MINIMUM_SCALE,
PTS_MAXIMUM_SCALE,
PTS_GUID,
PTS_TYPELIB,
PTS_VERSION,
PTS_IS_LONG,
PTS_BEST_MATCH,
PTS_IS_FIXEDLENGTH,
};
ULONG rgProviderTypesRestrict[] = {PTS_DATA_TYPE, PTS_BEST_MATCH};
ULONG rgProviderTypesSort[] = {PTS_DATA_TYPE};
RESTRICT_CAT rgProviderTypesCat[]= {RC_UND, RC_UND};
ColList ProviderTypesCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TYPE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"DATA_TYPE", DBTYPE_UI2, 0, NULL, FALSE,
L"COLUMN_SIZE", DBTYPEFOR_DBLENGTH,0, NULL, FALSE,
L"LITERAL_PREFIX", DBTYPE_WSTR, 0, NULL, TRUE,
L"LITERAL_SUFFIX", DBTYPE_WSTR, 0, NULL, TRUE,
L"CREATE_PARAMS", DBTYPE_WSTR, 0, NULL, TRUE,
L"IS_NULLABLE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"CASE_SENSITIVE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"SEARCHABLE", DBTYPE_UI4, NUMELEM(rgSearchableVals), rgSearchableVals, FALSE,
L"UNSIGNED_ATTRIBUTE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
L"FIXED_PREC_SCALE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"AUTO_UNIQUE_VALUE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
L"LOCAL_TYPE_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"MINIMUM_SCALE", DBTYPE_I2, 0, NULL, TRUE,
L"MAXIMUM_SCALE", DBTYPE_I2, 0, NULL, TRUE,
L"GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"TYPELIB", DBTYPE_WSTR, 0, NULL, TRUE,
L"VERSION", DBTYPE_WSTR, 0, NULL, TRUE,
L"IS_LONG", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"BEST_MATCH", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
L"IS_FIXEDLENGTH", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_REFERENTIAL_CONSTRAINTS
//-----------------------------------------------------------------------------
LPWSTR rgwszMatchOptionVals[] = {L"NONE", L"PARTIAL", L"FULL"};
enum REFERENTIAL_CONSTRAINTS_ENUM
{
RCS_CONSTRAINT_CATALOG = 1,
RCS_CONSTRAINT_SCHEMA,
RCS_CONSTRAINT_NAME,
RCS_UNIQUE_CONSTRAINT_CATALOG,
RCS_UNIQUE_CONSTRAINT_SCHEMA,
RCS_UNIQUE_CONSTRAINT_NAME,
RCS_MATCH_OPTION,
RCS_UPDATE_RULE,
RCS_DELETE_RULE,
RCS_DESCRIPTION,
};
ULONG rgReferentialConstraintsRestrict[] = {RCS_CONSTRAINT_CATALOG, RCS_CONSTRAINT_SCHEMA, RCS_CONSTRAINT_NAME};
ULONG rgReferentialConstraintsSort[] = {RCS_CONSTRAINT_CATALOG, RCS_CONSTRAINT_SCHEMA, RCS_CONSTRAINT_NAME,
RCS_UNIQUE_CONSTRAINT_CATALOG, RCS_UNIQUE_CONSTRAINT_SCHEMA, RCS_UNIQUE_CONSTRAINT_NAME};
RESTRICT_CAT rgReferentialConstraintsCat[]= {RC_CATALOG, RC_SCHEMA, RC_CONSTRAINT, RC_CATALOG, RC_SCHEMA, RC_CONSTRAINT};
ColList ReferentialConstraintsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"CONSTRAINT_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"UNIQUE_CONSTRAINT_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"UNIQUE_CONSTRAINT_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"UNIQUE_CONSTRAINT_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"MATCH_OPTION", DBTYPE_WSTR, NUMELEM(rgwszMatchOptionVals), rgwszMatchOptionVals, FALSE,
L"UPDATE_RULE", DBTYPE_WSTR, NUMELEM(rgwszRuleVals), rgwszRuleVals, FALSE,
L"DELETE_RULE", DBTYPE_WSTR, NUMELEM(rgwszRuleVals), rgwszRuleVals, FALSE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_SCHEMATA
//-----------------------------------------------------------------------------
enum SCHEMATA_ENUM
{
SS_CATALOG_NAME = 1,
SS_SCHEMA_NAME,
SS_SCHEMA_OWNER,
SS_DEFAULT_CHARACTER_SET_CATALOG,
SS_DEFAULT_CHARACTER_SET_SCHEMA,
SS_DEFAULT_CHARACTER_SET_NAME,
};
ULONG rgSchemataRestrict[] = {SS_CATALOG_NAME, SS_SCHEMA_NAME, SS_SCHEMA_OWNER};
ULONG rgSchemataSort[] = {SS_CATALOG_NAME, SS_SCHEMA_NAME, SS_SCHEMA_OWNER};
RESTRICT_CAT rgSchemataCat[]= {RC_CATALOG, RC_SCHEMA, RC_USER};
ColList SchemataCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"CATALOG_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"SCHEMA_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
L"SCHEMA_OWNER", DBTYPE_WSTR, 0, NULL, TRUE, // For Kagera
L"DEFAULT_CHARACTER_SET_CATALOG",DBTYPE_WSTR, 0, NULL, TRUE,
L"DEFAULT_CHARACTER_SET_SCHEMA",DBTYPE_WSTR, 0, NULL, TRUE,
L"DEFAULT_CHARACTER_SET_NAME", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_STATISTICS
//-----------------------------------------------------------------------------
enum STATISTICS_ENUM
{
STS_TABLE_CATALOG = 1,
STS_TABLE_SCHEMA,
STS_TABLE_NAME,
STS_CARDINALITY,
};
ULONG rgStatisticsRestrict[] = {STS_TABLE_CATALOG, STS_TABLE_SCHEMA, STS_TABLE_NAME};
ULONG rgStatisticsSort[] = {STS_TABLE_CATALOG, STS_TABLE_SCHEMA, STS_TABLE_NAME};
RESTRICT_CAT rgStatisticsCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE};
ColList StatisticsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"CARDINALITY", DBTYPE_UI8, 0, NULL, FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_TABLE_CONSTRAINTS
//-----------------------------------------------------------------------------
LPWSTR rgwszConstraintTypeVals[] = {L"UNIQUE", L"PRIMARY KEY", L"FOREIGN KEY", L"CHECK"};
enum TABLE_CONSTRAINTS_ENUM
{
TCS_CONSTRAINT_CATALOG = 1,
TCS_CONSTRAINT_SCHEMA,
TCS_CONSTRAINT_NAME,
TCS_TABLE_CATALOG,
TCS_TABLE_SCHEMA,
TCS_TABLE_NAME,
TCS_CONSTRAINT_TYPE,
TCS_IS_DEFERRABLE,
TCS_INITIALLY_DEFERRED,
TCS_DESCRIPTION,
};
ULONG rgTableConstraintsRestrict[] = {TCS_CONSTRAINT_CATALOG, TCS_CONSTRAINT_SCHEMA, TCS_CONSTRAINT_NAME, TCS_TABLE_CATALOG, TCS_TABLE_SCHEMA,
TCS_TABLE_NAME, TCS_CONSTRAINT_TYPE};
ULONG rgTableConstraintsSort[] = {TCS_CONSTRAINT_CATALOG, TCS_CONSTRAINT_SCHEMA, TCS_CONSTRAINT_NAME, TCS_TABLE_CATALOG,
TCS_TABLE_SCHEMA, TCS_TABLE_NAME, TCS_CONSTRAINT_TYPE};
RESTRICT_CAT rgTableConstraintsCat[]= {RC_CATALOG, RC_SCHEMA, RC_CONSTRAINT, RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_CONSTRAINT_TYPE};
ColList TableConstraintsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"CONSTRAINT_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"CONSTRAINT_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"CONSTRAINT_TYPE", DBTYPE_WSTR, NUMELEM(rgwszConstraintTypeVals), rgwszConstraintTypeVals, FALSE,
L"IS_DEFERRABLE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"INITIALLY_DEFERRED", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_TABLE_PRIVILEGES
//-----------------------------------------------------------------------------
enum TABLE_PRIVILEGES_ENUM
{
TPS_GRANTOR = 1,
TPS_GRANTEE,
TPS_TABLE_CATALOG,
TPS_TABLE_SCHEMA,
TPS_TABLE_NAME,
TPS_PRIVILEGE_TYPE,
TPS_IS_GRANTABLE,
};
ULONG rgTablePrivilegesRestrict[] = {TPS_TABLE_CATALOG, TPS_TABLE_SCHEMA, TPS_TABLE_NAME, TPS_GRANTOR, TPS_GRANTEE};
ULONG rgTablePrivilegesSort[] = {TPS_TABLE_CATALOG, TPS_TABLE_SCHEMA, TPS_TABLE_NAME, TPS_PRIVILEGE_TYPE};
RESTRICT_CAT rgTablePrivilegesCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_USER, RC_USER};
ColList TablePrivilegesCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"GRANTOR", DBTYPE_WSTR, 0, NULL, FALSE,
L"GRANTEE", DBTYPE_WSTR, 0, NULL, FALSE,
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"PRIVILEGE_TYPE", DBTYPE_WSTR, NUMELEM(rgwszPrivilegeTypeVals), rgwszPrivilegeTypeVals, FALSE,
L"IS_GRANTABLE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_TABLE_STATISTICS
//-----------------------------------------------------------------------------
USHORT rgStatisticsTypesVals[] = {DBSTAT_HISTOGRAM, DBSTAT_COLUMN_CARDINALITY,
DBSTAT_TUPLE_CARDINALITY};
enum TABLE_STATISTICS_ENUM
{
TSS_TABLE_CATALOG = 1,
TSS_TABLE_SCHEMA,
TSS_TABLE_NAME,
TSS_STATISTICS_CATALOG,
TSS_STATISTICS_SCHEMA,
TSS_STATISTICS_NAME,
TSS_STATISTICS_TYPE,
TSS_COLUMN_NAME,
TSS_COLUMN_GUID,
TSS_COLUMN_PROPID,
TSS_ORDINAL_POSITION,
TSS_SAMPLE_PCT,
TSS_LAST_UPDATE_TIME,
TSS_NO_OF_RANGES,
TSS_COLUMN_CARDINALITY,
TSS_TUPLE_CARDINALITY,
TSS_TABLE_CARDINALITY,
TSS_AVG_COLUMN_LENGTH
};
ULONG rgTableStatisticsRestrict[] = {TSS_TABLE_CATALOG, TSS_TABLE_SCHEMA, TSS_TABLE_NAME,
TSS_STATISTICS_CATALOG, TSS_STATISTICS_SCHEMA, TSS_STATISTICS_NAME, TSS_STATISTICS_TYPE};
ULONG rgTableStatisticsSort[] = {TSS_TABLE_CATALOG, TSS_TABLE_SCHEMA, TSS_TABLE_NAME,
TSS_STATISTICS_CATALOG, TSS_STATISTICS_SCHEMA, TSS_STATISTICS_NAME, TSS_ORDINAL_POSITION};
RESTRICT_CAT rgTableStatisticsCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_CATALOG, RC_SCHEMA, RC_STATISTICS, RC_UND};
ColList TableStatisticsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"STATISTICS_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"STATISTICS_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"STATISTICS_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
// Type is a bitmask, and currently we don't support automatic value checking for bitmasks
// L"STATISTICS_TYPE", DBTYPE_UI2, NUMELEM(rgStatisticsTypesVals),rgStatisticsTypesVals, FALSE,
L"STATISTICS_TYPE", DBTYPE_UI2, 0, NULL, FALSE,
L"COLUMN_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"COLUMN_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"COLUMN_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"ORDINAL_POSITION", DBTYPEFOR_DBORDINAL,0, NULL, FALSE,
L"SAMPLE_PCT", DBTYPE_UI2, 0, NULL, TRUE,
L"LAST_UPDATE_TIME", DBTYPE_DATE, 0, NULL, TRUE,
L"NO_OF_RANGES", DBTYPE_UI4, 0, NULL, TRUE,
L"COLUMN_CARDINALITY", DBTYPE_I8, 0, NULL, TRUE,
L"TUPLE_CARDINALITY", DBTYPE_I8, 0, NULL, TRUE,
L"TABLE_CARDINALITY", DBTYPE_I8, 0, NULL, FALSE,
L"AVG_COLUMN_LENGTH", DBTYPEFOR_DBLENGTH,0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_TABLES
//-----------------------------------------------------------------------------
LPWSTR rgwszTableType[] = {L"ALIAS", L"TABLE", L"SYNONYM", L"SYSTEM TABLE", L"VIEW", L"GLOBAL TEMPORARY",
L"LOCAL TEMPORARY", L"SYSTEM VIEW"};
enum TABLES_ENUM
{
TABLES_TABLE_CATALOG = 1,
TABLES_TABLE_SCHEMA,
TABLES_TABLE_NAME,
TABLES_TABLE_TYPE,
TABLES_TABLE_GUID,
TABLES_DESCRIPTION,
TABLES_TABLE_PROPID,
TABLES_DATE_CREATED,
TABLES_DATE_MODIFIED,
};
ULONG rgTablesRestrict[] = {TABLES_TABLE_CATALOG, TABLES_TABLE_SCHEMA, TABLES_TABLE_NAME, TABLES_TABLE_TYPE};
ULONG rgTablesSort[] = {TABLES_TABLE_TYPE, TABLES_TABLE_CATALOG, TABLES_TABLE_SCHEMA, TABLES_TABLE_NAME};
RESTRICT_CAT rgTablesCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_TABLE_TYPE};
ColList TablesCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"TABLE_TYPE", DBTYPE_WSTR, NUMELEM(rgwszTableType),rgwszTableType, FALSE,
L"TABLE_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"DATE_CREATED", DBTYPE_DATE, 0, NULL, TRUE,
L"DATE_MODIFIED", DBTYPE_DATE, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_TABLES_INFO
//-----------------------------------------------------------------------------
LONG rgBookMarkTypeVals[] = {DBPROPVAL_BMK_NUMERIC, DBPROPVAL_BMK_KEY};
enum TABLES_INFO_ENUM
{
TIS_TABLE_CATALOG = 1,
TIS_TABLE_SCHEMA,
TIS_TABLE_NAME,
TIS_TABLE_TYPE,
TIS_TABLE_GUID,
TIS_BOOKMARKS,
TIS_BOOKMARK_TYPE,
TIS_BOOKMARK_DATATYPE,
TIS_BOOKMARK_MAXIMUM_LENGTH,
TIS_BOOKMARK_INFORMATION,
TIS_TABLE_VERSION,
TIS_CARDINALITY,
TIS_DESCRIPTION,
TIS_TABLE_PROPID,
};
ULONG rgTablesInfoRestrict[] = {TIS_TABLE_CATALOG, TIS_TABLE_SCHEMA, TIS_TABLE_NAME, TIS_TABLE_TYPE};
ULONG rgTablesInfoSort[] = {TIS_TABLE_TYPE, TIS_TABLE_CATALOG, TIS_TABLE_SCHEMA, TIS_TABLE_NAME};
RESTRICT_CAT rgTablesInfoCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE, RC_TABLE_TYPE};
ULONG rgTablesInfoCount[VER_MAX] = {TIS_TABLE_PROPID};
ColList TablesInfoCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"TABLE_TYPE", DBTYPE_WSTR, NUMELEM(rgwszTableType),rgwszTableType, FALSE,
L"TABLE_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"BOOKMARKS", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, FALSE,
L"BOOKMARK_TYPE", DBTYPE_I4, NUMELEM(rgBookMarkTypeVals),rgBookMarkTypeVals, TRUE,
L"BOOKMARK_DATATYPE", DBTYPE_UI2, 0, NULL, TRUE,
L"BOOKMARK_MAXIMUM_LENGTH", DBTYPE_UI4, 0, NULL, TRUE,
L"BOOKMARK_INFORMATION", DBTYPE_UI4, 0, NULL, TRUE,
L"TABLE_VERSION", DBTYPE_I8, 0, NULL, TRUE,
L"CARDINALITY", DBTYPE_UI8, 0, NULL, TRUE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_TRUSTEE
//-----------------------------------------------------------------------------
ULONG rgTrusteeTypeVals[] = {TRUSTEE_IS_UNKNOWN, TRUSTEE_IS_USER, TRUSTEE_IS_GROUP};
enum TRUSTEE_ENUM
{
TRS_TRUSTEE_NAME = 1,
TRS_TRUSTEE_GUID,
TRS_TRUSTEE_PROPID,
TRS_TRUSTEE_TYPE,
};
ULONG rgTrusteeRestrict[] = {TRS_TRUSTEE_NAME, TRS_TRUSTEE_GUID, TRS_TRUSTEE_PROPID, TRS_TRUSTEE_TYPE};
ULONG rgTrusteeSort[] = {TRS_TRUSTEE_NAME, TRS_TRUSTEE_GUID, TRS_TRUSTEE_PROPID, TRS_TRUSTEE_TYPE};
RESTRICT_CAT rgTrusteeCat[]= {RC_USER, RC_UND, RC_UND, RC_UND};
ColList TrusteeCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TRUSTEE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"TRUSTEE_GUID", DBTYPE_GUID, 0, NULL, TRUE,
L"TRUSTEE_PROPID", DBTYPE_UI4, 0, NULL, TRUE,
L"TRUSTEE_TYPE", DBTYPE_UI4, NUMELEM(rgTrusteeTypeVals), rgTrusteeTypeVals, FALSE,
};
//-----------------------------------------------------------------------------
// DBSCHEMA_VIEWS
//-----------------------------------------------------------------------------
enum VIEWS_ENUM
{
VS_TABLE_CATALOG = 1,
VS_TABLE_SCHEMA,
VS_TABLE_NAME,
VS_VIEW_DEFINITION,
VS_CHECK_OPTION,
VS_IS_UPDATABLE,
VS_DESCRIPTION,
VS_DATE_CREATED,
VS_DATE_MODIFIED,
};
ULONG rgViewsRestrict[] = {VS_TABLE_CATALOG, VS_TABLE_SCHEMA, VS_TABLE_NAME};
ULONG rgViewsSort[] = {VS_TABLE_CATALOG, VS_TABLE_SCHEMA, VS_TABLE_NAME};
RESTRICT_CAT rgViewsCat[]= {RC_CATALOG, RC_SCHEMA, RC_TABLE};
ColList ViewsCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"TABLE_CATALOG", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_SCHEMA", DBTYPE_WSTR, 0, NULL, TRUE,
L"TABLE_NAME", DBTYPE_WSTR, 0, NULL, FALSE,
L"VIEW_DEFINITION", DBTYPE_WSTR, 0, NULL, TRUE,
L"CHECK_OPTION", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
L"IS_UPDATABLE", DBTYPE_BOOL, NUMELEM(rgBoolList), rgBoolList, TRUE,
L"DESCRIPTION", DBTYPE_WSTR, 0, NULL, TRUE,
L"DATE_CREATED", DBTYPE_DATE, 0, NULL, TRUE,
L"DATE_MODIFIED", DBTYPE_DATE, 0, NULL, TRUE,
};
//-----------------------------------------------------------------------------
// List of all schemas
//-----------------------------------------------------------------------------
SchemaList AllSchemas[] =
{
&DBSCHEMA_ASSERTIONS,
L"DBSCHEMA_ASSERTIONS",
CRESTRICTIONS_DBSCHEMA_ASSERTIONS,
rgAssertionsRestrict,
rgAssertionsCat,
NUMELEM(AssertionsCols),
(ColList *)&AssertionsCols,
NUMELEM(rgAssertionsSort),
rgAssertionsSort,
NULL,
&DBSCHEMA_CATALOGS,
L"DBSCHEMA_CATALOGS",
CRESTRICTIONS_DBSCHEMA_CATALOGS,
rgCatalogsRestrict,
rgCatalogsCat,
NUMELEM(CatalogsCols),
(ColList *)&CatalogsCols,
NUMELEM(rgCatalogsSort),
rgCatalogsSort,
NULL,
&DBSCHEMA_CHARACTER_SETS,
L"DBSCHEMA_CHARACTER_SETS",
CRESTRICTIONS_DBSCHEMA_CHARACTER_SETS,
rgCharacterSetsRestrict,
rgCharacterSetsCat,
NUMELEM(CharacterSetsCols),
(ColList *)&CharacterSetsCols,
NUMELEM(rgCharacterSetsSort),
rgCharacterSetsSort,
NULL,
&DBSCHEMA_CHECK_CONSTRAINTS,
L"DBSCHEMA_CHECK_CONSTRAINTS",
CRESTRICTIONS_DBSCHEMA_CHECK_CONSTRAINTS,
rgCheckConstraintsRestrict,
rgCheckConstraintsCat,
NUMELEM(CheckConstraintsCols),
(ColList *)&CheckConstraintsCols,
NUMELEM(rgCheckConstraintsSort),
rgCheckConstraintsSort,
NULL,
&DBSCHEMA_COLLATIONS,
L"DBSCHEMA_COLLATIONS",
CRESTRICTIONS_DBSCHEMA_COLLATIONS,
rgCollationsRestrict,
rgCollationsCat,
NUMELEM(CollationsCols),
(ColList *)&CollationsCols,
NUMELEM(rgCollationsSort),
rgCollationsSort,
NULL,
&DBSCHEMA_COLUMN_DOMAIN_USAGE,
L"DBSCHEMA_COLUMN_DOMAIN_USAGE",
CRESTRICTIONS_DBSCHEMA_COLUMN_DOMAIN_USAGE,
rgColumnDomainUsageRestrict,
rgColumnDomainUsageCat,
NUMELEM(ColumnDomainUsageCols),
(ColList *)&ColumnDomainUsageCols,
NUMELEM(rgColumnDomainUsageSort),
rgColumnDomainUsageSort,
NULL,
&DBSCHEMA_COLUMN_PRIVILEGES,
L"DBSCHEMA_COLUMN_PRIVILEGES",
CRESTRICTIONS_DBSCHEMA_COLUMN_PRIVILEGES,
rgColumnPrivilegesRestrict,
rgColumnPrivilegesCat,
NUMELEM(ColumnPrivilegesCols),
(ColList *)&ColumnPrivilegesCols,
NUMELEM(rgColumnPrivilegesSort),
rgColumnPrivilegesSort,
NULL,
&DBSCHEMA_COLUMNS,
L"DBSCHEMA_COLUMNS",
CRESTRICTIONS_DBSCHEMA_COLUMNS,
rgColumnsRestrict,
rgColumnsCat,
NUMELEM(ColumnsCols),
(ColList *)&ColumnsCols,
NUMELEM(rgColumnsSort),
rgColumnsSort,
rgColumnsCount,
&DBSCHEMA_CONSTRAINT_COLUMN_USAGE,
L"DBSCHEMA_CONSTRAINT_COLUMN_USAGE",
NUMELEM(rgConstraintColumnUsageRestrict), // CRESTRICTIONS_DBSCHEMA_CONSTRAINT_COLUMN_USAGE, // CRESTRICTIONS is 4, but there are 7 restrictions
rgConstraintColumnUsageRestrict,
rgConstraintColumnUsageCat,
NUMELEM(ConstraintColumnUsageCols),
(ColList *)&ConstraintColumnUsageCols,
NUMELEM(rgConstraintColumnUsageSort),
rgConstraintColumnUsageSort,
NULL,
/*
&DBSCHEMA_CONSTRAINT_TABLE_USAGE,
L"DBSCHEMA_CONSTRAINT_TABLE_USAGE",
CRESTRICTIONS_DBSCHEMA_CONSTRAINT_TABLE_USAGE,
rgConstraintTableRestrict,
rgConstraintTableUsageCat,
NUMELEM(ConstraintTableCols),
(ColList *)&ConstraintTableCols,
NUMELEM(rgConstraintTablesSort),
rgConstraintTablesSort,
NULL,
*/
&DBSCHEMA_KEY_COLUMN_USAGE,
L"DBSCHEMA_KEY_COLUMN_USAGE",
CRESTRICTIONS_DBSCHEMA_KEY_COLUMN_USAGE,
rgKeyColumnUsageRestrict,
rgKeyColumnUsageCat,
NUMELEM(KeyColumnUsageCols),
(ColList *)&KeyColumnUsageCols,
NUMELEM(rgKeyColumnUsageSort),
rgKeyColumnUsageSort,
NULL,
&DBSCHEMA_REFERENTIAL_CONSTRAINTS,
L"DBSCHEMA_REFERENTIAL_CONSTRAINTS",
CRESTRICTIONS_DBSCHEMA_REFERENTIAL_CONSTRAINTS,
rgReferentialConstraintsRestrict,
rgReferentialConstraintsCat,
NUMELEM(ReferentialConstraintsCols),
(ColList *)&ReferentialConstraintsCols,
NUMELEM(rgReferentialConstraintsSort),
rgReferentialConstraintsSort,
NULL,
&DBSCHEMA_INDEXES,
L"DBSCHEMA_INDEXES",
CRESTRICTIONS_DBSCHEMA_INDEXES,
rgIndexesRestrict,
rgIndexesCat,
NUMELEM(IndexesCols),
(ColList *)&IndexesCols,
NUMELEM(rgIndexesSort),
rgIndexesSort,
NULL,
// Two unknown schemas in header???
// DBSCHEMA_OBJECT_ACTIONS
// DBSCHEMA_OBJECTS
&DBSCHEMA_COLUMN_PRIVILEGES,
L"DBSCHEMA_COLUMN_PRIVILEGES",
CRESTRICTIONS_DBSCHEMA_COLUMN_PRIVILEGES,
rgColumnPrivilegesRestrict,
rgColumnPrivilegesCat,
NUMELEM(ColumnPrivilegesCols),
(ColList *)&ColumnPrivilegesCols,
NUMELEM(rgColumnPrivilegesSort),
rgColumnPrivilegesSort,
NULL,
&DBSCHEMA_TABLE_PRIVILEGES,
L"DBSCHEMA_TABLE_PRIVILEGES",
CRESTRICTIONS_DBSCHEMA_TABLE_PRIVILEGES,
rgTablePrivilegesRestrict,
rgTablePrivilegesCat,
NUMELEM(TablePrivilegesCols),
(ColList *)&TablePrivilegesCols,
NUMELEM(rgTablePrivilegesSort),
rgTablePrivilegesSort,
NULL,
/*
&DBSCHEMA_USAGE_PRIVILEGES,
L"DBSCHEMA_USAGE_PRIVILEGES",
CRESTRICTIONS_DBSCHEMA_USAGE_PRIVILEGES,
rgUsagePrivilegesRestrict,
rgUsagePrivilegesCat,
NUMELEM(UsagePrivilegesCols),
(ColList *)&UsagePrivilegesCols,
NUMELEM(rgUsagePrivilegesSort),
rgUsagePrivilegesSort,
NULL,
*/
&DBSCHEMA_PROCEDURES,
L"DBSCHEMA_PROCEDURES",
CRESTRICTIONS_DBSCHEMA_PROCEDURES,
rgProceduresRestrict,
rgProceduresCat,
NUMELEM(ProceduresCols),
(ColList *)&ProceduresCols,
NUMELEM(rgProceduresSort),
rgProceduresSort,
NULL,
&DBSCHEMA_SCHEMATA,
L"DBSCHEMA_SCHEMATA",
CRESTRICTIONS_DBSCHEMA_SCHEMATA,
rgSchemataRestrict,
rgSchemataCat,
NUMELEM(SchemataCols),
(ColList *)&SchemataCols,
NUMELEM(rgSchemataSort),
rgSchemataSort,
NULL,
/*
&DBSCHEMA_SQL_LANGUAGES,
L"DBSCHEMA_SQL_LANGUAGES",
CRESTRICTIONS_DBSCHEMA_SQL_LANGUAGES,
rgSQLLanguagesRestrict,
rgSQLLanguagesCat,
NUMELEM(SQLLanguagesCols),
(ColList *)&SQLLanguagesCols,
NUMELEM(rgSQLLanguagesSort),
rgSQLLanguagesSort,
NULL,
*/
&DBSCHEMA_STATISTICS,
L"DBSCHEMA_STATISTICS",
CRESTRICTIONS_DBSCHEMA_STATISTICS,
rgStatisticsRestrict,
rgStatisticsCat,
NUMELEM(StatisticsCols),
(ColList *)&StatisticsCols,
NUMELEM(rgStatisticsSort),
rgStatisticsSort,
NULL,
&DBSCHEMA_TABLE_CONSTRAINTS,
L"DBSCHEMA_TABLE_CONSTRAINTS",
CRESTRICTIONS_DBSCHEMA_TABLE_CONSTRAINTS,
rgTableConstraintsRestrict,
rgTableConstraintsCat,
NUMELEM(TableConstraintsCols),
(ColList *)&TableConstraintsCols,
NUMELEM(rgTableConstraintsSort),
rgTableConstraintsSort,
NULL,
&DBSCHEMA_TABLES,
L"DBSCHEMA_TABLES",
CRESTRICTIONS_DBSCHEMA_TABLES,
rgTablesRestrict,
rgTablesCat,
NUMELEM(TablesCols),
(ColList *)&TablesCols,
NUMELEM(rgTablesSort),
rgTablesSort,
NULL,
/*
&DBSCHEMA_TRANSLATIONS,
L"DBSCHEMA_TRANSLATIONS",
CRESTRICTIONS_DBSCHEMA_TRANSLATIONS,
rgTranslationsRestrict,
rgTranslationsCat,
NUMELEM(TranslationsCols),
(ColList *)&TranslationsCols,
NUMELEM(rgTranslationsSort),
rgTranslationsSort,
NULL,
*/
&DBSCHEMA_PROVIDER_TYPES,
L"DBSCHEMA_PROVIDER_TYPES",
CRESTRICTIONS_DBSCHEMA_PROVIDER_TYPES,
rgProviderTypesRestrict,
rgProviderTypesCat,
NUMELEM(ProviderTypesCols),
(ColList *)&ProviderTypesCols,
NUMELEM(rgProviderTypesSort),
rgProviderTypesSort,
NULL,
&DBSCHEMA_VIEWS,
L"DBSCHEMA_VIEWS",
CRESTRICTIONS_DBSCHEMA_VIEWS,
rgViewsRestrict,
rgViewsCat,
NUMELEM(ViewsCols),
(ColList *)&ViewsCols,
NUMELEM(rgViewsSort),
rgViewsSort,
NULL,
/*
&DBSCHEMA_VIEW_COLUMN_USAGE,
L"DBSCHEMA_VIEW_COLUMN_USAGE",
CRESTRICTIONS_DBSCHEMA_VIEW_COLUMN_USAGE,
rgViewColumnUsageRestrict,
rgViewColumnUsageCat,
NUMELEM(ViewColumnUsageCols),
(ColList *)&ViewColumnUsageCols,
NUMELEM(rgViewColumnUsageSort),
rgViewColumnUsageSort,
NULL,
&DBSCHEMA_VIEW_TABLE_USAGE,
L"DBSCHEMA_VIEW_TABLE_USAGE",
CRESTRICTIONS_DBSCHEMA_VIEW_TABLE_USAGE,
rgViewTableUsageRestrict,
rgViewTableUsageCat,
NUMELEM(ViewTableUsageCols),
(ColList *)&ViewTableUsageCols,
NUMELEM(rgViewTableUsageSort),
rgViewTableUsageSort,
NULL,
*/
&DBSCHEMA_FOREIGN_KEYS,
L"DBSCHEMA_FOREIGN_KEYS",
CRESTRICTIONS_DBSCHEMA_FOREIGN_KEYS,
rgForeignKeysRestrict,
rgForeignKeysCat,
NUMELEM(ForeignKeysCols),
(ColList *)&ForeignKeysCols,
NUMELEM(rgForeignKeysSort),
rgForeignKeysSort,
NULL,
&DBSCHEMA_PRIMARY_KEYS,
L"DBSCHEMA_PRIMARY_KEYS",
CRESTRICTIONS_DBSCHEMA_PRIMARY_KEYS,
rgPrimaryKeysRestrict,
rgPrimaryKeysCat,
NUMELEM(PrimaryKeysCols),
(ColList *)&PrimaryKeysCols,
NUMELEM(rgPrimaryKeysSort),
rgPrimaryKeysSort,
NULL,
&DBSCHEMA_PROCEDURE_COLUMNS,
L"DBSCHEMA_PROCEDURE_COLUMNS",
CRESTRICTIONS_DBSCHEMA_PROCEDURE_COLUMNS,
rgProcedureColumnsRestrict,
rgProcedureColumnsCat,
NUMELEM(ProcedureColumnsCols),
(ColList *)&ProcedureColumnsCols,
NUMELEM(rgProcedureColumnsSort),
rgProcedureColumnsSort,
NULL,
&DBSCHEMA_PROCEDURE_PARAMETERS,
L"DBSCHEMA_PROCEDURE_PARAMETERS",
CRESTRICTIONS_DBSCHEMA_PROCEDURE_PARAMETERS,
rgProcedureParametersRestrict,
rgProcedureParametersCat,
NUMELEM(ProcedureParametersCols),
(ColList *)&ProcedureParametersCols,
NUMELEM(rgProcedureParametersSort),
rgProcedureParametersSort,
rgProcedureParametersCount,
&DBSCHEMA_TABLES_INFO,
L"DBSCHEMA_TABLES_INFO",
CRESTRICTIONS_DBSCHEMA_TABLES_INFO,
rgTablesInfoRestrict,
rgTablesInfoCat,
NUMELEM(TablesInfoCols),
(ColList *)&TablesInfoCols,
NUMELEM(rgTablesInfoSort),
rgTablesInfoSort,
rgTablesInfoCount,
&DBSCHEMA_TRUSTEE,
L"DBSCHEMA_TRUSTEE",
CRESTRICTIONS_DBSCHEMA_TRUSTEE,
rgTrusteeRestrict,
rgTrusteeCat,
NUMELEM(TrusteeCols),
(ColList *)&TrusteeCols,
NUMELEM(rgTrusteeSort),
rgTrusteeSort,
NULL,
&DBSCHEMA_TABLE_STATISTICS,
L"DBSCHEMA_TABLE_STATISTICS",
CRESTRICTIONS_DBSCHEMA_TABLE_STATISTICS,
rgTableStatisticsRestrict,
rgTableStatisticsCat,
NUMELEM(TableStatisticsCols),
(ColList *)&TableStatisticsCols,
NUMELEM(rgTableStatisticsSort),
rgTableStatisticsSort,
NULL,
&DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE,
L"DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE",
CRESTRICTIONS_DBSCHEMA_CHECK_CONSTRAINTS_BY_TABLE,
rgCheckConstraintsByTableRestrict,
rgCheckConstraintsByTableCat,
NUMELEM(CheckConstraintsByTableCols),
(ColList *)&CheckConstraintsByTableCols,
NUMELEM(rgCheckConstraintsByTableSort),
rgCheckConstraintsByTableSort,
NULL,
};
//-----------------------------------------------------------------------------
// Histogram Rowset info
//-----------------------------------------------------------------------------
enum HR_ENUM // Histogram rowset column ordinals
{
HR_RANGE_HI_KEY = 1,
HR_RANGE_ROWS,
HR_EQ_ROWS,
HR_DISTINCT_RANGE_ROWS
};
ULONG rgHistogramSort[] = {HR_RANGE_HI_KEY};
ULONG rgHistogramCount[VER_MAX] = {HR_DISTINCT_RANGE_ROWS};
ColList HistogramCols[] =
{
// Name Type cValidVals pValidVals fAllowNull
L"RANGE_HI_KEY", DBTYPE_EMPTY, 0, NULL, FALSE,
L"RANGE_ROWS", DBTYPE_R8, 0, NULL, TRUE,
L"EQ_ROWS", DBTYPE_R8, 0, NULL, TRUE,
L"DISTINCT_RANGE_ROWS", DBTYPE_I8, 0, NULL, TRUE,
};
SchemaList HistogramRowset[] =
{
&GUID_NULL,
L"",
0,
NULL,
NULL,
NUMELEM(HistogramCols),
(ColList *)&HistogramCols,
NUMELEM(rgHistogramSort),
rgHistogramSort,
rgHistogramCount
};
#endif //_IDBSCHMR_H_