mirror of
https://github.com/apache/impala.git
synced 2026-01-21 06:02:50 -05:00
Before this patch the Parquet STRUCT reader didn't fill the position slots: collection position, file position. When users queried these virtual columns Impala was crashed or returned incorrect results. The ORC scanner already worked correctly, but there was no tests written for it. Test: * e2e tests for both ORC / Parquet Change-Id: I32a808a11f4543cd404ed9f3958e9b4e971ca1f4 Reviewed-on: http://gerrit.cloudera.org:8080/19911 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
201 lines
5.4 KiB
Plaintext
201 lines
5.4 KiB
Plaintext
====
|
|
---- QUERY
|
|
# Let's just have the positions here for reference.
|
|
select id, file__position from complextypestbl;
|
|
---- RESULTS
|
|
1,0
|
|
2,1
|
|
3,2
|
|
4,3
|
|
5,4
|
|
6,5
|
|
7,6
|
|
8,0
|
|
---- TYPES
|
|
BIGINT, BIGINT
|
|
====
|
|
---- QUERY
|
|
# Let's query the top-level sruct so we can verify the following results.
|
|
select id, file__position, nested_struct from complextypestbl;
|
|
---- RESULTS
|
|
1,0,'{"a":1,"b":[1],"c":{"d":[[{"e":10,"f":"aaa"},{"e":-10,"f":"bbb"}],[{"e":11,"f":"c"}]]},"g":{"foo":{"h":{"i":[1.1]}}}}'
|
|
2,1,'{"a":null,"b":[null],"c":{"d":[[{"e":null,"f":null},{"e":10,"f":"aaa"},{"e":null,"f":null},{"e":-10,"f":"bbb"},{"e":null,"f":null}],[{"e":11,"f":"c"},null],[],null]},"g":{"g1":{"h":{"i":[2.2,null]}},"g2":{"h":{"i":[]}},"g3":null,"g4":{"h":{"i":null}},"g5":{"h":null}}}'
|
|
3,2,'{"a":null,"b":null,"c":{"d":[]},"g":{}}'
|
|
4,3,'{"a":null,"b":null,"c":{"d":null},"g":null}'
|
|
5,4,'{"a":null,"b":null,"c":null,"g":{"foo":{"h":{"i":[2.2,3.3]}}}}'
|
|
6,5,'NULL'
|
|
7,6,'{"a":7,"b":[2,3,null],"c":{"d":[[],[null],null]},"g":null}'
|
|
8,0,'{"a":-1,"b":[-1],"c":{"d":[[{"e":-1,"f":"nonnullable"}]]},"g":{}}'
|
|
---- TYPES
|
|
BIGINT, BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
# We only query the 'nested_struct' non-virtual column, so the STRUCT reader
|
|
# needs to set the file positions
|
|
select file__position, nested_struct from complextypestbl;
|
|
---- RESULTS
|
|
0,'{"a":1,"b":[1],"c":{"d":[[{"e":10,"f":"aaa"},{"e":-10,"f":"bbb"}],[{"e":11,"f":"c"}]]},"g":{"foo":{"h":{"i":[1.1]}}}}'
|
|
1,'{"a":null,"b":[null],"c":{"d":[[{"e":null,"f":null},{"e":10,"f":"aaa"},{"e":null,"f":null},{"e":-10,"f":"bbb"},{"e":null,"f":null}],[{"e":11,"f":"c"},null],[],null]},"g":{"g1":{"h":{"i":[2.2,null]}},"g2":{"h":{"i":[]}},"g3":null,"g4":{"h":{"i":null}},"g5":{"h":null}}}'
|
|
2,'{"a":null,"b":null,"c":{"d":[]},"g":{}}'
|
|
3,'{"a":null,"b":null,"c":{"d":null},"g":null}'
|
|
4,'{"a":null,"b":null,"c":null,"g":{"foo":{"h":{"i":[2.2,3.3]}}}}'
|
|
5,'NULL'
|
|
6,'{"a":7,"b":[2,3,null],"c":{"d":[[],[null],null]},"g":null}'
|
|
0,'{"a":-1,"b":[-1],"c":{"d":[[{"e":-1,"f":"nonnullable"}]]},"g":{}}'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select file__position, nested_struct from complextypestbl
|
|
where file__position = 2;
|
|
---- RESULTS
|
|
2,'{"a":null,"b":null,"c":{"d":[]},"g":{}}'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select file__position, nested_struct from complextypestbl
|
|
where nested_struct.a > 0;
|
|
---- RESULTS
|
|
0,'{"a":1,"b":[1],"c":{"d":[[{"e":10,"f":"aaa"},{"e":-10,"f":"bbb"}],[{"e":11,"f":"c"}]]},"g":{"foo":{"h":{"i":[1.1]}}}}'
|
|
6,'{"a":7,"b":[2,3,null],"c":{"d":[[],[null],null]},"g":null}'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select id, file__position, item from complextypestbl c, c.nested_struct.c.d.item;
|
|
---- RESULTS
|
|
1,0,'{"e":10,"f":"aaa"}'
|
|
1,0,'{"e":-10,"f":"bbb"}'
|
|
1,0,'{"e":11,"f":"c"}'
|
|
2,1,'{"e":null,"f":null}'
|
|
2,1,'{"e":10,"f":"aaa"}'
|
|
2,1,'{"e":null,"f":null}'
|
|
2,1,'{"e":-10,"f":"bbb"}'
|
|
2,1,'{"e":null,"f":null}'
|
|
2,1,'{"e":11,"f":"c"}'
|
|
2,1,'NULL'
|
|
7,6,'NULL'
|
|
8,0,'{"e":-1,"f":"nonnullable"}'
|
|
---- TYPES
|
|
BIGINT, BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select file__position, item from complextypestbl c, c.nested_struct.c.d.item;
|
|
---- RESULTS
|
|
0,'{"e":10,"f":"aaa"}'
|
|
0,'{"e":-10,"f":"bbb"}'
|
|
0,'{"e":11,"f":"c"}'
|
|
1,'{"e":null,"f":null}'
|
|
1,'{"e":10,"f":"aaa"}'
|
|
1,'{"e":null,"f":null}'
|
|
1,'{"e":-10,"f":"bbb"}'
|
|
1,'{"e":null,"f":null}'
|
|
1,'{"e":11,"f":"c"}'
|
|
1,'NULL'
|
|
6,'NULL'
|
|
0,'{"e":-1,"f":"nonnullable"}'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select pos, item from complextypestbl c, c.nested_struct.c.d.item;
|
|
---- RESULTS
|
|
0,'{"e":10,"f":"aaa"}'
|
|
1,'{"e":-10,"f":"bbb"}'
|
|
0,'{"e":11,"f":"c"}'
|
|
0,'{"e":null,"f":null}'
|
|
1,'{"e":10,"f":"aaa"}'
|
|
2,'{"e":null,"f":null}'
|
|
3,'{"e":-10,"f":"bbb"}'
|
|
4,'{"e":null,"f":null}'
|
|
0,'{"e":11,"f":"c"}'
|
|
1,'NULL'
|
|
0,'NULL'
|
|
0,'{"e":-1,"f":"nonnullable"}'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select pos, item from complextypestbl c, c.nested_struct.c.d.item
|
|
where pos = 1;
|
|
---- RESULTS
|
|
1,'{"e":-10,"f":"bbb"}'
|
|
1,'{"e":10,"f":"aaa"}'
|
|
1,'NULL'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select pos, item from complextypestbl c, c.nested_struct.c.d.item it
|
|
where it.e < 11;
|
|
---- RESULTS
|
|
0,'{"e":10,"f":"aaa"}'
|
|
1,'{"e":-10,"f":"bbb"}'
|
|
1,'{"e":10,"f":"aaa"}'
|
|
3,'{"e":-10,"f":"bbb"}'
|
|
0,'{"e":-1,"f":"nonnullable"}'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
# Queries like above, but with a flat tuple structure, i.e. the items
|
|
# are in the top-level (and only) tuple.
|
|
select pos, item from complextypestbl.nested_struct.c.d.item;
|
|
---- RESULTS
|
|
0,'{"e":10,"f":"aaa"}'
|
|
1,'{"e":-10,"f":"bbb"}'
|
|
0,'{"e":11,"f":"c"}'
|
|
0,'{"e":null,"f":null}'
|
|
1,'{"e":10,"f":"aaa"}'
|
|
2,'{"e":null,"f":null}'
|
|
3,'{"e":-10,"f":"bbb"}'
|
|
4,'{"e":null,"f":null}'
|
|
0,'{"e":11,"f":"c"}'
|
|
1,'NULL'
|
|
0,'NULL'
|
|
0,'{"e":-1,"f":"nonnullable"}'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select pos, item from complextypestbl.nested_struct.c.d.item
|
|
where pos = 1;
|
|
---- RESULTS
|
|
1,'{"e":-10,"f":"bbb"}'
|
|
1,'{"e":10,"f":"aaa"}'
|
|
1,'NULL'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select pos, item from complextypestbl.nested_struct.c.d.item it
|
|
where it.e < 11;
|
|
---- RESULTS
|
|
0,'{"e":10,"f":"aaa"}'
|
|
1,'{"e":-10,"f":"bbb"}'
|
|
1,'{"e":10,"f":"aaa"}'
|
|
3,'{"e":-10,"f":"bbb"}'
|
|
0,'{"e":-1,"f":"nonnullable"}'
|
|
---- TYPES
|
|
BIGINT, STRING
|
|
====
|
|
---- QUERY
|
|
select file__position, pos, item from complextypestbl c, c.nested_struct.c.d.item;
|
|
---- RESULTS
|
|
0,0,'{"e":10,"f":"aaa"}'
|
|
0,1,'{"e":-10,"f":"bbb"}'
|
|
0,0,'{"e":11,"f":"c"}'
|
|
1,0,'{"e":null,"f":null}'
|
|
1,1,'{"e":10,"f":"aaa"}'
|
|
1,2,'{"e":null,"f":null}'
|
|
1,3,'{"e":-10,"f":"bbb"}'
|
|
1,4,'{"e":null,"f":null}'
|
|
1,0,'{"e":11,"f":"c"}'
|
|
1,1,'NULL'
|
|
6,0,'NULL'
|
|
0,0,'{"e":-1,"f":"nonnullable"}'
|
|
---- TYPES
|
|
BIGINT, BIGINT, STRING
|
|
====
|