Changeset: 2825435e3b8b for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2825435e3b8b
Modified Files:
clients/odbc/driver/ODBCUtil.c
clients/odbc/driver/SQLGetInfo.c
java/src/nl/cwi/monetdb/jdbc/MonetResultSet.java
sql/backends/monet5/generator/generator.h
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: transaction-replication
Log Message:
Merge with default branch
diffs (truncated from 2019 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 |
@@ -212,6 +229,7 @@ SQLGetInfo_(ODBCDbc *dbc,
SQL_CVT_DECIMAL |
SQL_CVT_DOUBLE |
SQL_CVT_FLOAT |
+ SQL_CVT_GUID |
SQL_CVT_INTEGER |
SQL_CVT_INTERVAL_DAY_TIME |
SQL_CVT_INTERVAL_YEAR_MONTH |
@@ -224,14 +242,91 @@ SQLGetInfo_(ODBCDbc *dbc,
SQL_CVT_TIMESTAMP |
SQL_CVT_TINYINT |
SQL_CVT_VARBINARY |
- SQL_CVT_VARCHAR |
- SQL_CVT_GUID;
- len = sizeof(SQLUINTEGER);
+ SQL_CVT_VARCHAR;
+ 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:
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list