Skip to content

Commit ec8c690

Browse files
committed
py: add more complex variant tests
Signed-off-by: rivudhk <rivudhkr@gmail.com>
1 parent 7996906 commit ec8c690

3 files changed

Lines changed: 516 additions & 0 deletions

File tree

python/tests/variant_tests/main.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from tests.variant_tests.dtype_and_variant import * # noqa: F403
66
from tests.variant_tests.cpmx_variant import * # noqa: F403
77
from tests.variant_tests.arr_of_cmpx_type import * # noqa: F403
8+
from tests.variant_tests.row_of_cmpx_type import * # noqa: F403
9+
from tests.variant_tests.udt_of_cmpx_type import * # noqa: F403
810

911

1012
def main():
Lines changed: 284 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,284 @@
1+
from tests.aggregate_tests.aggtst_base import TstView, TstTable
2+
3+
4+
# Row of Complex Type Tests
5+
class varnttst_row_of_cmpx_tbl(TstTable):
6+
"""Define the table used by the row of complex type tests"""
7+
8+
def __init__(self):
9+
self.sql = """CREATE TABLE varnt_row_of_cmpx_tbl(
10+
id INT,
11+
row_arr ROW(v1 VARIANT ARRAY NULL, v2 VARIANT ARRAY NULL) NULL,
12+
row_map ROW(v1 MAP<VARIANT, VARIANT> NULL, v2 MAP<VARIANT, VARIANT> NULL),
13+
row_row ROW(v1 ROW(v11 VARIANT NULL, v12 VARIANT NULL) NULL, v2 ROW(v21 VARIANT NULL, v22 VARIANT NULL) NULL),
14+
row_udt ROW(var1 varnt_type NULL, var2 varnt_type NULL)
15+
)"""
16+
self.data = [
17+
{
18+
"id": 0,
19+
"row_arr": {
20+
"v1": ["12, 13, 10", "17, 14"],
21+
"v2": ["hi ,", "how are you?"],
22+
},
23+
"row_map": {
24+
"v1": {"x": "bella", "y": "ciao"},
25+
"v2": {"a": "good-bye", "b": "for now!"},
26+
},
27+
"row_row": {
28+
"v1": {"v11": "the quick", "v12": "brown fox"},
29+
"v2": {"v21": "jumps over", "v22": "the lazy dog."},
30+
},
31+
"row_udt": {"var1": ("ferris", "flies"), "var2": ("away", "????")},
32+
},
33+
{
34+
"id": 1,
35+
"row_arr": None,
36+
"row_map": None,
37+
"row_row": None,
38+
"row_udt": None,
39+
},
40+
{
41+
"id": 2,
42+
"row_arr": {"v1": None, "v2": None},
43+
"row_map": {"v1": None, "v2": None},
44+
"row_row": {
45+
"v1": {"v11": None, "v12": None},
46+
"v2": {"v21": None, "v22": None},
47+
},
48+
"row_udt": {"var1": (None, None), "var2": (None, None)},
49+
},
50+
]
51+
52+
53+
class varnttst_read_row_of_cmpx(TstView):
54+
def __init__(self):
55+
# checked manually
56+
self.data = [
57+
{
58+
"id": 0,
59+
"row_arr": {
60+
"v1": ['"12, 13, 10"', '"17, 14"'],
61+
"v2": ['"hi ,"', '"how are you?"'],
62+
},
63+
"row_map": {
64+
"v1": {'"x"': '"bella"', '"y"': '"ciao"'},
65+
"v2": {'"a"': '"good-bye"', '"b"': '"for now!"'},
66+
},
67+
"row_row": {
68+
"v1": {"v11": '"the quick"', "v12": '"brown fox"'},
69+
"v2": {"v21": '"jumps over"', "v22": '"the lazy dog."'},
70+
},
71+
"row_udt": {
72+
"var1": {"v1": '"ferris"', "v2": '"flies"'},
73+
"var2": {"v1": '"away"', "v2": '"????"'},
74+
},
75+
},
76+
{
77+
"id": 1,
78+
"row_arr": None,
79+
"row_map": None,
80+
"row_row": None,
81+
"row_udt": None,
82+
},
83+
{
84+
"id": 2,
85+
"row_arr": {"v1": None, "v2": None},
86+
"row_map": {"v1": None, "v2": None},
87+
"row_row": {
88+
"v1": {"v11": None, "v12": None},
89+
"v2": {"v21": None, "v22": None},
90+
},
91+
"row_udt": {
92+
"var1": {"v1": None, "v2": None},
93+
"var2": {"v1": None, "v2": None},
94+
},
95+
},
96+
]
97+
self.sql = """CREATE MATERIALIZED VIEW read_row_of_cmpx AS SELECT
98+
*
99+
FROM varnt_row_of_cmpx_tbl"""
100+
101+
102+
# Array
103+
class varnttst_row_of_arr_unnest_varnt_elmnt(TstView):
104+
def __init__(self):
105+
# checked manually
106+
self.data = [
107+
{"id": 0, "row1_elmnt": '"12, 13, 10"', "idx": 1},
108+
{"id": 0, "row1_elmnt": '"17, 14"', "idx": 2},
109+
]
110+
self.sql = """CREATE MATERIALIZED VIEW row_of_arr_unnest_varnt_elmnt AS SELECT
111+
id, row1_elmnt, idx
112+
FROM varnt_row_of_cmpx_tbl,
113+
UNNEST(varnt_row_of_cmpx_tbl.row_arr[1]) WITH ORDINALITY AS t (row1_elmnt, idx)"""
114+
115+
116+
class varnttst_row_of_arr_field_access_varnt(TstView):
117+
def __init__(self):
118+
# checked manually
119+
self.data = [
120+
{
121+
"id": 0,
122+
"row_arr1": ['"12, 13, 10"', '"17, 14"'],
123+
"row_arr2": ['"hi ,"', '"how are you?"'],
124+
},
125+
{"id": 1, "row_arr1": None, "row_arr2": None},
126+
{"id": 2, "row_arr1": None, "row_arr2": None},
127+
]
128+
self.sql = """CREATE MATERIALIZED VIEW row_of_arr_field_access_varnt AS SELECT
129+
id,
130+
varnt_row_of_cmpx_tbl.row_arr[1] AS row_arr1,
131+
varnt_row_of_cmpx_tbl.row_arr[2] AS row_arr2
132+
FROM varnt_row_of_cmpx_tbl"""
133+
134+
135+
class varnttst_row_of_arr_elmnt_access_varnt(TstView):
136+
def __init__(self):
137+
# checked manually
138+
self.data = [
139+
{"id": 0, "row_arr11": '"12, 13, 10"', "row_arr21": '"hi ,"'},
140+
{"id": 1, "row_arr11": None, "row_arr21": None},
141+
{"id": 2, "row_arr11": None, "row_arr21": None},
142+
]
143+
self.sql = """CREATE MATERIALIZED VIEW row_of_arr_elmnt_access_varnt AS SELECT
144+
id,
145+
varnt_row_of_cmpx_tbl.row_arr[1][1] AS row_arr11,
146+
varnt_row_of_cmpx_tbl.row_arr[2][1] AS row_arr21
147+
FROM varnt_row_of_cmpx_tbl"""
148+
149+
150+
class varnttst_row_of_arr_nexist_varnt(TstView):
151+
def __init__(self):
152+
# checked manually
153+
self.data = [
154+
{"id": 0, "row_arr25": None},
155+
{"id": 1, "row_arr25": None},
156+
{"id": 2, "row_arr25": None},
157+
]
158+
self.sql = """CREATE MATERIALIZED VIEW row_of_arr_nexist_varnt AS SELECT
159+
id,
160+
varnt_row_of_cmpx_tbl.row_arr[2][5] AS row_arr25
161+
FROM varnt_row_of_cmpx_tbl"""
162+
163+
164+
# Map
165+
class varnttst_row_of_map_field_access_varnt(TstView):
166+
def __init__(self):
167+
# checked manually
168+
self.data = [
169+
{
170+
"id": 0,
171+
"row_map1": {'"x"': '"bella"', '"y"': '"ciao"'},
172+
"row_map2": {'"a"': '"good-bye"', '"b"': '"for now!"'},
173+
},
174+
{"id": 1, "row_map1": None, "row_map2": None},
175+
{"id": 2, "row_map1": None, "row_map2": None},
176+
]
177+
self.sql = """CREATE MATERIALIZED VIEW row_of_map_field_access_varnt AS SELECT
178+
id,
179+
row_map[1] AS row_map1,
180+
row_map[2] AS row_map2
181+
FROM varnt_row_of_cmpx_tbl"""
182+
183+
184+
class varnttst_row_of_map_elmnt_access_varnt(TstView):
185+
def __init__(self):
186+
# checked manually
187+
self.data = [
188+
{"id": 0, "x": '"bella"', "a": '"good-bye"'},
189+
{"id": 1, "x": None, "a": None},
190+
{"id": 2, "x": None, "a": None},
191+
]
192+
self.sql = """CREATE MATERIALIZED VIEW row_of_map_elmnt_access_varnt AS SELECT
193+
id,
194+
row_map[1][CAST('x' AS VARIANT)] AS x,
195+
row_map[2][CAST('a' AS VARIANT)] AS a
196+
FROM varnt_row_of_cmpx_tbl"""
197+
198+
199+
class varnttst_row_of_map_nexist_varnt(TstView):
200+
def __init__(self):
201+
# checked manually
202+
self.data = [{"id": 0, "b": None}, {"id": 1, "b": None}, {"id": 2, "b": None}]
203+
self.sql = """CREATE MATERIALIZED VIEW row_of_map_nexist_varnt AS SELECT
204+
id,
205+
row_map[1][CAST('b' AS VARIANT)] AS b
206+
FROM varnt_row_of_cmpx_tbl"""
207+
208+
209+
# Row
210+
class varnttst_row_of_row_field_access_varnt(TstView):
211+
def __init__(self):
212+
# checked manually
213+
self.data = [
214+
{
215+
"id": 0,
216+
"row_row1": {"v11": '"the quick"', "v12": '"brown fox"'},
217+
"row_row2": {"v21": '"jumps over"', "v22": '"the lazy dog."'},
218+
},
219+
{"id": 1, "row_row1": None, "row_row2": None},
220+
{
221+
"id": 2,
222+
"row_row1": {"v11": None, "v12": None},
223+
"row_row2": {"v21": None, "v22": None},
224+
},
225+
]
226+
self.sql = """CREATE MATERIALIZED VIEW row_of_row_field_access_varnt AS SELECT
227+
id,
228+
varnt_row_of_cmpx_tbl.row_row[1] AS row_row1,
229+
varnt_row_of_cmpx_tbl.row_row[2] AS row_row2
230+
FROM varnt_row_of_cmpx_tbl"""
231+
232+
233+
class varnttst_row_of_row_elmnt_access_varnt(TstView):
234+
def __init__(self):
235+
# checked manually
236+
self.data = [
237+
{"id": 0, "row_row12": '"brown fox"', "row_row21": '"jumps over"'},
238+
{"id": 1, "row_row12": None, "row_row21": None},
239+
{"id": 2, "row_row12": None, "row_row21": None},
240+
]
241+
self.sql = """CREATE MATERIALIZED VIEW row_of_row_elmnt_access_varnt AS SELECT
242+
id,
243+
varnt_row_of_cmpx_tbl.row_row[1][2] AS row_row12,
244+
varnt_row_of_cmpx_tbl.row_row[2][1] AS row_row21
245+
FROM varnt_row_of_cmpx_tbl"""
246+
247+
248+
# UDT
249+
class varnttst_row_of_udt_field_access_varnt(TstView):
250+
def __init__(self):
251+
# checked manually
252+
self.data = [
253+
{
254+
"id": 0,
255+
"row_udt1": {"v1": '"ferris"', "v2": '"flies"'},
256+
"row_udt2": {"v1": '"away"', "v2": '"????"'},
257+
},
258+
{"id": 1, "row_udt1": None, "row_udt2": None},
259+
{
260+
"id": 2,
261+
"row_udt1": {"v1": None, "v2": None},
262+
"row_udt2": {"v1": None, "v2": None},
263+
},
264+
]
265+
self.sql = """CREATE MATERIALIZED VIEW row_of_udt_field_access_varnt AS SELECT
266+
id,
267+
varnt_row_of_cmpx_tbl.row_udt[1] AS row_udt1,
268+
varnt_row_of_cmpx_tbl.row_udt[2] AS row_udt2
269+
FROM varnt_row_of_cmpx_tbl"""
270+
271+
272+
class varnttst_row_of_udt_elmnt_access_varnt(TstView):
273+
def __init__(self):
274+
# checked manually
275+
self.data = [
276+
{"id": 0, "row_udt12": '"flies"', "row_udt21": '"away"'},
277+
{"id": 1, "row_udt12": None, "row_udt21": None},
278+
{"id": 2, "row_udt12": None, "row_udt21": None},
279+
]
280+
self.sql = """CREATE MATERIALIZED VIEW row_of_udt_elmnt_access_varnt AS SELECT
281+
id,
282+
varnt_row_of_cmpx_tbl.row_udt[1][2] AS row_udt12,
283+
varnt_row_of_cmpx_tbl.row_udt[2][1] AS row_udt21
284+
FROM varnt_row_of_cmpx_tbl"""

0 commit comments

Comments
 (0)