Files
impala/testdata/workloads/functional-query/queries/DataErrorsTest/avro-errors.test
Tim Armstrong 6587c08f70 IMPALA-4387: validate decimal type in Avro file schema
This patch prevents an invalid decimal type in an Avro file schema from
crashing Impala. Most invalid Avro schemas are caught by the frontend,
but file schemas still need to be validated by the backend.

After this patch files with bad schemas are skipped.

Testing:
This was hit very rarely by the scanner fuzzing. Added a regression test that
scans a file with a bad schema.

Change-Id: I25a326ee2220bc14d3b5f887dc288b4adf859cfc
Reviewed-on: http://gerrit.cloudera.org:8080/4876
Reviewed-by: Tim Armstrong <tarmstrong@cloudera.com>
Tested-by: Internal Jenkins
2016-10-30 00:12:58 +00:00

35 lines
1.3 KiB
Plaintext

====
---- QUERY
# Read from the corrupt files. We may get partial results.
select * from bad_avro_snap_strings
---- RESULTS: VERIFY_IS_SUPERSET
'valid'
---- TYPES
string
---- ERRORS
row_regex: .*Problem parsing file $NAMENODE/.*
File '$NAMENODE/test-warehouse/bad_avro_snap_strings_avro_snap/truncated_string.avro' is corrupt: truncated data block at offset 155
File '$NAMENODE/test-warehouse/bad_avro_snap_strings_avro_snap/negative_string_len.avro' is corrupt: invalid length -7 at offset 164
File '$NAMENODE/test-warehouse/bad_avro_snap_strings_avro_snap/invalid_union.avro' is corrupt: invalid union value 4 at offset 174
File '$NAMENODE/test-warehouse/bad_avro_snap_strings_avro_snap/invalid_union.avro' is corrupt: invalid encoded integer at offset 191
====
---- QUERY
# Read from the corrupt files. We may get partial results.
select * from bad_avro_snap_floats
---- RESULTS: VERIFY_IS_SUPERSET
1
---- TYPES
float
---- ERRORS
Problem parsing file $NAMENODE/test-warehouse/bad_avro_snap_floats_avro_snap/truncated_float.avro at 159
File '$NAMENODE/test-warehouse/bad_avro_snap_floats_avro_snap/truncated_float.avro' is corrupt: truncated data block at offset 159
====
---- QUERY
select * from bad_avro_decimal_schema
---- TYPES
string,decimal
---- RESULTS
---- ERRORS
Column 'value': invalid Avro decimal type with precision = '5' scale = '7'
====