mirror of
https://github.com/apache/impala.git
synced 2026-01-03 06:00:52 -05:00
This is the first set of changes required to start getting our functional test infrastructure moved from JUnit to Python. After investigating a number of option, I decided to go with a python test executor named py.test (http://pytest.org/). It is very flexible, open source (MIT licensed), and will enable us to do some cool things like parallel test execution. As part of this change, we now use our "test vectors" for query test execution. This will be very nice because it means if load the "core" dataset you know you will be able to run the "core" query tests (specified by --exploration_strategy when running the tests). You will see that now each combination of table format + query exec options is treated like an individual test case. this will make it much easier to debug exactly where something failed. These new tests can be run using the script at tests/run-tests.sh
258 lines
3.7 KiB
Plaintext
258 lines
3.7 KiB
Plaintext
====
|
|
---- QUERY
|
|
# insert overwrite into unpartitioned table
|
|
insert overwrite table insert_overwrite_nopart$TABLE
|
|
select int_col
|
|
from tinyinttable
|
|
---- SETUP
|
|
RESET insert_overwrite_nopart$TABLE
|
|
---- RESULTS
|
|
---- PARTITIONS
|
|
/: 10
|
|
====
|
|
---- QUERY
|
|
# Check results - note larger limit than expected in case there's more data written than there should be
|
|
select col1
|
|
from insert_overwrite_nopart$TABLE
|
|
order by col1
|
|
limit 20
|
|
---- TYPES
|
|
int
|
|
---- RESULTS
|
|
0
|
|
1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8
|
|
9
|
|
====
|
|
---- QUERY
|
|
# Now do an overwrite that should delete what was just written
|
|
insert overwrite table insert_overwrite_nopart$TABLE
|
|
select 10
|
|
from tinyinttable
|
|
---- RESULTS
|
|
---- PARTITIONS
|
|
/: 10
|
|
====
|
|
---- QUERY
|
|
# check results from previous insert
|
|
select col1
|
|
from insert_overwrite_nopart$TABLE
|
|
order by col1
|
|
limit 20
|
|
---- TYPES
|
|
int
|
|
---- RESULTS
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
10
|
|
====
|
|
---- QUERY
|
|
# TODO: IMP-240 - Hive will delete data even for inserts that write nothing. When we fix IMP-240, this test should fail.
|
|
insert overwrite table insert_overwrite_nopart$TABLE
|
|
select 3
|
|
from tinyinttable
|
|
limit 0
|
|
---- RESULTS
|
|
---- PARTITIONS
|
|
====
|
|
---- QUERY
|
|
select count(*) from insert_overwrite_nopart$TABLE
|
|
---- TYPES
|
|
bigint
|
|
---- RESULTS
|
|
10
|
|
====
|
|
---- QUERY
|
|
# Static partitioned insert
|
|
insert overwrite table insert_overwrite_partitioned$TABLE
|
|
PARTITION(col2=5)
|
|
select int_col
|
|
from tinyinttable
|
|
---- SETUP
|
|
RESET insert_overwrite_partitioned$TABLE
|
|
---- RESULTS
|
|
---- PARTITIONS
|
|
/col2=5/: 10
|
|
====
|
|
---- QUERY
|
|
# Check results of previous insert
|
|
select col1, col2 from insert_overwrite_partitioned$TABLE
|
|
order by col1
|
|
limit 20
|
|
---- TYPES
|
|
int,int
|
|
---- RESULTS
|
|
0,5
|
|
1,5
|
|
2,5
|
|
3,5
|
|
4,5
|
|
5,5
|
|
6,5
|
|
7,5
|
|
8,5
|
|
9,5
|
|
====
|
|
---- QUERY
|
|
# Insert into another partition, to check that original partition stays intact
|
|
insert overwrite table insert_overwrite_partitioned$TABLE
|
|
PARTITION(col2=6)
|
|
select int_col
|
|
from tinyinttable
|
|
---- SETUP
|
|
RESET insert_overwrite_nopart$TABLE
|
|
---- RESULTS
|
|
---- PARTITIONS
|
|
/col2=6/: 10
|
|
====
|
|
---- QUERY
|
|
# Check results of previous insert
|
|
select col1, col2 from
|
|
insert_overwrite_partitioned$TABLE
|
|
order by col2, col1
|
|
limit 30
|
|
---- TYPES
|
|
int,int
|
|
---- RESULTS
|
|
0,5
|
|
1,5
|
|
2,5
|
|
3,5
|
|
4,5
|
|
5,5
|
|
6,5
|
|
7,5
|
|
8,5
|
|
9,5
|
|
0,6
|
|
1,6
|
|
2,6
|
|
3,6
|
|
4,6
|
|
5,6
|
|
6,6
|
|
7,6
|
|
8,6
|
|
9,6
|
|
====
|
|
---- QUERY
|
|
# Overwrite one partition, check that the other partition remains intact
|
|
insert overwrite table insert_overwrite_partitioned$TABLE
|
|
partition(col2=5)
|
|
select 10 from tinyinttable
|
|
---- RESULTS
|
|
---- PARTITIONS
|
|
/col2=5/: 10
|
|
====
|
|
---- QUERY
|
|
# Confirm that one partition is still intact
|
|
select col1, col2 from insert_overwrite_partitioned$TABLE
|
|
order by col2, col1 limit 30
|
|
---- TYPES
|
|
int,int
|
|
---- RESULTS
|
|
10,5
|
|
10,5
|
|
10,5
|
|
10,5
|
|
10,5
|
|
10,5
|
|
10,5
|
|
10,5
|
|
10,5
|
|
10,5
|
|
0,6
|
|
1,6
|
|
2,6
|
|
3,6
|
|
4,6
|
|
5,6
|
|
6,6
|
|
7,6
|
|
8,6
|
|
9,6
|
|
====
|
|
---- QUERY
|
|
# Dynamic partitions
|
|
insert overwrite table insert_overwrite_partitioned$TABLE
|
|
partition(col2)
|
|
select int_col, int_col
|
|
from tinyinttable
|
|
---- SETUP
|
|
DROP PARTITIONS insert_overwrite_partitioned$TABLE
|
|
---- RESULTS
|
|
---- PARTITIONS
|
|
/col2=0/: 1
|
|
/col2=1/: 1
|
|
/col2=2/: 1
|
|
/col2=3/: 1
|
|
/col2=4/: 1
|
|
/col2=5/: 1
|
|
/col2=6/: 1
|
|
/col2=7/: 1
|
|
/col2=8/: 1
|
|
/col2=9/: 1
|
|
====
|
|
---- QUERY
|
|
# Confirm results of previous insert
|
|
select col1, col2
|
|
from insert_overwrite_partitioned$TABLE
|
|
order by col2
|
|
limit 30
|
|
---- TYPES
|
|
int,int
|
|
---- RESULTS
|
|
0,0
|
|
1,1
|
|
2,2
|
|
3,3
|
|
4,4
|
|
5,5
|
|
6,6
|
|
7,7
|
|
8,8
|
|
9,9
|
|
====
|
|
---- QUERY
|
|
# Overwrite dynamic partition. Limit to 1 row without actually using limit, which forces non-parallel insert
|
|
insert overwrite table insert_overwrite_partitioned$TABLE
|
|
partition(col2)
|
|
select 10, 0 from tinyinttable
|
|
where int_col = 0
|
|
---- RESULTS
|
|
---- PARTITIONS
|
|
/col2=0/: 1
|
|
====
|
|
---- QUERY
|
|
select col1, col2
|
|
from insert_overwrite_partitioned$TABLE
|
|
order by col2
|
|
limit 30
|
|
---- TYPES
|
|
int,int
|
|
---- RESULTS
|
|
10,0
|
|
1,1
|
|
2,2
|
|
3,3
|
|
4,4
|
|
5,5
|
|
6,6
|
|
7,7
|
|
8,8
|
|
9,9
|
|
====
|