List:Commits« Previous MessageNext Message »
From:uwendel Date:June 6 2007 3:04pm
Subject:ODBC C-tests commit: r128 - trunk/testsuites/t_unixodbc_sap
View as plain text  
Modified:
   trunk/testsuites/t_unixodbc_sap/sap_23000.c
   trunk/testsuites/t_unixodbc_sap/sap_async.c
   trunk/testsuites/t_unixodbc_sap/sap_bindparm.c
   trunk/testsuites/t_unixodbc_sap/sap_col1.c
   trunk/testsuites/t_unixodbc_sap/sap_colall.c
   trunk/testsuites/t_unixodbc_sap/sap_todo.c
   trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c
   trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h
Log:
Continued porting test code. Most of the changes are of kind of an internal matter.

What you should scan are all files with the name *todo*.*. They contain isolated issues - 
possible bugs - from the larger test files. In this case it's sap_todo.c that you should 
check, if you're interested in this stuff.




Modified: trunk/testsuites/t_unixodbc_sap/sap_23000.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_23000.c	2007-06-06 08:51:18 UTC (rev 127)
+++ trunk/testsuites/t_unixodbc_sap/sap_23000.c	2007-06-06 15:04:22 UTC (rev 128)
@@ -9,10 +9,11 @@
 OT_TEST_METHOD(sap_23000) 
 {
   SQLRETURN   ret;
-  SQLHANDLE   hdbc = get_dbc_handle();
+  SQLHANDLE   hdbc;
   SQLHANDLE   hstmt;
   SQLLEN      cb_value;
 
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
   CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);

Modified: trunk/testsuites/t_unixodbc_sap/sap_async.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_async.c	2007-06-06 08:51:18 UTC (rev 127)
+++ trunk/testsuites/t_unixodbc_sap/sap_async.c	2007-06-06 15:04:22 UTC (rev 128)
@@ -55,7 +55,7 @@
   {
 
     OT_ASSERT(global_connect());
-    hdbc = get_dbc_handle();
+    OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
 
     CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
               hdbc, SQL_HANDLE_DBC);

Modified: trunk/testsuites/t_unixodbc_sap/sap_bindparm.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_bindparm.c	2007-06-06 08:51:18 UTC (rev 127)
+++ trunk/testsuites/t_unixodbc_sap/sap_bindparm.c	2007-06-06 15:04:22 UTC (rev 128)
@@ -15,14 +15,14 @@
 OT_TEST_METHOD(sap_bindparm)
 {
   SQLRETURN         ret;
-  SQLHANDLE         hdbc = get_dbc_handle();
+  SQLHANDLE         hdbc;
   SQLHANDLE         hstmt;
   SQLLEN            pcb_value = SQL_NTS;
   BINDPARM_VALUES   *bindparm_value;
   BINDPARM_VALUES   bindparm_result;
   char              msg[BINDPARM_MAX_NAME_LEN + 1];
 
-
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
   CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);

Modified: trunk/testsuites/t_unixodbc_sap/sap_col1.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_col1.c	2007-06-06 08:51:18 UTC (rev 127)
+++ trunk/testsuites/t_unixodbc_sap/sap_col1.c	2007-06-06 15:04:22 UTC (rev 128)
@@ -10,7 +10,7 @@
 OT_TEST_METHOD(sap_col1)
 {
   SQLRETURN         ret;
-  SQLHANDLE         hdbc = get_dbc_handle();
+  SQLHANDLE         hdbc;
   SQLHANDLE         hstmt;
   SQLLEN            pcb_value = SQL_NTS;
   SQLCHAR           catalog[STR_LEN];
@@ -36,7 +36,9 @@
   SQLCHAR           is_nullable[STR_LEN];
   SQLCHAR           buffer[STR_LEN];
 
+  OT_TODO("Might have issues with v3, see sap_todo.c/sap_todo2");
 
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
   CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);

Modified: trunk/testsuites/t_unixodbc_sap/sap_colall.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_colall.c	2007-06-06 08:51:18 UTC (rev 127)
+++ trunk/testsuites/t_unixodbc_sap/sap_colall.c	2007-06-06 15:04:22 UTC (rev 128)
@@ -3,7 +3,7 @@
 
 #define TABLE_ENGINE  "InnoDB"
 
