From ae88067a445cb6808a362a4c954d500f7714f94d Mon Sep 17 00:00:00 2001 From: ptiurin Date: Tue, 25 Apr 2023 16:54:04 +0100 Subject: [PATCH 1/4] fix: Numeric type --- src/firebolt_db/firebolt_dialect.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/firebolt_db/firebolt_dialect.py b/src/firebolt_db/firebolt_dialect.py index 4623ea6..73784ef 100644 --- a/src/firebolt_db/firebolt_dialect.py +++ b/src/firebolt_db/firebolt_dialect.py @@ -20,6 +20,7 @@ DATETIME, FLOAT, INTEGER, + NUMERIC, TIMESTAMP, VARCHAR, ) @@ -38,6 +39,8 @@ class BYTEA(sqltypes.LargeBinary): "float": FLOAT, "double": FLOAT, "double precision": FLOAT, + "numeric": NUMERIC, + "decimal": NUMERIC, "real": FLOAT, "boolean": BOOLEAN, "int": INTEGER, From eb075f980f042c15e96d9c3a5f8787256ef9cf0a Mon Sep 17 00:00:00 2001 From: ptiurin Date: Tue, 25 Apr 2023 17:15:10 +0100 Subject: [PATCH 2/4] fix blob --- src/firebolt_db/firebolt_dialect.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/firebolt_db/firebolt_dialect.py b/src/firebolt_db/firebolt_dialect.py index 73784ef..15319b5 100644 --- a/src/firebolt_db/firebolt_dialect.py +++ b/src/firebolt_db/firebolt_dialect.py @@ -14,6 +14,7 @@ from sqlalchemy.types import ( ARRAY, BIGINT, + BLOB, BOOLEAN, CHAR, DATE, @@ -25,11 +26,6 @@ VARCHAR, ) - -class BYTEA(sqltypes.LargeBinary): - __visit_name__ = "BYTEA" - - # Firebolt data types compatibility with sqlalchemy.sql.types type_map = { "char": CHAR, @@ -52,7 +48,7 @@ class BYTEA(sqltypes.LargeBinary): "timestampntz": TIMESTAMP, "datetime": DATETIME, "date": DATE, - "bytea": BYTEA, + "bytea": BLOB, } From 94b8780b5c582732b86e168023a10537c8447c3e Mon Sep 17 00:00:00 2001 From: ptiurin Date: Tue, 25 Apr 2023 17:26:11 +0100 Subject: [PATCH 3/4] Rename to Firebolt names --- src/firebolt_db/firebolt_dialect.py | 30 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/firebolt_db/firebolt_dialect.py b/src/firebolt_db/firebolt_dialect.py index 15319b5..049013c 100644 --- a/src/firebolt_db/firebolt_dialect.py +++ b/src/firebolt_db/firebolt_dialect.py @@ -14,30 +14,32 @@ from sqlalchemy.types import ( ARRAY, BIGINT, - BLOB, BOOLEAN, - CHAR, DATE, DATETIME, - FLOAT, INTEGER, NUMERIC, + REAL, + TEXT, TIMESTAMP, - VARCHAR, ) + +class BYTEA(sqltypes.LargeBinary): + __visit_name__ = "BYTEA" + + # Firebolt data types compatibility with sqlalchemy.sql.types type_map = { - "char": CHAR, - "text": VARCHAR, - "varchar": VARCHAR, - "string": VARCHAR, - "float": FLOAT, - "double": FLOAT, - "double precision": FLOAT, + "text": TEXT, + "varchar": TEXT, + "string": TEXT, + "float": REAL, + "double": REAL, + "double precision": REAL, "numeric": NUMERIC, "decimal": NUMERIC, - "real": FLOAT, + "real": REAL, "boolean": BOOLEAN, "int": INTEGER, "integer": INTEGER, @@ -48,7 +50,7 @@ "timestampntz": TIMESTAMP, "datetime": DATETIME, "date": DATE, - "bytea": BLOB, + "bytea": BYTEA, } @@ -75,7 +77,7 @@ def removesuffix(s: str, suffix: str) -> str: return result -DEFAULT_TYPE = VARCHAR +DEFAULT_TYPE = TEXT class UniversalSet(set): From 7822870f5f313b8c55c74e2beebe36d8328dc0c7 Mon Sep 17 00:00:00 2001 From: ptiurin Date: Tue, 25 Apr 2023 17:36:30 +0100 Subject: [PATCH 4/4] test fixes --- tests/unit/test_firebolt_dialect.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/unit/test_firebolt_dialect.py b/tests/unit/test_firebolt_dialect.py index e08f89c..8d67cf4 100644 --- a/tests/unit/test_firebolt_dialect.py +++ b/tests/unit/test_firebolt_dialect.py @@ -276,13 +276,12 @@ def test_get_is_nullable(): def test_types(): - assert firebolt_db.firebolt_dialect.CHAR is sqlalchemy.sql.sqltypes.CHAR assert firebolt_db.firebolt_dialect.DATE is sqlalchemy.sql.sqltypes.DATE assert firebolt_db.firebolt_dialect.DATETIME is sqlalchemy.sql.sqltypes.DATETIME assert firebolt_db.firebolt_dialect.INTEGER is sqlalchemy.sql.sqltypes.INTEGER assert firebolt_db.firebolt_dialect.BIGINT is sqlalchemy.sql.sqltypes.BIGINT assert firebolt_db.firebolt_dialect.TIMESTAMP is sqlalchemy.sql.sqltypes.TIMESTAMP - assert firebolt_db.firebolt_dialect.VARCHAR is sqlalchemy.sql.sqltypes.VARCHAR + assert firebolt_db.firebolt_dialect.TEXT is sqlalchemy.sql.sqltypes.TEXT assert firebolt_db.firebolt_dialect.BOOLEAN is sqlalchemy.sql.sqltypes.BOOLEAN - assert firebolt_db.firebolt_dialect.FLOAT is sqlalchemy.sql.sqltypes.FLOAT + assert firebolt_db.firebolt_dialect.REAL is sqlalchemy.sql.sqltypes.REAL assert issubclass(firebolt_db.firebolt_dialect.ARRAY, sqlalchemy.types.TypeEngine)