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 -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to