From fa7c29f9424ddf12f72281ee1187e88f611dc8d7 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas Date: Thu, 22 Jan 2015 09:17:04 +0200 Subject: [PATCH] Expand colattributes test case a bit. Test SQL_DESC_TYPE_NAME. There was an old report in the pgfoundry bug tracker that it didn't work correctly with interval types, (#1010745, from Farid Zidan on 2009-12-30), but it seems to work now. --- test/expected/colattribute.out | 65 ++++++++++++++++++++++++++++++++++ test/src/colattribute-test.c | 15 ++++++-- 2 files changed, 77 insertions(+), 3 deletions(-) diff --git a/test/expected/colattribute.out b/test/expected/colattribute.out index e9661b2..17cf5be 100644 --- a/test/expected/colattribute.out +++ b/test/expected/colattribute.out @@ -5,18 +5,31 @@ Testing SQLColAttribute... -- Column 1: intcol -- SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: int4 -- Column 2: textcol -- SQL_DESC_OCTET_LENGTH: 49140 +SQL_DESC_TYPE_NAME: text -- Column 3: unknowncol -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: unknown -- Column 4: varcharcol -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar -- Column 5: empty_varchar_col -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar + +-- Column 6: varchar5col -- +SQL_DESC_OCTET_LENGTH: 30 +SQL_DESC_TYPE_NAME: varchar + +-- Column 7: interval -- +SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: interval day to second disconnecting Running tests with UnknownSizes=0;MaxVarcharSize=100... connected @@ -24,18 +37,31 @@ Testing SQLColAttribute... -- Column 1: intcol -- SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: int4 -- Column 2: textcol -- SQL_DESC_OCTET_LENGTH: 49140 +SQL_DESC_TYPE_NAME: text -- Column 3: unknowncol -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: unknown -- Column 4: varcharcol -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar -- Column 5: empty_varchar_col -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar + +-- Column 6: varchar5col -- +SQL_DESC_OCTET_LENGTH: 30 +SQL_DESC_TYPE_NAME: varchar + +-- Column 7: interval -- +SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: interval day to second disconnecting Running tests with UnknownSizes=1;MaxVarcharSize=100... connected @@ -43,18 +69,31 @@ Testing SQLColAttribute... -- Column 1: intcol -- SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: int4 -- Column 2: textcol -- SQL_DESC_OCTET_LENGTH: 49140 +SQL_DESC_TYPE_NAME: text -- Column 3: unknowncol -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: unknown -- Column 4: varcharcol -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar -- Column 5: empty_varchar_col -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar + +-- Column 6: varchar5col -- +SQL_DESC_OCTET_LENGTH: 30 +SQL_DESC_TYPE_NAME: varchar + +-- Column 7: interval -- +SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: interval day to second disconnecting Running tests with UnknownSizes=2;MaxVarcharSize=100... connected @@ -62,18 +101,31 @@ Testing SQLColAttribute... -- Column 1: intcol -- SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: int4 -- Column 2: textcol -- SQL_DESC_OCTET_LENGTH: 36 +SQL_DESC_TYPE_NAME: text -- Column 3: unknowncol -- SQL_DESC_OCTET_LENGTH: 84 +SQL_DESC_TYPE_NAME: unknown -- Column 4: varcharcol -- SQL_DESC_OCTET_LENGTH: 84 +SQL_DESC_TYPE_NAME: varchar -- Column 5: empty_varchar_col -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar + +-- Column 6: varchar5col -- +SQL_DESC_OCTET_LENGTH: 30 +SQL_DESC_TYPE_NAME: varchar + +-- Column 7: interval -- +SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: interval day to second disconnecting Running tests with UnknownSizes=100;MaxVarcharSize=100... connected @@ -81,16 +133,29 @@ Testing SQLColAttribute... -- Column 1: intcol -- SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: int4 -- Column 2: textcol -- SQL_DESC_OCTET_LENGTH: 49140 +SQL_DESC_TYPE_NAME: text -- Column 3: unknowncol -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: unknown -- Column 4: varcharcol -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar -- Column 5: empty_varchar_col -- SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar + +-- Column 6: varchar5col -- +SQL_DESC_OCTET_LENGTH: 100 +SQL_DESC_TYPE_NAME: varchar + +-- Column 7: interval -- +SQL_DESC_OCTET_LENGTH: 0 +SQL_DESC_TYPE_NAME: interval day to second disconnecting diff --git a/test/src/colattribute-test.c b/test/src/colattribute-test.c index b6ed51d..b4ea570 100644 --- a/test/src/colattribute-test.c +++ b/test/src/colattribute-test.c @@ -14,6 +14,7 @@ runtest(char *extra_conn_options) int rc; HSTMT hstmt = SQL_NULL_HSTMT; SQLUSMALLINT i; + SQLSMALLINT numcols; printf("Running tests with %s...\n", extra_conn_options); @@ -32,21 +33,29 @@ runtest(char *extra_conn_options) */ printf("Testing SQLColAttribute...\n"); rc = SQLExecDirect(hstmt, - (SQLCHAR *) "SELECT '1'::int AS intcol, 'foobar'::text AS textcol, 'unknown string' AS unknowncol, 'varchar string' as varcharcol, '' as empty_varchar_col", + (SQLCHAR *) "SELECT '1'::int AS intcol, 'foobar'::text AS textcol, 'unknown string' AS unknowncol, 'varchar string'::varchar as varcharcol, ''::varchar as empty_varchar_col, 'varchar-5-col'::varchar(5) as varchar5col, '5 days'::interval day to second", SQL_NTS); CHECK_STMT_RESULT(rc, "SQLExecDirect failed", hstmt); - for (i = 1 ; i <= 5; i++) + + rc = SQLNumResultCols(hstmt, &numcols); + CHECK_STMT_RESULT(rc, "SQLNumResultCols failed", hstmt); + + for (i = 1 ; i <= numcols; i++) { char buffer[64]; SQLLEN number; - rc = SQLColAttribute(hstmt, i, SQL_DESC_LABEL, buffer, 64, NULL, NULL); + rc = SQLColAttribute(hstmt, i, SQL_DESC_LABEL, buffer, sizeof(buffer), NULL, NULL); CHECK_STMT_RESULT(rc, "SQLColAttribute failed", hstmt); printf("\n-- Column %d: %s --\n", i, buffer); rc = SQLColAttribute(hstmt, i, SQL_DESC_OCTET_LENGTH, NULL, SQL_IS_INTEGER, NULL, &number); CHECK_STMT_RESULT(rc, "SQLColAttribute failed", hstmt); printf("SQL_DESC_OCTET_LENGTH: %d\n", (int) number); + + rc = SQLColAttribute(hstmt, i, SQL_DESC_TYPE_NAME, buffer, sizeof(buffer), NULL, NULL); + CHECK_STMT_RESULT(rc, "SQLColAttribute failed", hstmt); + printf("SQL_DESC_TYPE_NAME: %s\n", buffer); } /* Clean up */ -- 2.39.5