|
22 | 22 | from urllib.parse import quote_plus
|
23 | 23 |
|
24 | 24 | import pydantic
|
| 25 | +import sqlalchemy.dialects.postgresql.base |
25 | 26 | from pydantic.fields import Field
|
26 |
| -from sqlalchemy import create_engine, dialects, inspect |
| 27 | +from sqlalchemy import create_engine, inspect |
27 | 28 | from sqlalchemy.engine.reflection import Inspector
|
28 | 29 | from sqlalchemy.exc import ProgrammingError
|
29 | 30 | from sqlalchemy.sql import sqltypes as types
|
@@ -350,20 +351,23 @@ class SqlWorkUnit(MetadataWorkUnit):
|
350 | 351 | types.DATETIME: TimeTypeClass,
|
351 | 352 | types.TIMESTAMP: TimeTypeClass,
|
352 | 353 | types.JSON: RecordTypeClass,
|
353 |
| - dialects.postgresql.base.BYTEA: BytesTypeClass, |
354 |
| - dialects.postgresql.base.DOUBLE_PRECISION: NumberTypeClass, |
355 |
| - dialects.postgresql.base.INET: StringTypeClass, |
356 |
| - dialects.postgresql.base.MACADDR: StringTypeClass, |
357 |
| - dialects.postgresql.base.MONEY: NumberTypeClass, |
358 |
| - dialects.postgresql.base.OID: StringTypeClass, |
359 |
| - dialects.postgresql.base.REGCLASS: BytesTypeClass, |
360 |
| - dialects.postgresql.base.TIMESTAMP: TimeTypeClass, |
361 |
| - dialects.postgresql.base.TIME: TimeTypeClass, |
362 |
| - dialects.postgresql.base.INTERVAL: TimeTypeClass, |
363 |
| - dialects.postgresql.base.BIT: BytesTypeClass, |
364 |
| - dialects.postgresql.base.UUID: StringTypeClass, |
365 |
| - dialects.postgresql.base.TSVECTOR: BytesTypeClass, |
366 |
| - dialects.postgresql.base.ENUM: EnumTypeClass, |
| 354 | + # Because the postgresql dialect is used internally by many other dialects, |
| 355 | + # we add some postgres types here. This is ok to do because the postgresql |
| 356 | + # dialect is built-in to sqlalchemy. |
| 357 | + sqlalchemy.dialects.postgresql.base.BYTEA: BytesTypeClass, |
| 358 | + sqlalchemy.dialects.postgresql.base.DOUBLE_PRECISION: NumberTypeClass, |
| 359 | + sqlalchemy.dialects.postgresql.base.INET: StringTypeClass, |
| 360 | + sqlalchemy.dialects.postgresql.base.MACADDR: StringTypeClass, |
| 361 | + sqlalchemy.dialects.postgresql.base.MONEY: NumberTypeClass, |
| 362 | + sqlalchemy.dialects.postgresql.base.OID: StringTypeClass, |
| 363 | + sqlalchemy.dialects.postgresql.base.REGCLASS: BytesTypeClass, |
| 364 | + sqlalchemy.dialects.postgresql.base.TIMESTAMP: TimeTypeClass, |
| 365 | + sqlalchemy.dialects.postgresql.base.TIME: TimeTypeClass, |
| 366 | + sqlalchemy.dialects.postgresql.base.INTERVAL: TimeTypeClass, |
| 367 | + sqlalchemy.dialects.postgresql.base.BIT: BytesTypeClass, |
| 368 | + sqlalchemy.dialects.postgresql.base.UUID: StringTypeClass, |
| 369 | + sqlalchemy.dialects.postgresql.base.TSVECTOR: BytesTypeClass, |
| 370 | + sqlalchemy.dialects.postgresql.base.ENUM: EnumTypeClass, |
367 | 371 | # When SQLAlchemy is unable to map a type into its internal hierarchy, it
|
368 | 372 | # assigns the NullType by default. We want to carry this warning through.
|
369 | 373 | types.NullType: NullTypeClass,
|
|
0 commit comments