📄 sqlgetinfo.c
字号:
sValue = MONETDB_PRODUCT_NAME; break; case SQL_DBMS_VER: sValue = MONETDB_DRIVER_VER; break; case SQL_PROCEDURES: sValue = "N"; break; case SQL_DEFAULT_TXN_ISOLATION: nValue = SQL_TXN_READ_COMMITTED; len = sizeof(SQLUINTEGER); break; case SQL_EXPRESSIONS_IN_ORDERBY: sValue = "Y"; break; case SQL_IDENTIFIER_CASE: nValue = SQL_IC_LOWER; len = sizeof(SQLUSMALLINT); break; case SQL_IDENTIFIER_QUOTE_CHAR: sValue = "\""; /* the " (double quote) */ break; case SQL_MAX_COLUMN_NAME_LEN: case SQL_MAX_TABLE_NAME_LEN: case SQL_MAX_SCHEMA_NAME_LEN: case SQL_MAX_CATALOG_NAME_LEN: /* in monet strings can be very long, but limit it here to 255 which should be enough in most cases */ nValue = 255; len = sizeof(SQLUSMALLINT); break; case SQL_MAX_CURSOR_NAME_LEN: nValue = 0; /* currently SQLSetCursorName is not supported */ len = sizeof(SQLUSMALLINT); break; case SQL_MAX_PROCEDURE_NAME_LEN: /* No support for stored procedures: return 0 as value */ nValue = 0; len = sizeof(SQLUSMALLINT); break; case SQL_MULT_RESULT_SETS: sValue = "N"; break; case SQL_MULTIPLE_ACTIVE_TXN: sValue = "Y"; break; case SQL_OUTER_JOINS: sValue = "Y"; break; case SQL_PROCEDURE_TERM: sValue = "procedure"; break; case SQL_SCHEMA_TERM: sValue = "schema"; break; case SQL_TABLE_TERM: sValue = "table"; break; case SQL_SCROLL_CONCURRENCY: nValue = SQL_SCCO_READ_ONLY; len = sizeof(SQLUSMALLINT); break; case SQL_TXN_CAPABLE: nValue = SQL_TC_ALL; len = sizeof(SQLUSMALLINT); break; case SQL_USER_NAME: sValue = dbc->uid ? dbc->uid : ""; break; case SQL_NUMERIC_FUNCTIONS: nValue = SQL_FN_NUM_ABS | SQL_FN_NUM_ACOS | SQL_FN_NUM_ASIN | SQL_FN_NUM_ATAN | SQL_FN_NUM_ATAN2 | SQL_FN_NUM_CEILING | SQL_FN_NUM_COS | SQL_FN_NUM_COT | SQL_FN_NUM_DEGREES | SQL_FN_NUM_EXP | SQL_FN_NUM_FLOOR | SQL_FN_NUM_LOG | SQL_FN_NUM_LOG10 | SQL_FN_NUM_MOD | SQL_FN_NUM_PI | SQL_FN_NUM_POWER | SQL_FN_NUM_RADIANS | SQL_FN_NUM_RAND | SQL_FN_NUM_ROUND | SQL_FN_NUM_SIGN | SQL_FN_NUM_SIN | SQL_FN_NUM_SQRT | SQL_FN_NUM_TRUNCATE | SQL_FN_NUM_TAN; len = sizeof(SQLUINTEGER); break; case SQL_STRING_FUNCTIONS: nValue = SQL_FN_STR_ASCII | SQL_FN_STR_CHAR | SQL_FN_STR_CONCAT | SQL_FN_STR_DIFFERENCE | SQL_FN_STR_INSERT | SQL_FN_STR_LCASE | SQL_FN_STR_LEFT | SQL_FN_STR_LENGTH | SQL_FN_STR_LOCATE | SQL_FN_STR_LTRIM | SQL_FN_STR_REPEAT | SQL_FN_STR_REPLACE | SQL_FN_STR_RIGHT | SQL_FN_STR_RTRIM | SQL_FN_STR_SOUNDEX | SQL_FN_STR_SPACE | SQL_FN_STR_UCASE; len = sizeof(SQLUINTEGER); break; case SQL_SYSTEM_FUNCTIONS: nValue = SQL_FN_SYS_DBNAME | SQL_FN_SYS_USERNAME | SQL_FN_SYS_IFNULL; len = sizeof(SQLUINTEGER); break; case SQL_TIMEDATE_FUNCTIONS: nValue = SQL_FN_TD_CURDATE | SQL_FN_TD_CURTIME | SQL_FN_TD_DAYNAME | SQL_FN_TD_DAYOFMONTH | SQL_FN_TD_DAYOFWEEK | SQL_FN_TD_DAYOFYEAR | SQL_FN_TD_HOUR | SQL_FN_TD_MINUTE | SQL_FN_TD_MONTH | SQL_FN_TD_MONTHNAME | SQL_FN_TD_NOW | SQL_FN_TD_QUARTER | SQL_FN_TD_SECOND | SQL_FN_TD_TIMESTAMPADD | SQL_FN_TD_TIMESTAMPDIFF | SQL_FN_TD_WEEK | SQL_FN_TD_YEAR; len = sizeof(SQLUINTEGER); break; case SQL_TXN_ISOLATION_OPTION: nValue = SQL_TXN_REPEATABLE_READ; len = sizeof(SQLUINTEGER); break; case SQL_INTEGRITY: sValue = "N"; break; case SQL_NON_NULLABLE_COLUMNS: nValue = SQL_NNC_NON_NULL; len = sizeof(SQLUSMALLINT); break; case SQL_POSITIONED_STATEMENTS: nValue = SQL_PS_SELECT_FOR_UPDATE; len = sizeof(SQLUINTEGER); break; case SQL_GETDATA_EXTENSIONS: nValue = SQL_GD_ANY_COLUMN | SQL_GD_ANY_ORDER | SQL_GD_BLOCK | SQL_GD_BOUND; len = sizeof(SQLUINTEGER); break; case SQL_FILE_USAGE: nValue = SQL_FILE_NOT_SUPPORTED; len = sizeof(SQLUSMALLINT); break; case SQL_NULL_COLLATION: nValue = SQL_NC_LOW; len = sizeof(SQLUSMALLINT); break; case SQL_GROUP_BY: nValue = SQL_GB_NO_RELATION; len = sizeof(SQLUSMALLINT); break; case SQL_KEYWORDS:{ /* Returns the MonetDB keywords which are not listed * as ODBC keyword in the #define SQL_ODBC_KEYWORDS * in sql.h */ sValue = "BOOLEAN,COLUMNS,FLOOR,IMPORT,REAL"; break; } case SQL_ORDER_BY_COLUMNS_IN_SELECT: sValue = "N"; break; case SQL_QUOTED_IDENTIFIER_CASE: nValue = SQL_IC_SENSITIVE; len = sizeof(SQLUSMALLINT); break; case SQL_SPECIAL_CHARACTERS: sValue = "`!#$;:'<>"; /* allowed table name chars */ break; case SQL_SUBQUERIES: nValue = SQL_SQ_COMPARISON | SQL_SQ_EXISTS | SQL_SQ_IN | SQL_SQ_CORRELATED_SUBQUERIES; len = sizeof(SQLUINTEGER); break; case SQL_UNION: nValue = SQL_U_UNION; len = sizeof(SQLUINTEGER); break; case SQL_MAX_COLUMNS_IN_GROUP_BY: case SQL_MAX_COLUMNS_IN_INDEX: case SQL_MAX_COLUMNS_IN_ORDER_BY: case SQL_MAX_COLUMNS_IN_SELECT: case SQL_MAX_COLUMNS_IN_TABLE: case SQL_MAX_TABLES_IN_SELECT: /* no specified limit for SQL_MAX_COLUMNS_IN_xxx */ nValue = (SQLUSMALLINT) 0; /* no limits */ len = sizeof(SQLUSMALLINT); break; case SQL_MAX_INDEX_SIZE: case SQL_MAX_ROW_SIZE: case SQL_MAX_STATEMENT_LEN: nValue = (SQLUINTEGER) 0; /* no max.len. */ len = sizeof(SQLUINTEGER); break; case SQL_MAX_ROW_SIZE_INCLUDES_LONG: sValue = "N"; break; case SQL_MAX_USER_NAME_LEN: nValue = (SQLUSMALLINT) 0; /* no max.len. */ len = sizeof(SQLUSMALLINT); break; case SQL_MAX_CHAR_LITERAL_LEN: nValue = (SQLUINTEGER) 1024 *1024; /* 1MB */ len = sizeof(SQLUINTEGER); break; case SQL_NEED_LONG_DATA_LEN: sValue = "Y"; break; case SQL_MAX_BINARY_LITERAL_LEN: nValue = (SQLUINTEGER) 0; /* not supported yet */ len = sizeof(SQLUINTEGER); break; case SQL_LIKE_ESCAPE_CLAUSE: sValue = "Y"; break; case SQL_STATIC_SENSITIVITY: nValue = 0; /* SQL_SS_ADDITIONS | SQL_SS_DELETIONS | SQL_SS_UPDATES */ len = sizeof(SQLINTEGER); break; case SQL_DATETIME_LITERALS: nValue = SQL_DL_SQL92_DATE | SQL_DL_SQL92_TIME | SQL_DL_SQL92_TIMESTAMP | SQL_DL_SQL92_INTERVAL_YEAR | SQL_DL_SQL92_INTERVAL_MONTH | SQL_DL_SQL92_INTERVAL_DAY | SQL_DL_SQL92_INTERVAL_HOUR | SQL_DL_SQL92_INTERVAL_MINUTE | SQL_DL_SQL92_INTERVAL_SECOND | SQL_DL_SQL92_INTERVAL_YEAR_TO_MONTH | SQL_DL_SQL92_INTERVAL_DAY_TO_HOUR | SQL_DL_SQL92_INTERVAL_DAY_TO_MINUTE | SQL_DL_SQL92_INTERVAL_DAY_TO_SECOND | SQL_DL_SQL92_INTERVAL_HOUR_TO_MINUTE | SQL_DL_SQL92_INTERVAL_HOUR_TO_SECOND | SQL_DL_SQL92_INTERVAL_MINUTE_TO_SECOND; len = sizeof(SQLINTEGER); break; /* return default values */ case SQL_DDL_INDEX: case SQL_DRIVER_HDESC: case SQL_DROP_ASSERTION: case SQL_DROP_CHARACTER_SET: case SQL_DROP_COLLATION: case SQL_DROP_DOMAIN: case SQL_DROP_SCHEMA: case SQL_DROP_TABLE: case SQL_DROP_TRANSLATION: case SQL_DROP_VIEW: case SQL_INFO_SCHEMA_VIEWS: case SQL_INSERT_STATEMENT: case SQL_LOCK_TYPES: case SQL_MAX_ASYNC_CONCURRENT_STATEMENTS: case SQL_OJ_CAPABILITIES: case SQL_PARAM_ARRAY_ROW_COUNTS: case SQL_PARAM_ARRAY_SELECTS: case SQL_POS_OPERATIONS: case SQL_SCHEMA_USAGE: case SQL_TIMEDATE_ADD_INTERVALS: case SQL_TIMEDATE_DIFF_INTERVALS: nValue = 0; len = sizeof(SQLUINTEGER); break; case SQL_DESCRIBE_PARAMETER: sValue = "N"; break; case SQL_DM_VER: case SQL_XOPEN_CLI_YEAR: sValue = ""; break; case SQL_MAX_IDENTIFIER_LEN: nValue = 0; len = sizeof(SQLUSMALLINT); break; default: /* Invalid information type */ addDbcError(dbc, "HY096", NULL, 0); return SQL_ERROR; } /* copy the data to the supplied output parameters */ if (sValue) { copyString(sValue, pInfoValue, nInfoValueMax, pnLength, SQLSMALLINT, addDbcError, dbc); } else if (pInfoValue) { if (len == sizeof(SQLUINTEGER)) *(SQLUINTEGER *) pInfoValue = (SQLUINTEGER) nValue; else if (len == sizeof(SQLUSMALLINT)) *(SQLUSMALLINT *) pInfoValue = (SQLUSMALLINT) nValue; if (pnLength) *pnLength = len; } return dbc->Error ? SQL_SUCCESS_WITH_INFO : SQL_SUCCESS;}SQLRETURN SQL_APISQLGetInfo(SQLHDBC hDbc, SQLUSMALLINT nInfoType, SQLPOINTER pInfoValue, SQLSMALLINT nInfoValueMax, SQLSMALLINT *pnLength){ ODBCDbc *dbc = (ODBCDbc *) hDbc;#ifdef ODBCDEBUG ODBCLOG("SQLGetInfo " PTRFMT " %d\n", PTRFMTCAST hDbc, nInfoType);#endif if (!isValidDbc(dbc)) return SQL_INVALID_HANDLE; clearDbcErrors(dbc); return SQLGetInfo_(dbc, nInfoType, pInfoValue, nInfoValueMax, pnLength);}#ifdef WITH_WCHARSQLRETURN SQL_APISQLGetInfoA(SQLHDBC hDbc, SQLUSMALLINT nInfoType, SQLPOINTER pInfoValue, SQLSMALLINT nInfoValueMax, SQLSMALLINT *pnLength){ return SQLGetInfo(hDbc, nInfoType, pInfoValue, nInfoValueMax, pnLength);}SQLRETURN SQL_APISQLGetInfoW(SQLHDBC hDbc, SQLUSMALLINT nInfoType, SQLPOINTER pInfoValue, SQLSMALLINT nInfoValueMax, SQLSMALLINT *pnLength){ ODBCDbc *dbc = (ODBCDbc *) hDbc; SQLRETURN rc; SQLPOINTER ptr; SQLSMALLINT n;#ifdef ODBCDEBUG ODBCLOG("SQLGetInfoW " PTRFMT " %d\n", PTRFMTCAST hDbc, nInfoType);#endif if (!isValidDbc(dbc)) return SQL_INVALID_HANDLE; clearDbcErrors(dbc); switch (nInfoType) { /* all string attributes */ case SQL_ACCESSIBLE_PROCEDURES: case SQL_ACCESSIBLE_TABLES: case SQL_CATALOG_NAME: case SQL_CATALOG_NAME_SEPARATOR: case SQL_CATALOG_TERM: case SQL_COLLATION_SEQ: case SQL_COLUMN_ALIAS: case SQL_DATABASE_NAME: case SQL_DATA_SOURCE_NAME: case SQL_DATA_SOURCE_READ_ONLY: case SQL_DBMS_NAME: case SQL_DBMS_VER: case SQL_DESCRIBE_PARAMETER: case SQL_DM_VER: case SQL_DRIVER_NAME: case SQL_DRIVER_ODBC_VER: case SQL_DRIVER_VER: case SQL_EXPRESSIONS_IN_ORDERBY: case SQL_IDENTIFIER_QUOTE_CHAR: case SQL_INTEGRITY: case SQL_KEYWORDS: case SQL_LIKE_ESCAPE_CLAUSE: case SQL_MAX_ROW_SIZE_INCLUDES_LONG: case SQL_MULTIPLE_ACTIVE_TXN: case SQL_MULT_RESULT_SETS: case SQL_NEED_LONG_DATA_LEN: case SQL_ODBC_VER: case SQL_ORDER_BY_COLUMNS_IN_SELECT: case SQL_OUTER_JOINS: case SQL_PROCEDURES: case SQL_PROCEDURE_TERM: case SQL_ROW_UPDATES: case SQL_SCHEMA_TERM: case SQL_SEARCH_PATTERN_ESCAPE: case SQL_SERVER_NAME: case SQL_SPECIAL_CHARACTERS: case SQL_TABLE_TERM: case SQL_USER_NAME: case SQL_XOPEN_CLI_YEAR: n = nInfoValueMax * 4; ptr = (SQLPOINTER) malloc(n); break; default: n = nInfoValueMax; ptr = pInfoValue; break; } rc = SQLGetInfo_(dbc, nInfoType, ptr, n, &n); if (ptr !=pInfoValue) fixWcharOut(rc, ptr, n, pInfoValue, nInfoValueMax, pnLength, 2, addDbcError, dbc); else if (pnLength) *pnLength = n; return rc;}#endif /* WITH_WCHAR */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -