This is an automated email from the ASF dual-hosted git repository.

ivandasch pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git


The following commit(s) were added to refs/heads/master by this push:
     new ee5fe5694e2 IGNITE-18993 ODBC: Fix handling of single quotes (#10593)
ee5fe5694e2 is described below

commit ee5fe5694e2fd18a30227071330d1351b4d1f3c1
Author: Ivan Daschinskiy <[email protected]>
AuthorDate: Fri Mar 10 14:09:47 2023 +0300

    IGNITE-18993 ODBC: Fix handling of single quotes (#10593)
---
 .../internal/processors/odbc/odbc/OdbcUtils.java   |  2 +-
 .../cpp/odbc-test/src/meta_queries_test.cpp        | 32 ++++++++++++----------
 2 files changed, 18 insertions(+), 16 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/odbc/OdbcUtils.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/odbc/OdbcUtils.java
index b86149b3250..571e7cc5644 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/odbc/OdbcUtils.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/odbc/odbc/OdbcUtils.java
@@ -54,7 +54,7 @@ public class OdbcUtils {
      * @return String without leading and trailing quotation marks.
      */
     public static String removeQuotationMarksIfNeeded(String str) {
-        if (str != null && str.startsWith("\"") && str.endsWith("\""))
+        if (str != null && ((str.startsWith("\"") && str.endsWith("\"")) || 
(str.startsWith("'") && str.endsWith("'"))))
             return str.substring(1, str.length() - 1);
 
         return str;
diff --git a/modules/platforms/cpp/odbc-test/src/meta_queries_test.cpp 
b/modules/platforms/cpp/odbc-test/src/meta_queries_test.cpp
index 696c878d2b8..73026c86a53 100644
--- a/modules/platforms/cpp/odbc-test/src/meta_queries_test.cpp
+++ b/modules/platforms/cpp/odbc-test/src/meta_queries_test.cpp
@@ -733,28 +733,30 @@ BOOST_AUTO_TEST_CASE(TestDdlTablesMetaTableTypeList)
     if (!SQL_SUCCEEDED(ret))
         BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
 
-    SQLCHAR empty[] = "";
-    SQLCHAR table[] = "TestTable";
-    SQLCHAR typeList[] = "TABLE,VIEW";
+    SQLCHAR* typeLists[] = {(SQLCHAR*)"'TABLE'", (SQLCHAR*)"TABLE,VIEW"};
+    for (size_t i = 0; i < sizeof(typeLists) / sizeof(*typeLists); ++i) {
+        SQLCHAR empty[] = "";
+        SQLCHAR table[] = "TestTable";
 
-    ret = SQLTables(stmt, empty, SQL_NTS, empty, SQL_NTS, table, SQL_NTS, 
typeList, SQL_NTS);
+        ret = SQLTables(stmt, empty, SQL_NTS, empty, SQL_NTS, table, SQL_NTS, 
typeLists[i], SQL_NTS);
 
-    if (!SQL_SUCCEEDED(ret))
-        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+        if (!SQL_SUCCEEDED(ret))
+            BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
 
-    ret = SQLFetch(stmt);
+        ret = SQLFetch(stmt);
 
-    if (!SQL_SUCCEEDED(ret))
-        BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
+        if (!SQL_SUCCEEDED(ret))
+            BOOST_FAIL(GetOdbcErrorMessage(SQL_HANDLE_STMT, stmt));
 
-    CheckStringColumn(stmt, 1, "");
-    CheckStringColumn(stmt, 2, "\"PUBLIC\"");
-    CheckStringColumn(stmt, 3, "TESTTABLE");
-    CheckStringColumn(stmt, 4, "TABLE");
+        CheckStringColumn(stmt, 1, "");
+        CheckStringColumn(stmt, 2, "\"PUBLIC\"");
+        CheckStringColumn(stmt, 3, "TESTTABLE");
+        CheckStringColumn(stmt, 4, "TABLE");
 
-    ret = SQLFetch(stmt);
+        ret = SQLFetch(stmt);
 
-    BOOST_REQUIRE_EQUAL(ret, SQL_NO_DATA);
+        BOOST_REQUIRE_EQUAL(ret, SQL_NO_DATA);
+    }
 }
 
 BOOST_AUTO_TEST_CASE(TestDdlColumnsMeta)

Reply via email to