Skip to content

Commit

Permalink
ci(server): description - cover more types
Browse files Browse the repository at this point in the history
  • Loading branch information
tekumara committed Aug 25, 2024
1 parent 9455a43 commit 618bedf
Show file tree
Hide file tree
Showing 2 changed files with 146 additions and 5 deletions.
132 changes: 130 additions & 2 deletions tests/test_arrow.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# ruff: noqa: E501

from base64 import b64decode

import pandas as pd
Expand Down Expand Up @@ -53,8 +55,11 @@ def test_ipc_writes_sf_metadata() -> None:


def test_read_base64_from_actual_snowflake_result() -> None:
# select true, 1::int, 2.0::float, to_decimal('12.3456', 10,2), 'hello'
rowset_b64 = "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" # noqa: E501
# select
# true, 1::int, 2.0::float, to_decimal('12.3456', 10,2), 'hello', 'hello'::varchar(20),
# to_date('2018-04-15'), to_time('04:15:29'), to_timestamp_tz('2013-04-05 01:02:03'), to_timestamp_ntz('2013-04-05 01:02:03'),
# X'41424320E29D84', ARRAY_CONSTRUCT('foo'), OBJECT_CONSTRUCT('k','v1'), 'vary'::VARIANT
rowset_b64 = "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"
f = b64decode(rowset_b64)
reader = pa.ipc.open_stream(f)

Expand Down Expand Up @@ -114,3 +119,126 @@ def test_read_base64_from_actual_snowflake_result() -> None:
b"byteLength": b"20",
b"finalType": b"T",
}

field = batch.schema.field(5)
assert field == pa.field(name="'HELLO'::VARCHAR(20)", type=pa.string(), nullable=False)
assert field.metadata == {
b"logicalType": b"TEXT",
b"precision": b"38",
b"scale": b"0",
b"charLength": b"20",
b"byteLength": b"80",
b"finalType": b"T",
}

field = batch.schema.field(6)
assert field == pa.field(name="TO_DATE('2018-04-15')", type=pa.date32(), nullable=False)
assert field.metadata == {
b"logicalType": b"DATE",
b"precision": b"38",
b"scale": b"0",
b"charLength": b"0",
b"byteLength": b"4",
b"finalType": b"T",
}

field = batch.schema.field(7)
assert field == pa.field(name="TO_TIME('04:15:29')", type=pa.int64(), nullable=False)
assert field.metadata == {
b"logicalType": b"TIME",
b"precision": b"0",
b"scale": b"9",
b"charLength": b"0",
b"byteLength": b"8",
b"finalType": b"T",
}

field = batch.schema.field(8)
assert field == pa.field(
name="TO_TIMESTAMP_TZ('2013-04-05 01:02:03')",
type=pa.struct(
[
pa.field("epoch", pa.int64(), nullable=False),
pa.field("fraction", pa.int32(), nullable=False),
pa.field("timezone", pa.int32(), nullable=False),
]
),
nullable=False,
)
assert field.metadata == {
b"logicalType": b"TIMESTAMP_TZ",
b"precision": b"0",
b"scale": b"9",
b"charLength": b"0",
b"byteLength": b"16",
b"finalType": b"T",
}

field = batch.schema.field(9)
assert field == pa.field(
name="TO_TIMESTAMP_NTZ('2013-04-05 01:02:03')",
type=pa.struct(
[pa.field("epoch", pa.int64(), nullable=False), pa.field("fraction", pa.int32(), nullable=False)]
),
nullable=False,
)
assert field.metadata == {
b"logicalType": b"TIMESTAMP_NTZ",
b"precision": b"0",
b"scale": b"9",
b"charLength": b"0",
b"byteLength": b"16",
b"finalType": b"T",
}

field = batch.schema.field(10)
assert field == pa.field(
name="X'41424320E29D84'",
type=pa.binary(),
nullable=False,
)
assert field.metadata == {
b"logicalType": b"BINARY",
b"precision": b"38",
b"scale": b"0",
b"charLength": b"7",
b"byteLength": b"7",
b"finalType": b"T",
}

