44import sqlglot
55from jinja2 import Template
66from pydantic import BaseModel , ConfigDict , SkipValidation
7- from sqlglot .expressions import replace_tables
87
98from sql_mock .column_mocks import ColumnMock
109from sql_mock .constants import NO_INPUT
@@ -15,18 +14,18 @@ def get_keys_from_list_of_dicts(data: list[dict]) -> set[str]:
1514 return set (key for dictionary in data for key in dictionary .keys ())
1615
1716
18- def replace_original_table_references (query : str , mock_tables : list ["BaseMockTable" ], dialect : str = None ):
17+ def replace_original_table_references (query : str , mock_tables : list ["BaseMockTable" ]):
1918 """
2019 Replace orignal table references to point them to the mocked data
2120
2221 Args:
2322 query (str): Original SQL query
2423 mock_tables (list[BaseMockTable]): List of BaseMockTable instances that are used as input
2524 """
26- ast = sqlglot . parse_one ( query )
27- mapping = { mock_table ._sql_mock_meta .table_ref : mock_table . cte_name for mock_table in mock_tables }
28- res = replace_tables ( expression = ast , mapping = mapping , dialect = dialect ). sql ( )
29- return res
25+ for mock_table in mock_tables :
26+ new_reference = mock_table ._sql_mock_meta .table_ref . replace ( "." , "__" )
27+ query = query . replace ( mock_table . _sql_mock_meta . table_ref , new_reference )
28+ return query
3029
3130
3231def select_from_cte (query : str , cte_name : str , sql_dialect : str ):
@@ -211,12 +210,6 @@ def from_mocks(
211210
212211 return instance
213212
214- @property
215- def cte_name (self ):
216- mock_meta = self ._sql_mock_meta
217- if getattr (mock_meta , "table_ref" , None ):
218- return self ._sql_mock_meta .table_ref .replace ("." , "__" )
219-
220213 def _generate_input_data_cte_snippet (self ):
221214 # Convert instances into SQL snippets that serve as input to a CTE
222215 table_ctes = [mock_table .as_sql_input () for mock_table in self ._sql_mock_data .input_data ]
@@ -256,9 +249,7 @@ def _generate_query(
256249 final_columns_to_select = indent (final_columns_to_select , "\t " ),
257250 )
258251
259- query = replace_original_table_references (
260- query , mock_tables = self ._sql_mock_data .input_data , dialect = self ._sql_dialect
261- )
252+ query = replace_original_table_references (query , mock_tables = self ._sql_mock_data .input_data )
262253 # Store last query for debugging
263254 self ._sql_mock_data .last_query = query
264255 return query
0 commit comments