Changeset: e54ec833a505 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=e54ec833a505 Modified Files: Branch: default Log Message:
Merge with Dec2011 branch. diffs (truncated from 2558 to 300 lines): diff --git a/clients/ChangeLog.Dec2011 b/clients/ChangeLog.Dec2011 --- a/clients/ChangeLog.Dec2011 +++ b/clients/ChangeLog.Dec2011 @@ -1,6 +1,11 @@ # ChangeLog file for clients # This file is updated with Maddlog +* Tue Dec 6 2011 Fabian Groffen <[email protected]> +- Fixed some bugs in the PHP interface affecting the mapi_ping(), + monetdb_insert_id() and auto_commit() functions. Bugs #2936, #2937, + #2938. + * Tue Nov 15 2011 Sjoerd Mullender <[email protected]> - ODBC: Fixed SQLNumResultCols and SQLDescribeCol to return useful information after a call to SQLPrepare and before any SQLExecute. diff --git a/clients/odbc/driver/ODBCConvert.c b/clients/odbc/driver/ODBCConvert.c --- a/clients/odbc/driver/ODBCConvert.c +++ b/clients/odbc/driver/ODBCConvert.c @@ -1233,9 +1233,12 @@ ODBCFetch(ODBCStmt *stmt, if (type == SQL_C_WCHAR) { /* allocate temporary space */ buflen = 511; /* should be enough for most types */ - if (sql_type == SQL_CHAR && data != NULL) - buflen = (SQLLEN) datalen; /* but this is certainly enough for strings */ - ptr = malloc(buflen + 1); + if (data != NULL && + (sql_type == SQL_CHAR || + sql_type == SQL_VARCHAR || + sql_type == SQL_LONGVARCHAR)) + buflen = (SQLLEN) datalen + 1; /* but this is certainly enough for strings */ + ptr = malloc(buflen); lenp = NULL; } diff --git a/clients/odbc/driver/ODBCGlobal.h b/clients/odbc/driver/ODBCGlobal.h --- a/clients/odbc/driver/ODBCGlobal.h +++ b/clients/odbc/driver/ODBCGlobal.h @@ -141,6 +141,17 @@ extern const char *ODBCdebug; extern void ODBCLOG(_In_z_ _Printf_format_string_ const char *fmt, ...) __attribute__((__format__(__printf__, 1, 2))); #endif + +char *translateCType(SQLSMALLINT ValueType); +char *translateSQLType(SQLSMALLINT ParameterType); +char *translateFieldIdentifier(SQLSMALLINT FieldIdentifier); +char *translateFetchOrientation(SQLUSMALLINT FetchOrientation); +char *translateConnectAttribute(SQLINTEGER Attribute); +char *translateConnectOption(SQLUSMALLINT Option); +char *translateEnvAttribute(SQLINTEGER Attribute); +char *translateStmtAttribute(SQLINTEGER Attribute); +char *translateStmtOption(SQLUSMALLINT Option); +char *translateCompletionType(SQLSMALLINT CompletionType); #endif #endif diff --git a/clients/odbc/driver/ODBCUtil.c b/clients/odbc/driver/ODBCUtil.c --- a/clients/odbc/driver/ODBCUtil.c +++ b/clients/odbc/driver/ODBCUtil.c @@ -547,6 +547,512 @@ struct sql_types ODBC_c_types[] = { const char *ODBCdebug; +char * +translateCType(SQLSMALLINT ValueType) +{ + switch (ValueType) { + case SQL_C_CHAR: + return "SQL_C_CHAR"; + case SQL_C_WCHAR: + return "SQL_C_WCHAR"; + case SQL_C_BINARY: + return "SQL_C_BINARY"; + case SQL_C_BIT: + return "SQL_C_BIT"; + case SQL_C_STINYINT: + return "SQL_C_STINYINT"; + case SQL_C_UTINYINT: + return "SQL_C_UTINYINT"; + case SQL_C_TINYINT: + return "SQL_C_TINYINT"; + case SQL_C_SSHORT: + return "SQL_C_SSHORT"; + case SQL_C_USHORT: + return "SQL_C_USHORT"; + case SQL_C_SHORT: + return "SQL_C_SHORT"; + case SQL_C_SLONG: + return "SQL_C_SLONG"; + case SQL_C_ULONG: + return "SQL_C_ULONG"; + case SQL_C_LONG: + return "SQL_C_LONG"; + case SQL_C_SBIGINT: + return "SQL_C_SBIGINT"; + case SQL_C_UBIGINT: + return "SQL_C_UBIGINT"; + case SQL_C_NUMERIC: + return "SQL_C_NUMERIC"; + case SQL_C_FLOAT: + return "SQL_C_FLOAT"; + case SQL_C_DOUBLE: + return "SQL_C_DOUBLE"; + case SQL_C_TYPE_DATE: + return "SQL_C_TYPE_DATE"; + case SQL_C_TYPE_TIME: + return "SQL_C_TYPE_TIME"; + case SQL_C_TYPE_TIMESTAMP: + return "SQL_C_TYPE_TIMESTAMP"; + case SQL_C_INTERVAL_YEAR: + return "SQL_C_INTERVAL_YEAR"; + case SQL_C_INTERVAL_MONTH: + return "SQL_C_INTERVAL_MONTH"; + case SQL_C_INTERVAL_YEAR_TO_MONTH: + return "SQL_C_INTERVAL_YEAR_TO_MONTH"; + case SQL_C_INTERVAL_DAY: + return "SQL_C_INTERVAL_DAY"; + case SQL_C_INTERVAL_HOUR: + return "SQL_C_INTERVAL_HOUR"; + case SQL_C_INTERVAL_MINUTE: + return "SQL_C_INTERVAL_MINUTE"; + case SQL_C_INTERVAL_SECOND: + return "SQL_C_INTERVAL_SECOND"; + case SQL_C_INTERVAL_DAY_TO_HOUR: + return "SQL_C_INTERVAL_DAY_TO_HOUR"; + case SQL_C_INTERVAL_DAY_TO_MINUTE: + return "SQL_C_INTERVAL_DAY_TO_MINUTE"; + case SQL_C_INTERVAL_DAY_TO_SECOND: + return "SQL_C_INTERVAL_DAY_TO_SECOND"; + case SQL_C_INTERVAL_HOUR_TO_MINUTE: + return "SQL_C_INTERVAL_HOUR_TO_MINUTE"; + case SQL_C_INTERVAL_HOUR_TO_SECOND: + return "SQL_C_INTERVAL_HOUR_TO_SECOND"; + case SQL_C_INTERVAL_MINUTE_TO_SECOND: + return "SQL_C_INTERVAL_MINUTE_TO_SECOND"; + case SQL_C_GUID: + return "SQL_C_GUID"; + case SQL_C_DEFAULT: + return "SQL_C_DEFAULT"; + case SQL_ARD_TYPE: + return "SQL_ARD_TYPE"; + case SQL_DATETIME: + return "SQL_DATETIME"; + case SQL_INTERVAL: + return "SQL_INTERVAL"; + default: + return "unknown"; + } +} + +char * +translateSQLType(SQLSMALLINT ParameterType) +{ + switch (ParameterType) { + case SQL_CHAR: + return "SQL_CHAR"; + case SQL_VARCHAR: + return "SQL_VARCHAR"; + case SQL_LONGVARCHAR: + return "SQL_LONGVARCHAR"; + case SQL_BINARY: + return "SQL_BINARY"; + case SQL_VARBINARY: + return "SQL_VARBINARY"; + case SQL_LONGVARBINARY: + return "SQL_LONGVARBINARY"; + case SQL_TYPE_DATE: + return "SQL_TYPE_DATE"; + case SQL_INTERVAL_MONTH: + return "SQL_INTERVAL_MONTH"; + case SQL_INTERVAL_YEAR: + return "SQL_INTERVAL_YEAR"; + case SQL_INTERVAL_YEAR_TO_MONTH: + return "SQL_INTERVAL_YEAR_TO_MONTH"; + case SQL_INTERVAL_DAY: + return "SQL_INTERVAL_DAY"; + case SQL_INTERVAL_HOUR: + return "SQL_INTERVAL_HOUR"; + case SQL_INTERVAL_MINUTE: + return "SQL_INTERVAL_MINUTE"; + case SQL_INTERVAL_DAY_TO_HOUR: + return "SQL_INTERVAL_DAY_TO_HOUR"; + case SQL_INTERVAL_DAY_TO_MINUTE: + return "SQL_INTERVAL_DAY_TO_MINUTE"; + case SQL_INTERVAL_HOUR_TO_MINUTE: + return "SQL_INTERVAL_HOUR_TO_MINUTE"; + case SQL_TYPE_TIME: + return "SQL_TYPE_TIME"; + case SQL_TYPE_TIMESTAMP: + return "SQL_TYPE_TIMESTAMP"; + case SQL_INTERVAL_SECOND: + return "SQL_INTERVAL_SECOND"; + case SQL_INTERVAL_DAY_TO_SECOND: + return "SQL_INTERVAL_DAY_TO_SECOND"; + case SQL_INTERVAL_HOUR_TO_SECOND: + return "SQL_INTERVAL_HOUR_TO_SECOND"; + case SQL_INTERVAL_MINUTE_TO_SECOND: + return "SQL_INTERVAL_MINUTE_TO_SECOND"; + case SQL_DECIMAL: + return "SQL_DECIMAL"; + case SQL_NUMERIC: + return "SQL_NUMERIC"; + case SQL_FLOAT: + return "SQL_FLOAT"; + case SQL_REAL: + return "SQL_REAL"; + case SQL_DOUBLE: + return "SQL_DOUBLE"; + case SQL_WCHAR: + return "SQL_WCHAR"; + case SQL_WVARCHAR: + return "SQL_WVARCHAR"; + case SQL_WLONGVARCHAR: + return "SQL_WLONGVARCHAR"; + case SQL_BIT: + return "SQL_BIT"; + case SQL_TINYINT: + return "SQL_TINYINT"; + case SQL_SMALLINT: + return "SQL_SMALLINT"; + case SQL_INTEGER: + return "SQL_INTEGER"; + case SQL_BIGINT: + return "SQL_BIGINT"; + case SQL_GUID: + return "SQL_GUID"; + case SQL_DATETIME: + return "SQL_DATETIME"; + case SQL_INTERVAL: + return "SQL_INTERVAL"; + default: + return "unknown"; + } +} + +char * +translateFieldIdentifier(SQLSMALLINT FieldIdentifier) +{ + switch (FieldIdentifier) { + case SQL_COLUMN_LENGTH: + return "SQL_COLUMN_LENGTH"; + case SQL_COLUMN_PRECISION: + return "SQL_COLUMN_PRECISION"; + case SQL_COLUMN_SCALE: + return "SQL_COLUMN_SCALE"; + case SQL_DESC_AUTO_UNIQUE_VALUE: + return "SQL_DESC_AUTO_UNIQUE_VALUE"; + case SQL_DESC_BASE_COLUMN_NAME: + return "SQL_DESC_BASE_COLUMN_NAME"; + case SQL_DESC_BASE_TABLE_NAME: + return "SQL_DESC_BASE_TABLE_NAME"; + case SQL_DESC_CASE_SENSITIVE: + return "SQL_DESC_CASE_SENSITIVE"; + case SQL_DESC_CATALOG_NAME: + return "SQL_DESC_CATALOG_NAME"; + case SQL_DESC_CONCISE_TYPE: + return "SQL_DESC_CONCISE_TYPE"; + case SQL_DESC_COUNT: + return "SQL_DESC_COUNT"; + case SQL_DESC_DATA_PTR: + return "SQL_DESC_DATA_PTR"; + case SQL_DESC_DATETIME_INTERVAL_CODE: + return "SQL_DESC_DATETIME_INTERVAL_CODE"; + case SQL_DESC_DATETIME_INTERVAL_PRECISION: + return "SQL_DESC_DATETIME_INTERVAL_PRECISION"; + case SQL_DESC_DISPLAY_SIZE: + return "SQL_DESC_DISPLAY_SIZE"; + case SQL_DESC_FIXED_PREC_SCALE: + return "SQL_DESC_FIXED_PREC_SCALE"; + case SQL_DESC_INDICATOR_PTR: + return "SQL_DESC_INDICATOR_PTR"; + case SQL_DESC_LABEL: + return "SQL_DESC_LABEL"; + case SQL_DESC_LENGTH: + return "SQL_DESC_LENGTH"; + case SQL_DESC_LITERAL_PREFIX: + return "SQL_DESC_LITERAL_PREFIX"; + case SQL_DESC_LITERAL_SUFFIX: + return "SQL_DESC_LITERAL_SUFFIX"; + case SQL_DESC_LOCAL_TYPE_NAME: + return "SQL_DESC_LOCAL_TYPE_NAME"; + case SQL_DESC_NAME: + return "SQL_DESC_NAME"; + case SQL_DESC_NULLABLE: + return "SQL_DESC_NULLABLE"; + case SQL_DESC_NUM_PREC_RADIX: + return "SQL_DESC_NUM_PREC_RADIX"; + case SQL_DESC_OCTET_LENGTH: + return "SQL_DESC_OCTET_LENGTH"; + case SQL_DESC_OCTET_LENGTH_PTR: + return "SQL_DESC_OCTET_LENGTH_PTR"; + case SQL_DESC_PARAMETER_TYPE: + return "SQL_DESC_PARAMETER_TYPE"; + case SQL_DESC_PRECISION: + return "SQL_DESC_PRECISION"; + case SQL_DESC_ROWVER: + return "SQL_DESC_ROWVER"; + case SQL_DESC_SCALE: + return "SQL_DESC_SCALE"; + case SQL_DESC_SCHEMA_NAME: + return "SQL_DESC_SCHEMA_NAME"; _______________________________________________ Checkin-list mailing list [email protected] http://mail.monetdb.org/mailman/listinfo/checkin-list
