Changeset: 2485a2ec6826 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2485a2ec6826
Modified Files:
        clients/odbc/samples/testgetinfo.c
        monetdb5/optimizer/opt_mergetable.c
        sql/backends/monet5/rel_bin.c
        sql/odbc/samples/Tests/testgetinfo.stable.err
        sql/odbc/samples/Tests/testgetinfo.stable.out
        sql/server/rel_exp.c
        sql/server/rel_exp.h
        sql/server/rel_optimizer.c
Branch: default
Log Message:

Merge with Apr2019 branch.


diffs (truncated from 4071 to 300 lines):

diff --git a/clients/odbc/samples/testgetinfo.c 
b/clients/odbc/samples/testgetinfo.c
--- a/clients/odbc/samples/testgetinfo.c
+++ b/clients/odbc/samples/testgetinfo.c
@@ -12,6 +12,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <stdint.h>
+#include <stdbool.h>
 #include <sql.h>
 #include <sqlext.h>
 
@@ -49,15 +50,15 @@ prerr(SQLSMALLINT tpe, SQLHANDLE hnd, co
        }
 }
 
-static void
+static bool
 check(SQLRETURN ret, SQLSMALLINT tpe, SQLHANDLE hnd, const char *func)
 {
        switch (ret) {
        case SQL_SUCCESS:
-               break;
+               return true;
        case SQL_SUCCESS_WITH_INFO:
                prerr(tpe, hnd, func, "Info");
-               break;
+               return true;
        case SQL_ERROR:
                prerr(tpe, hnd, func, "Error");
                break;
@@ -68,6 +69,7 @@ check(SQLRETURN ret, SQLSMALLINT tpe, SQ
                fprintf(stderr, "%s: Unexpected return value\n", func);
                break;
        }
+       return false;
 }
 
 int
@@ -81,7 +83,7 @@ main(int argc, char **argv)
        SQLRETURN ret;
        char str[2048];
        SQLSMALLINT resultlen;
-       SQLUSMALLINT si;
+       SQLUSMALLINT s;
        SQLUINTEGER i;
 
        if (argc > 1)
@@ -110,620 +112,3103 @@ main(int argc, char **argv)
        check(ret, SQL_HANDLE_DBC, dbc, "SQLConnect");
 
        ret = SQLGetInfo(dbc, SQL_ACCESSIBLE_PROCEDURES, str, sizeof(str), 
&resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_ACCESSIBLE_PROCEDURES: %.*s\n", resultlen, str);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo 
SQL_ACCESSIBLE_PROCEDURES")) {
+               printf("SQL_ACCESSIBLE_PROCEDURES: %.*s\n", resultlen, str);
+       }
 
        ret = SQLGetInfo(dbc, SQL_ACCESSIBLE_TABLES, str, sizeof(str), 
&resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_ACCESSIBLE_TABLES: %.*s\n", resultlen, str);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo 
SQL_ACCESSIBLE_TABLES")) {
+               printf("SQL_ACCESSIBLE_TABLES: %.*s\n", resultlen, str);
+       }
 
-       ret = SQLGetInfo(dbc, SQL_ACTIVE_ENVIRONMENTS, &si, sizeof(si), 
&resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_ACTIVE_ENVIRONMENTS: %u\n", (unsigned int) si);
+       ret = SQLGetInfo(dbc, SQL_ACTIVE_ENVIRONMENTS, &s, sizeof(s), 
&resultlen);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo 
SQL_ACTIVE_ENVIRONMENTS")) {
+       }
 
        ret = SQLGetInfo(dbc, SQL_AGGREGATE_FUNCTIONS, &i, sizeof(i), 
&resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_AGGREGATE_FUNCTIONS: 0x%x\n", (unsigned int) i);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo 
SQL_AGGREGATE_FUNCTIONS")) {
+               printf("SQL_AGGREGATE_FUNCTIONS:");
+               if (i & SQL_AF_ALL)
+                       printf(" SQL_AF_ALL");
+               if (i & SQL_AF_AVG)
+                       printf(" SQL_AF_AVG");
+               if (i & SQL_AF_COUNT)
+                       printf(" SQL_AF_COUNT");
+               if (i & SQL_AF_DISTINCT)
+                       printf(" SQL_AF_DISTINCT");
+               if (i & SQL_AF_MAX)
+                       printf(" SQL_AF_MAX");
+               if (i & SQL_AF_MIN)
+                       printf(" SQL_AF_MIN");
+               if (i & SQL_AF_SUM)
+                       printf(" SQL_AF_SUM");
+               printf("\n");
+       }
 
        ret = SQLGetInfo(dbc, SQL_ALTER_DOMAIN, &i, sizeof(i), &resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_ALTER_DOMAIN: 0x%x\n", (unsigned int) i);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo SQL_ALTER_DOMAIN")) {
+               printf("SQL_ALTER_DOMAIN:");
+               if (i & SQL_AD_ADD_DOMAIN_CONSTRAINT)
+                       printf(" SQL_AD_ADD_DOMAIN_CONSTRAINT");
+               if (i & SQL_AD_ADD_DOMAIN_DEFAULT)
+                       printf(" SQL_AD_ADD_DOMAIN_DEFAULT");
+               if (i & SQL_AD_CONSTRAINT_NAME_DEFINITION)
+                       printf(" SQL_AD_CONSTRAINT_NAME_DEFINITION");
+               if (i & SQL_AD_DROP_DOMAIN_CONSTRAINT)
+                       printf(" SQL_AD_DROP_DOMAIN_CONSTRAINT");
+               if (i & SQL_AD_DROP_DOMAIN_DEFAULT)
+                       printf(" SQL_AD_DROP_DOMAIN_DEFAULT");
+               if (i & SQL_AD_ADD_CONSTRAINT_DEFERRABLE)
+                       printf(" SQL_AD_ADD_CONSTRAINT_DEFERRABLE");
+               if (i & SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE)
+                       printf(" SQL_AD_ADD_CONSTRAINT_NON_DEFERRABLE");
+               if (i & SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED)
+                       printf(" SQL_AD_ADD_CONSTRAINT_INITIALLY_DEFERRED");
+               if (i & SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE)
+                       printf(" SQL_AD_ADD_CONSTRAINT_INITIALLY_IMMEDIATE");
+               printf("\n");
+       }
 
        ret = SQLGetInfo(dbc, SQL_ALTER_TABLE, &i, sizeof(i), &resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_ALTER_TABLE: 0x%x\n", (unsigned int) i);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo SQL_ALTER_TABLE")) {
+               printf("SQL_ALTER_TABLE:");
+               if (i & SQL_AT_ADD_COLUMN_COLLATION)
+                       printf(" SQL_AT_ADD_COLUMN_COLLATION");
+               if (i & SQL_AT_ADD_COLUMN_DEFAULT)
+                       printf(" SQL_AT_ADD_COLUMN_DEFAULT");
+               if (i & SQL_AT_ADD_COLUMN_SINGLE)
+                       printf(" SQL_AT_ADD_COLUMN_SINGLE");
+               if (i & SQL_AT_ADD_CONSTRAINT)
+                       printf(" SQL_AT_ADD_CONSTRAINT");
+               if (i & SQL_AT_ADD_TABLE_CONSTRAINT)
+                       printf(" SQL_AT_ADD_TABLE_CONSTRAINT");
+               if (i & SQL_AT_CONSTRAINT_NAME_DEFINITION)
+                       printf(" SQL_AT_CONSTRAINT_NAME_DEFINITION");
+               if (i & SQL_AT_DROP_COLUMN_CASCADE)
+                       printf(" SQL_AT_DROP_COLUMN_CASCADE");
+               if (i & SQL_AT_DROP_COLUMN_DEFAULT)
+                       printf(" SQL_AT_DROP_COLUMN_DEFAULT");
+               if (i & SQL_AT_DROP_COLUMN_RESTRICT)
+                       printf(" SQL_AT_DROP_COLUMN_RESTRICT");
+               if (i & SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE)
+                       printf(" SQL_AT_DROP_TABLE_CONSTRAINT_CASCADE");
+               if (i & SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT)
+                       printf(" SQL_AT_DROP_TABLE_CONSTRAINT_RESTRICT");
+               if (i & SQL_AT_SET_COLUMN_DEFAULT)
+                       printf(" SQL_AT_SET_COLUMN_DEFAULT");
+               if (i & SQL_AT_CONSTRAINT_INITIALLY_DEFERRED)
+                       printf(" SQL_AT_CONSTRAINT_INITIALLY_DEFERRED");
+               if (i & SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE)
+                       printf(" SQL_AT_CONSTRAINT_INITIALLY_IMMEDIATE");
+               if (i & SQL_AT_CONSTRAINT_DEFERRABLE)
+                       printf(" SQL_AT_CONSTRAINT_DEFERRABLE");
+               if (i & SQL_AT_CONSTRAINT_NON_DEFERRABLE)
+                       printf(" SQL_AT_CONSTRAINT_NON_DEFERRABLE");
+               printf("\n");
+       }
+
+#ifdef SQL_ASYNC_DBC_FUNCTIONS
+       ret = SQLGetInfo(dbc, SQL_ASYNC_DBC_FUNCTIONS, &i, sizeof(i), 
&resultlen);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo 
SQL_ASYNC_DBC_FUNCTIONS")) {
+               printf("SQL_ASYNC_DBC_FUNCTIONS: ");
+               switch (i) {
+               case SQL_ASYNC_DBC_CAPABLE:
+                       printf("SQL_ASYNC_DBC_CAPABLE");
+                       break;
+               case SQL_ASYNC_DBC_NOT_CAPABLE:
+                       printf("SQL_ASYNC_DBC_NOT_CAPABLE");
+                       break;
+               }
+               printf("\n");
+       }
+#endif
 
        ret = SQLGetInfo(dbc, SQL_ASYNC_MODE, &i, sizeof(i), &resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_ASYNC_MODE: 0x%x\n", (unsigned int) i);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo SQL_ASYNC_MODE")) {
+               printf("SQL_ASYNC_MODE: ");
+               switch (i) {
+               case SQL_AM_CONNECTION:
+                       printf("SQL_AM_CONNECTION");
+                       break;
+               case SQL_AM_STATEMENT:
+                       printf("SQL_AM_STATEMENT");
+                       break;
+               case SQL_AM_NONE:
+                       printf("SQL_AM_NONE");
+                       break;
+               }
+               printf("\n");
+       }
+
+#ifdef SQL_ASYNC_NOTIFICATION
+       ret = SQLGetInfo(dbc, SQL_ASYNC_NOTIFICATION, &i, sizeof(i), 
&resultlen);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo 
SQL_ASYNC_NOTIFICATION")) {
+               printf("SQL_ASYNC_NOTIFICATION: ");
+               switch (i) {
+               case SQL_ASYNC_NOTIFICATION_CAPABLE:
+                       printf("SQL_ASYNC_NOTIFICATION_CAPABLE");
+                       break;
+               case SQL_ASYNC_NOTIFICATION_NOT_CAPABLE:
+                       printf("SQL_ASYNC_NOTIFICATION_NOT_CAPABLE");
+                       break;
+               }
+               printf("\n");
+       }
+#endif
 
        ret = SQLGetInfo(dbc, SQL_BATCH_ROW_COUNT, &i, sizeof(i), &resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_BATCH_ROW_COUNT: 0x%x\n", (unsigned int) i);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo SQL_BATCH_ROW_COUNT")) {
+               printf("SQL_BATCH_ROW_COUNT:");
+               if (i & SQL_BRC_ROLLED_UP)
+                       printf(" SQL_BRC_ROLLED_UP");
+               if (i & SQL_BRC_PROCEDURES)
+                       printf(" SQL_BRC_PROCEDURES");
+               if (i & SQL_BRC_EXPLICIT)
+                       printf(" SQL_BRC_EXPLICIT");
+               printf("\n");
+       }
 
        ret = SQLGetInfo(dbc, SQL_BATCH_SUPPORT, &i, sizeof(i), &resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_BATCH_SUPPORT: 0x%x\n", (unsigned int) i);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo SQL_BATCH_SUPPORT")) {
+               printf("SQL_BATCH_SUPPORT:");
+               if (i & SQL_BS_SELECT_EXPLICIT)
+                       printf(" SQL_BS_SELECT_EXPLICIT");
+               if (i & SQL_BS_ROW_COUNT_EXPLICIT)
+                       printf(" SQL_BS_ROW_COUNT_EXPLICIT");
+               if (i & SQL_BS_SELECT_PROC)
+                       printf(" SQL_BS_SELECT_PROC");
+               if (i & SQL_BS_ROW_COUNT_PROC)
+                       printf(" SQL_BS_ROW_COUNT_PROC");
+               printf("\n");
+       }
 
        ret = SQLGetInfo(dbc, SQL_BOOKMARK_PERSISTENCE, &i, sizeof(i), 
&resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_BOOKMARK_PERSISTENCE: 0x%x\n", (unsigned int) i);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo 
SQL_BOOKMARK_PERSISTENCE")) {
+               printf("SQL_BOOKMARK_PERSISTENCE:");
+               if (i & SQL_BP_CLOSE)
+                       printf(" SQL_BP_CLOSE");
+               if (i & SQL_BP_DELETE)
+                       printf(" SQL_BP_DELETE");
+               if (i & SQL_BP_DROP)
+                       printf(" SQL_BP_DROP");
+               if (i & SQL_BP_TRANSACTION)
+                       printf(" SQL_BP_TRANSACTION");
+               if (i & SQL_BP_UPDATE)
+                       printf(" SQL_BP_UPDATE");
+               if (i & SQL_BP_OTHER_HSTMT)
+                       printf(" SQL_BP_OTHER_HSTMT");
+               printf("\n");
+       }
 
