==== ---- QUERY # Make sure LIMIT is enforced. select * from functional_kudu.dimtbl order by id limit 1; ---- RESULTS 1001,'Name1',94611 ---- TYPES BIGINT, STRING, INT ==== ---- QUERY # Make sure that we can list the columns to be scanned in any order, that predicates # work and that we can have predicates on columns not referenced elsewhere. select zip, id from functional_kudu.dimtbl where id >= 1000 and 1002 >= id and 94611 = zip and 'Name1' = name order by id; ---- RESULTS 94611,1001 ---- TYPES INT, BIGINT ==== ---- QUERY # Regression test for IMPALA-2740, a NULL value from a previously filtered row would # carry over into the next unfiltered row (the result below would incorrectly be 2,NULL). CREATE TABLE impala_2740 (key INT PRIMARY KEY, value INT) PARTITION BY HASH (key) PARTITIONS 3 STORED AS KUDU; INSERT INTO impala_2740 VALUES (1, NULL), (2, -2); SELECT * FROM impala_2740 WHERE key != 1; ---- RESULTS 2,-2 ---- TYPES INT, INT ==== ---- QUERY # Regression test for IMPALA-2635, the Kudu scanner hangs waiting for data from scanner # threads that are never started. The union and both scans land in the same fragment which # is run on all impalads. However, for the t1 table there is only as single scan range, # so two of the scan instances get empty scan ranges. CREATE TABLE impala_2635_t1 (id BIGINT PRIMARY KEY, name STRING) PARTITION BY HASH (id) PARTITIONS 3 STORED AS KUDU; CREATE TABLE impala_2635_t2 (id BIGINT PRIMARY KEY, name STRING) PARTITION BY HASH(id) PARTITIONS 16 STORED AS KUDU; INSERT INTO impala_2635_t1 VALUES (0, 'Foo'); INSERT INTO impala_2635_t2 VALUES (1, 'Blah'); SELECT * FROM impala_2635_t1 UNION ALL SELECT * FROM impala_2635_t2; ---- RESULTS 0,'Foo' 1,'Blah' ---- TYPES BIGINT, STRING ==== ---- QUERY # IMPALA-4408: Test Kudu scans where all materialized slots are non-nullable. select count(int_col) from functional_kudu.tinyinttable ---- RESULTS 10 ---- TYPES BIGINT ==== ---- QUERY # IMPALA-4859: Test Kudu IS NULL/IS NOT NULL pushdown select count(*) from functional_kudu.alltypesagg where id < 10 and float_col is null; ---- RESULTS 2 ---- TYPES BIGINT ==== ---- QUERY select count(*) from functional_kudu.alltypesagg where id < 10 and float_col is not null; ---- RESULTS 9 ---- TYPES BIGINT ==== ---- QUERY # alltypes.id is primary key/not nullable, verify IS NOT NULL/IS NULL pushdown works select count(*) from functional_kudu.alltypes where id is not null; ---- RESULTS 7300 ---- TYPES BIGINT ==== ---- QUERY select count(*) from functional_kudu.alltypes where id is null; ---- RESULTS 0 ---- TYPES BIGINT ==== ---- QUERY # Push down TIMESTAMP binary predicates select id, timestamp_col from functional_kudu.alltypes where timestamp_col <= cast('2009-01-01 00:08:00.28' as timestamp) and timestamp_col >= cast('2009-01-01 00:04:00.6' as timestamp) order by id; ---- RESULTS 4,2009-01-01 00:04:00.600000000 5,2009-01-01 00:05:00.100000000 6,2009-01-01 00:06:00.150000000 7,2009-01-01 00:07:00.210000000 8,2009-01-01 00:08:00.280000000 ---- TYPES INT, TIMESTAMP ==== ---- QUERY # Out-of-range TIMESTAMP predicate (evaluates to NULL) select id, timestamp_col from functional_kudu.alltypes where timestamp_col > cast('1000-01-01 00:00:00.00' as timestamp) ---- RESULTS ---- TYPES INT, TIMESTAMP ==== ---- QUERY select id, timestamp_col from functional_kudu.alltypes where timestamp_col < cast('2009-01-01 00:08:00.28' as timestamp) and timestamp_col > cast('2009-01-01 00:04:00.6' as timestamp) order by id; ---- RESULTS 5,2009-01-01 00:05:00.100000000 6,2009-01-01 00:06:00.150000000 7,2009-01-01 00:07:00.210000000 ---- TYPES INT, TIMESTAMP ==== ---- QUERY select id, timestamp_col from functional_kudu.alltypes where timestamp_col = cast('2009-01-01 00:08:00.28' as timestamp); ---- RESULTS 8,2009-01-01 00:08:00.280000000 ---- TYPES INT, TIMESTAMP ==== ---- QUERY # Push down TIMESTAMP IN list predicates select id, timestamp_col from functional_kudu.alltypes where timestamp_col in (cast('2010-03-01 00:00:00' as timestamp), cast('2010-03-01 00:01:00' as timestamp)) order by id; ---- RESULTS 4240,2010-03-01 00:00:00 4241,2010-03-01 00:01:00 ---- TYPES INT, TIMESTAMP ==== ---- QUERY # Regression test for IMPALA-6187. Make sure count(*) queries with partition columns only # won't miss conjuncts evaluation. 'id' is the partition column here. select count(*) from functional_kudu.alltypes where rand() + id < 0.0; ---- RESULTS 0 ---- TYPES BIGINT ====