Changeset: a3e04b94dac0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/a3e04b94dac0
Modified Files:
        sql/server/rel_dump.c
        sql/test/SQLancer/Tests/sqlancer19.SQL.py
Branch: Jul2021
Log Message:

Look for escapred  and \ in the atom's string representation


diffs (49 lines):

diff --git a/sql/server/rel_dump.c b/sql/server/rel_dump.c
--- a/sql/server/rel_dump.c
+++ b/sql/server/rel_dump.c
@@ -777,18 +777,21 @@ readInt( char *r, int *pos)
 static char *
 readString( char *r, int *pos)
 {
-       char *st = NULL;
+       char *st = NULL, *parsed;
 
-       if (r[*pos] == '"'){
+       if (r[*pos] == '"') {
                (*pos)++;
-               st = r+*pos;
+               st = parsed = r+*pos;
                while (r[*pos] != '"') {
-                       if (r[*pos] == '\\' && r[*pos + 1] == '"')
+                       if (r[*pos] == '\\' && (r[*pos + 1] == '"' || r[*pos + 
1] == '\\')) {
+                               *parsed++ = r[*pos + 1];
                                (*pos)+=2;
-                       else
+                       } else {
+                               *parsed++ = r[*pos];
                                (*pos)++;
+                       }
                }
-               r[*pos] = 0;
+               *parsed = '\0';
                (*pos)++;
        }
        return st;
diff --git a/sql/test/SQLancer/Tests/sqlancer19.SQL.py 
b/sql/test/SQLancer/Tests/sqlancer19.SQL.py
--- a/sql/test/SQLancer/Tests/sqlancer19.SQL.py
+++ b/sql/test/SQLancer/Tests/sqlancer19.SQL.py
@@ -51,6 +51,14 @@ with SQLTestCase() as cli:
         
.assertSucceeded().assertDataResultMatch([(1,),(1,),(1,),(1,),(1,),(1,)])
     cli.execute('SELECT 3 > (rt2.c0 ^ CAST(2 AS TINYINT)) * rt2.c0 FROM rt2;') 
\
         
.assertSucceeded().assertDataResultMatch([(False,),(True,),(False,),(False,),(False,),(False,),(True,),(False,),(False,),(False,)])
+    cli.execute("SELECT r'\"' from t3;") \
+        .assertSucceeded().assertDataResultMatch([("\"",)])
+    cli.execute("SELECT r'\"' from rt3;") \
+        .assertSucceeded().assertDataResultMatch([("\"",)])
+    cli.execute("SELECT r'\\' from t3;") \
+        .assertSucceeded().assertDataResultMatch([("\\",)])
+    cli.execute("SELECT r'\\' from rt3;") \
+        .assertSucceeded().assertDataResultMatch([("\\",)])
     cli.execute("ROLLBACK;")
 
     cli.execute("""
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to