|
1 | 1 | import re |
2 | 2 | import intersystems_iris.dbapi._DBAPI as dbapi |
3 | 3 | from . import information_schema as ischema |
4 | | -from . import types |
5 | 4 | from sqlalchemy import exc |
6 | 5 | from sqlalchemy.orm import aliased |
7 | 6 | from sqlalchemy.engine import default |
|
20 | 19 | from sqlalchemy.types import BIGINT |
21 | 20 | from sqlalchemy.types import VARCHAR |
22 | 21 | from sqlalchemy.types import INTEGER |
23 | | -from sqlalchemy.types import BOOLEAN |
24 | 22 | from sqlalchemy.types import DATE |
25 | 23 | from sqlalchemy.types import TIMESTAMP |
26 | 24 | from sqlalchemy.types import TIME |
27 | 25 | from sqlalchemy.types import NUMERIC |
28 | | -from sqlalchemy.types import FLOAT |
29 | 26 | from sqlalchemy.types import BINARY |
30 | 27 | from sqlalchemy.types import VARBINARY |
31 | 28 | from sqlalchemy.types import TEXT |
32 | 29 | from sqlalchemy.types import SMALLINT |
33 | 30 |
|
| 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 | + |
34 | 43 | ischema_names = { |
35 | 44 | "BIGINT": BIGINT, |
36 | | - "VARCHAR": VARCHAR, |
37 | | - "INTEGER": INTEGER, |
38 | | - "BIT": BOOLEAN, |
| 45 | + "BIT": BIT, |
39 | 46 | "DATE": DATE, |
40 | | - "TIMESTAMP": TIMESTAMP, |
| 47 | + "DOUBLE": DOUBLE, |
| 48 | + "INTEGER": INTEGER, |
| 49 | + "LONGVARBINARY": LONGVARBINARY, |
| 50 | + "LONGVARCHAR": LONGVARCHAR, |
41 | 51 | "NUMERIC": NUMERIC, |
42 | | - "DOUBLE": FLOAT, |
43 | | - "VARBINARY": BINARY, |
44 | | - "LONGVARCHAR": TEXT, |
45 | | - "LONGVARBINARY": VARBINARY, |
46 | | - "TIME": TIME, |
47 | 52 | "SMALLINT": SMALLINT, |
48 | | - "TINYINT": SMALLINT, |
| 53 | + "TIME": TIME, |
| 54 | + "TIMESTAMP": TIMESTAMP, |
| 55 | + "TINYINT": TINYINT, |
| 56 | + "VARBINARY": VARBINARY, |
| 57 | + "VARCHAR": VARCHAR, |
49 | 58 | } |
50 | 59 |
|
51 | 60 | RESERVED_WORDS = set( |
@@ -646,8 +655,14 @@ def visit_create_index( |
646 | 655 |
|
647 | 656 | class IRISTypeCompiler(compiler.GenericTypeCompiler): |
648 | 657 | def visit_boolean(self, type_, **kw): |
| 658 | + return self.visit_BIT(type_) |
| 659 | + |
| 660 | + def visit_BIT(self, type_, **kw): |
649 | 661 | return "BIT" |
650 | 662 |
|
| 663 | + def visit_TEXT(self, type_, **kw): |
| 664 | + return "VARCHAR(65535)" |
| 665 | + |
651 | 666 |
|
652 | 667 | class IRISIdentifierPreparer(sql.compiler.IdentifierPreparer): |
653 | 668 | """Install IRIS specific reserved words.""" |
@@ -699,11 +714,11 @@ def create_cursor(self): |
699 | 714 |
|
700 | 715 |
|
701 | 716 | 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, |
707 | 722 | } |
708 | 723 |
|
709 | 724 |
|
|
0 commit comments