Skip to content

Commit

Permalink
alias dtypes back to legacy method names
Browse files Browse the repository at this point in the history
  • Loading branch information
mikealfare committed Oct 9, 2024
1 parent cb62bbb commit b0c1a05
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 34 deletions.
9 changes: 9 additions & 0 deletions dbt/adapters/redshift/connections.py
Original file line number Diff line number Diff line change
Expand Up @@ -503,6 +503,15 @@ def _parse_column_results(record: Tuple[Any, ...]) -> Dict[str, Any]:
char_dtypes = [1, 12]
num_dtypes = [2, 3, 4, 5, 6, 7, 8, -5, 2003]

# the results from `get_columns` vary slightly from the pg_catalog tables for dtype names
dtype_alias = {
"bool": "boolean",
"int4": "integer",
"timestamp": "timestamp without time zone",
"varchar": "character varying",
}
dtype_name = dtype_alias.get(dtype_name, dtype_name)

if dtype_code in char_dtypes:
return {"column": column_name, "dtype": dtype_name, "char_size": column_size}
elif dtype_code in num_dtypes:
Expand Down
2 changes: 1 addition & 1 deletion dbt/adapters/redshift/impl.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ def _behavior_flags(self) -> List[BehaviorFlag]:
return [
{
"name": "restrict_direct_pg_catalog_access",
"default": False,
"default": True,
"description": (
"The dbt-redshift adapter is migrating from using pg_ tables "
"to using Redshift Metadata API and information_schema tables "
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@ def models(self):
def setup(self, project):
run_dbt(["run"])

@pytest.fixture(scope="class")
def expected_columns(self):
return []

def test_columns_in_relation(self, project, expected_columns):
def test_columns_in_relation(self, project):
my_relation = RedshiftRelation.create(
database=project.database,
schema=project.test_schema,
Expand All @@ -28,6 +24,10 @@ def test_columns_in_relation(self, project, expected_columns):
)
with project.adapter.connection_named("_test"):
actual_columns = project.adapter.get_columns_in_relation(my_relation)
expected_columns = [
Column(column="my_num", dtype="numeric", numeric_precision=3, numeric_scale=2),
Column(column="my_char", dtype="character varying", char_size=1),
]
assert actual_columns == expected_columns


Expand All @@ -36,24 +36,8 @@ class TestColumnsInRelationBehaviorFlagOff(ColumnsInRelation):
def project_config_update(self):
return {"flags": {}}

@pytest.fixture(scope="class")
def expected_columns(self):
# the SDK query returns "varchar" whereas our custom query returns "character varying"
return [
Column(column="my_num", dtype="numeric", numeric_precision=3, numeric_scale=2),
Column(column="my_char", dtype="character varying", char_size=1),
]


class TestColumnsInRelationBehaviorFlagOn(ColumnsInRelation):
@pytest.fixture(scope="class")
def project_config_update(self):
return {"flags": {"restrict_direct_pg_catalog_access": True}}

@pytest.fixture(scope="class")
def expected_columns(self):
# the SDK query returns "varchar" whereas our custom query returns "character varying"
return [
Column(column="my_num", dtype="numeric", numeric_precision=3, numeric_scale=2),
Column(column="my_char", dtype="varchar", char_size=1),
]
Original file line number Diff line number Diff line change
Expand Up @@ -5,36 +5,46 @@


SEED = """
column_a,column_b,column_c,column_d
1,thunder,ho,Cheetara
2,THUNDER,HO,Tygra
3,THUNDERCATS,HOOOO,Lion-O
id,col7,col6,occurred_at
1,Cheetara,thunder,'2024-01-01'
2,Tygra,thunder,'2024-01-01'
2,Tygra,THUNDER,'2024-02-01'
3,Lion-O,thunder,'2024-01-01'
3,Lion-O,THUNDER,'2024-02-01'
3,Lion-O,THUNDERCATS,'2024-03-01'
""".strip()


MODEL_INITIAL = """
{{ config(
materialized='incremental',
on_schema_change='sync_all_columns',
dist='col6',
on_schema_change='append_new_columns',
) }}
select
column_a,
column_b,
column_c
id::bigint as id,
col6::varchar(128) as col6,
occurred_at::timestamptz as occurred_at
from {{ ref('my_seed') }}
where occurred_at::timestamptz >= '2024-01-01'::timestamptz
and occurred_at::timestamptz < '2024-02-01'::timestamptz
"""


MODEL_UPDATE = """
{{ config(
materialized='incremental',
on_schema_change='sync_all_columns',
dist='col6',
on_schema_change='append_new_columns',
) }}
select
column_b as column_B,
column_c as "COLUMN_C",
column_D
id::bigint as id,
col6::varchar(128) as col6,
occurred_at::timestamptz as occurred_at,
col7::varchar(56) as col7
from {{ ref('my_seed') }}
where occurred_at::timestamptz >= '2024-02-01'::timestamptz
and occurred_at::timestamptz < '2024-03-01'::timestamptz
"""


Expand Down

0 comments on commit b0c1a05

Please sign in to comment.