Changeset: ee29cddffdd0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ee29cddffdd0
Modified Files:
clients/odbc/driver/SQLExecDirect.c
clients/odbc/driver/SQLNativeSql.c
clients/odbc/driver/SQLPrepare.c
Branch: escape-sequences
Log Message:
let odbc pass through escape sequences
diffs (97 lines):
diff --git a/clients/odbc/driver/SQLExecDirect.c
b/clients/odbc/driver/SQLExecDirect.c
--- a/clients/odbc/driver/SQLExecDirect.c
+++ b/clients/odbc/driver/SQLExecDirect.c
@@ -54,8 +54,14 @@ ODBCExecDirect(ODBCStmt *stmt, const SQL
stmt->Dbc->qtimeout = stmt->qtimeout;
}
- query = ODBCTranslateSQL(stmt->Dbc, StatementText, (size_t) TextLength,
- stmt->noScan);
+ if (stmt->Dbc->minor >= 46)
+ query = (char *) StatementText;
+ else
+ query = ODBCTranslateSQL(
+ stmt->Dbc,
+ StatementText,
+ (size_t) TextLength,
+ stmt->noScan);
if (query == NULL) {
/* Memory allocation error */
addStmtError(stmt, "HY001", NULL, 0);
@@ -81,7 +87,8 @@ ODBCExecDirect(ODBCStmt *stmt, const SQL
stmt->Dbc->cachelimit = 100;
}
ret = mapi_query_handle(hdl, query);
- free(query);
+ if (query != (char *) StatementText)
+ free(query);
switch (ret) {
case MOK:
break;
diff --git a/clients/odbc/driver/SQLNativeSql.c
b/clients/odbc/driver/SQLNativeSql.c
--- a/clients/odbc/driver/SQLNativeSql.c
+++ b/clients/odbc/driver/SQLNativeSql.c
@@ -50,9 +50,13 @@ MNDBNativeSql(ODBCDbc *dbc,
#ifdef ODBCDEBUG
ODBCLOG("\"%.*s\"\n", (int) TextLength1, (char *) InStatementText);
#endif
-
- query = ODBCTranslateSQL(dbc, InStatementText, (size_t) TextLength1,
- SQL_NOSCAN_OFF);
+ if (dbc->minor >= 46)
+ query = (char *) InStatementText;
+ else
+ query = ODBCTranslateSQL(dbc,
+ InStatementText,
+ (size_t) TextLength1,
+ SQL_NOSCAN_OFF);
if (query == NULL) {
/* Memory allocation error */
addDbcError(dbc, "HY001", NULL, 0);
@@ -61,7 +65,8 @@ MNDBNativeSql(ODBCDbc *dbc,
copyString(query, strlen(query), OutStatementText, BufferLength,
TextLength2Ptr, SQLINTEGER, addDbcError, dbc,
free(query); return SQL_ERROR);
- free(query);
+ if (query != (char *) InStatementText)
+ free(query);
return dbc->Error ? SQL_SUCCESS_WITH_INFO : SQL_SUCCESS;
}
diff --git a/clients/odbc/driver/SQLPrepare.c b/clients/odbc/driver/SQLPrepare.c
--- a/clients/odbc/driver/SQLPrepare.c
+++ b/clients/odbc/driver/SQLPrepare.c
@@ -74,8 +74,13 @@ MNDBPrepare(ODBCStmt *stmt,
}
fixODBCstring(StatementText, TextLength, SQLINTEGER, addStmtError,
stmt, return SQL_ERROR);
- query = ODBCTranslateSQL(stmt->Dbc, StatementText, (size_t) TextLength,
- stmt->noScan);
+ if (stmt->Dbc->minor >= 46)
+ query = (char *) StatementText;
+ else
+ query = ODBCTranslateSQL(stmt->Dbc,
+ StatementText,
+ (size_t) TextLength,
+ stmt->noScan);
if (query == NULL) {
/* Memory allocation error */
addStmtError(stmt, "HY001", NULL, 0);
@@ -87,13 +92,15 @@ MNDBPrepare(ODBCStmt *stmt,
size_t querylen = strlen(query) + 9;
s = malloc(querylen);
if (s == NULL) {
- free(query);
+ if (query != (char *) StatementText)
+ free(query);
/* Memory allocation error */
addStmtError(stmt, "HY001", NULL, 0);
return SQL_ERROR;
}
strconcat_len(s, querylen, "prepare ", query, NULL);
- free(query);
+ if (query != (char *) StatementText)
+ free(query);
ODBCResetStmt(stmt);
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]