Skip to content

Commit

Permalink
updated types
Browse files Browse the repository at this point in the history
  • Loading branch information
daimor committed Apr 25, 2023
1 parent 95cb6a1 commit 1de84d8
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 19 deletions.
31 changes: 30 additions & 1 deletion sqlalchemy_iris/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,40 @@
from . import base
from . import iris

from .base import BIGINT
from .base import BIT
from .base import DATE
from .base import DOUBLE
from .base import INTEGER
from .base import LONGVARBINARY
from .base import LONGVARCHAR
from .base import NUMERIC
from .base import SMALLINT
from .base import TIME
from .base import TIMESTAMP
from .base import TINYINT
from .base import VARBINARY
from .base import VARCHAR

base.dialect = dialect = iris.dialect

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

__all__ = [
dialect,
"BIGINT",
"BIT",
"DATE",
"DOUBLE",
"INTEGER",
"LONGVARBINARY",
"LONGVARCHAR",
"NUMERIC",
"SMALLINT",
"TIME",
"TIMESTAMP",
"TINYINT",
"VARBINARY",
"VARCHAR",
"dialect",
]
51 changes: 33 additions & 18 deletions sqlalchemy_iris/base.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import re
import intersystems_iris.dbapi._DBAPI as dbapi
from . import information_schema as ischema
from . import types
from sqlalchemy import exc
from sqlalchemy.orm import aliased
from sqlalchemy.engine import default
Expand All @@ -20,32 +19,42 @@
from sqlalchemy.types import BIGINT
from sqlalchemy.types import VARCHAR
from sqlalchemy.types import INTEGER
from sqlalchemy.types import BOOLEAN
from sqlalchemy.types import DATE
from sqlalchemy.types import TIMESTAMP
from sqlalchemy.types import TIME
from sqlalchemy.types import NUMERIC
from sqlalchemy.types import FLOAT
from sqlalchemy.types import BINARY
from sqlalchemy.types import VARBINARY
from sqlalchemy.types import TEXT
from sqlalchemy.types import SMALLINT

from .types import BIT
from .types import DOUBLE
from .types import LONGVARCHAR
from .types import LONGVARBINARY
from .types import TINYINT

from .types import IRISBoolean
from .types import IRISTime
from .types import IRISTimeStamp
from .types import IRISDate
from .types import IRISDateTime

ischema_names = {
"BIGINT": BIGINT,
"VARCHAR": VARCHAR,
"INTEGER": INTEGER,
"BIT": BOOLEAN,
"BIT": BIT,
"DATE": DATE,
"TIMESTAMP": TIMESTAMP,
"DOUBLE": DOUBLE,
"INTEGER": INTEGER,
"LONGVARBINARY": LONGVARBINARY,
"LONGVARCHAR": LONGVARCHAR,
"NUMERIC": NUMERIC,
"DOUBLE": FLOAT,
"VARBINARY": BINARY,
"LONGVARCHAR": TEXT,
"LONGVARBINARY": VARBINARY,
"TIME": TIME,
"SMALLINT": SMALLINT,
"TINYINT": SMALLINT,
"TIME": TIME,
"TIMESTAMP": TIMESTAMP,
"TINYINT": TINYINT,
"VARBINARY": VARBINARY,
"VARCHAR": VARCHAR,
}

RESERVED_WORDS = set(
Expand Down Expand Up @@ -646,8 +655,14 @@ def visit_create_index(

class IRISTypeCompiler(compiler.GenericTypeCompiler):
def visit_boolean(self, type_, **kw):
return self.visit_BIT(type_)

def visit_BIT(self, type_, **kw):
return "BIT"

def visit_TEXT(self, type_, **kw):
return "VARCHAR(65535)"


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


colspecs = {
sqltypes.Boolean: types.IRISBoolean,
sqltypes.Date: types.IRISDate,
sqltypes.DateTime: types.IRISDateTime,
sqltypes.TIMESTAMP: types.IRISTimeStamp,
sqltypes.Time: types.IRISTime,
sqltypes.Boolean: IRISBoolean,
sqltypes.Date: IRISDate,
sqltypes.DateTime: IRISDateTime,
sqltypes.TIMESTAMP: IRISTimeStamp,
sqltypes.Time: IRISTime,
}


Expand Down
20 changes: 20 additions & 0 deletions sqlalchemy_iris/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -120,3 +120,23 @@ def process(value):
return value

return process


class BIT(sqltypes.TypeEngine):
__visit_name__ = "BIT"


class TINYINT(sqltypes.Integer):
__visit_name__ = "TINYINT"


class DOUBLE(sqltypes.Float):
__visit_name__ = "DOUBLE"


class LONGVARCHAR(sqltypes.VARCHAR):
__visit_name__ = "LONGVARCHAR"


class LONGVARBINARY(sqltypes.VARBINARY):
__visit_name__ = "LONGVARBINARY"

0 comments on commit 1de84d8

Please sign in to comment.