This is an automated email from the ASF dual-hosted git repository.
qiaojialin pushed a commit to branch rel/0.13
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/rel/0.13 by this push:
new 6abd186cfc [ISSUE-6987] Fix select error when selecting a single
quotation mark (#6997)
6abd186cfc is described below
commit 6abd186cfcc394526d50f75b959db951d1b21407
Author: Haonan <[email protected]>
AuthorDate: Mon Aug 15 18:49:32 2022 +0800
[ISSUE-6987] Fix select error when selecting a single quotation mark (#6997)
---
.../IoTDBQueryWithComplexValueFilterIT.java | 33 ++++++++++++++++++++++
.../db/qp/logical/crud/BasicFunctionOperator.java | 5 ++--
2 files changed, 36 insertions(+), 2 deletions(-)
diff --git
a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryWithComplexValueFilterIT.java
b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryWithComplexValueFilterIT.java
index 4cb9c91e8c..c57334991e 100644
---
a/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryWithComplexValueFilterIT.java
+++
b/integration/src/test/java/org/apache/iotdb/db/integration/IoTDBQueryWithComplexValueFilterIT.java
@@ -94,6 +94,39 @@ public class IoTDBQueryWithComplexValueFilterIT {
}
}
+ @Test
+ public void testRawQuery3() {
+ try (Connection connection = EnvFactory.getEnv().getConnection();
+ Statement statement = connection.createStatement()) {
+ statement.execute("insert into root.sg1.d1(time,s3) values(1,'\"')");
+ boolean hasResultSet = statement.execute("select * from root.sg1.d1
where s3=\"\\\"\"");
+ Assert.assertTrue(hasResultSet);
+
+ try (ResultSet resultSet = statement.getResultSet()) {
+ int cnt = 0;
+ while (resultSet.next()) {
+ cnt++;
+ }
+ Assert.assertEquals(1, cnt);
+ }
+
+ hasResultSet = statement.execute("select * from root.sg1.d1 where
s3=\'\\\"\'");
+ Assert.assertTrue(hasResultSet);
+
+ try (ResultSet resultSet = statement.getResultSet()) {
+ int cnt = 0;
+ while (resultSet.next()) {
+ cnt++;
+ }
+ Assert.assertEquals(1, cnt);
+ }
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ fail(e.getMessage());
+ }
+ }
+
private static void prepareData() {
try (Connection connection = EnvFactory.getEnv().getConnection();
Statement statement = connection.createStatement()) {
diff --git
a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/BasicFunctionOperator.java
b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/BasicFunctionOperator.java
index f514a7fe79..9665fbc9e7 100644
---
a/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/BasicFunctionOperator.java
+++
b/server/src/main/java/org/apache/iotdb/db/qp/logical/crud/BasicFunctionOperator.java
@@ -105,8 +105,9 @@ public class BasicFunctionOperator extends FunctionOperator
{
ret =
funcToken.getUnaryExpression(
singlePath,
- (value.startsWith("'") && value.endsWith("'"))
- || (value.startsWith("\"") && value.endsWith("\""))
+ value.length() != 1
+ && ((value.startsWith("'") && value.endsWith("'"))
+ || (value.startsWith("\"") &&
value.endsWith("\"")))
? new Binary(value.substring(1, value.length() - 1))
: new Binary(value));
} else {