Changeset: 483ba0d63ef4 for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=483ba0d63ef4 Modified Files: clients/odbc/driver/ODBCUtil.c clients/odbc/driver/SQLGetInfo.c java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java sql/test/pg_regress/Tests/abstime.sql sql/test/pg_regress/Tests/aggregates.sql sql/test/pg_regress/Tests/alter_table.sql sql/test/pg_regress/Tests/arrays.sql sql/test/pg_regress/Tests/bit.sql sql/test/pg_regress/Tests/boolean.sql sql/test/pg_regress/Tests/box.sql sql/test/pg_regress/Tests/btree_index.sql sql/test/pg_regress/Tests/case.sql sql/test/pg_regress/Tests/char.sql sql/test/pg_regress/Tests/circle.sql sql/test/pg_regress/Tests/cluster.sql sql/test/pg_regress/Tests/comments.sql sql/test/pg_regress/Tests/conversion.sql sql/test/pg_regress/Tests/copy2.sql sql/test/pg_regress/Tests/create_aggregate.sql sql/test/pg_regress/Tests/create_index.sql sql/test/pg_regress/Tests/create_misc.sql sql/test/pg_regress/Tests/create_operator.sql sql/test/pg_regress/Tests/create_type.sql sql/test/pg_regress/Tests/create_view.sql sql/test/pg_regress/Tests/date.sql sql/test/pg_regress/Tests/domain.sql sql/test/pg_regress/Tests/drop.sql sql/test/pg_regress/Tests/errors.sql sql/test/pg_regress/Tests/float4.sql sql/test/pg_regress/Tests/float8.sql sql/test/pg_regress/Tests/foreign_key.sql sql/test/pg_regress/Tests/geometry.sql sql/test/pg_regress/Tests/hash_index.sql sql/test/pg_regress/Tests/horology.sql sql/test/pg_regress/Tests/inet.sql sql/test/pg_regress/Tests/inherit.sql sql/test/pg_regress/Tests/insert.sql sql/test/pg_regress/Tests/int2.sql sql/test/pg_regress/Tests/int4.sql sql/test/pg_regress/Tests/int8.sql sql/test/pg_regress/Tests/interval.sql sql/test/pg_regress/Tests/join.sql sql/test/pg_regress/Tests/limit.sql sql/test/pg_regress/Tests/lseg.sql sql/test/pg_regress/Tests/mule_internal.sql sql/test/pg_regress/Tests/name.sql sql/test/pg_regress/Tests/namespace.sql sql/test/pg_regress/Tests/numeric.sql sql/test/pg_regress/Tests/numeric_big.sql sql/test/pg_regress/Tests/numerology.sql sql/test/pg_regress/Tests/oid.sql sql/test/pg_regress/Tests/oidjoins.sql sql/test/pg_regress/Tests/opr_sanity.sql sql/test/pg_regress/Tests/path.sql sql/test/pg_regress/Tests/plpgsql.sql sql/test/pg_regress/Tests/point.sql sql/test/pg_regress/Tests/polygon.sql sql/test/pg_regress/Tests/polymorphism.sql sql/test/pg_regress/Tests/portals.sql sql/test/pg_regress/Tests/portals_p2.sql sql/test/pg_regress/Tests/prepare.sql sql/test/pg_regress/Tests/privileges.sql sql/test/pg_regress/Tests/random.sql sql/test/pg_regress/Tests/rangefuncs.sql sql/test/pg_regress/Tests/reltime.sql sql/test/pg_regress/Tests/rowtypes.sql sql/test/pg_regress/Tests/rules.sql sql/test/pg_regress/Tests/sanity_check.sql sql/test/pg_regress/Tests/select.sql sql/test/pg_regress/Tests/select_distinct.sql sql/test/pg_regress/Tests/select_distinct_on.sql sql/test/pg_regress/Tests/select_having.sql sql/test/pg_regress/Tests/select_implicit.sql sql/test/pg_regress/Tests/select_into.sql sql/test/pg_regress/Tests/select_views.sql sql/test/pg_regress/Tests/sequence.sql sql/test/pg_regress/Tests/sql_ascii.sql sql/test/pg_regress/Tests/stats.sql sql/test/pg_regress/Tests/strings.sql sql/test/pg_regress/Tests/subselect.sql sql/test/pg_regress/Tests/temp.sql sql/test/pg_regress/Tests/time.sql sql/test/pg_regress/Tests/timestamp.sql sql/test/pg_regress/Tests/timestamptz.sql sql/test/pg_regress/Tests/timetz.sql sql/test/pg_regress/Tests/tinterval.sql sql/test/pg_regress/Tests/transactions.sql sql/test/pg_regress/Tests/triggers.sql sql/test/pg_regress/Tests/truncate.sql sql/test/pg_regress/Tests/type_sanity.sql sql/test/pg_regress/Tests/union.sql sql/test/pg_regress/Tests/update.sql sql/test/pg_regress/Tests/vacuum.sql sql/test/pg_regress/Tests/without_oid.sql Branch: default Log Message:
Merge with Jan2014 branch. diffs (truncated from 1994 to 300 lines): 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 @@ -290,7 +290,7 @@ static struct scalars { } scalars[] = { {"ascii", 1, "\"ascii\"(\1)", }, {"bit_length", 1, NULL, }, - {"char", 1, NULL, }, + {"char", 1, "\"code\"(\1)", }, {"char_length", 1, "\"char_length\"(\1)", }, {"character_length", 1, "\"character_length\"(\1)", }, {"concat", 2, "\"concat\"(\1,\2)", }, @@ -356,6 +356,7 @@ static struct scalars { {"now", 0, "\"now\"()", }, {"quarter", 1, "((\"month\"(\1) - 1) / 3 + 1)", }, {"second", 1, "\"second\"(\1)", }, + {"timestampadd", 3, NULL, }, {"timestampdiff", 3, NULL, }, {"week", 1, "\"week\"(\1)", }, {"year", 1, "\"year\"(\1)", }, @@ -402,7 +403,7 @@ static struct convert { { "SQL_TIMESTAMP", "timestamp", }, { "SQL_TINYINT", "tinyint", }, { "SQL_VARBINARY", "binary large object", }, - { "SQL_VARCHAR", "character large object", }, + { "SQL_VARCHAR", "character varying", }, { "SQL_WCHAR", "character", }, { "SQL_WLONGVARCHAR", "character large object", }, { "SQL_WVARCHAR", "character large object", }, @@ -565,7 +566,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL while (*p == ' ') p++; proc = p; - while (*p && isascii(*p) && isalnum(*p)) + while (*p && isascii(*p) && (*p == '_' || isalnum(*p))) p++; if (p == proc || (isascii(*proc) && !isalpha(*proc))) @@ -619,7 +620,7 @@ ODBCTranslateSQL(ODBCDbc *dbc, const SQL while (*p == ' ') p++; scalarfunc = p; - while (*p && isascii(*p) && isalnum(*p)) + while (*p && isascii(*p) && (*p == '_' || isalnum(*p))) p++; if (p == scalarfunc || (isascii(*scalarfunc) && !isalpha(*scalarfunc))) diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c --- a/clients/odbc/driver/SQLGetInfo.c +++ b/clients/odbc/driver/SQLGetInfo.c @@ -51,7 +51,7 @@ SQLGetInfo_(ODBCDbc *dbc, int nValue = 0; char buf[64]; const char *sValue = NULL; /* iff non-NULL, return string value */ - int len = 0; + int len = sizeof(SQLUINTEGER); /* most common size to return */ /* For some info types an active connection is needed */ if (!dbc->Connected && @@ -66,10 +66,10 @@ SQLGetInfo_(ODBCDbc *dbc, switch (InfoType) { case SQL_ACCESSIBLE_PROCEDURES: - sValue = "Y"; + sValue = "Y"; /* "N" */ break; case SQL_ACCESSIBLE_TABLES: - sValue = "N"; + sValue = "N"; /* "Y" */ break; case SQL_ACTIVE_ENVIRONMENTS: nValue = 0; /* 0 = no limit */ @@ -83,10 +83,8 @@ SQLGetInfo_(ODBCDbc *dbc, 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 | @@ -96,114 +94,133 @@ SQLGetInfo_(ODBCDbc *dbc, * 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 | + nValue = SQL_AT_ADD_COLUMN | /* ODBC 2.0, deprecated value */ + 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 | /* ODBC 2.0, deprecated value */ + 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_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_ADD_COLUMN_COLLATION | * 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; +#ifdef SQL_ASYNC_DBC_FUNCTIONS + case SQL_ASYNC_DBC_FUNCTIONS: + nValue = SQL_ASYNC_DBC_NOT_CAPABLE; + /* SQL_ASYNC_DBC_CAPABLE */ + break; +#endif case SQL_ASYNC_MODE: nValue = SQL_AM_NONE; /* SQL_AM_CONNECTION, SQL_AM_STATEMENT */ - len = sizeof(SQLUINTEGER); break; +#ifdef SQL_ASYNC_NOTIFICATION + case SQL_ASYNC_NOTIFICATION: + nValue = SQL_ASYNC_NOTIFICATION_NOT_CAPABLE; + /* SQL_ASYNC_NOTIFICATION_CAPABLE */ + break; +#endif 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"; + sValue = "N"; /* "Y" */ 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"; + sValue = "Y"; /* "N" */ break; case SQL_CONCAT_NULL_BEHAVIOR: nValue = SQL_CB_NULL; /* SQL_CB_NON_NULL */ len = sizeof(SQLUSMALLINT); break; + case SQL_CONVERT_TINYINT: + case SQL_CONVERT_SMALLINT: + case SQL_CONVERT_INTEGER: case SQL_CONVERT_BIGINT: + nValue = SQL_CVT_BIGINT | + SQL_CVT_BIT | + SQL_CVT_CHAR | + SQL_CVT_DECIMAL | + SQL_CVT_DOUBLE | + SQL_CVT_FLOAT | + SQL_CVT_INTEGER | + SQL_CVT_INTERVAL_DAY_TIME | + SQL_CVT_INTERVAL_YEAR_MONTH | + SQL_CVT_LONGVARCHAR | + SQL_CVT_NUMERIC | + SQL_CVT_REAL | + SQL_CVT_SMALLINT | + SQL_CVT_TINYINT | + SQL_CVT_VARCHAR; + break; case SQL_CONVERT_BINARY: + case SQL_CONVERT_LONGVARBINARY: + case SQL_CONVERT_VARBINARY: + nValue = SQL_CVT_BINARY | + SQL_CVT_CHAR | + SQL_CVT_LONGVARBINARY | + SQL_CVT_LONGVARCHAR | + SQL_CVT_VARBINARY | + SQL_CVT_VARCHAR; + /* SQL_CVT_GUID */ + break; case SQL_CONVERT_BIT: + nValue = SQL_CVT_BIGINT | + SQL_CVT_BIT | + SQL_CVT_CHAR | + SQL_CVT_INTEGER | + SQL_CVT_LONGVARCHAR | + SQL_CVT_SMALLINT | + SQL_CVT_TINYINT | + SQL_CVT_VARCHAR; + break; 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_VARCHAR: 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 | @@ -224,14 +241,86 @@ SQLGetInfo_(ODBCDbc *dbc, SQL_CVT_TIMESTAMP | SQL_CVT_TINYINT | SQL_CVT_VARBINARY | - SQL_CVT_VARCHAR | - SQL_CVT_GUID; - len = sizeof(SQLUINTEGER); + SQL_CVT_VARCHAR; + /* SQL_CVT_GUID */ + break; + case SQL_CONVERT_DATE: + nValue = SQL_CVT_CHAR | + SQL_CVT_DATE | + SQL_CVT_LONGVARCHAR | + SQL_CVT_TIMESTAMP | + SQL_CVT_VARCHAR; + break; + case SQL_CONVERT_DECIMAL: + case SQL_CONVERT_NUMERIC: + nValue = SQL_CVT_BIGINT | + SQL_CVT_CHAR | + SQL_CVT_DECIMAL | + SQL_CVT_DOUBLE | + SQL_CVT_FLOAT | + SQL_CVT_INTEGER | + SQL_CVT_INTERVAL_DAY_TIME | + SQL_CVT_LONGVARCHAR | + SQL_CVT_NUMERIC | + SQL_CVT_REAL | + SQL_CVT_SMALLINT | + SQL_CVT_TINYINT | + SQL_CVT_VARCHAR; + break; + case SQL_CONVERT_DOUBLE: + case SQL_CONVERT_REAL: + case SQL_CONVERT_FLOAT: + nValue = SQL_CVT_BIGINT | + SQL_CVT_CHAR | + SQL_CVT_DECIMAL | + SQL_CVT_DOUBLE | + SQL_CVT_FLOAT | + SQL_CVT_INTEGER | _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list