From bb2e719cc9d2b55f4fdf30876f6fcd77154097ca Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Sat, 7 Nov 2026 09:06:09 +0000 Subject: [PATCH] test(adapters): give each temporary function case a type its dialect accepts The shared fixture declared the argument as TEXT for every adapter, so the Databricks expectation pinned DDL that Databricks refuses. Each case now declares a type valid in its dialect, and Databricks renders STRING. --- .../contract/classes/strict_adapter/_test_types.py | 1 + .../test_temporary_function_rendering.py | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/tests/unit/src/sqlbuild/adapter/contract/classes/strict_adapter/_test_types.py b/tests/unit/src/sqlbuild/adapter/contract/classes/strict_adapter/_test_types.py index 099e407f97..f51182ba64 100644 --- a/tests/unit/src/sqlbuild/adapter/contract/classes/strict_adapter/_test_types.py +++ b/tests/unit/src/sqlbuild/adapter/contract/classes/strict_adapter/_test_types.py @@ -45,5 +45,6 @@ class TemporaryFunctionRenderingTestCase: description: str adapter: StrictAdapter language: FunctionLanguage + argument_type: str return_columns: tuple[tuple[str, str], ...] expected_temporary_function: TemporaryFunction | None diff --git a/tests/unit/src/sqlbuild/adapter/contract/classes/strict_adapter/test_temporary_function_rendering.py b/tests/unit/src/sqlbuild/adapter/contract/classes/strict_adapter/test_temporary_function_rendering.py index 3fe66e580b..43b08ab70d 100644 --- a/tests/unit/src/sqlbuild/adapter/contract/classes/strict_adapter/test_temporary_function_rendering.py +++ b/tests/unit/src/sqlbuild/adapter/contract/classes/strict_adapter/test_temporary_function_rendering.py @@ -23,6 +23,7 @@ description="duckdb copies a sql function into a temporary macro", adapter=DuckDbAdapter(), language=FunctionLanguage.SQL, + argument_type="VARCHAR", return_columns=(), expected_temporary_function=TemporaryFunction( target='temp.main."is_completed_order"', @@ -36,6 +37,7 @@ description="duckdb copies a table function into a temporary table macro", adapter=DuckDbAdapter(), language=FunctionLanguage.SQL, + argument_type="VARCHAR", return_columns=(("order_id", "INTEGER"),), expected_temporary_function=TemporaryFunction( target='temp.main."is_completed_order"', @@ -49,6 +51,7 @@ description="duckdb leaves python functions to per-connection registration", adapter=DuckDbAdapter(), language=FunctionLanguage.PYTHON, + argument_type="VARCHAR", return_columns=(), expected_temporary_function=None, ), @@ -56,6 +59,7 @@ description="postgres creates the copy in the session pg_temp schema", adapter=PostgresAdapter(), language=FunctionLanguage.SQL, + argument_type="TEXT", return_columns=(), expected_temporary_function=TemporaryFunction( target='pg_temp."is_completed_order"', @@ -72,6 +76,7 @@ description="snowflake creates a prefixed temporary function in the current schema", adapter=SnowflakeAdapter(), language=FunctionLanguage.SQL, + argument_type="TEXT", return_columns=(), expected_temporary_function=TemporaryFunction( target='"__SQB_TEST__IS_COMPLETED_ORDER"', @@ -90,6 +95,7 @@ description="bigquery has no session to hold a temporary function", adapter=BigQueryAdapter(), language=FunctionLanguage.SQL, + argument_type="STRING", return_columns=(), expected_temporary_function=None, ), @@ -97,12 +103,13 @@ description="databricks creates a prefixed session temporary function", adapter=DatabricksAdapter(), language=FunctionLanguage.SQL, + argument_type="STRING", return_columns=(), expected_temporary_function=TemporaryFunction( target="`__sqb_test__is_completed_order`", statements=( "CREATE OR REPLACE TEMPORARY FUNCTION " - "`__sqb_test__is_completed_order`(order_status TEXT)\n" + "`__sqb_test__is_completed_order`(order_status STRING)\n" "RETURNS BOOLEAN\n" "RETURN order_status = 'completed'", ), @@ -112,6 +119,7 @@ description="databricks keeps using built python functions", adapter=DatabricksAdapter(), language=FunctionLanguage.PYTHON, + argument_type="STRING", return_columns=(), expected_temporary_function=None, ), @@ -119,6 +127,7 @@ description="sql server keeps using the built function", adapter=SqlServerAdapter(), language=FunctionLanguage.SQL, + argument_type="TEXT", return_columns=(), expected_temporary_function=None, ), @@ -132,7 +141,7 @@ def test_given_project_function_when_rendering_temporary_copy_then_adapter_retur name="is_completed_order", definition=FunctionDefinition( destination="analytics.is_completed_order", - arguments=(FunctionArgument(name="order_status", type="TEXT"),), + arguments=(FunctionArgument(name="order_status", type=test_case.argument_type),), returns="BOOLEAN", body_sql="order_status = 'completed'", return_columns=tuple(