⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlgetinfo.c

📁 这个是内存数据库的客户端
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * The contents of this file are subject to the MonetDB Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://monetdb.cwi.nl/Legal/MonetDBLicense-1.1.html * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * The Original Code is the MonetDB Database System. * * The Initial Developer of the Original Code is CWI. * Portions created by CWI are Copyright (C) 1997-2007 CWI. * All Rights Reserved. *//* * This code was created by Peter Harvey (mostly during Christmas 98/99). * This code is LGPL. Please ensure that this message remains in future * distributions and uses of this code (thats about all I get out of it). * - Peter Harvey pharvey@codebydesign.com *  * This file has been modified for the MonetDB project.  See the file * Copyright in this directory for more information. *//********************************************************************** * SQLGetInfo() * CLI Compliance: ISO 92 * * Author: Martin van Dinther * Date  : 30 Aug 2002 * **********************************************************************/#include "ODBCGlobal.h"#include "ODBCDbc.h"#include "ODBCUtil.h"static SQLRETURNSQLGetInfo_(ODBCDbc *dbc,	    SQLUSMALLINT nInfoType,	    SQLPOINTER pInfoValue,	    SQLSMALLINT nInfoValueMax,	    SQLSMALLINT *pnLength){	int nValue = 0;	const char *sValue = NULL;	/* iff non-NULL, return string value */	int len = 0;	/* For some info types an active connection is needed */	if (!dbc->Connected &&	    (nInfoType == SQL_DATA_SOURCE_NAME ||	     nInfoType == SQL_SERVER_NAME ||	     nInfoType == SQL_DATABASE_NAME ||	     nInfoType == SQL_USER_NAME)) {		/* Connection does not exist */		addDbcError(dbc, "08003", NULL, 0);		return SQL_ERROR;	}	switch (nInfoType) {	case SQL_ACCESSIBLE_PROCEDURES:		sValue = "Y";		break;	case SQL_ACCESSIBLE_TABLES:		sValue = "N";		break;	case SQL_ACTIVE_ENVIRONMENTS:		nValue = 0;	/* 0 = no limit */		len = sizeof(SQLUSMALLINT);		break;	case SQL_AGGREGATE_FUNCTIONS:		nValue = SQL_AF_ALL |			SQL_AF_AVG |			SQL_AF_COUNT |			SQL_AF_DISTINCT |			SQL_AF_MAX |			SQL_AF_MIN |			SQL_AF_SUM;		len = sizeof(SQLUINTEGER);		break;	case SQL_ALTER_DOMAIN:		nValue = 0;		/* SQL_AD_ADD_CONSTRAINT_DEFERRABLE |		   SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED |		   SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE |		   SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE |		   SQL_AD_ADD_DOMAIN_CONSTRAINT |		   SQL_AD_ADD_DOMAIN_DEFAULT |		   SQL_AD_CONSTRAINT_NAME_DEFINITION |		   SQL_AD_DROP_DOMAIN_CONSTRAINT |		   SQL_AD_DROP_DOMAIN_DEFAULT */		len = sizeof(SQLUINTEGER);		break;	case SQL_ALTER_TABLE:		nValue = SQL_AT_ADD_COLUMN_DEFAULT |			SQL_AT_ADD_COLUMN_SINGLE |			SQL_AT_ADD_CONSTRAINT |			SQL_AT_ADD_TABLE_CONSTRAINT |			SQL_AT_CONSTRAINT_NAME_DEFINITION |			SQL_AT_DROP_COLUMN_RESTRICT |			SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT |			SQL_AT_SET_COLUMN_DEFAULT;		/* SQL_AT_ADD_COLUMN_SINGLE |		   SQL_AT_ADD_COLUMN_COLLATION |		   SQL_AT_ADD_COLUMN_DEFAULT |		   SQL_AT_ADD_TABLE_CONSTRAINT |		   SQL_AT_ADD_TABLE_CONSTRAINT |		   SQL_AT_CONSTRAINT_DEFERRABLE |		   SQL_AT_CONSTRAINT_INITIALLY_DEFERRED |		   SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE |		   SQL_AT_CONSTRAINT_NAME_DEFINITION |		   SQL_AT_DROP_COLUMN_CASCADE |		   SQL_AT_DROP_COLUMN_DEFAULT |		   SQL_AT_DROP_COLUMN_RESTRICT |		   SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE |		   SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT |		   SQL_AT_SET_COLUMN_DEFAULT |		   SQL_AT_CONSTRAINT_NON_DEFERRABLE */		len = sizeof(SQLUINTEGER);		break;	case SQL_ASYNC_MODE:		nValue = SQL_AM_NONE;		/* SQL_AM_CONNECTION, SQL_AM_STATEMENT */		len = sizeof(SQLUINTEGER);		break;	case SQL_BATCH_ROW_COUNT:		nValue = SQL_BRC_EXPLICIT;		/* SQL_BRC_PROCEDURES | SQL_BRC_ROLLED_UP */		len = sizeof(SQLUINTEGER);		break;	case SQL_BATCH_SUPPORT:		nValue = SQL_BS_ROW_COUNT_EXPLICIT | SQL_BS_SELECT_EXPLICIT;		/* SQL_BS_ROW_COUNT_PROC |		   SQL_BS_SELECT_PROC */		len = sizeof(SQLUINTEGER);		break;	case SQL_BOOKMARK_PERSISTENCE:		nValue = 0;	/* bookmarks not supported */		/* SQL_BP_CLOSE |		   SQL_BP_DELETE |		   SQL_BP_DROP |		   SQL_BP_OTHER_HSTMT |		   SQL_BP_TRANSACTION |		   SQL_BP_UPDATE */		len = sizeof(SQLUINTEGER);		break;	case SQL_CATALOG_LOCATION:		nValue = 0;	/* catalogs not supported */		/* SQL_CL_END, SQL_CL_START */		len = sizeof(SQLUSMALLINT);		break;	case SQL_CATALOG_NAME:		sValue = "N";		break;	case SQL_CATALOG_NAME_SEPARATOR:	case SQL_CATALOG_TERM:		sValue = "";		break;	case SQL_CATALOG_USAGE:		nValue = 0;		/* SQL_CU_DML_STATEMENTS |		   SQL_CU_INDEX_DEFINITION |		   SQL_CU_PRIVILEGE_DEFINITION |		   SQL_CU_PROCEDURE_INVOCATION |		   SQL_CU_TABLE_DEFINITION */		len = sizeof(SQLUINTEGER);		break;	case SQL_COLLATION_SEQ:		sValue = "UTF-8";		break;	case SQL_COLUMN_ALIAS:		sValue = "Y";		break;	case SQL_CONCAT_NULL_BEHAVIOR:		nValue = SQL_CB_NULL;		/* SQL_CB_NON_NULL */		len = sizeof(SQLUSMALLINT);		break;	case SQL_CONVERT_BIGINT:	case SQL_CONVERT_BINARY:	case SQL_CONVERT_BIT:	case SQL_CONVERT_CHAR:	case SQL_CONVERT_DATE:	case SQL_CONVERT_DECIMAL:	case SQL_CONVERT_DOUBLE:	case SQL_CONVERT_FLOAT:	case SQL_CONVERT_INTEGER:	case SQL_CONVERT_INTERVAL_DAY_TIME:	case SQL_CONVERT_INTERVAL_YEAR_MONTH:	case SQL_CONVERT_LONGVARBINARY:	case SQL_CONVERT_LONGVARCHAR:	case SQL_CONVERT_NUMERIC:	case SQL_CONVERT_REAL:	case SQL_CONVERT_SMALLINT:	case SQL_CONVERT_TIME:	case SQL_CONVERT_TIMESTAMP:	case SQL_CONVERT_TINYINT:	case SQL_CONVERT_VARBINARY:	case SQL_CONVERT_VARCHAR:		nValue = SQL_CVT_BIGINT |			SQL_CVT_BINARY |			SQL_CVT_BIT |			SQL_CVT_CHAR |			SQL_CVT_DATE |			SQL_CVT_DECIMAL |			SQL_CVT_DOUBLE |			SQL_CVT_FLOAT |			SQL_CVT_INTEGER |			SQL_CVT_INTERVAL_DAY_TIME |			SQL_CVT_INTERVAL_YEAR_MONTH |			SQL_CVT_LONGVARBINARY |			SQL_CVT_LONGVARCHAR |			SQL_CVT_NUMERIC |			SQL_CVT_REAL |			SQL_CVT_SMALLINT |			SQL_CVT_TIME |			SQL_CVT_TIMESTAMP |			SQL_CVT_TINYINT |			SQL_CVT_VARBINARY |			SQL_CVT_VARCHAR;		/* SQL_CVT_GUID */		len = sizeof(SQLUINTEGER);		break;	case SQL_CONVERT_FUNCTIONS:		/* No convert function supported */		nValue = SQL_FN_CVT_CAST | SQL_FN_CVT_CONVERT;		len = sizeof(SQLUINTEGER);		break;	case SQL_CORRELATION_NAME:		nValue = SQL_CN_ANY;		/* SQL_CN_DIFFERENT, SQL_CN_NONE */		len = sizeof(SQLUSMALLINT);		break;	case SQL_CREATE_ASSERTION:		/* SQL_CA_CREATE_ASSERTION |		   SQL_CA_CONSTRAINT_DEFERRABLE |		   SQL_CA_CONSTRAINT_INITIALLY_DEFERRED |		   SQL_CA_CONSTRAINT_INITIALLY_IMMEDIATE |		   SQL_CA_CONSTRAINT_NON_DEFERRABLE */	case SQL_CREATE_CHARACTER_SET:		/* SQL_CCS_CREATE_CHARACTER_SET |		   SQL_CCS_COLLATE_CLAUSE |		   SQL_CCS_LIMITED_COLLATION */	case SQL_CREATE_COLLATION:		/* SQL_CCOL_CREATE_COLLATION */	case SQL_CREATE_DOMAIN:		/* SQL_CDO_CREATE_DOMAIN |		   SQL_CDO_CONSTRAINT_NAME_DEFINITION |		   SQL_CDO_DEFAULT |		   SQL_CDO_CONSTRAINT |		   SQL_CDO_COLLATION |		   SQL_CDO_CONSTRAINT_DEFERRABLE |		   SQL_CDO_CONSTRAINT_INITIALLY_DEFERRED |		   SQL_CDO_CONSTRAINT_INITIALLY_IMMEDIATE |		   SQL_CDO_CONSTRAINT_NON_DEFERRABLE */	case SQL_CREATE_TRANSLATION:		/* SQL_CTR_CREATE_TRANSLATION */		nValue = 0;		len = sizeof(SQLUINTEGER);		break;	case SQL_CREATE_SCHEMA:		nValue = SQL_CS_CREATE_SCHEMA | SQL_CS_AUTHORIZATION;		/* SQL_CS_DEFAULT_CHARACTER_SET */		len = sizeof(SQLUINTEGER);		break;	case SQL_CREATE_TABLE:		nValue = SQL_CT_COLUMN_CONSTRAINT |			SQL_CT_COLUMN_DEFAULT |			SQL_CT_COMMIT_PRESERVE |			SQL_CT_CONSTRAINT_NAME_DEFINITION |			SQL_CT_CREATE_TABLE |			SQL_CT_GLOBAL_TEMPORARY |			SQL_CT_LOCAL_TEMPORARY |			SQL_CT_TABLE_CONSTRAINT;		/* SQL_CT_COLUMN_COLLATION |		   SQL_CT_COMMIT_DELETE |		   SQL_CT_CONSTRAINT_DEFERRABLE |		   SQL_CT_CONSTRAINT_INITIALLY_DEFERRED |		   SQL_CT_CONSTRAINT_INITIALLY_IMMEDIATE |		   SQL_CT_CONSTRAINT_NON_DEFERRABLE */		len = sizeof(SQLUINTEGER);		break;	case SQL_CREATE_VIEW:		nValue = SQL_CV_CREATE_VIEW | SQL_CV_CHECK_OPTION;		len = sizeof(SQLUINTEGER);		break;	case SQL_CURSOR_COMMIT_BEHAVIOR:	case SQL_CURSOR_ROLLBACK_BEHAVIOR:		nValue = SQL_CB_DELETE;		/* SQL_CB_CLOSE, SQL_CB_PRESERVE */		len = sizeof(SQLUSMALLINT);		break;	case SQL_CURSOR_SENSITIVITY:		nValue = SQL_INSENSITIVE;		/* SQL_SENSITIVE, SQL_UNSPECIFIED */		len = sizeof(SQLUINTEGER);		break;	case SQL_DATA_SOURCE_NAME:		sValue = dbc->dsn ? dbc->dsn : "";		break;	case SQL_DATA_SOURCE_READ_ONLY:		sValue = "N";		break;	case SQL_DATABASE_NAME:		sValue = dbc->dbname ? dbc->dbname : "";		break;	case SQL_ODBC_INTERFACE_CONFORMANCE:		nValue = SQL_OIC_CORE;		len = sizeof(SQLUINTEGER);		break;	case SQL_SCROLL_OPTIONS:		nValue = SQL_SO_STATIC;		/* SQL_SO_DYNAMIC,		   SQL_SO_FORWARD_ONLY,		   SQL_SO_KEYSET_DRIVEN,		   SQL_SO_MIXED */		len = sizeof(SQLUINTEGER);		break;	case SQL_DYNAMIC_CURSOR_ATTRIBUTES1:	case SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1:	case SQL_KEYSET_CURSOR_ATTRIBUTES1:	case SQL_DYNAMIC_CURSOR_ATTRIBUTES2:	case SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES2:	case SQL_KEYSET_CURSOR_ATTRIBUTES2:		nValue = 0;		len = sizeof(SQLUINTEGER);		break;		/* the above values have been checked */	case SQL_STATIC_CURSOR_ATTRIBUTES1:		/* SQL_CA1_BOOKMARK |		   SQL_CA1_BULK_ADD |		   SQL_CA1_BULK_DELETE_BY_BOOKMARK |		   SQL_CA1_BULK_FETCH_BY_BOOKMARK |		   SQL_CA1_BULK_UPDATE_BY_BOOKMARK |		   SQL_CA1_LOCK_EXCLUSIVE |		   SQL_CA1_LOCK_UNLOCK |		   SQL_CA1_POS_DELETE |		   SQL_CA1_POSITIONED_DELETE |		   SQL_CA1_POSITIONED_UPDATE |		   SQL_CA1_POS_REFRESH |		   SQL_CA1_POS_UPDATE |		   SQL_CA1_SELECT_FOR_UPDATE */		nValue = SQL_CA1_ABSOLUTE | SQL_CA1_LOCK_NO_CHANGE | SQL_CA1_NEXT | SQL_CA1_POS_POSITION | SQL_CA1_RELATIVE;		len = sizeof(SQLUINTEGER);		break;	case SQL_STATIC_CURSOR_ATTRIBUTES2:		/* SQL_CA2_CRC_APPROXIMATE |		   SQL_CA2_LOCK_CONCURRENCY |		   SQL_CA2_MAX_ROWS_AFFECTS_ALL |		   SQL_CA2_MAX_ROWS_CATALOG |		   SQL_CA2_MAX_ROWS_DELETE |		   SQL_CA2_MAX_ROWS_INSERT |		   SQL_CA2_MAX_ROWS_SELECT |		   SQL_CA2_MAX_ROWS_UPDATE |		   SQL_CA2_OPT_ROWVER_CONCURRENCY |		   SQL_CA2_OPT_VALUES_CONCURRENCY |		   SQL_CA2_READ_ONLY_CONCURRENCY |		   SQL_CA2_SENSITIVITY_ADDITIONS |		   SQL_CA2_SENSITIVITY_DELETIONS |		   SQL_CA2_SENSITIVITY_UPDATES |		   SQL_CA2_SIMULATE_NON_UNIQUE |		   SQL_CA2_SIMULATE_TRY_UNIQUE |		   SQL_CA2_SIMULATE_UNIQUE */		nValue = SQL_CA2_CRC_EXACT;		len = sizeof(SQLUINTEGER);		break;	case SQL_SQL_CONFORMANCE:		nValue = SQL_SC_SQL92_FULL;		len = sizeof(SQLUINTEGER);		break;	case SQL_MAX_DRIVER_CONNECTIONS:		nValue = 0;	/* 0 = No specified limit */		len = sizeof(SQLUSMALLINT);		break;	case SQL_MAX_CONCURRENT_ACTIVITIES:		nValue = 0;	/* 0 = No specified limit */		len = sizeof(SQLUSMALLINT);		break;	case SQL_DRIVER_NAME:		sValue = MONETDB_DRIVER_NAME;		break;	case SQL_DRIVER_VER:		sValue = MONETDB_DRIVER_VER;		break;	case SQL_FETCH_DIRECTION:		nValue = SQL_FD_FETCH_NEXT;		len = sizeof(SQLUSMALLINT);		break;	case SQL_ODBC_API_CONFORMANCE:		nValue = SQL_OIC_CORE;		len = sizeof(SQLUSMALLINT);		break;	case SQL_ODBC_VER:	case SQL_DRIVER_ODBC_VER:		sValue = MONETDB_ODBC_VER;		break;	case SQL_ROW_UPDATES:		sValue = "N";		break;	case SQL_ODBC_SAG_CLI_CONFORMANCE:		nValue = SQL_OSCC_COMPLIANT;		len = sizeof(SQLUSMALLINT);		break;	case SQL_SERVER_NAME:		sValue = MONETDB_SERVER_NAME;		break;	case SQL_SEARCH_PATTERN_ESCAPE:		sValue = "";	/* No search-char. escape char. */		break;	case SQL_ODBC_SQL_CONFORMANCE:		nValue = SQL_OSC_CORE;		len = sizeof(SQLUSMALLINT);		break;	case SQL_DBMS_NAME:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -