| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| """Tests for Hive dialect support in sqlglot.""" |
| |
| from superset.sql.parse import SQLScript, Table |
| |
| |
| def test_hive_sql_parsing() -> None: |
| """Test that Hive SQL can be parsed without errors.""" |
| # Simple SELECT statement |
| sql = "SELECT * FROM my_table" |
| script = SQLScript(sql, "hive") |
| assert len(script.statements) == 1 |
| assert not script.has_mutation() |
| |
| # JOIN statement (common in Hive) |
| sql = """ |
| SELECT t1.col1, t2.col2 |
| FROM table1 t1 |
| JOIN table2 t2 ON t1.id = t2.id |
| WHERE t1.status = 'active' |
| """ |
| script = SQLScript(sql, "hive") |
| assert len(script.statements) == 1 |
| assert not script.has_mutation() |
| |
| # Test table extraction |
| tables = script.statements[0].tables |
| assert Table("table1") in tables |
| assert Table("table2") in tables |
| |
| |
| def test_hive_insert_statement() -> None: |
| """Test that Hive INSERT statements are detected as mutations.""" |
| sql = "INSERT INTO my_table VALUES (1, 'test')" |
| script = SQLScript(sql, "hive") |
| assert script.has_mutation() |
| |
| |
| def test_hive_create_table() -> None: |
| """Test that Hive CREATE TABLE statements work.""" |
| sql = """ |
| CREATE TABLE IF NOT EXISTS my_table ( |
| id INT, |
| name STRING |
| ) STORED AS PARQUET |
| """ |
| script = SQLScript(sql, "hive") |
| assert len(script.statements) == 1 |
| assert script.has_mutation() |