-       ret = SQLGetInfo(dbc, SQL_CATALOG_LOCATION, &si, sizeof(si), 
&resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_CATALOG_LOCATION: 0x%x\n", (unsigned int) si);
-
-       ret = SQLGetInfo(dbc, SQL_CATALOG_NAME_SEPARATOR, str, sizeof(str), 
&resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_CATALOG_NAME_SEPARATOR: %.*s\n", resultlen, str);
+       ret = SQLGetInfo(dbc, SQL_CATALOG_LOCATION, &s, sizeof(s), &resultlen);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo SQL_CATALOG_LOCATION")) 
{
+               printf("SQL_CATALOG_LOCATION: ");
+               switch (s) {
+               case SQL_CL_START:
+                       printf("SQL_CL_START");
+                       break;
+               case SQL_CL_END:
+                       printf("SQL_CL_END");
+                       break;
+               }
+               printf("\n");
+       }
 
        ret = SQLGetInfo(dbc, SQL_CATALOG_NAME, str, sizeof(str), &resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_CATALOG_NAME: %.*s\n", resultlen, str);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo SQL_CATALOG_NAME")) {
+               printf("SQL_CATALOG_NAME: %.*s\n", resultlen, str);
+       }
+
+       ret = SQLGetInfo(dbc, SQL_CATALOG_NAME_SEPARATOR, str, sizeof(str), 
&resultlen);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo 
SQL_CATALOG_NAME_SEPARATOR")) {
+               printf("SQL_CATALOG_NAME_SEPARATOR: %.*s\n", resultlen, str);
+       }
 
        ret = SQLGetInfo(dbc, SQL_CATALOG_TERM, str, sizeof(str), &resultlen);
-       check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
-       printf("SQL_CATALOG_TERM: %.*s\n", resultlen, str);
+       if (check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo SQL_CATALOG_TERM")) {
+               printf("SQL_CATALOG_TERM: %.*s\n", resultlen, str);
+       }
 
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to