mirror of
https://github.com/apache/impala.git
synced 2026-01-28 09:03:52 -05:00
The .test file parser implemented an unconventional method for parsing single-quoted strings in comma-separated value format. This didn't handle trailing commas in the string correctly. This commit switches to using a conventional method for parsing comma-separated value format: * Commas enclosed by single quotes are not treated as field separators * Single quotes can be escaped within a string by doubling them. I looked into using Python's .csv module for this, but it wouldn't work without modifying the test file format more because it automatically discards the quotes during parsing, which are actually semantically important in .test files. E.g. without the quotes we can't distinguish between the literal string 'regex:...' and the regex regex:.... Testing: Ran exhaustive tests and fixed .test files that required modifications. Will rerun before merging. Added a couple of tests to exercise edge cases in the test file parser. Change-Id: I18ddcb0440490ddf8184be66d3681038a1615dd9 Reviewed-on: http://gerrit.cloudera.org:8080/11800 Reviewed-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com> Tested-by: Tim Armstrong <tarmstrong@cloudera.com>
193 lines
5.1 KiB
Plaintext
193 lines
5.1 KiB
Plaintext
====
|
|
---- QUERY
|
|
insert into table insertalltypesagg
|
|
select id, bigint_col, bool_col, date_string_col, day, double_col, float_col,
|
|
int_col, month, smallint_col, string_col, timestamp_col, tinyint_col, year from functional.alltypesagg
|
|
---- RESULTS
|
|
: 11000
|
|
====
|
|
---- QUERY
|
|
select id, bool_col from insertalltypesagg
|
|
WHERE id > 300
|
|
ORDER BY id
|
|
LIMIT 2
|
|
---- RESULTS
|
|
301,false
|
|
302,true
|
|
---- TYPES
|
|
INT, BOOLEAN
|
|
====
|
|
---- QUERY
|
|
insert into table insertalltypesagg
|
|
select 9999999, bigint_col, false, date_string_col, day, double_col, float_col,
|
|
int_col, month, smallint_col, string_col, timestamp_col, tinyint_col, year from functional.alltypesagg
|
|
---- RESULTS
|
|
: 11000
|
|
====
|
|
---- QUERY
|
|
select id, bool_col from insertalltypesagg
|
|
WHERE id = 9999999
|
|
ORDER BY id
|
|
LIMIT 2
|
|
---- RESULTS
|
|
9999999,false
|
|
---- TYPES
|
|
INT, BOOLEAN
|
|
====
|
|
---- QUERY
|
|
# test insert into ... select *
|
|
# using limit 1 to reduce execution time
|
|
insert into table insertalltypesagg
|
|
select * from insertalltypesagg limit 1
|
|
---- RESULTS
|
|
: 1
|
|
====
|
|
---- QUERY
|
|
# test inserting Hive's default text representation of NULL '\N'
|
|
# and make sure a scan returns the string and not NULL
|
|
insert into table insertalltypesagg
|
|
select 9999999, bigint_col, false, "\\N", day, double_col, float_col,
|
|
int_col, month, smallint_col, "\\N", timestamp_col, tinyint_col, year from functional.alltypesagg limit 1
|
|
---- RESULTS
|
|
: 1
|
|
====
|
|
---- QUERY
|
|
select id, date_string_col, string_col from insertalltypesagg
|
|
where id = 9999999
|
|
---- RESULTS
|
|
9999999,'\\N','\\N'
|
|
---- TYPES
|
|
INT, STRING, STRING
|
|
====
|
|
---- QUERY
|
|
insert into table insertalltypesaggbinary
|
|
select id, bigint_col, bool_col, date_string_col, day, double_col, float_col,
|
|
int_col, month, smallint_col, string_col, timestamp_col, tinyint_col, year from functional.alltypesagg
|
|
---- RESULTS
|
|
: 11000
|
|
====
|
|
---- QUERY
|
|
select count(*) from (
|
|
select hb.* from insertalltypesaggbinary hb, functional.alltypesagg a
|
|
where hb.id = a.id
|
|
and (hb.bigint_col = a.bigint_col or
|
|
(hb.bigint_col is null and a.bigint_col is null))
|
|
and (hb.bool_col = a.bool_col or
|
|
(hb.bool_col is null and a.bool_col is null))
|
|
and (hb.date_string_col = a.date_string_col or
|
|
(hb.date_string_col is null and a.date_string_col is null))
|
|
and (hb.double_col = a.double_col or
|
|
(hb.double_col is null and a.double_col is null))
|
|
and (hb.float_col = a.float_col or
|
|
(hb.float_col is null and a.float_col is null))
|
|
and (hb.int_col = a.int_col or
|
|
(hb.int_col is null and a.int_col is null))
|
|
and (hb.smallint_col = a.smallint_col or
|
|
(hb.smallint_col is null and a.smallint_col is null))
|
|
and (hb.tinyint_col = a.tinyint_col or
|
|
(hb.tinyint_col is null and a.tinyint_col is null))
|
|
and (hb.string_col = a.string_col or
|
|
(hb.string_col is null and a.string_col is null))
|
|
and (hb.timestamp_col = a.timestamp_col or
|
|
(hb.timestamp_col is null and a.timestamp_col is null))
|
|
) x
|
|
---- RESULTS
|
|
11000
|
|
---- TYPES
|
|
BIGINT
|
|
====
|
|
---- QUERY
|
|
select id, bool_col from insertalltypesaggbinary
|
|
WHERE id > 300
|
|
ORDER BY id
|
|
LIMIT 2
|
|
---- RESULTS
|
|
301,false
|
|
302,true
|
|
---- TYPES
|
|
INT, BOOLEAN
|
|
====
|
|
---- QUERY
|
|
insert into table insertalltypesaggbinary
|
|
select 9999999, bigint_col, false, date_string_col, day, double_col, float_col,
|
|
int_col, month, smallint_col, string_col, timestamp_col, tinyint_col, year from functional.alltypesagg
|
|
---- RESULTS
|
|
: 11000
|
|
====
|
|
---- QUERY
|
|
select id, bool_col from insertalltypesaggbinary
|
|
WHERE id = 9999999
|
|
ORDER BY id
|
|
LIMIT 2
|
|
---- RESULTS
|
|
9999999,false
|
|
---- TYPES
|
|
INT, BOOLEAN
|
|
====
|
|
---- QUERY
|
|
# test insert into ... select *
|
|
# using limit 1 to reduce execution time
|
|
insert into table insertalltypesaggbinary
|
|
select * from insertalltypesaggbinary limit 1
|
|
---- RESULTS
|
|
: 1
|
|
====
|
|
---- QUERY
|
|
# test inserting Hive's default text representation of NULL '\N'
|
|
# and make sure a scan returns the string and not NULL
|
|
insert into table insertalltypesaggbinary
|
|
select 9999999, bigint_col, false, "\\N", day, double_col, float_col,
|
|
int_col, month, smallint_col, "\\N", timestamp_col, tinyint_col, year from functional.alltypesagg limit 1
|
|
---- RESULTS
|
|
: 1
|
|
====
|
|
---- QUERY
|
|
select id, date_string_col, string_col from insertalltypesaggbinary
|
|
where id = 9999999
|
|
---- RESULTS
|
|
9999999,'\\N','\\N'
|
|
---- TYPES
|
|
INT, STRING, STRING
|
|
====
|
|
---- QUERY
|
|
#IMPALA-715 handle large string value
|
|
insert into table insertalltypesagg(id, string_col) values(9999999, rpad('a', 50000, 'b'))
|
|
---- RESULTS
|
|
: 1
|
|
====
|
|
---- QUERY
|
|
select id, length(string_col) from insertalltypesagg
|
|
WHERE id = 9999999
|
|
---- RESULTS
|
|
9999999,50000
|
|
---- TYPES
|
|
INT, INT
|
|
====
|
|
---- QUERY
|
|
# IMPALA-2133
|
|
insert into table insertalltypesagg (id, string_col) values (99999999, 'William\'s'), (999999999, "Other\"s")
|
|
---- RESULTS
|
|
: 2
|
|
====
|
|
---- QUERY
|
|
select id, string_col from insertalltypesagg where id = 99999999
|
|
---- RESULTS
|
|
99999999,'William''s'
|
|
---- TYPES
|
|
INT, STRING
|
|
====
|
|
---- QUERY
|
|
select id, string_col from insertalltypesagg where string_col = 'William\'s'
|
|
---- RESULTS
|
|
99999999,'William''s'
|
|
---- TYPES
|
|
INT, STRING
|
|
====
|
|
---- QUERY
|
|
select id, string_col from insertalltypesagg where string_col = "Other\"s"
|
|
---- RESULTS
|
|
999999999,'Other"s'
|
|
---- TYPES
|
|
INT, STRING
|
|
====
|