Skip to content

Commit e8ea44f

Browse files
authored
Merge pull request #642 from Mause/bugfix/colspecs
fix: reuse base postgres dialect colspecs
2 parents 943073f + faba775 commit e8ea44f

File tree

5 files changed

+16
-3
lines changed

5 files changed

+16
-3
lines changed
Binary file not shown.
Binary file not shown.
20.2 KB
Binary file not shown.

duckdb_engine/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from sqlalchemy import types as sqltypes
1919
from sqlalchemy import util
2020
from sqlalchemy.dialects.postgresql import UUID
21-
from sqlalchemy.dialects.postgresql.base import PGInspector
21+
from sqlalchemy.dialects.postgresql.base import PGDialect, PGInspector
2222
from sqlalchemy.dialects.postgresql.psycopg2 import PGDialect_psycopg2
2323
from sqlalchemy.engine.default import DefaultDialect
2424
from sqlalchemy.engine.url import URL
@@ -174,7 +174,7 @@ class Dialect(PGDialect_psycopg2):
174174
inspector = DuckDBInspector
175175
# colspecs TODO: remap types to duckdb types
176176
colspecs = util.update_copy(
177-
PGDialect_psycopg2.colspecs,
177+
PGDialect.colspecs,
178178
{
179179
# the psycopg2 driver registers a _PGNumeric with custom logic for
180180
# postgres type_codes (such as 701 for float) that duckdb doesn't have

duckdb_engine/tests/test_datatypes.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from uuid import uuid4
33

44
from pytest import importorskip, mark
5-
from sqlalchemy import Column, Integer, inspect
5+
from sqlalchemy import Column, Integer, MetaData, Table, inspect, text
66
from sqlalchemy.dialects.postgresql import UUID
77
from sqlalchemy.engine import Engine
88
from sqlalchemy.ext.declarative import declarative_base
@@ -80,3 +80,16 @@ class Entry(base):
8080
result = session.query(Entry).one()
8181

8282
assert result.id == ident
83+
84+
85+
def test_double_in_sqla_v2(engine: Engine) -> None:
86+
with engine.begin() as con:
87+
con.execute(text("CREATE TABLE t (x DOUBLE)"))
88+
con.execute(text("INSERT INTO t VALUES (1.0), (2.0), (3.0)"))
89+
90+
md = MetaData()
91+
92+
t = Table("t", md, autoload_with=engine)
93+
94+
with engine.begin() as con:
95+
con.execute(t.select())

0 commit comments

Comments
 (0)