Skip to content

Commit 1de84d8

Browse files
committed
updated types
1 parent 95cb6a1 commit 1de84d8

File tree

3 files changed

+83
-19
lines changed

3 files changed

+83
-19
lines changed

sqlalchemy_iris/__init__.py

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,40 @@
33
from . import base
44
from . import iris
55

6+
from .base import BIGINT
7+
from .base import BIT
8+
from .base import DATE
9+
from .base import DOUBLE
10+
from .base import INTEGER
11+
from .base import LONGVARBINARY
12+
from .base import LONGVARCHAR
13+
from .base import NUMERIC
14+
from .base import SMALLINT
15+
from .base import TIME
16+
from .base import TIMESTAMP
17+
from .base import TINYINT
18+
from .base import VARBINARY
19+
from .base import VARCHAR
20+
621
base.dialect = dialect = iris.dialect
722

823
_registry.register("iris.iris", "sqlalchemy_iris.iris", "IRISDialect_iris")
924
_registry.register("iris.emb", "sqlalchemy_iris.embedded", "IRISDialect_emb")
1025

1126
__all__ = [
12-
dialect,
27+
"BIGINT",
28+
"BIT",
29+
"DATE",
30+
"DOUBLE",
31+
"INTEGER",
32+
"LONGVARBINARY",
33+
"LONGVARCHAR",
34+
"NUMERIC",
35+
"SMALLINT",
36+
"TIME",
37+
"TIMESTAMP",
38+
"TINYINT",
39+
"VARBINARY",
40+
"VARCHAR",
41+
"dialect",
1342
]

sqlalchemy_iris/base.py

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import re
22
import intersystems_iris.dbapi._DBAPI as dbapi
33
from . import information_schema as ischema
4-
from . import types
54
from sqlalchemy import exc
65
from sqlalchemy.orm import aliased
76
from sqlalchemy.engine import default
@@ -20,32 +19,42 @@
2019
from sqlalchemy.types import BIGINT
2120
from sqlalchemy.types import VARCHAR
2221
from sqlalchemy.types import INTEGER
23-
from sqlalchemy.types import BOOLEAN
2422
from sqlalchemy.types import DATE
2523
from sqlalchemy.types import TIMESTAMP
2624
from sqlalchemy.types import TIME
2725
from sqlalchemy.types import NUMERIC
28-
from sqlalchemy.types import FLOAT
2926
from sqlalchemy.types import BINARY
3027
from sqlalchemy.types import VARBINARY
3128
from sqlalchemy.types import TEXT
3229
from sqlalchemy.types import SMALLINT
3330

31+
from .types import BIT
32+
from .types import DOUBLE
33+
from .types import LONGVARCHAR
34+
from .types import LONGVARBINARY
35+
from .types import TINYINT
36+
37+
from .types import IRISBoolean
38+
from .types import IRISTime
39+
from .types import IRISTimeStamp
40+
from .types import IRISDate
41+
from .types import IRISDateTime
42+
3443
ischema_names = {
3544
"BIGINT": BIGINT,
36-
"VARCHAR": VARCHAR,
37-
"INTEGER": INTEGER,
38-
"BIT": BOOLEAN,
45+
"BIT": BIT,
3946
"DATE": DATE,
40-
"TIMESTAMP": TIMESTAMP,
47+
"DOUBLE": DOUBLE,
48+
"INTEGER": INTEGER,
49+
"LONGVARBINARY": LONGVARBINARY,
50+
"LONGVARCHAR": LONGVARCHAR,
4151
"NUMERIC": NUMERIC,
42-
"DOUBLE": FLOAT,
43-
"VARBINARY": BINARY,
44-
"LONGVARCHAR": TEXT,
45-
"LONGVARBINARY": VARBINARY,
46-
"TIME": TIME,
4752
"SMALLINT": SMALLINT,
48-
"TINYINT": SMALLINT,
53+
"TIME": TIME,
54+
"TIMESTAMP": TIMESTAMP,
55+
"TINYINT": TINYINT,
56+
"VARBINARY": VARBINARY,
57+
"VARCHAR": VARCHAR,
4958
}
5059

5160
RESERVED_WORDS = set(
@@ -646,8 +655,14 @@ def visit_create_index(
646655

647656
class IRISTypeCompiler(compiler.GenericTypeCompiler):
648657
def visit_boolean(self, type_, **kw):
658+
return self.visit_BIT(type_)
659+
660+
def visit_BIT(self, type_, **kw):
649661
return "BIT"
650662

663+
def visit_TEXT(self, type_, **kw):
664+
return "VARCHAR(65535)"
665+
651666

652667
class IRISIdentifierPreparer(sql.compiler.IdentifierPreparer):
653668
"""Install IRIS specific reserved words."""
@@ -699,11 +714,11 @@ def create_cursor(self):
699714

700715

701716
colspecs = {
702-
sqltypes.Boolean: types.IRISBoolean,
703-
sqltypes.Date: types.IRISDate,
704-
sqltypes.DateTime: types.IRISDateTime,
705-
sqltypes.TIMESTAMP: types.IRISTimeStamp,
706-
sqltypes.Time: types.IRISTime,
717+
sqltypes.Boolean: IRISBoolean,
718+
sqltypes.Date: IRISDate,
719+
sqltypes.DateTime: IRISDateTime,
720+
sqltypes.TIMESTAMP: IRISTimeStamp,
721+
sqltypes.Time: IRISTime,
707722
}
708723

709724

sqlalchemy_iris/types.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,23 @@ def process(value):
120120
return value
121121

122122
return process
123+
124+
125+
class BIT(sqltypes.TypeEngine):
126+
__visit_name__ = "BIT"
127+
128+
129+
class TINYINT(sqltypes.Integer):
130+
__visit_name__ = "TINYINT"
131+
132+
133+
class DOUBLE(sqltypes.Float):
134+
__visit_name__ = "DOUBLE"
135+
136+
137+
class LONGVARCHAR(sqltypes.VARCHAR):
138+
__visit_name__ = "LONGVARCHAR"
139+
140+
141+
class LONGVARBINARY(sqltypes.VARBINARY):
142+
__visit_name__ = "LONGVARBINARY"

0 commit comments

Comments
 (0)