-COLALL_COLUMNS_STRUCT expected_columns[] = {
+COLALL_COLUMNS_STRUCT colall_columns[] = {
   /* C1 CHAR(10) */
   {
     "not checked", 0,                     /* NOTE: not checked, only len > 0 is
checked */
@@ -454,7 +454,7 @@
 OT_TEST_METHOD(sap_colall)
 {
   SQLRETURN               ret;
-  SQLHANDLE               hdbc = get_dbc_handle();
+  SQLHANDLE               hdbc;
   SQLHANDLE               hstmt;
   COLALL_COLUMNS_STRUCT   col;
   COLALL_COLUMNS_STRUCT   *exp;
@@ -467,8 +467,10 @@
   OT_TODO("A developer and ODBC standard expert needs to check the TODO notes");
   OT_TODO("Complete but check sap_todo.c - todo1 to todo6 for isolated issues/possible
bugs");
 
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
+
   /* Set the length for some char* fields automatically, if the user asks us to do so */
-  for (exp = expected_columns; strcmp((char*)exp->catalog, "catalog"); exp++) {
+  for (exp = colall_columns; strcmp((char*)exp->catalog, "catalog"); exp++) {
     if (exp->table_name_len == SQL_NTS)
       exp->table_name_len = (SQLLEN)strlen((char*)exp->table_name);
     if (exp->column_name_len == SQL_NTS)
@@ -534,7 +536,7 @@
                         col.is_nullable, sizeof(col.is_nullable),
&(col.is_nullable_len)), hstmt);
 
   for ( 
-        exp = expected_columns, ret = SQLFetch(hstmt); 
+        exp = colall_columns, ret = SQLFetch(hstmt); 
         (strcmp((char*)exp->catalog, "catalog")) && (ret == SQL_SUCCESS || ret
== SQL_SUCCESS_WITH_INFO); 
         exp++, ret = SQLFetch(hstmt)
       )
@@ -708,14 +710,14 @@
   if (strcmp((char*)exp->catalog, "catalog"))
   {
     snprintf(msg, sizeof(msg), "Looks like we got only %d column information rows but we
expected %d",
-            num_cols, (sizeof(expected_columns) / sizeof(COLALL_COLUMNS_STRUCT)) - 1);
+            num_cols, (sizeof(colall_columns) / sizeof(COLALL_COLUMNS_STRUCT)) - 1);
     OT_FAIL(msg);
   } 
   else if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
   {
     snprintf(msg, sizeof(msg), "Looks like could have got more than %d column information
rows "
                                " but we expected only %d. Maybe the test is incomplete.",
-            num_cols, (sizeof(expected_columns) / sizeof(COLALL_COLUMNS_STRUCT)) - 1);
+            num_cols, (sizeof(colall_columns) / sizeof(COLALL_COLUMNS_STRUCT)) - 1);
     OT_FAIL(msg);
   }
 

Modified: trunk/testsuites/t_unixodbc_sap/sap_todo.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_todo.c	2007-06-06 08:51:18 UTC (rev 127)
+++ trunk/testsuites/t_unixodbc_sap/sap_todo.c	2007-06-06 15:04:22 UTC (rev 128)
@@ -9,7 +9,7 @@
 OT_TEST_METHOD(sap_todo1)
 {
   SQLRETURN               ret;
-  SQLHANDLE               hdbc = get_dbc_handle();
+  SQLHANDLE               hdbc;
   SQLHANDLE               hstmt;
   char                    msg[1024];
   char                    msg_detail1[128];
@@ -22,6 +22,7 @@
   OT_TODO("Remove this test code after verficiation, it's nothing but a part of
sap_colall.c");
   OT_TODO("2007-05-31, v3 issue, see code comments!");
 
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
   CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
@@ -55,7 +56,7 @@
 OT_TEST_METHOD(sap_todo2)
 {
   SQLRETURN               ret;
-  SQLHANDLE               hdbc = get_dbc_handle();
+  SQLHANDLE               hdbc;
   SQLHANDLE               hstmt;
   COLALL_COLUMNS_STRUCT   col;
 
@@ -65,6 +66,7 @@
   OT_TODO("Remove this test code after verficiation, it's nothing but a part of
sap_col1.c/sap_collall.c");
   OT_TODO("2007-05-31, v3 issue, see code comments!");
 
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
   CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
@@ -91,7 +93,7 @@
 OT_TEST_METHOD(sap_todo3)
 {
   SQLRETURN               ret;
-  SQLHANDLE               hdbc = get_dbc_handle();
+  SQLHANDLE               hdbc;
   SQLHANDLE               hstmt;  
   COLALL_COLUMNS_STRUCT   col;
 
@@ -100,6 +102,7 @@
   OT_TODO("Remove this test code after verficiation, it's nothing but a part of
sap_collall.c");
   OT_TODO("2007-06-01, v3 issue, see code comments!");
 
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
   CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
@@ -127,7 +130,7 @@
 OT_TEST_METHOD(sap_todo4)
 {
   SQLRETURN               ret;
-  SQLHANDLE               hdbc = get_dbc_handle();
+  SQLHANDLE               hdbc;
   SQLHANDLE               hstmt;
   COLALL_COLUMNS_STRUCT   col;
 
@@ -136,6 +139,7 @@
   OT_TODO("Remove this test code after verficiation, it's nothing but a part of
sap_collall.c");
   OT_TODO("2007-06-04, v3 issue, see code comments!");
 
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
   CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
@@ -163,7 +167,7 @@
 OT_TEST_METHOD(sap_todo5)
 {
   SQLRETURN               ret;
-  SQLHANDLE               hdbc = get_dbc_handle();
+  SQLHANDLE               hdbc;
   SQLHANDLE               hstmt;
   char                    msg[1024];
   char                    msg_detail1[128];
@@ -176,6 +180,7 @@
   OT_TODO("Fix sap_collall.c/C16 - it's using a wrong sql type to pass.");
   OT_TODO("2007-06-01, v3 issue, see code comments!");
 
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
   CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
@@ -208,7 +213,7 @@
 OT_TEST_METHOD(sap_todo6)
 {
   SQLRETURN               ret;
-  SQLHANDLE               hdbc = get_dbc_handle();
+  SQLHANDLE               hdbc;
   SQLHANDLE               hstmt;  
   COLALL_COLUMNS_STRUCT   col;
 
@@ -218,6 +223,7 @@
   OT_TODO("Fix sap_collall.c/C16 - it's using a wrong length to pass.");
   OT_TODO("2007-06-01, v3 issue, see code comments!");
 
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
   CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
             hdbc, SQL_HANDLE_DBC);
   OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
@@ -243,3 +249,189 @@
   CHECK_SQL_S(SQLFreeHandle(SQL_HANDLE_STMT, hstmt), hstmt);
 }
 
+OT_TEST_METHOD(sap_todo7)
+{
+  SQLRETURN               ret;
+  SQLHANDLE               hdbc;
+  SQLHANDLE               hstmt;
+  COLLATTRB_STRUCT        col;
+  SQLCHAR                 dummy_char[10];
+  SQLSMALLINT             dummy_char_len;
+  SQLSMALLINT             out_len;
+
+  dummy_char_len = (SQLSMALLINT)sizeof(dummy_char);
+
+  OT_TODO("Isolated problem from sap_collattrb.c");
+  OT_TODO("ID is not an auto increment column");
+  OT_TODO("Remove this test code after verficiation, it's nothing but a part of
sap_collattrb.c");
+  OT_TODO("2007-06-04, v5 issue, see code comments!");
+
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
+  dummy_char_len = (SQLSMALLINT)sizeof(dummy_char);
+
+  CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
+            hdbc, SQL_HANDLE_DBC);
+  OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
+
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS \"" TABLE_NAME "\"",
SQL_NTS), hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"CREATE TABLE " TABLE_NAME " ("
+                                    "ID INTEGER "
+                                    ") ENGINE = " TABLE_ENGINE, SQL_NTS), hstmt);
+  CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt,
+                            (SQLCHAR*)"INSERT INTO " TABLE_NAME " VALUES (10)",
+                            SQL_NTS),
+              hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM " TABLE_NAME, SQL_NTS),
hstmt);
+
+  CHECK_SQL_S(ret = SQLColAttribute(hstmt, 1, SQL_DESC_AUTO_UNIQUE_VALUE,
+                                (SQLPOINTER)&dummy_char,
+                                dummy_char_len,
+                                &out_len,
+                                (SQLPOINTER)&(col.auto_unique_value)), hstmt);
+
+  /* this is not an auto increment column */
+  OT_ASSERT_INT(SQL_FALSE, col.auto_unique_value);
+
+  CHECK_SQL_S(SQLFreeHandle(SQL_HANDLE_STMT, hstmt), hstmt);
+}
+
+OT_TEST_METHOD(sap_todo8)
+{
+  SQLRETURN               ret;
+  SQLHANDLE               hdbc;
+  SQLHANDLE               hstmt;
+  COLLATTRB_STRUCT        col;
+  SQLCHAR                 dummy_char[10];
+  SQLSMALLINT             dummy_char_len;
+  SQLSMALLINT             out_len;
+
+  OT_TODO("Isolated problem from sap_collattrb.c");
+  OT_TODO("Display size: SQL_INTEGER - 11 if signed (a sign and 10 digits) or 10 if
unsigned (10 digits).");
+  OT_TODO("Remove this test code after verficiation, it's nothing but a part of
sap_collattrb.c");
+  OT_TODO("2007-06-05, v3 issue, see code comments!");
+
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
+  CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
+            hdbc, SQL_HANDLE_DBC);
+  OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
+
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS \"" TABLE_NAME "\"",
SQL_NTS), hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"CREATE TABLE " TABLE_NAME " ("
+                                    "ID INTEGER "
+                                    ") ENGINE = " TABLE_ENGINE, SQL_NTS), hstmt);
+  CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt,
+                            (SQLCHAR*)"INSERT INTO " TABLE_NAME " VALUES (10)",
+                            SQL_NTS),
+              hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM " TABLE_NAME, SQL_NTS),
hstmt);
+
+  CHECK_SQL_S(ret = SQLColAttribute(hstmt, 1, SQL_DESC_DISPLAY_SIZE,
+                                (SQLPOINTER)&dummy_char,
+                                dummy_char_len,
+                                &out_len,
+                                (SQLPOINTER)&(col.display_size)), hstmt);
+
+  OT_ASSERT_INT(11, col.display_size);
+
+  CHECK_SQL_S(SQLFreeHandle(SQL_HANDLE_STMT, hstmt), hstmt);
+}
+
+
+OT_TEST_METHOD(sap_todo9)
+{ 
+  SQLRETURN               ret;
+  SQLHANDLE               hdbc;
+  SQLHANDLE               hstmt;
+  COLLATTRB_STRUCT        col;
+  SQLINTEGER              dummy_num;
+  SQLSMALLINT             out_len;
+  char                    catalog[COLATTRB_STR_LEN];
+
+  OT_TODO("Isolated problem from sap_collattrb.c");
+  OT_TODO("Catalog name equals database name with v3 (sensible value) but is 'def' with
v5");
+  OT_TODO("Remove this test code after verficiation, it's nothing but a part of
sap_collattrb.c");
+  OT_TODO("2007-06-06, v5 issue, see code comments!");
+
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
+  if (unixodbc_sap_get_catalog(hdbc, catalog, sizeof(catalog)))
+    OT_FAIL(catalog);
+
+  CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
+            hdbc, SQL_HANDLE_DBC);
+  OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
+
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS \"" TABLE_NAME "\"",
SQL_NTS), hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"CREATE TABLE " TABLE_NAME " ("
+                                    "ID INTEGER "
+                                    ") ENGINE = " TABLE_ENGINE, SQL_NTS), hstmt);
+  CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt,
+                            (SQLCHAR*)"INSERT INTO " TABLE_NAME " VALUES (10)",
+                            SQL_NTS),
+              hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM " TABLE_NAME, SQL_NTS),
hstmt);
+
+  CHECK_SQL_S(ret = SQLColAttribute(hstmt, 1, SQL_DESC_CATALOG_NAME,
+                                (SQLPOINTER)col.catalog_name,
+                                (SQLSMALLINT)sizeof(col.catalog_name),
+                                &out_len,
+                                (SQLPOINTER)&dummy_num), hstmt);
+
+  test_printf("CATALOG_NAME: Expecting '%s' got '%s'", catalog, col.catalog_name);
+  OT_ASSERT(0 == strncmp(catalog, col.catalog_name, strlen(catalog)));
+
+  CHECK_SQL_S(SQLFreeHandle(SQL_HANDLE_STMT, hstmt), hstmt);
+
+}
+
+OT_TEST_METHOD(sap_todo10)
+{
+  SQLRETURN               ret;
+  SQLHANDLE               hdbc;
+  SQLHANDLE               hstmt;
+  COLLATTRB_STRUCT        col;
+  SQLCHAR                 dummy_char[10];
+  SQLSMALLINT             dummy_char_len;
+  SQLSMALLINT             out_len;
+
+  OT_TODO("Isolated problem from sap_collattrb.c, should also affect sap_collall.c");
+  OT_TODO("Why does v4 return 4 for the length and v5 returns 11?");
+  OT_TODO("Remove this test code after verficiation, it's nothing but a part of
sap_collattrb.c");
+  OT_TODO("2007-06-05, v3 or v5 issue, see code comments!");
+
+  OT_ASSERT(unixodbc_sap_get_dbc_handle(&hdbc));
+  CHECK_SQL(ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
+            hdbc, SQL_HANDLE_DBC);
+  OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
+
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS \"" TABLE_NAME "\"",
SQL_NTS), hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"CREATE TABLE " TABLE_NAME " ("
+                                    "ID INTEGER "
+                                    ") ENGINE = " TABLE_ENGINE, SQL_NTS), hstmt);
+  CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt,
+                            (SQLCHAR*)"INSERT INTO " TABLE_NAME " VALUES (10)",
+                            SQL_NTS),
+              hstmt);
+  CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM " TABLE_NAME, SQL_NTS),
hstmt);
+
+  CHECK_SQL_S(ret = SQLColAttribute(hstmt, 1, SQL_DESC_LENGTH,
+                                (SQLPOINTER)&dummy_char,
+                                dummy_char_len,
+                                &out_len,
+                                (SQLPOINTER)&(col.length)), hstmt);
+
+  /* this should pass with v3 */
+  OT_ASSERT_INT(4, col.length);
+  /* this should pass with v5 */
+  OT_ASSERT_INT(11, col.length);
+
+  CHECK_SQL_S(SQLFreeHandle(SQL_HANDLE_STMT, hstmt), hstmt);
+}
+
+OT_TEST_METHOD(sap_todo11)
+{
+  OT_TODO("Dummy"); 
+}

