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

358 lines
12 KiB
C

//--------------------------------------------------------------------
// Microsoft OLE DB Test
//
// Copyright 1995-2000 Microsoft Corporation.
//
// @doc
//
// @module KAGTEST.H | KAGTEST header file for test modules.
//
//
// @rev 01 | 03-21-95 | Microsoft | Created
// @rev 02 | 09-06-95 | Microsoft | Updated
//
#ifndef _KAGTEST_H_
#define _KAGTEST_H_
#include "oledb.h" // OLE DB Header Files
#include "oledberr.h"
#include "msdasql.h"
#include "privlib.h" //include private library, which includes
//the "transact.h"
#include "sql.h" // For ODBC functions
#include "sqlext.h"
//-----------------------------------------------------------------------------
// String constants
//-----------------------------------------------------------------------------
const WCHAR g_wszKageraName[] = L"MSDASQL";
#define MAX_GETINFO_BUF 250
enum STATE_ENUM
{
STATE_NO_DSO,
STATE_UNINITIALIZED_DSO,
STATE_INITIALIZED_DSO,
STATE_INTI_ALREADY_UNINIT
};
enum GETINFO_ENUM
{
E_ACCESSIBLE_PROCEDURES,
E_ACCESSIBLE_TABLES,
E_ACTIVE_ENVIRONMENTS,
E_AGGREGATE_FUNCTIONS,
E_ALTER_DOMAIN,
E_ALTER_TABLE,
E_ASYNC_MODE,
E_BATCH_ROW_COUNT,
E_BATCH_SUPPORT,
E_CATALOG_LOCATION,
E_CATALOG_NAME,
E_CATALOG_NAME_SEPARATOR,
E_CATALOG_USAGE,
E_COLLATION_SEQ,
E_CONVERT_INTERVAL_DAY_TIME,
E_CONVERT_INTERVAL_YEAR_MONTH,
E_CONVERT_WCHAR,
E_CONVERT_WLONGVARCHAR,
E_CONVERT_WVARCHAR,
E_CREATE_ASSERTION,
E_CREATE_CHARACTER_SET,
E_CREATE_COLLATION,
E_CREATE_DOMAIN,
E_CREATE_SCHEMA,
E_CREATE_TABLE,
E_CREATE_TRANSLATION,
E_CREATE_VIEW,
E_CTALOG_TERM,
E_CURSOR_COMMIT_BEHAVIOR,
E_CURSOR_SENSITIVITY,
E_DATA_SOURCE_NAME,
E_DATA_SOURCE_READ_ONLY,
E_DATETIME_LITERALS,
E_DBMS_NAME,
E_DBMS_VER,
E_DDL_INDEX,
E_DEFAULT_TXN_ISOLATION,
E_DESCRIBE_PARAMETER,
E_DM_VER,
E_DRIVER_HDESC,
E_DROP_ASSERTION,
E_DROP_CHARACTER_SET,
E_DROP_COLLATION,
E_DROP_DOMAIN,
E_DROP_SCHEMA,
E_DROP_TABLE,
E_DROP_TRANSLATION,
E_DROP_VIEW,
E_DYNAMIC_CURSOR_ATTRIBUTES1,
E_DYNAMIC_CURSOR_ATTRIBUTES2,
E_SQL_CONFORMANCE,
E_FETCH_DIRECTION,
E_FORWARD_ONLY_CURSOR_ATTRIBUTES1,
E_FORWARD_ONLY_CURSOR_ATTRIBUTES2,
E_GETDATA_EXTENSIONS,
E_IDENTIFIER_CASE,
E_IDENTIFIER_QUOTE_CHAR,
E_INDEX_KEYWORDS,
E_INFO_SCHEMA_VIEWS,
E_INSERT_STATEMENT,
E_INTEGRITY,
E_KEYSET_CURSOR_ATTRIBUTES1,
E_KEYSET_CURSOR_ATTRIBUTES2,
E_MAX_ASYNC_CONCURRENT_STATEMENTS,
E_MAX_CATALOG_NAME_LEN,
E_MAX_COLUMN_NAME_LEN,
E_MAX_COLUMNS_IN_GROUP_BY,
E_MAX_COLUMNS_IN_INDEX,
E_MAX_COLUMNS_IN_ORDER_BY,
E_MAX_COLUMNS_IN_SELECT,
E_MAX_COLUMNS_IN_TABLE,
E_MAX_CONCURRENT_ACTIVITIES,
E_MAX_CURSOR_NAME_LEN,
E_MAX_DRIVER_CONNECTIONS,
E_MAX_IDENTIFIER_LEN,
E_MAX_INDEX_SIZE,
E_MAX_ROW_SIZE,
E_MAX_SCHEMA_NAME_LEN,
E_MAX_STATEMENT_LEN,
E_MAX_TABLE_NAME_LEN,
E_MAX_TABLES_IN_SELECT,
E_MAX_USER_NAME_LEN,
E_MAXIMUM_CATALOG_NAME_LENGTH,
E_MAXIMUM_COLUMN_NAME_LENGTH,
E_MAXIMUM_COLUMNS_IN_GROUP_BY,
E_MAXIMUM_COLUMNS_IN_INDEX,
E_MAXIMUM_COLUMNS_IN_ORDER_BY,
E_MAXIMUM_COLUMNS_IN_SELECT,
E_MAXIMUM_CONCURRENT_ACTIVITIES,
E_MAXIMUM_CURSOR_NAME_LENGTH,
E_MAXIMUM_DRIVER_CONNECTIONS,
E_MAXIMUM_IDENTIFIER_LENGTH,
E_MAXIMUM_INDEX_SIZE,
E_MAXIMUM_ROW_SIZE,
E_MAXIMUM_SCHEMA_NAME_LENGTH,
E_MAXIMUM_STATEMENT_LENGTH,
E_MAXIMUM_TABLES_IN_SELECT,
E_MAXIMUM_USER_NAME_LENGTH,
E_NULL_COLLATION,
E_ODBC_INTERFACE_CONFORMANCE,
E_OJ_CAPABILITIES,
E_ORDER_BY_COLUMNS_IN_SELECT,
E_OUTER_JOIN_CAPABILITIES,
E_PARAM_ARRAY_ROW_COUNTS,
E_PARAM_ARRAY_SELECTS,
E_SCHEMA_TERM,
E_SCHEMA_USAGE,
E_SCROLL_CONCURRENCY,
E_SEARCH_PATTERN_ESCAPE,
E_SERVER_NAME,
E_SPECIAL_CHARACTERS,
E_SQL92_DATETIME_FUNCTIONS,
E_SQL92_FOREIGN_KEY_DELETE_RULE,
E_SQL92_FOREIGN_KEY_UPDATE_RULE,
E_SQL92_GRANT,
E_SQL92_NUMERIC_VALUE_FUNCTIONS,
E_SQL92_PREDICATES,
E_SQL92_RELATIONAL_JOIN_OPERATORS,
E_SQL92_REVOKE,
E_SQL92_ROW_VALUE_CONSTRUCTOR,
E_SQL92_STRING_FUNCTIONS,
E_SQL92_VALUE_EXPRESSIONS,
E_STANDARD_CLI_CONFORMANCE,
E_STATIC_CURSOR_ATTRIBUTES1,
E_STATIC_CURSOR_ATTRIBUTES2,
E_TRANSACTION_CAPABLE,
E_TRANSACTION_ISOLATION_OPTION,
E_TXN_CAPABLE,
E_TXN_ISOLATION_OPTION,
E_UNION_STATEMENT,
E_USER_NAME,
E_XOPEN_CLI_YEAR
};
struct InfoValues
{
USHORT InfoValue; // The GetInfo value
BOOL fInit; // Requires initialization
BOOL fDriverSpecific; // Is driver specific
VARTYPE vt; // Variant type used for this GetInfo
WCHAR * pwszDBMSName; // The name of the dbms if driver specific
} g_InfoValueList[] =
{
// fDriver
// GetInfo fInit Specific vt pwszDBMSName
SQL_ACCESSIBLE_PROCEDURES, TRUE, FALSE, VT_BSTR, NULL,
SQL_ACCESSIBLE_TABLES, TRUE, FALSE, VT_BSTR, NULL,
SQL_ACTIVE_ENVIRONMENTS, TRUE, FALSE, VT_UI2, NULL,
SQL_AGGREGATE_FUNCTIONS, TRUE, FALSE, VT_UI4, NULL,
SQL_ALTER_DOMAIN, TRUE, FALSE, VT_UI4, NULL,
SQL_ALTER_TABLE, TRUE, FALSE, VT_UI4, NULL,
SQL_ASYNC_MODE, TRUE, FALSE, VT_UI4, NULL,
SQL_BATCH_ROW_COUNT, TRUE, FALSE, VT_UI4, NULL,
SQL_BOOKMARK_PERSISTENCE, TRUE, FALSE, VT_UI4, NULL,
SQL_CATALOG_LOCATION, TRUE, FALSE, VT_UI2, NULL,
SQL_CATALOG_NAME, TRUE, FALSE, VT_BSTR, NULL,
SQL_CATALOG_NAME_SEPARATOR, TRUE, FALSE, VT_BSTR, NULL,
SQL_CATALOG_TERM, TRUE, FALSE, VT_BSTR, NULL,
SQL_CATALOG_USAGE, TRUE, FALSE, VT_UI4, NULL,
SQL_COLLATION_SEQ, TRUE, FALSE, VT_BSTR, NULL,
SQL_COLUMN_ALIAS, TRUE, FALSE, VT_BSTR, NULL,
SQL_CONCAT_NULL_BEHAVIOR, TRUE, FALSE, VT_UI2, NULL,
SQL_CONVERT_BIGINT, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_BINARY, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_BIT, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_CHAR, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_DATE, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_DECIMAL, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_DOUBLE, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_FLOAT, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_INTEGER, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_INTERVAL_YEAR_MONTH,TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_INTERVAL_DAY_TIME, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_LONGVARBINARY, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_LONGVARCHAR, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_NUMERIC, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_REAL, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_SMALLINT, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_TIME, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_TIMESTAMP, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_TINYINT, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_VARBINARY, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_VARCHAR, TRUE, FALSE, VT_UI4, NULL,
SQL_CONVERT_FUNCTIONS, TRUE, FALSE, VT_UI4, NULL,
SQL_CORRELATION_NAME, TRUE, FALSE, VT_UI2, NULL,
SQL_CREATE_ASSERTION, TRUE, FALSE, VT_UI4, NULL,
SQL_CREATE_CHARACTER_SET, TRUE, FALSE, VT_UI4, NULL,
SQL_CREATE_COLLATION, TRUE, FALSE, VT_UI4, NULL,
SQL_CREATE_DOMAIN, TRUE, FALSE, VT_UI4, NULL,
SQL_CREATE_SCHEMA, TRUE, FALSE, VT_UI4, NULL,
SQL_CREATE_TABLE, TRUE, FALSE, VT_UI4, NULL,
SQL_CREATE_TRANSLATION, TRUE, FALSE, VT_UI4, NULL,
SQL_CREATE_VIEW, TRUE, FALSE, VT_UI4, NULL,
SQL_CURSOR_COMMIT_BEHAVIOR, TRUE, FALSE, VT_UI2, NULL,
SQL_CURSOR_ROLLBACK_BEHAVIOR, TRUE, FALSE, VT_UI2, NULL,
SQL_CURSOR_SENSITIVITY, TRUE, FALSE, VT_UI4, NULL,
SQL_DATA_SOURCE_NAME, TRUE, FALSE, VT_BSTR, NULL,
SQL_DATA_SOURCE_READ_ONLY, TRUE, FALSE, VT_BSTR, NULL,
SQL_DATABASE_NAME, TRUE, FALSE, VT_BSTR, NULL,
SQL_DATETIME_LITERALS, TRUE, FALSE, VT_UI4, NULL,
SQL_DBMS_NAME, TRUE, FALSE, VT_BSTR, NULL,
SQL_DBMS_VER, TRUE, FALSE, VT_BSTR, NULL,
SQL_DDL_INDEX, TRUE, FALSE, VT_UI4, NULL,
SQL_DEFAULT_TXN_ISOLATION, TRUE, FALSE, VT_UI4, NULL,
SQL_DESCRIBE_PARAMETER, TRUE, FALSE, VT_BSTR, NULL,
SQL_DM_VER, TRUE, FALSE, VT_BSTR, NULL,
SQL_DRIVER_HDBC, TRUE, FALSE, VT_UI4, NULL,
SQL_DRIVER_HENV, FALSE, FALSE, VT_UI4, NULL,
SQL_DRIVER_HDESC, TRUE, FALSE, VT_UI4, NULL,
SQL_DRIVER_HLIB, FALSE, FALSE, VT_UI4, NULL,
SQL_DRIVER_HSTMT, TRUE, FALSE, VT_UI4, NULL,
SQL_DRIVER_NAME, TRUE, FALSE, VT_BSTR, NULL,
SQL_DRIVER_ODBC_VER, TRUE, FALSE, VT_BSTR, NULL,
SQL_DRIVER_VER, TRUE, FALSE, VT_BSTR, NULL,
SQL_DROP_ASSERTION, TRUE, FALSE, VT_UI4, NULL,
SQL_DROP_CHARACTER_SET, TRUE, FALSE, VT_UI4, NULL,
SQL_DROP_COLLATION, TRUE, FALSE, VT_UI4, NULL,
SQL_DROP_DOMAIN, TRUE, FALSE, VT_UI4, NULL,
SQL_DROP_SCHEMA, TRUE, FALSE, VT_UI4, NULL,
SQL_DROP_TABLE, TRUE, FALSE, VT_UI4, NULL,
SQL_DROP_VIEW, TRUE, FALSE, VT_UI4, NULL,
SQL_DYNAMIC_CURSOR_ATTRIBUTES1, TRUE, FALSE, VT_UI4, NULL,
SQL_DYNAMIC_CURSOR_ATTRIBUTES2, TRUE, FALSE, VT_UI4, NULL,
SQL_EXPRESSIONS_IN_ORDERBY, TRUE, FALSE, VT_BSTR, NULL,
SQL_FILE_USAGE, TRUE, FALSE, VT_UI2, NULL,
SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1,TRUE,FALSE, VT_UI4, NULL,
SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2,TRUE,FALSE, VT_UI4, NULL,
SQL_GETDATA_EXTENSIONS, TRUE, FALSE, VT_UI4, NULL,
SQL_GROUP_BY, TRUE, FALSE, VT_UI2, NULL,
SQL_IDENTIFIER_CASE, TRUE, FALSE, VT_UI2, NULL,
SQL_IDENTIFIER_QUOTE_CHAR, TRUE, FALSE, VT_BSTR, NULL,
SQL_INDEX_KEYWORDS, TRUE, FALSE, VT_UI4, NULL,
SQL_INFO_SCHEMA_VIEWS, TRUE, FALSE, VT_UI4, NULL,
SQL_INSERT_STATEMENT, TRUE, FALSE, VT_UI4, NULL,
SQL_INTEGRITY, TRUE, FALSE, VT_BSTR, NULL,
SQL_KEYSET_CURSOR_ATTRIBUTES1, TRUE, FALSE, VT_UI4, NULL,
SQL_KEYSET_CURSOR_ATTRIBUTES2, TRUE, FALSE, VT_UI4, NULL,
SQL_KEYWORDS, TRUE, FALSE, VT_BSTR, NULL,
SQL_LIKE_ESCAPE_CLAUSE, TRUE, FALSE, VT_BSTR, NULL,
SQL_MAX_ASYNC_CONCURRENT_STATEMENTS,TRUE,FALSE, VT_UI4, NULL,
SQL_MAX_BINARY_LITERAL_LEN, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_CATALOG_NAME_LEN, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_CHAR_LITERAL_LEN, TRUE, FALSE, VT_UI4, NULL,
SQL_MAX_COLUMN_NAME_LEN, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_COLUMNS_IN_GROUP_BY, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_COLUMNS_IN_INDEX, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_COLUMNS_IN_ORDER_BY, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_COLUMNS_IN_SELECT, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_CONCURRENT_ACTIVITIES, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_CURSOR_NAME_LEN, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_DRIVER_CONNECTIONS, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_IDENTIFIER_LEN, TRUE, FALSE, VT_UI2, NULL,
SQL_MAX_INDEX_SIZE, TRUE, FALSE, VT_UI4, NULL
};
enum DIAGERRORFIELD_ENUM
{
E_DIAG_CURSOR_ROW_COUNT,
E_DIAG_DYNAMIC_FUNCTION,
E_DIAG_DYNAMIC_FUNCTION_CODE,
E_DIAG_NUMBER,
E_DIAG_RETURNCODE,
E_DIAG_DIAG_ROW_COUNT,
E_DIAG_CLASS_ORGIN,
E_DIAG_COLUMN_NUMBER,
E_DIAG_CONNECTION_NAME,
E_DIAG_MESSAGE_TEXT,
E_DIAG_NATIVE,
E_DIAG_ROW_NUMBER,
E_DIAG_SERVER_NAME,
E_DIAG_SQLSTATE,
E_DIAG_SUBCLASS_ORIGIN
};
enum ERROR_NUMBER
{
eERRORONE,
eERRORTWO,
};
enum ERROR_HANDLE_ENUM
{
eHENV,
eHDBC,
eHSTMT,
eHDESC
};
KAGREQDIAG g_rgKagDiagAll[]=
{
// field field flag field type
KAGREQDIAGFLAGS_HEADER, VT_I4, SQL_DIAG_CURSOR_ROW_COUNT,
KAGREQDIAGFLAGS_HEADER, VT_BSTR, SQL_DIAG_DYNAMIC_FUNCTION,
KAGREQDIAGFLAGS_HEADER, VT_I4, SQL_DIAG_DYNAMIC_FUNCTION_CODE,
KAGREQDIAGFLAGS_HEADER, VT_I4, SQL_DIAG_NUMBER,
KAGREQDIAGFLAGS_HEADER, VT_I2, SQL_DIAG_RETURNCODE,
KAGREQDIAGFLAGS_HEADER, VT_I4, SQL_DIAG_ROW_COUNT,
KAGREQDIAGFLAGS_RECORD, VT_BSTR, SQL_DIAG_CLASS_ORIGIN,
KAGREQDIAGFLAGS_RECORD, VT_I4, SQL_DIAG_COLUMN_NUMBER,
KAGREQDIAGFLAGS_RECORD, VT_BSTR, SQL_DIAG_CONNECTION_NAME,
KAGREQDIAGFLAGS_RECORD, VT_BSTR, SQL_DIAG_MESSAGE_TEXT,
KAGREQDIAGFLAGS_RECORD, VT_I4, SQL_DIAG_NATIVE,
KAGREQDIAGFLAGS_RECORD, VT_I4, SQL_DIAG_ROW_NUMBER,
KAGREQDIAGFLAGS_RECORD, VT_BSTR, SQL_DIAG_SERVER_NAME,
KAGREQDIAGFLAGS_RECORD, VT_BSTR, SQL_DIAG_SQLSTATE,
KAGREQDIAGFLAGS_RECORD, VT_BSTR, SQL_DIAG_SUBCLASS_ORIGIN
};
const int g_ccAllDiagFields = sizeof(g_rgKagDiagAll)/sizeof(KAGREQDIAG);
#endif //_KAGTEST_H_