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)