Modified: trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c	2007-06-06 08:51:18 UTC (rev
127)
+++ trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c	2007-06-06 15:04:22 UTC (rev
128)
@@ -103,7 +103,7 @@
 int unixodbc_sap_sqltype2string(SQLINTEGER sql_type, char *string, unsigned int
string_len) 
 {
   int found = 1;
-  
+
   switch (sql_type) 
   {
   case (SQL_CHAR):
@@ -261,6 +261,87 @@
 
 }
 
+int unixodbc_sap_is_v3driver(SQLHANDLE hdbc, char* error, size_t error_len)
+{
+  return (3 == unixodbc_sap_get_driver_version(hdbc, error, error_len));
+}
+
+int unixodbc_sap_is_v5driver(SQLHANDLE hdbc, char* error, size_t error_len)
+{
+  return (5 == unixodbc_sap_get_driver_version(hdbc, error, error_len));
+}
+
+int unixodbc_sap_get_driver_version(SQLHANDLE hdbc, char *error, size_t error_len)
+{
+  SQLRETURN     rc;
+  SQLCHAR       version[128];
+  SQLUINTEGER   version_len;
+  char          major[3];
+  char          sign;
+  int           i;
+
+  rc = SQLGetInfo(hdbc, SQL_DRIVER_VER, 
+                  (SQLPOINTER)version, 
+                  (SQLSMALLINT)sizeof(version),
+                  (SQLSMALLINT*)&version_len);
+
+  if (rc != SQL_SUCCESS)
+  {
+    strncpy(error, "SQLGetInfo failed", error_len);
+    return -1;
+  }
+
+  for (i = 0; i < strlen(version) && i < 2; i++) 
+  {
+    sign = version[i];
+    if (sign == '.')
+      break;
+    major[i] = sign;
+  }
+  major[++i] = '\0';
+
+  return atoi(major);
+}
+
+int unixodbc_sap_get_catalog(SQLHANDLE hdbc, char *catalog, size_t catalog_len)
+{
+  SQLRETURN   rc;
+  SQLINTEGER  out_len;
+
+  /* I'm not sure if this is the best way to find the current catalog */
+  /* An alternative way would be to break the ideas of encapsulation and */
+  /* isolation and do a quick and dirty check which DB = Catalog the framework */
+  /* (c-tests) is using */
+
+  rc = SQLGetConnectAttr(hdbc, SQL_ATTR_CURRENT_CATALOG, 
+                          (SQLPOINTER)catalog, 
+                          (SQLINTEGER)catalog_len, 
+                          &out_len);
+  if (rc != SQL_SUCCESS)
+  {
+    strncpy(catalog, "SQLGetConnectAttr() failed", catalog_len);
+    return -1;
+  }
+
+  return 0;
+}
+
+int unixodbc_sap_get_dbc_handle(SQLHANDLE *hdbc)
+{  
+  SQLHANDLE hstmt;
+  SQLRETURN ret;
+
+  *hdbc = get_dbc_handle();
+  ret = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
+  if (ret != SQL_SUCCESS || ret != SQL_SUCCESS_WITH_INFO) 
+    return -1;
+
+  ret = SQLExecDirect(hstmt, (SQLCHAR*)"SET SQL_MODE = 'MaxDB'", SQL_NTS);
+  if (ret != SQL_SUCCESS || ret != SQL_SUCCESS_WITH_INFO) 
+    return -1;
+
+  return 0;
+}
 /*
   Global suite setup method
 
@@ -320,7 +401,7 @@
 
   RETURN VALUE
     void
-*/    
+*/
 OT_TEST_SETUP(unixodbc_sap_setup) 
 {
   /* 
@@ -332,7 +413,7 @@
     that the framework uses.
   */
   OT_ASSERT(global_connect());
-}  
+}
 
 
 /*
@@ -377,6 +458,7 @@
   OT_SUITE_ADD_TEST(sap_col1, unixodbc_sap_setup, unixodbc_sap_teardown);
   OT_SUITE_ADD_TEST(sap_cola, unixodbc_sap_setup, unixodbc_sap_teardown);
   OT_SUITE_ADD_TEST(sap_colall, unixodbc_sap_setup, unixodbc_sap_teardown);
+  OT_SUITE_ADD_TEST(sap_colattrb, unixodbc_sap_setup, unixodbc_sap_teardown);
 
   /* these one are isolated snippets with potential bugs from the larger tests above */
   OT_SUITE_ADD_TEST(sap_todo1, unixodbc_sap_setup, unixodbc_sap_teardown);
