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_cnvchar.c
trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c
trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h
Log:
Addition of col1/cola tests and fixing some warnings that -Wall -pedantic showed on my box
Modified: trunk/testsuites/t_unixodbc_sap/sap_23000.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_23000.c 2007-05-29 12:25:33 UTC (rev 117)
+++ trunk/testsuites/t_unixodbc_sap/sap_23000.c 2007-05-29 12:26:21 UTC (rev 118)
@@ -17,16 +17,16 @@
hdbc, SQL_HANDLE_DBC);
OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
- CHECK_SQL_S(SQLExecDirect(hstmt, "DROP TABLE IF EXISTS \"" TABLE_NAME "\"", SQL_NTS),
hstmt);
+ CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS \"" TABLE_NAME "\"",
SQL_NTS), hstmt);
CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
- CHECK_SQL_S(SQLExecDirect(hstmt, "CREATE TABLE \"" TABLE_NAME "\" (col1 CHAR(10)
DEFAULT NULL) ENGINE=\"" TABLE_ENGINE "\"", SQL_NTS), hstmt);
+ CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"CREATE TABLE \"" TABLE_NAME "\" (col1
CHAR(10) DEFAULT NULL) ENGINE=\"" TABLE_ENGINE "\"", SQL_NTS), hstmt);
CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
CHECK_SQL_S(SQLBindParameter(hstmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, 10, 0,
NULL, 0, &cb_value), hstmt);
cb_value = SQL_NULL_DATA;
- CHECK_SQL_S(SQLExecDirect(hstmt, "INSERT INTO \"" TABLE_NAME "\" VALUES (?)", SQL_NTS),
hstmt);
+ CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"INSERT INTO \"" TABLE_NAME "\" VALUES (?)",
SQL_NTS), hstmt);
CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_DROP), hstmt);
CHECK_SQL(ret = SQLEndTran(SQL_HANDLE_DBC, hdbc, SQL_ROLLBACK),
Modified: trunk/testsuites/t_unixodbc_sap/sap_async.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_async.c 2007-05-29 12:25:33 UTC (rev 117)
+++ trunk/testsuites/t_unixodbc_sap/sap_async.c 2007-05-29 12:26:21 UTC (rev 118)
@@ -98,61 +98,61 @@
case (SQL_API_SQLTABLES):
CHECK_SQL_EXE(ret = SQLTables(hstmt, test_values->sz_qualifier, SQL_NTS,
- "", SQL_NTS, test_values->sz_table_name, SQL_NTS,
+ (SQLCHAR*)"", SQL_NTS, test_values->sz_table_name,
SQL_NTS,
test_values->sz_p1, SQL_NTS),
hstmt);
break;
case (SQL_API_SQLCOLUMNS):
CHECK_SQL_EXE(ret = SQLColumns(hstmt, test_values->sz_qualifier, SQL_NTS,
- "", SQL_NTS, test_values->sz_table_name, SQL_NTS,
+ (SQLCHAR*)"", SQL_NTS, test_values->sz_table_name,
SQL_NTS,
test_values->sz_column_name, SQL_NTS),
hstmt);
break;
case (SQL_API_SQLSTATISTICS):
CHECK_SQL_EXE(ret = SQLStatistics(hstmt, test_values->sz_qualifier, SQL_NTS,
- "", SQL_NTS, test_values->sz_table_name,
SQL_NTS,
+ (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
(WORD)test_values->cb_p1,
(WORD)test_values->cb_p2),
hstmt);
break;
case (SQL_API_SQLTABLEPRIVILEGES):
CHECK_SQL_EXE(ret = SQLTablePrivileges(hstmt, test_values->sz_qualifier,
SQL_NTS,
- "", SQL_NTS, test_values->sz_table_name,
SQL_NTS),
+ (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS),
hstmt);
break;
case (SQL_API_SQLCOLUMNPRIVILEGES):
CHECK_SQL_EXE(ret = SQLColumnPrivileges(hstmt, test_values->sz_qualifier,
SQL_NTS,
- "", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
+ (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
test_values->sz_column_name, SQL_NTS),
hstmt);
break;
case (SQL_API_SQLPRIMARYKEYS):
CHECK_SQL_EXE(ret = SQLPrimaryKeys(hstmt, test_values->sz_qualifier, SQL_NTS,
- "", SQL_NTS, test_values->sz_table_name,
SQL_NTS),
+ (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS),
hstmt);
break;
case (SQL_API_SQLFOREIGNKEYS):
CHECK_SQL_EXE(ret = SQLForeignKeys(hstmt, test_values->sz_qualifier, SQL_NTS,
- "", SQL_NTS, test_values->sz_table_name,
SQL_NTS,
+ (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
test_values->sz_column_name, SQL_NTS,
- "", SQL_NTS, test_values->sz_p2, SQL_NTS),
+ (SQLCHAR*)"", SQL_NTS, test_values->sz_p2,
SQL_NTS),
hstmt);
break;
case (SQL_API_SQLPROCEDURES):
CHECK_SQL_EXE(ret = SQLProcedures(hstmt, test_values->sz_qualifier, SQL_NTS,
- "", SQL_NTS, test_values->sz_table_name,
SQL_NTS),
+ (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS),
hstmt);
break;
case (SQL_API_SQLPROCEDURECOLUMNS):
CHECK_SQL_EXE(ret = SQLProcedureColumns(hstmt, test_values->sz_qualifier,
SQL_NTS,
- "", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
+ (SQLCHAR*)"", SQL_NTS,
test_values->sz_table_name, SQL_NTS,
test_values->sz_column_name, SQL_NTS),
hstmt);
break;
@@ -160,7 +160,7 @@
}
} while (ret == SQL_STILL_EXECUTING);
}
- SQLExecDirect (hstmt, "DROP TABLE IF EXISTS " TABLE_NAME, SQL_NTS);
- SQLExecDirect (hstmt, "DROP TABLE IF EXISTS " TABLE_NAME "X", SQL_NTS);
+ SQLExecDirect (hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS " TABLE_NAME, SQL_NTS);
+ SQLExecDirect (hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS " TABLE_NAME "X", SQL_NTS);
}
Modified: trunk/testsuites/t_unixodbc_sap/sap_bindparm.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_bindparm.c 2007-05-29 12:25:33 UTC (rev 117)
+++ trunk/testsuites/t_unixodbc_sap/sap_bindparm.c 2007-05-29 12:26:21 UTC (rev 118)
@@ -27,8 +27,8 @@
hdbc, SQL_HANDLE_DBC);
OT_ASSERT_INT_MSG("SQLAllocHandle()", SQL_SUCCESS, ret);
- CHECK_SQL_S(SQLExecDirect(hstmt, "DROP TABLE IF EXISTS \"" TABLE_NAME "\"", SQL_NTS),
hstmt);
- CHECK_SQL_S(SQLExecDirect(hstmt, "CREATE TABLE " TABLE_NAME "("
+ 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 "("
"\"MY_ROW_ID\" INT, "
"\"TYP_CHAR\" CHAR(30), \"TYP_SMALLINT\" SMALLINT,
"
"\"TYP_INTEGER\" INTEGER, \"TYP_FLOAT\" FLOAT, "
@@ -37,7 +37,7 @@
hstmt);
/* insert some data */
- CHECK_SQL_S(SQLPrepare(hstmt, "INSERT INTO " TABLE_NAME " "
+ CHECK_SQL_S(SQLPrepare(hstmt, (SQLCHAR*)"INSERT INTO " TABLE_NAME " "
"(\"MY_ROW_ID\", "
"\"TYP_CHAR\", \"TYP_SMALLINT\", "
"\"TYP_INTEGER\", \"TYP_FLOAT\", "
@@ -86,7 +86,7 @@
}
/* fetch the rows and compare */
- CHECK_SQL_S(SQLExecDirect(hstmt, "SELECT"
+ CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"SELECT"
"\"MY_ROW_ID\", \"TYP_CHAR\", \"TYP_SMALLINT\", "
"\"TYP_INTEGER\", \"TYP_FLOAT\", "
"\"TYP_DOUBLE\", \"TYP_DATE\", \"TYP_TIME\" "
@@ -126,7 +126,7 @@
OT_ASSERT_INT(bindparm_value->my_row_id, bindparm_result.my_row_id);
snprintf(msg, sizeof(msg) - 1, "Expecting '%s', got '%s'", bindparm_value->vchar,
bindparm_result.vchar);
- OT_ASSERT_MSG(msg, (0 == strncmp(bindparm_value->vchar, bindparm_result.vchar,
BINDPARM_MAX_NAME_LEN)));
+ OT_ASSERT_MSG(msg, (0 == strncmp((char*)bindparm_value->vchar,
(char*)bindparm_result.vchar, BINDPARM_MAX_NAME_LEN)));
OT_ASSERT_INT(bindparm_value->vsmallint, bindparm_result.vsmallint);
OT_ASSERT_INT(bindparm_value->vinteger, bindparm_result.vinteger);
Modified: trunk/testsuites/t_unixodbc_sap/sap_cnvchar.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/sap_cnvchar.c 2007-05-29 12:25:33 UTC (rev 117)
+++ trunk/testsuites/t_unixodbc_sap/sap_cnvchar.c 2007-05-29 12:26:21 UTC (rev 118)
@@ -3,12 +3,23 @@
#define TABLE_NAME "cnvchar"
#define TABLE_ENGINE "InnoDB"
+/*
+ TODO:
+ Original code has values for the following types but does not test them
+ because they are not in the list below. Odd, anchient tests...
+ SQL_C_[U|S]*TINYINT
+ Added already:
+ SQL_C_[U|S]SHORT
+ SQL_C_[U|S]LONG
+*/
CNVCHAR_TYPES type_char_list[] = {
{SQL_C_CHAR, SQL_C_CHAR, SQL_CHAR},
- /* TODO: SQL_C_SSHORT / SQL_C_USHORT -> SQL_SMALLINT */
{SQL_C_SHORT, SQL_C_SHORT, SQL_SMALLINT},
- /* TODO: SQL_C_SLONG / SQL_C_ULONG -> SQL_INTEGER */
+ {SQL_C_USHORT, SQL_C_USHORT, SQL_SMALLINT},
+ {SQL_C_SSHORT, SQL_C_SSHORT, SQL_SMALLINT},
{SQL_C_LONG, SQL_C_LONG, SQL_INTEGER},
+ {SQL_C_ULONG, SQL_C_ULONG, SQL_INTEGER},
+ {SQL_C_SLONG, SQL_C_SLONG, SQL_INTEGER},
{SQL_C_FLOAT, SQL_C_FLOAT, SQL_REAL},
/* TODO: SQL_FLOAT is missing */
{SQL_C_DOUBLE, SQL_C_DOUBLE, SQL_DOUBLE},
@@ -18,40 +29,106 @@
{SQL_C_TYPE_TIME, SQL_C_TYPE_TIME, SQL_TYPE_TIME},
/* TODO: SQL_TYPE_TIMESTAMP, SQL_C_TYPE_TIMESTAMP */
{SQL_C_TYPE_TIMESTAMP,SQL_C_TIMESTAMP, SQL_TYPE_TIMESTAMP},
- {0, 0, 0}
+ {-9999, -9999, -9999}
};
CNVCHAR_TABLES table_list[] = {
{
SQL_CHAR, "SQL_CHAR",
- "CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col CHAR(100)) ENGINE = \""
TABLE_ENGINE "\"",
+ (SQLCHAR*)"CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col CHAR(100)) ENGINE = \""
TABLE_ENGINE "\"",
type_char_list
},
{
SQL_VARCHAR, "SQL_VARCHAR",
- "CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col CHAR(100)) ENGINE = \""
TABLE_ENGINE "\"",
+ (SQLCHAR*)"CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col CHAR(100)) ENGINE = \""
TABLE_ENGINE "\"",
type_char_list
},
{
SQL_LONGVARCHAR, "SQL_LONGVARCHAR",
- "CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col LONG) ENGINE = \"" TABLE_ENGINE
"\"",
+ (SQLCHAR*)"CREATE TABLE " TABLE_NAME " (my_row_id INTEGER, col LONG) ENGINE = \""
TABLE_ENGINE "\"",
type_char_list
},
- {0, "", "", NULL}
+ {0, "", (SQLCHAR*)"", NULL}
};
SQLCHAR result_buffer[1024];
-UCHAR szDefCHAR[] = "SQL_C_CHAR";
-UCHAR szDefNUM[] = "12345";
+
+UCHAR szDefBINNUM[50] = "9999"; SQLLEN cbBINNUM = sizeof(szDefBINNUM);
+
+
+/* SQL_C_CHAR */
+SQLCHAR def_char[] = "SQL_C_CHAR";
+SQLCHAR def_num[] = "12345";
+/* SQL_C_BIT */
+SQLCHAR def_bit[] = "0";
+SQLCHAR s_def_bit = '1';
+/* SQL_C_TINYINT, added SQL_C_STINYINT/SQLC_UTINYINT */
+SQLCHAR s_def_tiny = SQL_C_TINYINT;
+SQLCHAR def_utiny[] = "12"; /* original code but for SQL_C_TINYINT */
+SQLCHAR s_def_utiny = SQL_C_UTINYINT; /* n/a in the original code */
+SQLSCHAR def_stiny[] = "-12"; /* n/a in the original code */
+SQLSCHAR s_def_stiny = SQL_C_STINYINT; /* ??? original code: SCHAR sDefTINY =
SQL_C_TINYINT */
+/* SQL_C_SHORT, added SQL_C_SSHORT/SQL_C_USHORT */
+SWORD s_def_short = SQL_C_SHORT;
+SQLSCHAR def_sshort[] = "-3333"; /* n/a in the original code */
+SWORD s_def_sshort = SQL_C_SSHORT; /* SWORD sDefSHORT = SQL_C_SHORT; */
+SQLCHAR def_ushort[] = "3333"; /* UCHAR szDefSHORT[] = "3333" */
+SWORD s_def_ushort = SQL_C_USHORT; /* n/a in the original code */
+/* SQL_C_LONG, added SQL_C_SLONG/SQL_C_ULONG */
+SWORD s_def_long = SQL_C_LONG;
+SQLSCHAR def_slong[] = "-44444"; /* n/a in the original code */
+SWORD s_def_slong = SQL_C_SLONG; /* n/a in the original code */
+SQLCHAR def_ulong[] = "44444"; /* UCHAR szDefLONG[] = "44444" */
+SWORD s_def_ulong = SQL_C_ULONG; /* n/a in the original code */
+/* SQL_C_FLOAT */
+SFLOAT s_def_float = SQL_C_FLOAT;
+SQLCHAR def_float[] = "5.5555";
+/* SQL_C_DOUBLE */
+SDOUBLE s_def_double = 2222.222;
+SQLCHAR def_double[] = "6.66666";
+/* SQL_C_BINARY */
+SQLCHAR def_binary[50] = "SQL_C_BINARY";
+/* SQL_C_DATE */
+DATE_STRUCT s_def_date[] = {{1994, 9, 28}};
+SQLCHAR def_date[] = "1994-09-28";
+/* SQL_C_TIME */
+TIME_STRUCT s_def_time[] = {{9, 35, 58}};
+SQLCHAR def_time[] = "09:35:58";
+/* SQL_C_TIMESTAMP */
+TIMESTAMP_STRUCT s_def_stamp[] = {{1994, 9, 28, 9, 35, 58, 30}};
+SQLCHAR def_stamp[] = "1994-09-28 09:35:58";
+
CNVCHAR_DEFAULTS_STRUCT cnvchar_default_list[] = {
- { "SQL_C_CHAR", SQL_C_CHAR, szDefCHAR, szDefNUM, 0,
sizeof(result_buffer), sizeof(result_buffer) },
- /* { "SQL_C_BIT", SQL_C_BIT, "0", "1" 0, sizeof("0"),
sizeof('1') }, */
- { NULL, 0, NULL, NULL, 0, 0,
0 }
+ { "SQL_C_CHAR", SQL_C_CHAR, def_char, def_num, 0,
sizeof(result_buffer),sizeof(result_buffer) },
+ { "SQL_C_BIT", SQL_C_BIT, def_bit, &s_def_bit, 0,
sizeof(def_bit), sizeof(s_def_bit) },
+ /* not referenced above = never used AFAIK */
+ { "SQL_C_TINYINT", SQL_C_TINYINT, def_utiny, &s_def_tiny, 0,
sizeof(def_utiny), sizeof(s_def_tiny) },
+ { "SQL_C_UTINYINT", SQL_C_UTINYINT, def_utiny, &s_def_utiny, 0,
sizeof(def_utiny), sizeof(s_def_utiny) },
+ { "SQL_C_STINYINT", SQL_C_STINYINT, def_stiny, &s_def_stiny, 0,
sizeof(def_stiny), sizeof(s_def_stiny) },
+ /* SQL_C_SHORT, added U/S */
+ { "SQL_C_SHORT", SQL_C_SHORT, def_ushort, &s_def_short, 0,
sizeof(def_ushort), sizeof(s_def_short) },
+ { "SQL_C_USHORT", SQL_C_USHORT, def_ushort, &s_def_ushort, 0,
sizeof(def_ushort), sizeof(s_def_ushort) },
+ { "SQL_C_SSHORT", SQL_C_SSHORT, def_sshort, &s_def_sshort, 0,
sizeof(def_sshort), sizeof(s_def_sshort) },
+ /* SQL_C_LONG, added U/S */
+ { "SQL_C_LONG", SQL_C_LONG, def_ulong, &s_def_long, 0,
sizeof(def_ulong), sizeof(s_def_long) },
+ { "SQL_C_ULONG", SQL_C_ULONG, def_ulong, &s_def_ulong, 0,
sizeof(def_ulong), sizeof(s_def_ulong) },
+ { "SQL_C_SLONG", SQL_C_SLONG, def_slong, &s_def_slong, 0,
sizeof(def_slong), sizeof(s_def_slong) },
+ /* Other */
+ { "SQL_C_FLOAT", SQL_REAL, def_float, &s_def_float, 0,
sizeof(def_float), sizeof(s_def_float) },
+ { "SQL_C_DOUBLE", SQL_FLOAT, def_double, &s_def_double, 0,
sizeof(def_double), sizeof(s_def_double) },
+ { "SQL_C_DOUBLE", SQL_DOUBLE, def_double, &s_def_double, 0,
sizeof(def_double), sizeof(s_def_double) },
+ { "SQL_C_BINARY", SQL_C_DOUBLE, def_binary, def_binary, sizeof(def_binary),
sizeof(def_binary), sizeof(def_binary) },
+ { "SQL_C_DATE", SQL_C_DATE, def_date, s_def_date, 0,
sizeof(def_date), sizeof(s_def_date) },
+ { "SQL_C_TIME", SQL_C_TIME, def_time, s_def_time, 0,
sizeof(def_date), sizeof(s_def_time) },
+ { "SQL_C_TIMESTAMP", SQL_C_TIMESTAMP, def_stamp, s_def_stamp, 0,
sizeof(def_stamp), sizeof(s_def_stamp) },
+ { "SQL_C_VARCHAR", SQL_VARCHAR, def_char, def_char, 0,
sizeof(result_buffer),sizeof(result_buffer) },
+ { "SQL_C_LONGVAR", SQL_LONGVARCHAR, def_char, def_char, 0,
sizeof(result_buffer),sizeof(result_buffer) },
+ { NULL, 0, NULL, NULL, 0,
0, 0 }
};
/*
@@ -70,23 +147,26 @@
SQLINTEGER cb_data_size;
CNVCHAR_TABLES *test_table;
CNVCHAR_TYPES *test_type;
-
+ /*
+ char c_type_name_in[100];
+ char c_type_name_out[100];
+ */
OT_TODO("This is a stub - unixODBC/tests/v3/conformance/Other/cnvchar");
+ OT_SKIP("To prevent crashes we skip it...");
- for (test_table = table_list; test_table->sql_type > 0; test_table++)
+ for (test_table = table_list; test_table->types != NULL; test_table++)
{
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, "DROP TABLE IF EXISTS " TABLE_NAME, SQL_NTS),
hstmt);
+ CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"DROP TABLE IF EXISTS " TABLE_NAME,
SQL_NTS), hstmt);
CHECK_SQL_S(SQLExecDirect(hstmt, test_table->create_statement, SQL_NTS), hstmt);
CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
- for (test_type = table_list->types; test_type->c_type_in > 0; test_type++)
+ for (test_type = table_list->types; test_type->c_type_in != -9999 &&
test_type->sql_type != -9999; test_type++)
{
-
- CHECK_SQL_S(SQLPrepare(hstmt, "INSERT INTO " TABLE_NAME
+ CHECK_SQL_S(SQLPrepare(hstmt, (SQLCHAR*)"INSERT INTO " TABLE_NAME
" (my_row_id, col) VALUES (?, ?)", SQL_NTS),
hstmt);
@@ -105,7 +185,7 @@
CHECK_SQL_S(SQLExecute(hstmt), hstmt);
CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
- CHECK_SQL_S(SQLExecDirect(hstmt, "SELECT col FROM " TABLE_NAME " WHERE my_row_id =
?", SQL_NTS), hstmt);
+ CHECK_SQL_S(SQLExecDirect(hstmt, (SQLCHAR*)"SELECT col FROM " TABLE_NAME " WHERE
my_row_id = ?", SQL_NTS), hstmt);
CHECK_SQL_S(SQLBindCol(hstmt, 1, test_type->c_type_out, result_buffer,
cb_data_size, &len_indicator), hstmt);
CHECK_SQL_S(SQLFetch(hstmt), hstmt);
CHECK_SQL_S(SQLFreeStmt(hstmt, SQL_CLOSE), hstmt);
@@ -130,11 +210,11 @@
case (SQL_C_BINARY):
for (def2 = cnvchar_default_list; def2->name != NULL; def2++)
{
- if (def2->cb_type == sql_type)
+ if (def2->cb_type == sql_type)
{
*out_bind_value_len = def2->pcb_value;
*out_bind_value = (SQLPOINTER)(def2->num);
- *out_cb_data_size = def2->cb_data_size_n;
+ *out_cb_data_size = def2->cb_data_size_num;
if (out_bind_value_len != NULL)
*out_bind_value_len = *out_cb_data_size;
return 1;
@@ -149,7 +229,7 @@
{
*out_bind_value_len = def2->pcb_value;
*out_bind_value = (SQLPOINTER)(def2->value);
- *out_cb_data_size = def2->cb_data_size;
+ *out_cb_data_size = def2->cb_data_size_value;
if (out_bind_value_len != NULL)
*out_bind_value_len = *out_cb_data_size;
return 1;
@@ -160,12 +240,13 @@
default:
*out_bind_value_len = defaults->pcb_value;
*out_bind_value = (SQLPOINTER)(defaults->num);
- *out_cb_data_size = defaults->cb_data_size_n;
+ *out_cb_data_size = defaults->cb_data_size_num;
return 1;
break;
}
}
}
- return 0;
+ *out_bind_value = NULL;
+ return 1;
}
Modified: trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c
===================================================================
--- trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c 2007-05-29 12:25:33 UTC (rev
117)
+++ trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.c 2007-05-29 12:26:21 UTC (rev
118)
@@ -3,7 +3,256 @@
*/
#include "t_unixodbc_sap_suite.h"
+int unixodbc_sap_ctype2string(SQLINTEGER c_type, char *string, unsigned int string_len)
+{
+ int found = 1;
+
+ /* SQL_C_BOOKMARK and SQL_C_VARBOOKMARK are deprecated and not recognized */
+ switch (c_type)
+ {
+ case (SQL_C_CHAR):
+ strncpy(string, "SQL_C_CHAR", string_len);
+ break;
+ case (SQL_C_SHORT):
+ strncpy(string, "SQL_C_SHORT (2.0)", string_len);
+ break;
+ case (SQL_C_SSHORT):
+ strncpy(string, "SQL_C_SSHORT", string_len);
+ break;
+ case (SQL_C_USHORT):
+ strncpy(string, "SQL_C_USHORT", string_len);
+ break;
+ case (SQL_C_LONG):
+ strncpy(string, "SQL_C_LONG (2.0)", string_len);
+ break;
+ case (SQL_C_SLONG):
+ strncpy(string, "SQL_C_SLONG", string_len);
+ break;
+ case (SQL_C_ULONG):
+ strncpy(string, "SQL_C_ULONG", string_len);
+ break;
+ case (SQL_C_FLOAT):
+ strncpy(string, "SQL_C_FLOAT", string_len);
+ break;
+ case (SQL_C_DOUBLE):
+ strncpy(string, "SQL_C_DOUBLE", string_len);
+ break;
+ case (SQL_C_BIT):
+ strncpy(string, "SQL_C_BIT", string_len);
+ break;
+ case (SQL_C_TINYINT):
+ strncpy(string, "SQL_C_TINYINT (2.0)", string_len);
+ break;
+ case (SQL_C_STINYINT):
+ strncpy(string, "SQL_C_STINYINT", string_len);
+ break;
+ case (SQL_C_UTINYINT):
+ strncpy(string, "SQL_C_UTINYINT", string_len);
+ break;
+ case (SQL_C_SBIGINT):
+ strncpy(string, "SQL_C_SBIGINT", string_len);
+ break;
+ case (SQL_C_UBIGINT):
+ strncpy(string, "SQL_C_UBIGINT", string_len);
+ break;
+ case (SQL_C_BINARY):
+ strncpy(string, "SQL_C_BINARY", string_len);
+ break;
/*
+Seems not to be portable
+ case (SQL_C_XML):
+ strncpy(string, "SQL_C_XML", string_len);
+ break;
+*/
+ case (SQL_C_TYPE_DATE):
+ strncpy(string, "SQL_C_TYPE_DATE", string_len);
+ break;
+ case (SQL_C_TIME):
+ strncpy(string, "SQL_C_TIME (2.0)", string_len);
+ break;
+ case (SQL_C_TYPE_TIME):
+ strncpy(string, "SQL_C_TYPE_TIME", string_len);
+ break;
+ case (SQL_TIMESTAMP):
+ strncpy(string, "SQL_TIMESTAMP (2.0)", string_len);
+ break;
+ case (SQL_C_TYPE_TIMESTAMP):
+ strncpy(string, "SQL_C_TYPE_TIMESTAMP", string_len);
+ break;
+ case (SQL_C_NUMERIC):
+ strncpy(string, "SQL_C_NUMERIC", string_len);
+ break;
+/*
+ They seem not to be portable
+ case (SQL_C_GUID):
+ strncpy(string, "SQL_C_GUID", string_len);
+ break;
+ case (SQL_INTERVAL_STRUCT):
+ strncpy(string, "SQL_INTERVAL_STRUCT", string_len);
+ break;
+*/
+ default:
+ strncpy(string, "Unknown type", string_len);
+ found = 0;
+ break;
+ }
+
+ return found;
+}
+
+int unixodbc_sap_sqltype2string(SQLINTEGER sql_type, char *string, unsigned int
string_len)
+{
+ int found = 1;
+
+ switch (sql_type)
+ {
+ case (SQL_CHAR):
+ strncpy(string, "CHAR(n)", string_len);
+ break;
+ case (SQL_VARCHAR):
+ strncpy(string, "VARCHAR(n)", string_len);
+ break;
+ case (SQL_LONGVARCHAR):
+ strncpy(string, "LONG VARCHAR", string_len);
+ break;
+ case (SQL_WCHAR):
+ strncpy(string, "WCHAR(n)", string_len);
+ break;
+ case (SQL_WVARCHAR):
+ strncpy(string, "VARWCHAR(n)", string_len);
+ break;
+ case (SQL_WLONGVARCHAR):
+ strncpy(string, "LONGWVARCHAR", string_len);
+ break;
+ case (SQL_DECIMAL):
+ strncpy(string, "DECIMAL(p,s)", string_len);
+ break;
+ case (SQL_NUMERIC):
+ strncpy(string, "NUMERIC(p,s)", string_len);
+ break;
+ case (SQL_SMALLINT):
+ strncpy(string, "SMALLINT", string_len);
+ break;
+ case (SQL_INTEGER):
+ strncpy(string, "INTEGER", string_len);
+ break;
+ case (SQL_REAL):
+ strncpy(string, "REAL", string_len);
+ break;
+ case (SQL_FLOAT):
+ strncpy(string, "FLOAT(p)", string_len);
+ break;
+ case (SQL_DOUBLE):
+ strncpy(string, "DOUBLE PRECISION", string_len);
+ break;
+ case (SQL_BIT):
+ strncpy(string, "BIT", string_len);
+ break;
+ case (SQL_TINYINT):
+ strncpy(string, "TINYINT", string_len);
+ break;
+ case (SQL_BIGINT):
+ strncpy(string, "BIGINT", string_len);
+ break;
+ case (SQL_BINARY):
+ strncpy(string, "BINARY(n)", string_len);
+ break;
+ case (SQL_VARBINARY):
+ strncpy(string, "VARBINARY(n)", string_len);
+ break;
+ case (SQL_LONGVARBINARY):
+ strncpy(string, "LONG VARBINARY", string_len);
+ break;
+ case (SQL_TYPE_DATE):
+ strncpy(string, "DATE", string_len);
+ break;
+ case (SQL_TYPE_TIME):
+ strncpy(string, "TIME(p)", string_len);
+ break;
+ case (SQL_TYPE_TIMESTAMP):
+ strncpy(string, "TIMESTAMP(p)", string_len);
+ break;
+/*
+ They seem to be not portable
+ case (SQL_TYPE_UTCDATETIME):
+ strncpy(string, "UTCDATETIME", string_len);
+ break;
+ case (SQL_TYPE_UTCTIME):
+ strncpy(string, "UTCTIME", string_len);
+ break;
+*/
+ case (SQL_INTERVAL_MONTH):
+ strncpy(string, "INTERVAL MONTH(p)", string_len);
+ break;
+ case (SQL_INTERVAL_YEAR):
+ strncpy(string, "INTERVAL YEAR(p)", string_len);
+ break;
+ case (SQL_INTERVAL_YEAR_TO_MONTH):
+ strncpy(string, "INTERVAL YEAR(p) TO MONTH", string_len);
+ break;
+ case (SQL_INTERVAL_DAY):
+ strncpy(string, "INTERVAL DAY(p)", string_len);
+ break;
+ case (SQL_INTERVAL_HOUR):
+ strncpy(string, "INTERVAL HOUR(p)", string_len);
+ break;
+ case (SQL_INTERVAL_MINUTE):
+ strncpy(string, "INTERVAL MINUTE(p)", string_len);
+ break;
+ case (SQL_INTERVAL_SECOND):
+ strncpy(string, "INTERVAL SECOND(p,q)", string_len);
+ break;
+ case (SQL_INTERVAL_DAY_TO_HOUR):
+ strncpy(string, "INTERVAL DAY(p) TO HOUR", string_len);
+ break;
+ case (SQL_INTERVAL_DAY_TO_MINUTE):
+ strncpy(string, "INTERVAL DAY(p) TO MINUTE", string_len);
+ break;
+ case (SQL_INTERVAL_DAY_TO_SECOND):
+ strncpy(string, "INTERVAL DAY(p) TO SECOND(p)", string_len);
+ break;
+ case (SQL_INTERVAL_HOUR_TO_MINUTE):
+ strncpy(string, "INTERVAL HOUR(p) TO MINUTE", string_len);
+ break;
+ case (SQL_INTERVAL_HOUR_TO_SECOND):
+ strncpy(string, "INTERVAL HOUR(p) TO SECOND(q)", string_len);
+ break;
+/*
+Seems not portable
+ case (SQL_INTERVAL_MINUTE_SECOND):
+ strncpy(string, "INTERVAL MINUTE(p) TO SECOND(q)", string_len);
+ break;
+*/
+ case (SQL_GUID):
+ strncpy(string, "GUID", string_len);
+ break;
+ default:
+ strncpy(string, "Unknown type", string_len);
+ found = 0;
+ break;
+ }
+
+ return found;
+}
+
+void unixodbc_sap_create_identifier(char *identifier, char *prefix, unsigned ident_len)
+{
+ unsigned int i = 0;
+
+ if (prefix)
+ {
+ strncpy(identifier, prefix, (size_t)ident_len);
+ ident_len -= strlen(prefix);
+ i = strlen(prefix);
+ }
+
+ for ( ; i < ident_len; i++)
+ identifier[i] = (SQLCHAR)('a' + ((i + 1) % 10));
+ identifier[ident_len] = '\0';
+
+}
+
+/*
Global suite setup method
SYNOPSIS
@@ -116,4 +365,6 @@
OT_SUITE_ADD_TEST(sap_async, NULL, NULL);
OT_SUITE_ADD_TEST(sap_bindparm, unixodbc_sap_setup, unixodbc_sap_teardown);
OT_SUITE_ADD_TEST(sap_cnvchar, unixodbc_sap_setup, unixodbc_sap_teardown);
+ 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_REGISTER_END
Modified: trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h
===================================================================
--- trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h 2007-05-29 12:25:33 UTC (rev
117)
+++ trunk/testsuites/t_unixodbc_sap/t_unixodbc_sap_suite.h 2007-05-29 12:26:21 UTC (rev
118)
@@ -3,13 +3,20 @@
#define OT_PARAM CuTest *tc
#define OT_ARGS tc
+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);
+
/* Unit testing overhead ;-) */
OT_SUITE_SETUP(unixodbc_sap_suite_setup);
OT_TEST_SETUP(unixodbc_sap_setup);
OT_TEST_TEARDOWN(unixodbc_sap_teardown);
+#define SAP_ASSERT_STRCMP(x, y) \
+ OT_ASSERT((0 == strcmp((char*)(x), (char*)(y))));
+
/*
TODO:
Do not blame the author for choosing improper data types, blame the Others.
@@ -23,14 +30,14 @@
/* sap_async.c */
typedef struct st_test_values {
- WORD cb_function;
- UCHAR sz_qualifier[32];
- UCHAR sz_table_name[32];
- UCHAR sz_column_name[32];
- UCHAR sz_p1[132];
- SDWORD cb_p1;
- UCHAR sz_p2[32];
- SDWORD cb_p2;
+ SQLUSMALLINT cb_function;
+ SQLCHAR sz_qualifier[32];
+ SQLCHAR sz_table_name[32];
+ SQLCHAR sz_column_name[32];
+ SQLCHAR sz_p1[132];
+ SQLINTEGER cb_p1;
+ SQLCHAR sz_p2[32];
+ SQLINTEGER cb_p2;
} TEST_VALUES;
@@ -76,19 +83,19 @@
typedef struct st_cnvchar_tables {
SQLINTEGER sql_type; /* SQL type for the string column of the table */
- SQLCHAR *test_name;
+ char *test_name;
SQLCHAR *create_statement;
CNVCHAR_TYPES *types; /* list of types to test with this table */
} CNVCHAR_TABLES;
typedef struct st_cnvchar_defaults_struct {
- SQLCHAR *name; /* has no particular meaning I'm aware of */
+ char *name; /* has no particular meaning I'm aware of */
SQLINTEGER cb_type; /* not sure if it means C or SQL type */
SQLPOINTER value; /* sVALUE, could be s = string value */
SQLPOINTER num; /* sNUM, could be numerical value */
SQLLEN pcb_value; /* original *pcbVALUE */
- SQLINTEGER cb_data_size;
- SQLINTEGER cb_data_size_n;
+ SQLINTEGER cb_data_size_value;
+ SQLINTEGER cb_data_size_num;
} CNVCHAR_DEFAULTS_STRUCT;
OT_TEST_METHOD(sap_cnvchar);
@@ -100,3 +107,9 @@
SQLLEN *out_bind_value_len,
SQLINTEGER *out_cb_data_size
);
+
+/* sap_col1.c */
+OT_TEST_METHOD(sap_col1);
+
+/* sap_cola.c */
+OT_TEST_METHOD(sap_cola);
| Thread |
|---|
| • ODBC C-tests commit: r118 - trunk/testsuites/t_unixodbc_sap | uwendel | 29 May |