Changeset: 5dc40c1713ba for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/5dc40c1713ba
Modified Files:
clients/odbc/samples/metadata.c
Branch: default
Log Message:
Improve and extend test: do more in compareResult() and add first tests for
SQLPrimaryKeys(), SQLSpecialColumns() and SQLStatistics().
diffs (162 lines):
diff --git a/clients/odbc/samples/metadata.c b/clients/odbc/samples/metadata.c
--- a/clients/odbc/samples/metadata.c
+++ b/clients/odbc/samples/metadata.c
@@ -72,19 +72,7 @@ check(SQLRETURN ret, SQLSMALLINT tpe, SQ
}
static void
-renewStmtHandle(SQLHANDLE dbc, SQLHANDLE stmt)
-{
- SQLRETURN ret;
-
- ret = SQLFreeHandle(SQL_HANDLE_STMT, stmt);
- check(ret, SQL_HANDLE_STMT, stmt, "SQLFreeHandle (STMT)");
-
- ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
- check(ret, SQL_HANDLE_DBC, dbc, "SQLAllocHandle (STMT)");
-}
-
-static void
-compareResult(SQLHANDLE stmt, const char * functionname, const char * expected)
+compareResult(SQLHANDLE stmt, SQLRETURN retcode, const char * functionname,
const char * expected)
{
SQLRETURN ret;
SQLSMALLINT columns; // Number of columns in result-set
@@ -96,8 +84,7 @@ compareResult(SQLHANDLE stmt, const char
SQLLEN indicator;
char buf[255];
- SQLSMALLINT nameLength;
- SQLSMALLINT dataType;
+ check(retcode, SQL_HANDLE_STMT, stmt, functionname);
// How many columns are there
ret = SQLNumResultCols(stmt, &columns);
@@ -107,7 +94,7 @@ compareResult(SQLHANDLE stmt, const char
// get Result Column Names and print them
for (col = 1; col <= columns; col++) {
ret = SQLDescribeCol(stmt, col, (SQLCHAR *) buf, sizeof(buf),
- &nameLength, &dataType, NULL, NULL, NULL);
+ NULL, NULL, NULL, NULL, NULL);
check(ret, SQL_HANDLE_STMT, stmt, "SQLDescribeCol()");
pos += snprintf(outp + pos, outp_len - pos,
(col > 1) ? "\t%s" : "%s", buf);
@@ -144,6 +131,9 @@ compareResult(SQLHANDLE stmt, const char
// cleanup
free(outp);
+
+ ret = SQLCloseCursor(stmt);
+ check(ret, SQL_HANDLE_STMT, stmt, "SQLCloseCursor");
}
int
@@ -186,54 +176,75 @@ main(int argc, char **argv)
ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
check(ret, SQL_HANDLE_DBC, dbc, "SQLAllocHandle (STMT)");
- /* run actual tests */
+/* run actual metadata query tests */
// All catalogs query
ret = SQLTables(stmt, (SQLCHAR*)SQL_ALL_CATALOGS, SQL_NTS,
(SQLCHAR*)"", SQL_NTS, (SQLCHAR*)"", SQL_NTS,
(SQLCHAR*)"", SQL_NTS);
- check(ret, SQL_HANDLE_STMT, stmt, "SQLTables (SQL_ALL_CATALOGS)");
- compareResult(stmt, "SQLTables (SQL_ALL_CATALOGS)",
- "Resultset with 5 columns\n"
- "table_cat table_schem table_name
table_type remarks\n"
- "mTests_sql_odbc_samples NULL NULL NULL
NULL\n");
- renewStmtHandle(dbc, stmt);
+ compareResult(stmt, ret, "SQLTables (SQL_ALL_CATALOGS)",
+ "Resultset with 5 columns\n"
+ "table_cat table_schem table_name table_type
remarks\n"
+ "mTests_sql_odbc_samples NULL NULL NULL
NULL\n");
// All schemas query
ret = SQLTables(stmt, (SQLCHAR*)"", SQL_NTS,
(SQLCHAR*)SQL_ALL_SCHEMAS, SQL_NTS,
(SQLCHAR*)"", SQL_NTS, (SQLCHAR*)"", SQL_NTS);
- check(ret, SQL_HANDLE_STMT, stmt, "SQLTables (SQL_ALL_SCHEMAS)");
- compareResult(stmt, "SQLTables (SQL_ALL_SCHEMAS)",
- "Resultset with 5 columns\n"
- "table_cat table_schem table_name
table_type remarks\n"
- "NULL json NULL NULL NULL\n"
- "NULL logging NULL NULL NULL\n"
- "NULL profiler NULL NULL NULL\n"
- "NULL sys NULL NULL NULL\n"
- "NULL tmp NULL NULL NULL\n"
- "NULL wlc NULL NULL NULL\n"
- "NULL wlr NULL NULL NULL\n");
- renewStmtHandle(dbc, stmt);
+ compareResult(stmt, ret, "SQLTables (SQL_ALL_SCHEMAS)",
+ "Resultset with 5 columns\n"
+ "table_cat table_schem table_name table_type
remarks\n"
+ "NULL json NULL NULL NULL\n"
+ "NULL logging NULL NULL NULL\n"
+ "NULL profiler NULL NULL NULL\n"
+ "NULL sys NULL NULL NULL\n"
+ "NULL tmp NULL NULL NULL\n"
+ "NULL wlc NULL NULL NULL\n"
+ "NULL wlr NULL NULL NULL\n");
// All table types query
ret = SQLTables(stmt, (SQLCHAR*)"", SQL_NTS,
(SQLCHAR*)"", SQL_NTS, (SQLCHAR*)"", SQL_NTS,
(SQLCHAR*)SQL_ALL_TABLE_TYPES, SQL_NTS);
- check(ret, SQL_HANDLE_STMT, stmt, "SQLTables (SQL_ALL_TABLE_TYPES)");
- compareResult(stmt, "SQLTables (SQL_ALL_TABLE_TYPES)",
- "Resultset with 5 columns\n"
- "table_cat table_schem table_name
table_type remarks\n"
- "NULL NULL NULL GLOBAL TEMPORARY TABLE NULL\n"
- "NULL NULL NULL LOCAL TEMPORARY TABLE NULL\n"
- "NULL NULL NULL MERGE TABLE NULL\n"
- "NULL NULL NULL REMOTE TABLE NULL\n"
- "NULL NULL NULL REPLICA TABLE NULL\n"
- "NULL NULL NULL SYSTEM TABLE NULL\n"
- "NULL NULL NULL SYSTEM VIEW NULL\n"
- "NULL NULL NULL TABLE NULL\n"
- "NULL NULL NULL UNLOGGED TABLE NULL\n"
- "NULL NULL NULL VIEW NULL\n");
+ compareResult(stmt, ret, "SQLTables (SQL_ALL_TABLE_TYPES)",
+ "Resultset with 5 columns\n"
+ "table_cat table_schem table_name table_type
remarks\n"
+ "NULL NULL NULL GLOBAL TEMPORARY TABLE NULL\n"
+ "NULL NULL NULL LOCAL TEMPORARY TABLE NULL\n"
+ "NULL NULL NULL MERGE TABLE NULL\n"
+ "NULL NULL NULL REMOTE TABLE NULL\n"
+ "NULL NULL NULL REPLICA TABLE NULL\n"
+ "NULL NULL NULL SYSTEM TABLE NULL\n"
+ "NULL NULL NULL SYSTEM VIEW NULL\n"
+ "NULL NULL NULL TABLE NULL\n"
+ "NULL NULL NULL UNLOGGED TABLE NULL\n"
+ "NULL NULL NULL VIEW NULL\n");
+ ret = SQLPrimaryKeys(stmt, (SQLCHAR*)"", SQL_NTS,
+ (SQLCHAR*)"sys", SQL_NTS, (SQLCHAR*)"keywords",
SQL_NTS);
+ compareResult(stmt, ret, "SQLPrimaryKeys (sys, keywords)",
+ "Resultset with 6 columns\n"
+ "table_cat table_schem table_name column_name
key_seq pk_name\n"
+ "mTests_sql_odbc_samples sys keywords keyword
1 keywords_keyword_pkey\n");
+
+ ret = SQLSpecialColumns(stmt, SQL_BEST_ROWID, (SQLCHAR*)"", SQL_NTS,
+ (SQLCHAR*)"sys", SQL_NTS, (SQLCHAR*)"table_types",
SQL_NTS,
+ SQL_SCOPE_SESSION, SQL_NO_NULLS);
+ compareResult(stmt, ret, "SQLSpecialColumns (sys, table_types)",
+ "Resultset with 8 columns\n"
+ "scope column_name data_type type_name
column_size buffer_length decimal_digits pseudo_column\n"
+ "1 table_type_id 5 SMALLINT 16 6
0 1\n");
+
+ ret = SQLStatistics(stmt, (SQLCHAR*)"", SQL_NTS,
+ (SQLCHAR*)"sys", SQL_NTS, (SQLCHAR*)"table_types",
SQL_NTS,
+ SQL_INDEX_UNIQUE, SQL_QUICK);
+ compareResult(stmt, ret, "SQLStatistics (sys, table_types)",
+ "Resultset with 13 columns\n"
+ "table_cat table_schem table_name non_unique
index_qualifier index_name type ordinal_position column_name
asc_or_desc cardinality pages filter_condition\n"
+ "mTests_sql_odbc_samples sys table_types 0
NULL table_types_table_type_id_pkey 2 1 table_type_id NULL
NULL NULL NULL\n"
+ "mTests_sql_odbc_samples sys table_types 0
NULL table_types_table_type_name_unique 2 1 table_type_name
NULL NULL NULL NULL\n");
+
+
+ // cleanup
ret = SQLFreeHandle(SQL_HANDLE_STMT, stmt);
check(ret, SQL_HANDLE_STMT, stmt, "SQLFreeHandle (STMT)");
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]