@@ -385,4 +467,9 @@
   OT_SUITE_ADD_TEST(sap_todo4, unixodbc_sap_setup, unixodbc_sap_teardown);
   OT_SUITE_ADD_TEST(sap_todo5, unixodbc_sap_setup, unixodbc_sap_teardown);
   OT_SUITE_ADD_TEST(sap_todo6, unixodbc_sap_setup, unixodbc_sap_teardown);
+  OT_SUITE_ADD_TEST(sap_todo7, unixodbc_sap_setup, unixodbc_sap_teardown);
+  OT_SUITE_ADD_TEST(sap_todo8, unixodbc_sap_setup, unixodbc_sap_teardown);
+  OT_SUITE_ADD_TEST(sap_todo9, unixodbc_sap_setup, unixodbc_sap_teardown);
+  OT_SUITE_ADD_TEST(sap_todo10, unixodbc_sap_setup, unixodbc_sap_teardown);
+  OT_SUITE_ADD_TEST(sap_todo11, unixodbc_sap_setup, unixodbc_sap_teardown);
 OT_SUITE_REGISTER_END

Modified: trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h
===================================================================
--- trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h	2007-06-06 08:51:18 UTC (rev
127)
+++ trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h	2007-06-06 15:04:22 UTC (rev
128)
@@ -3,10 +3,18 @@
 #define OT_PARAM  CuTest *tc
 #define OT_ARGS   tc
 
