@@ -433,7 +433,7 @@ def depends_on(self) -> t.Set[str]:
433433 return self .depends_on_ - {self .name }
434434
435435 if self ._depends_on is None :
436- self ._depends_on = _find_tables (self ._render_all_sql ( )) - {self .name }
436+ self ._depends_on = _find_tables (self .render_query ( optimize = False )) - {self .name }
437437 return self ._depends_on
438438
439439 @property
@@ -481,7 +481,7 @@ def depends_on_past(self) -> bool:
481481 if self ._depends_on_past is None :
482482 self ._depends_on_past = (
483483 self .kind .is_incremental_by_unique_key
484- or self .name in _find_tables ([ self .render_query ()] )
484+ or self .name in _find_tables (self .render_query (optimize = False ) )
485485 )
486486 return self ._depends_on_past
487487
@@ -529,14 +529,6 @@ def is_breaking_change(self, previous: Model) -> t.Optional[bool]:
529529 """
530530 raise NotImplementedError
531531
532- def _render_all_sql (self ) -> t .List [exp .Expression ]:
533- """Renders all the SQL expressions of this model."""
534- return [
535- * self .render_pre_statements (),
536- self .render_query (),
537- * self .render_post_statements (),
538- ]
539-
540532
541533class _SqlBasedModel (_Model ):
542534 pre_statements_ : t .Optional [t .List [exp .Expression ]] = Field (
@@ -713,17 +705,18 @@ def column_descriptions(self) -> t.Dict[str, str]:
713705 if self ._column_descriptions is None :
714706 self ._column_descriptions = {
715707 select .alias : "\n " .join (comment .strip () for comment in select .comments )
716- for select in self .render_query ().selects
708+ for select in self .render_query (optimize = False ).selects
717709 if select .comments
718710 }
719711 return self ._column_descriptions
720712
721713 def update_schema (self , schema : MappingSchema ) -> None :
722714 super ().update_schema (schema )
723715 self ._columns_to_types = None
716+ self ._query_renderer ._optimized_cache = {}
724717
725718 def validate_definition (self ) -> None :
726- query = self ._query_renderer .render ()
719+ query = self ._query_renderer .render (optimize = False )
727720
728721 if not isinstance (query , exp .Subqueryable ):
729722 raise_config_error ("Missing SELECT query in the model definition" , self ._path )
@@ -1444,7 +1437,7 @@ def _validate_model_fields(klass: t.Type[_Model], provided_fields: t.Set[str], p
14441437 raise_config_error (f"Invalid extra fields { extra_fields } in the model definition" , path )
14451438
14461439
1447- def _find_tables (expressions : t . List [ exp .Expression ] ) -> t .Set [str ]:
1440+ def _find_tables (expression : exp .Expression ) -> t .Set [str ]:
14481441 """Find all tables referenced in a query.
14491442
14501443 Args:
@@ -1455,8 +1448,7 @@ def _find_tables(expressions: t.List[exp.Expression]) -> t.Set[str]:
14551448 """
14561449 return {
14571450 exp .table_name (table )
1458- for e in expressions
1459- for scope in traverse_scope (e )
1451+ for scope in traverse_scope (expression )
14601452 for table in scope .tables
14611453 if isinstance (table .this , exp .Identifier ) and exp .table_name (table ) not in scope .cte_sources
14621454 }
0 commit comments