30 lines
1022 B
Python
30 lines
1022 B
Python
from dbt.adapters.base import Column
|
|
from dataclasses import dataclass
|
|
from dbt.adapters.base.relation import BaseRelation
|
|
from dbt.exceptions import RuntimeException
|
|
|
|
|
|
@dataclass(frozen=True, eq=False, repr=False)
|
|
class PostgresRelation(BaseRelation):
|
|
def __post_init__(self):
|
|
# Check for length of Postgres table/view names.
|
|
# Check self.type to exclude test relation identifiers
|
|
if (self.identifier is not None and self.type is not None and
|
|
len(self.identifier) > self.relation_max_name_length()):
|
|
raise RuntimeException(
|
|
f"Relation name '{self.identifier}' "
|
|
f"is longer than {self.relation_max_name_length()} characters"
|
|
)
|
|
|
|
def relation_max_name_length(self):
|
|
return 63
|
|
|
|
|
|
class PostgresColumn(Column):
|
|
@property
|
|
def data_type(self):
|
|
# on postgres, do not convert 'text' to 'varchar()'
|
|
if self.dtype.lower() == 'text':
|
|
return self.dtype
|
|
return super().data_type
|