+int unixodbc_sap_get_dbc_handle(SQLHANDLE *hdbc);
+
 int unixodbc_sap_ctype2string(SQLINTEGER c_type, char *string, unsigned int string_len);
 int unixodbc_sap_sqltype2string(SQLINTEGER c_type, char *string, unsigned int
string_len);
+
 void unixodbc_sap_create_identifier(char *identifier, char *prefix, unsigned int
ident_len);
 
+int unixodbc_sap_is_v3driver(SQLHANDLE hdbc, char* error, size_t error_len);
+int unixodbc_sap_is_v5driver(SQLHANDLE hdbc, char* error, size_t error_len);
+int unixodbc_sap_get_driver_version(SQLHANDLE hdbc, char* error, size_t error_len);
+int unixodbc_sap_get_catalog(SQLHANDLE hdbc, char *catalog, size_t catalog_len);
+
 /* Unit testing overhead ;-) */
 
 OT_SUITE_SETUP(unixodbc_sap_suite_setup);
@@ -161,6 +169,40 @@
 
 OT_TEST_METHOD(sap_colall);
 
+/* sap_collattrb.c */
+#define COLATTRB_STR_LEN   1024 + 1
+
+typedef struct st_colattrb_struct {
+    SQLCHAR       column[COLATTRB_STR_LEN];               /* Column, used as a stop
condition and for error messages */
+    SQLINTEGER    auto_unique_value;                      /* SQL_DESC_AUTO_UNIQUE_VALUE:
SQL_FALSE, SQL_TRUE, n/a */
+    SQLCHAR       base_column_name[COLATTRB_STR_LEN];     /* SQL_DESC_BASE_COLUMN_NAME */
+    SQLSMALLINT   base_column_name_len;
+    SQLCHAR       base_table_name[COLATTRB_STR_LEN];      /* SQL_DESC_BASE_TABLE_NAME */
+    SQLSMALLINT   base_table_name_len;
+    SQLINTEGER    case_sensitive;                         /* SQL_DESC_CASE_SENSITIVE */
+    SQLCHAR       catalog_name[COLATTRB_STR_LEN];         /* SQL_DESC_CATALOG_NAME */
+    SQLSMALLINT   catalog_name_len;
+    SQLINTEGER    concise_type;                           /* SQL_DESC_CONCISE_TYPE */
+    SQLINTEGER    display_size;                           /* SQL_DESC_DISPLAY_SIZE */
+    SQLINTEGER    fixed_prec_scale;                       /* SQL_DESC_FIXED_PREC_SCALE */
+    SQLCHAR       label[COLATTRB_STR_LEN];                /* SQL_DESC_LABEL */
+    SQLSMALLINT   label_len;
+    SQLINTEGER    length;                                 /* SQL_DESC_LENGTH */
+    SQLCHAR       literal_prefix[COLATTRB_STR_LEN];       /* SQL_DESC_LITERAL_PREFIX */
+    SQLSMALLINT   literal_prefix_len;
+    SQLCHAR       literal_suffix[COLATTRB_STR_LEN];       /* SQL_DESC_LITERAL_SUFFIX */
+    SQLSMALLINT   literal_suffix_len;
+    SQLCHAR       local_type_name[COLATTRB_STR_LEN];      /* SQL_DESC_LOCAL_TYPE_NAME */
+    SQLSMALLINT   local_type_name_len;
+    SQLCHAR       name[COLATTRB_STR_LEN];                 /* SQL_DESC_NAME */
+    SQLSMALLINT   name_len;
+    SQLINTEGER    nullable;                               /* SQL_DESC_NULLABLE */
+    SQLINTEGER    num_prec_radix;                         /* SQL_DESC_NUM_PREC_RADIX */
+    SQLINTEGER    octet_length;                           /* SQL_DESC_OCTET_LENGTH */
+} COLLATTRB_STRUCT;
+
+OT_TEST_METHOD(sap_colattrb);
+
 /* sap_todo.c */
 OT_TEST_METHOD(sap_todo1);
 OT_TEST_METHOD(sap_todo2);
@@ -168,3 +210,8 @@
 OT_TEST_METHOD(sap_todo4);
 OT_TEST_METHOD(sap_todo5);
 OT_TEST_METHOD(sap_todo6);
+OT_TEST_METHOD(sap_todo7);
+OT_TEST_METHOD(sap_todo8);
+OT_TEST_METHOD(sap_todo9);
+OT_TEST_METHOD(sap_todo10);
+OT_TEST_METHOD(sap_todo11);

Thread
ODBC C-tests commit: r128 - trunk/testsuites/t_unixodbc_sapuwendel6 Jun