File tree Expand file tree Collapse file tree 3 files changed +81
-0
lines changed
Expand file tree Collapse file tree 3 files changed +81
-0
lines changed Original file line number Diff line number Diff line change @@ -109,4 +109,26 @@ def test_drop_job(self):
109109 if_exists = True
110110 )
111111 assert str (ast ) == str (expected_ast )
112+ assert ast .to_tree () == expected_ast .to_tree ()
113+
114+ def test_create_job_with_variable (self ):
115+ """Test that @ prefix is preserved in job query_str"""
116+ query_str = "INSERT INTO tbl SELECT * FROM source WHERE date > @last_date and @@condition is True"
117+ sql = f"""
118+ CREATE JOB myjob (
119+ { query_str }
120+ )
121+ EVERY hour
122+ """
123+ ast = parse_sql (sql )
124+
125+ expected_ast = CreateJob (
126+ name = Identifier ('myjob' ),
127+ query_str = query_str ,
128+ repeat_str = "hour"
129+ )
130+
131+ # Check that query_str preserves the @ sign
132+ assert ast .query_str == query_str
133+ assert str (ast ) == str (expected_ast )
112134 assert ast .to_tree () == expected_ast .to_tree ()
Original file line number Diff line number Diff line change @@ -60,3 +60,35 @@ def test_mysql(self):
6060
6161 assert str (ast ).lower () == sql .lower ()
6262 assert str (ast ) == str (expected_ast )
63+
64+ def test_variables_in_select (self ):
65+ """Test multiple variables in single query"""
66+ sql = "SELECT @var1, @var2 FROM tbl WHERE x = @var3 AND y = @@system_var"
67+ ast = parse_sql (sql )
68+
69+ expected_ast = Select (
70+ targets = [Variable ("var1" ), Variable ("var2" )],
71+ from_table = Identifier ("tbl" ),
72+ where = BinaryOperation (
73+ op = "AND" ,
74+ args = [
75+ BinaryOperation (
76+ op = "=" ,
77+ args = [Identifier ("x" ), Variable ("var3" )]
78+ ),
79+ BinaryOperation (
80+ op = "=" ,
81+ args = [Identifier ("y" ), Variable ("system_var" , is_system_var = True )]
82+ )
83+ ]
84+ )
85+ )
86+
87+ # Verify the string representation preserves all @ signs
88+ assert ast .to_tree () == expected_ast .to_tree ()
89+ result = str (ast )
90+ assert result == str (expected_ast )
91+ assert "@var1" in result
92+ assert "@var2" in result
93+ assert "@var3" in result
94+ assert "@@system_var" in result
Original file line number Diff line number Diff line change @@ -55,6 +55,33 @@ def test_alter_view_nofrom(self):
5555 assert str (ast ) == str (expected_ast )
5656 assert ast .to_tree () == expected_ast .to_tree ()
5757
58+ def test_create_view_with_variables (self ):
59+ """Test multiple variables in view query"""
60+ query_str = "SELECT @var1, @@sys_var FROM tbl WHERE x = @var2"
61+ sql = f"CREATE VIEW v1 AS ({ query_str } )"
62+ ast = parse_sql (sql )
63+
64+ # Check that all variables preserve their prefixes
65+ assert '@var1' in ast .query_str
66+ assert '@@sys_var' in ast .query_str
67+ assert '@var2' in ast .query_str
68+ assert ast .query_str == query_str
69+
70+ def test_alter_view_with_variableы (self ):
71+ """Test that @ prefix is preserved in ALTER VIEW query_str"""
72+ query_str = "SELECT @var1, @@sys_var FROM tbl WHERE x = @var2"
73+ sql = f"ALTER VIEW myview AS ({ query_str } )"
74+ ast = parse_sql (sql )
75+
76+ expected_ast = AlterView (
77+ name = Identifier ('myview' ),
78+ query_str = query_str
79+ )
80+
81+ assert ast .query_str == query_str
82+ assert str (ast ) == str (expected_ast )
83+ assert ast .to_tree () == expected_ast .to_tree ()
84+
5885 # def test_create_dataset_full(self):
5986 # sql = "CREATE DATASET my_view FROM integr AS ( SELECT * FROM pred )"
6087 # ast = parse_sql(sql)
You can’t perform that action at this time.
0 commit comments