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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to