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