]> git.phdru.name Git - sqlconvert.git/commitdiff
Unescape all known escapes
authorOleg Broytman <phd@phdru.name>
Sun, 25 Sep 2016 14:46:50 +0000 (17:46 +0300)
committerOleg Broytman <phd@phdru.name>
Sun, 25 Sep 2016 15:11:05 +0000 (18:11 +0300)
sqlconvert/process_mysql.py
tests/test_mysql2postgres.py
tests/test_tokens.py

index d72479e7111bfc0db29b12c7f6bdb1d8aa0561ed..218655aa976090c7af1a79c6881ca6d35b0311e0 100644 (file)
@@ -56,8 +56,14 @@ def unescape_strings(token_list):
             value = token.value
             for orig, repl in (
                 ('\\"', '"'),
-                ("\\'", "''"),
+                ("\\'", "'"),
+                ("''", "'"),
+                ('\\b', '\b'),
+                ('\\n', '\n'),
+                ('\\r', '\r'),
+                ('\\t', '\t'),
                 ('\\\032', '\032'),
+                ('\\\\', '\\'),
             ):
                 value = value.replace(orig, repl)
             token.normalized = token.value = value
index b81c6bf4245797900b38c6730c54dbf0753cfa59..971970cdd612306d76f90468fc367e4a8d6f3cb5 100644 (file)
@@ -19,11 +19,12 @@ CREATE TABLE test (
 
 def test_mysql2postgres_string():
     connection.query(create_postgres_test_table)
-    parsed = parse("insert into test (id, test_str) "
-                   "values (1, '\"te\\'st\\\"')")[0]
+    parsed = parse("insert into test (id, test_str) values "
+                   "(1, '\"te\\'st\\\"\\n')")[0]
     unescape_strings(parsed)
     query = tlist2str(parsed)
-    assert query == u"INSERT INTO test (id, test_str) VALUES (1, '\"te''st\"')"
+    assert query == u"INSERT INTO test (id, test_str) VALUES " \
+                    u"(1, '\"te''st\"\n')"
     connection.query(query)
     test_str = connection.queryOne("SELECT test_str FROM test WHERE id=1")[0]
-    assert test_str == u"\"te'st\""
+    assert test_str == u"\"te'st\"\n"
index b514b59ece81dd5de47a09284a6a5b87d719f1b9..d537d73f068291c2eb3d9a13773ba31c9cccf5ef 100644 (file)
@@ -43,10 +43,10 @@ def test_requote():
 
 
 def test_string():
-    parsed = parse("insert into test values ('\"te\\'st\\\"')")[0]
+    parsed = parse("insert into test values ('\"te\\'st\\\"\\n')")[0]
     unescape_strings(parsed)
     query = tlist2str(parsed)
-    assert query == u"INSERT INTO test VALUES ('\"te''st\"')"
+    assert query == u"INSERT INTO test VALUES ('\"te''st\"\n')"
 
 
 def test_process():