field = batch.schema.field(11)
assert field == pa.field(name="ARRAY_CONSTRUCT('FOO')", type=pa.string())
assert field.metadata == {
b"logicalType": b"ARRAY",
b"precision": b"38",
b"scale": b"0",
b"charLength": b"16777216",
b"byteLength": b"16777216",
b"finalType": b"T",
}

field = batch.schema.field(12)
assert field == pa.field(name="OBJECT_CONSTRUCT('K','V1')", type=pa.string())
assert field.metadata == {
b"logicalType": b"OBJECT",
b"precision": b"38",
b"scale": b"0",
b"charLength": b"16777216",
b"byteLength": b"16777216",
b"finalType": b"T",
}

field = batch.schema.field(13)
assert field == pa.field(
name="'VARY'::VARIANT",
type=pa.string(),
nullable=False,
)
assert field.metadata == {
b"logicalType": b"VARIANT",
b"precision": b"38",
b"scale": b"0",
b"charLength": b"16777216",
b"byteLength": b"16777216",
b"finalType": b"T",
}
19 changes: 16 additions & 3 deletions tests/test_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,9 @@ def test_server_types_no_result_set(sconn: snowflake.connector.SnowflakeConnecti
"""
create or replace table example (
XBOOLEAN BOOLEAN, XINT INT, XFLOAT FLOAT, XDECIMAL DECIMAL(10,2),
XVARCHAR VARCHAR
XVARCHAR VARCHAR, XVARCHAR20 VARCHAR(20),
XDATE DATE, XTIME TIME, XTIMESTAMP TIMESTAMP_TZ, XTIMESTAMP_NTZ TIMESTAMP_NTZ,
XBINARY BINARY, /* XARRAY ARRAY, XOBJECT OBJECT, */ XVARIANT VARIANT
)
"""
)
Expand All @@ -84,8 +86,19 @@ def test_server_types_no_result_set(sconn: snowflake.connector.SnowflakeConnecti
ResultMetadata(name='XINT', type_code=0, display_size=None, internal_size=None, precision=38, scale=0, is_nullable=True),
ResultMetadata(name='XFLOAT', type_code=1, display_size=None, internal_size=None, precision=None, scale=None, is_nullable=True),
ResultMetadata(name="XDECIMAL", type_code=0, display_size=None, internal_size=None, precision=10, scale=2, is_nullable=True),
# TODO: internal_size matches column size
ResultMetadata(name="XVARCHAR", type_code=2, display_size=None, internal_size=16777216, precision=None, scale=None, is_nullable=True)
ResultMetadata(name="XVARCHAR", type_code=2, display_size=None, internal_size=16777216, precision=None, scale=None, is_nullable=True),
# TODO: internal_size matches column size, ie: 20
ResultMetadata(name='XVARCHAR20', type_code=2, display_size=None, internal_size=16777216, precision=None, scale=None, is_nullable=True),
ResultMetadata(name='XDATE', type_code=3, display_size=None, internal_size=None, precision=None, scale=None, is_nullable=True),
ResultMetadata(name='XTIME', type_code=12, display_size=None, internal_size=None, precision=0, scale=9, is_nullable=True),
ResultMetadata(name='XTIMESTAMP', type_code=7, display_size=None, internal_size=None, precision=0, scale=9, is_nullable=True),
ResultMetadata(name='XTIMESTAMP_NTZ', type_code=8, display_size=None, internal_size=None, precision=0, scale=9, is_nullable=True),
ResultMetadata(name='XBINARY', type_code=11, display_size=None, internal_size=8388608, precision=None, scale=None, is_nullable=True),
# TODO: handle ARRAY and OBJECT see https://github.com/tekumara/fakesnow/issues/26
# ResultMetadata(name='XARRAY', type_code=10, display_size=None, internal_size=None, precision=None, scale=None, is_nullable=True),
# ResultMetadata(name='XOBJECT', type_code=9, display_size=None, internal_size=None, precision=None, scale=None, is_nullable=True),
ResultMetadata(name='XVARIANT', type_code=5, display_size=None, internal_size=None, precision=None, scale=None, is_nullable=True)

]
# fmt: on

Expand Down

0 comments on commit 618bedf

Please sign in to comment.