Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/dbt_core_interface/dbt_templater/templater.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,14 @@ def dbt_version(self) -> str:
"""Gets the dbt version."""
return self._dbt_version.to_version_string()

def _apply_dbt_builtins(self, config: FluffConfig | None) -> bool:
"""DbtTemplater uses actual dbt compilation, not FunctionWrapper placeholders.

Returning False prevents SQLFluff from adding FunctionWrapper objects
(which lack .get() method) to the Jinja environment during slice_file analysis.
"""
return False

@large_file_check
def process( # pyright: ignore[reportIncompatibleMethodOverride]
self,
Expand Down
4 changes: 4 additions & 0 deletions src/dbt_core_interface/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import functools
import gc
import json
import re
import logging
import os
import shlex
Expand Down Expand Up @@ -674,6 +675,9 @@ def _create_temp_node(
self, sql: str, node_id: str | None = None
) -> tuple[ManifestNode, t.Callable[[], None]]:
"""Create a temporary node for SQL execution/compilation."""
# Remove only the opening and closing snapshot tags, keep the body
sql = re.sub(r'{%\s*snapshot\b.*?%}', '', sql, flags=re.DOTALL)
sql = re.sub(r'{%\s*endsnapshot\s*%}', '', sql, flags=re.DOTALL)
node_id = node_id or f"temp_node_{uuid.uuid4().hex[:8]}"
sql_node = self.sql_parser.parse_remote(sql, node_id)
process_node(self.runtime_config, self.manifest, sql_node)
Expand Down
3 changes: 2 additions & 1 deletion src/dbt_core_interface/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -284,12 +284,13 @@ def run_sql(
comp_res = runner.compile_sql(raw_sql)
try:
model_context = runner.generate_runtime_model_context(comp_res.node)
compiled_code = f"select * from ({model_context['compiled_code']}) as __server_query"
query = runner.adapter.execute_macro(
macro_name="get_show_sql",
macro_resolver=runner.manifest,
context_override=model_context,
kwargs={
"compiled_code": model_context["compiled_code"],
"compiled_code": compiled_code,
"sql_header": model_context["config"].get("sql_header"),
"limit": limit,
},
Expand Down