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