Date: Wednesday, January 11, 2006 @ 17:28:09
  Author: marc
    Path: /cvsroot/carob/odbsequoia/src

Modified: simpletest.c (1.2 -> 1.3)

Almost complete rewrite. Now reading diagnostic records after each call. More 
debug info.


--------------+
 simpletest.c |  104 +++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 75 insertions(+), 29 deletions(-)


Index: odbsequoia/src/simpletest.c
diff -u odbsequoia/src/simpletest.c:1.2 odbsequoia/src/simpletest.c:1.3
--- odbsequoia/src/simpletest.c:1.2     Thu Jan  5 16:22:13 2006
+++ odbsequoia/src/simpletest.c Wed Jan 11 17:28:09 2006
@@ -3,53 +3,99 @@
 #include <sqlucode.h>
 
 #include <stdio.h>
+#include <wchar.h>
 
 // !log_info.log_flag && !ODBCSharedTraceFlag
 
 
 #define SEQTEST 1
 
-int main()
+void print_diags(int pc, SQLSMALLINT hdletype, SQLHANDLE hdle)
 {
-  SQLHENV henv;
-  SQLHDBC hdbc;
-  SQLHSTMT hstmt;
+    SQLINTEGER recnum = 1;
+    SQLSMALLINT msgsize;
+    SQLCHAR state[6];
+    SQLINTEGER nativecode;
+    SQLCHAR msg[100];
+
+    while (SQL_NO_DATA !=
+           SQLGetDiagRec(hdletype, hdle,
+                         recnum, state, &nativecode, msg, 100, &msgsize)) { 
+          
+        printf ("step %d: sqlstate: %s, ", pc, state);
+        printf ("native errr: %ld, ", nativecode);
+        printf ("%s, ", msg);
+        printf ("msgsize: %d\n", msgsize);
+          
+        recnum++;
+    }
+}
 
+// can you spell: "functional language" ?
+#define EXEC_AND_DIAGS(call, type, hdle)   \
+    printf ("executing: %s\n", #call);     \
+    retcode = call ;                       \
+    print_diags(pc, type, hdle);           \
+    if (! SQL_SUCCEEDED(retcode))          \
+        return pc;                         \
+    pc++
 
-  if (SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv) != SQL_SUCCESS)
-    return 1;
 
+int main()
+{
+    SQLHENV henv;
+    SQLHDBC hdbc;
+    SQLHSTMT hstmt;
+    SQLRETURN retcode;
+    int pc = 1;
+
+    if (! SQL_SUCCEEDED (SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, 
&henv)))
+        return pc;
+    pc++;
 
-  if (SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) SQL_OV_ODBC3, 0) 
!= SQL_SUCCESS)
-    return 2;
+    EXEC_AND_DIAGS(SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER) 
SQL_OV_ODBC3, 0),
+                   SQL_HANDLE_ENV, henv);
 
+    EXEC_AND_DIAGS(SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc),
+                   SQL_HANDLE_ENV, henv);
 
-  if (SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc) != SQL_SUCCESS)
-    return 3;
 
 #if SEQTEST // sequoia
-  if (SQLConnect(hdbc, (SQLCHAR *) "seqsource", SQL_NTS,
-                (SQLCHAR *) "user", SQL_NTS,
-                (SQLCHAR *) "", SQL_NTS) != SQL_SUCCESS)
+    EXEC_AND_DIAGS(SQLConnect(hdbc, (SQLCHAR *) "seqsource",
+                              SQL_NTS, (SQLCHAR *) "user", SQL_NTS, (SQLCHAR 
*) "", SQL_NTS),
+                    SQL_HANDLE_DBC, hdbc);
+
 #else // postgres
-  if (SQLConnect(hdbc, (SQLCHAR *) "directPG", SQL_NTS,
-                (SQLCHAR *) "postgres", SQL_NTS,
-                (SQLCHAR *) "", SQL_NTS) != SQL_SUCCESS)
+    EXEC_AND_DIAGS(SQL_SUCCEEDED (SQLConnect(hdbc, (SQLCHAR *) "directPG", 
SQL_NTS,
+                                             (SQLCHAR *) "postgres", SQL_NTS,
+                                             (SQLCHAR *) "", SQL_NTS)),
+                   SQL_HANDLE_DBC, hdbc);
 #endif
-    return 4;
 
-  if (SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt) != SQL_SUCCESS)
-    return 5;
-  
-  if (SQLExecDirect(hstmt, (SQLCHAR *) "UPDATE PRODUCT set cost=3.1422 where 
ID=1",
-                   SQL_NTS) != SQL_SUCCESS)
-    return 6;
-
-  SQLINTEGER uc = 0;
-  if (SQLRowCount(hstmt, &uc) != SQL_SUCCESS)
-    return 7;
 
-  printf ("%ld rows were updated\n", uc);
+    EXEC_AND_DIAGS(SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt),
+                   SQL_HANDLE_DBC, hdbc);
+
+    EXEC_AND_DIAGS(SQLExecDirect(hstmt, (SQLCHAR *) "UPDATE PRODUCT set 
cost=3.1422 where ID=1", SQL_NTS),
+                   SQL_HANDLE_STMT, hstmt);
+    
+    SQLINTEGER uc = 0;
+    EXEC_AND_DIAGS(SQL_SUCCEEDED (SQLRowCount(hstmt, &uc)),
+                   SQL_HANDLE_STMT, hstmt);
 
-  return 0;
+
+    printf ("%ld rows were updated\n", uc);
+
+    return 0;
 }
+
+
+
+
+/*
+ * Local Variables:
+ * c-file-style: "bsd"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */

_______________________________________________
Carob-commits mailing list
[email protected]
https://forge.continuent.org/mailman/listinfo/carob-commits

Reply via email to