File tree Expand file tree Collapse file tree 3 files changed +34
-4
lines changed
Expand file tree Collapse file tree 3 files changed +34
-4
lines changed Original file line number Diff line number Diff line change 11__title__ = 'mindsdb_sql_parser'
22__package_name__ = 'mindsdb_sql_parser'
3- __version__ = '0.13.1 '
3+ __version__ = '0.13.2 '
44__description__ = "Mindsdb SQL parser"
5566__author__ = 'MindsDB Inc'
Original file line number Diff line number Diff line change @@ -272,7 +272,6 @@ class MindsDBLexer(Lexer):
272272 COMMA = r','
273273 LPAREN = r'\('
274274 RPAREN = r'\)'
275- PARAMETER = r'\?'
276275
277276 ASSIGN_COLON = r':='
278277
@@ -281,7 +280,6 @@ class MindsDBLexer(Lexer):
281280 RBRACE = r'\}'
282281 LBRACKET = r'\['
283282 RBRACKET = r'\]'
284- COLON = r'\:'
285283 SEMICOLON = r'\;'
286284
287285 # Operators
@@ -337,6 +335,13 @@ class MindsDBLexer(Lexer):
337335 TRUE = r'\bTRUE\b'
338336 FALSE = r'\bFALSE\b'
339337
338+ @_ (r':[a-zA-Z]{1}[a-zA-Z_\d]*' , r'\?' )
339+ def PARAMETER (self , t ):
340+ t .value = t .value .lstrip (':' )
341+ return t
342+
343+ COLON = r'\:'
344+
340345 @_ (r'(?:([a-zA-Z_$0-9]*[a-zA-Z_$]+[a-zA-Z_$0-9]*)|(?:`([^`]+)`))' )
341346 def ID (self , t ):
342347 return t
Original file line number Diff line number Diff line change 11from mindsdb_sql_parser import parse_sql
22from mindsdb_sql_parser .ast import *
33
4+
45class TestParameters :
56 def test_select_with_parameter_in_where (self ):
67 sql = "SELECT * FROM tbl WHERE col = ?"
@@ -25,4 +26,28 @@ def test_insert_with_multiple_parameter_rows(self):
2526 def test_select_parameter_as_target (self ):
2627 sql = "SELECT ?"
2728 ast = parse_sql (sql )
28- assert str (ast ) == sql
29+ assert str (ast ) == sql
30+
31+ def test_named_parameters (self ):
32+ sql = "SELECT :a, max(1-:second_param), ? from t where x=:col_1"
33+ ast = parse_sql (sql )
34+
35+ expected = Select (
36+ targets = [
37+ Parameter ("a" ),
38+ Function ("max" , args = [
39+ BinaryOperation (op = "-" , args = [
40+ Constant (1 ),
41+ Parameter ("second_param" )
42+ ])
43+ ]),
44+ Parameter ("?" )
45+ ],
46+ from_table = Identifier ("t" ),
47+ where = BinaryOperation (op = "=" , args = [
48+ Identifier ("x" ),
49+ Parameter ("col_1" )
50+ ])
51+ )
52+
53+ assert str (ast ) == str (expected )
You can’t perform that action at this time.
0 commit comments