Prechádzať zdrojové kódy

214 double quota supporting (#217)

* add double quota test case.

* add grave symbol test case.

* update grave test case.

* update test case.

* update test cases.

* update hsql.plus-e631e1a
Yang Shuang 1 rok pred
rodič
commit
53dc2858d3

+ 1 - 1
script/download.sh

@@ -1 +1 @@
-wget https://github.com/DTC8/sql-parser/releases/download/hsql.plus-0ca1fb6/hsql.plus-0ca1fb6.tar.gz -O hsql.tar.gz
+wget https://github.com/DTC8/sql-parser/releases/download/hsql.plus-e631e1a/hsql.plus-e631e1a.tar.gz -O hsql.tar.gz

BIN
src/libs/hsql/libs/libsqlparser.a


BIN
src/libs/hsql/libs/libsqlparser.so


+ 75 - 12
tests/test_dtcd_cache_only.py

@@ -13,17 +13,6 @@ def test_insert_with_single_quotes():
     db.close()
     assert rowsaffected == 1
 
-'''
-def test_insert_with_double_quotes():
-    db = pymysql.connect(host='127.0.0.1', port=20015, user='test', password='test', database='test')
-    cursor = db.cursor()
-    sql = "insert into opensource(uid, name) values(1, \"hello\") where uid = 1"
-    cursor.execute(sql)
-    db.commit()
-    cursor.close()
-    db.close()
-'''    
-
 def test_select():
     db = pymysql.connect(host='127.0.0.1', port=20015, user='test', password='test', database='test')
     cursor = db.cursor()
@@ -201,4 +190,78 @@ def test_insert_automated_conversion():
 
     db.commit()
 
-    db.close()
+    db.close()
+
+def test_insert_with_double_quotes():
+    db = pymysql.connect(host='127.0.0.1', port=20015, user='test', password='test', database='test')
+    cursor = db.cursor()
+    sql = "insert into opensource(uid, name) values(33, \"hello\")"
+    cursor.execute(sql)
+    db.commit()
+    rowsaffected = cursor.rowcount
+    cursor.close()
+    db.close()    
+    assert rowsaffected == 1
+
+def test_insert_with_double_quotes():
+    db = pymysql.connect(host='127.0.0.1', port=20015, user='test', password='test', database='test')
+    cursor = db.cursor()
+    sql = "insert into opensource(uid, name) values(33, \"hello\")"
+    rowsaffected = cursor.execute(sql)
+    db.commit()
+    cursor.close()
+    db.close()    
+    assert rowsaffected == 1
+
+def test_insert_with_grave():
+    db = pymysql.connect(host='127.0.0.1', port=20015, user='test', password='test', database='test')
+    cursor = db.cursor()
+
+    sql = "insert into `opensource`(uid, name) values(33, 'hello')"
+    rowsaffected = cursor.execute(sql)
+    assert rowsaffected == 1
+
+    sql = "insert into opensource(`uid`, name) values(33, 'hello')"
+    rowsaffected = cursor.execute(sql)
+    assert rowsaffected == 1
+
+    sql = "insert into opensource(`uid`, `name`) values(33, 'hello')"
+    rowsaffected = cursor.execute(sql)
+    assert rowsaffected == 1
+
+    sql = "insert into `opensource`(`uid`, `name`) values(33, 'hello')"
+    rowsaffected = cursor.execute(sql)
+    assert rowsaffected == 1    
+
+    sql = "insert into opensource(uid, name) values(33, `hello`)"
+    rowsaffected = cursor.execute(sql)
+    assert rowsaffected == 0
+
+    sql = "insert into \"opensource\"(uid, name) values(33, 'hello')"
+    rowsaffected = cursor.execute(sql)
+    assert rowsaffected == 0
+
+    sql = "insert into 'opensource'(uid, name) values(33, 'hello')"
+    rowsaffected = cursor.execute(sql)
+    assert rowsaffected == 0    
+
+    db.commit()
+    cursor.close()
+    db.close()    
+
+def test_insert_with_set_keyword():
+    db = pymysql.connect(host='127.0.0.1', port=20015, user='test', password='test', database='test')
+    cursor = db.cursor()
+    
+    sql = "insert into opensource set uid = 33, name = 'hello'"
+    rowsaffected = cursor.execute(sql)
+    assert rowsaffected == 1   
+
+    sql = "insert into opensource set `uid` = 33, `name` = 'hello'"
+    rowsaffected = cursor.execute(sql)
+    assert rowsaffected == 1   
+
+    db.commit()
+    cursor.close()
+    db.close()    
+