@@ -33,9 +33,9 @@ def test_create_table_properties(make_mocked_engine_adapter: t.Callable):
3333 storage_format = "parquet" ,
3434 )
3535
36- adapter . cursor . execute . assert_called_once_with (
37- "CREATE TABLE IF NOT EXISTS `test_table` (`cola` INT, `colb` STRING, `colc` STRING) USING PARQUET PARTITIONED BY (`colb`)"
38- )
36+ assert to_sql_calls ( adapter ) == [
37+ "CREATE TABLE IF NOT EXISTS `test_table` (`cola` INT, `colb` STRING, `colc` STRING) USING PARQUET PARTITIONED BY (`colb`)" ,
38+ ]
3939
4040 adapter .cursor .reset_mock ()
4141 adapter .create_table (
@@ -45,9 +45,9 @@ def test_create_table_properties(make_mocked_engine_adapter: t.Callable):
4545 storage_format = "parquet" ,
4646 )
4747
48- adapter . cursor . execute . assert_called_once_with (
49- "CREATE TABLE IF NOT EXISTS `test_table` (`cola` INT, `colb` STRING, `colc` STRING) USING PARQUET PARTITIONED BY (`cola`, `colb`)"
50- )
48+ assert to_sql_calls ( adapter ) == [
49+ "CREATE TABLE IF NOT EXISTS `test_table` (`cola` INT, `colb` STRING, `colc` STRING) USING PARQUET PARTITIONED BY (`cola`, `colb`)" ,
50+ ]
5151
5252 with pytest .raises (SQLMeshError ):
5353 adapter .create_table (
@@ -256,7 +256,7 @@ def test_replace_query_self_ref_not_exists(
256256 temp_table_id = "abcdefgh"
257257 mocker .patch (
258258 "sqlmesh.core.engine_adapter.EngineAdapter._get_temp_table" ,
259- side_effect = lambda * args , ** kwargs : make_temp_table_name (table_name , temp_table_id ),
259+ return_value = make_temp_table_name (table_name , temp_table_id ),
260260 )
261261
262262 mocker .patch (
@@ -329,19 +329,19 @@ def test_create_table_table_options(make_mocked_engine_adapter: t.Callable):
329329 },
330330 )
331331
332- adapter . cursor . execute . assert_called_once_with (
333- "CREATE TABLE IF NOT EXISTS `test_table` (`a` int, `b` int) TBLPROPERTIES ('test.conf.key'='value')"
334- )
332+ assert to_sql_calls ( adapter ) == [
333+ "CREATE TABLE IF NOT EXISTS `test_table` (`a` int, `b` int) TBLPROPERTIES ('test.conf.key'='value')" ,
334+ ]
335335
336336
337337def test_create_state_table (make_mocked_engine_adapter : t .Callable ):
338338 adapter = make_mocked_engine_adapter (SparkEngineAdapter )
339339
340340 adapter .create_state_table ("test_table" , {"a" : "int" , "b" : "int" }, primary_key = ["a" ])
341341
342- adapter . cursor . execute . assert_called_once_with (
343- "CREATE TABLE IF NOT EXISTS `test_table` (`a` int, `b` int) PARTITIONED BY (`a`)"
344- )
342+ assert to_sql_calls ( adapter ) == [
343+ "CREATE TABLE IF NOT EXISTS `test_table` (`a` int, `b` int) PARTITIONED BY (`a`)" ,
344+ ]
345345
346346
347347test_primitive_params = [
@@ -783,7 +783,12 @@ def test_wap_publish(make_mocked_engine_adapter: t.Callable, mocker: MockerFixtu
783783 )
784784
785785
786- def test_create_table_iceberg (make_mocked_engine_adapter : t .Callable ):
786+ def test_create_table_iceberg (mocker : MockerFixture , make_mocked_engine_adapter : t .Callable ):
787+ mocker .patch (
788+ "sqlmesh.core.engine_adapter.spark.SparkEngineAdapter.table_exists" ,
789+ return_value = False ,
790+ )
791+
787792 adapter = make_mocked_engine_adapter (SparkEngineAdapter )
788793
789794 columns_to_types = {
@@ -799,17 +804,13 @@ def test_create_table_iceberg(make_mocked_engine_adapter: t.Callable):
799804 storage_format = "ICEBERG" ,
800805 )
801806
802- adapter .cursor .execute .assert_has_calls (
803- [
804- call (
805- "CREATE TABLE IF NOT EXISTS `test_table` (`cola` INT, `colb` STRING, `colc` STRING) USING ICEBERG PARTITIONED BY (`colb`)"
806- ),
807- call ("INSERT INTO `test_table` SELECT * FROM `test_table`" ),
808- ]
809- )
807+ assert to_sql_calls (adapter ) == [
808+ "CREATE TABLE IF NOT EXISTS `test_table` (`cola` INT, `colb` STRING, `colc` STRING) USING ICEBERG PARTITIONED BY (`colb`)" ,
809+ "INSERT INTO `test_table` SELECT * FROM `test_table`" ,
810+ ]
810811
811812
812- def test_comments (make_mocked_engine_adapter : t .Callable , mocker : MockerFixture ):
813+ def test_comments (make_mocked_engine_adapter : t .Callable ):
813814 adapter = make_mocked_engine_adapter (SparkEngineAdapter )
814815
815816 adapter ._create_table_comment (
@@ -827,3 +828,54 @@ def test_comments(make_mocked_engine_adapter: t.Callable, mocker: MockerFixture)
827828 "COMMENT ON TABLE `test_table` IS 'test description'" ,
828829 "ALTER TABLE `test_table` ALTER COLUMN `a` COMMENT 'a description'" ,
829830 ]
831+
832+
833+ def test_create_table_with_wap (make_mocked_engine_adapter : t .Callable , mocker : MockerFixture ):
834+ mocker .patch (
835+ "sqlmesh.core.engine_adapter.spark.SparkEngineAdapter.table_exists" ,
836+ return_value = False ,
837+ )
838+ adapter = make_mocked_engine_adapter (SparkEngineAdapter )
839+
840+ adapter .create_table (
841+ "catalog.schema.table.branch_wap_12345" ,
842+ {"a" : "int" },
843+ storage_format = "ICEBERG" ,
844+ )
845+
846+ sql_calls = to_sql_calls (adapter )
847+ assert sql_calls == [
848+ "CREATE TABLE IF NOT EXISTS `catalog`.`schema`.`table` (`a` int) USING ICEBERG" ,
849+ "INSERT INTO `catalog`.`schema`.`table` SELECT * FROM `catalog`.`schema`.`table`" ,
850+ ]
851+
852+
853+ def test_replace_query_with_wap_self_reference (
854+ make_mocked_engine_adapter : t .Callable , mocker : MockerFixture , make_temp_table_name
855+ ):
856+ mocker .patch (
857+ "sqlmesh.core.engine_adapter.spark.SparkEngineAdapter.table_exists" ,
858+ return_value = True ,
859+ )
860+ mocker .patch (
861+ "sqlmesh.core.engine_adapter.base.random_id" ,
862+ return_value = "abcdefgh" ,
863+ )
864+
865+ adapter = make_mocked_engine_adapter (SparkEngineAdapter )
866+
867+ adapter .replace_query (
868+ "catalog.schema.table.branch_wap_12345" ,
869+ parse_one ("SELECT 1 as a FROM catalog.schema.table.branch_wap_12345" ),
870+ columns_to_types = {"a" : "int" },
871+ storage_format = "ICEBERG" ,
872+ )
873+
874+ sql_calls = to_sql_calls (adapter )
875+ assert sql_calls == [
876+ "CREATE TABLE IF NOT EXISTS `catalog`.`schema`.`table` (`a` int)" ,
877+ "CREATE SCHEMA IF NOT EXISTS `schema`" ,
878+ "CREATE TABLE IF NOT EXISTS `catalog`.`schema`.`temp_branch_wap_12345_abcdefgh` USING ICEBERG AS SELECT `a` FROM `catalog`.`schema`.`table`.`branch_wap_12345`" ,
879+ "INSERT OVERWRITE TABLE `catalog`.`schema`.`table`.`branch_wap_12345` (`a`) SELECT 1 AS `a` FROM `catalog`.`schema`.`temp_branch_wap_12345_abcdefgh`" ,
880+ "DROP TABLE IF EXISTS `catalog`.`schema`.`temp_branch_wap_12345_abcdefgh`" ,
881+ ]
0 commit comments