Files
impala/testdata/workloads/functional-query/queries/QueryTest/kudu_delete.test
Dimitris Tsirogiannis 3db5ced4ce IMPALA-3726: Add support for Kudu-specific column options
This commit adds support for Kudu-specific column options in CREATE
TABLE statements. The syntax is:
CREATE TABLE tbl_name ([col_name type [PRIMARY KEY] [option [...]]] [, ....])
where option is:
| NULL
| NOT NULL
| ENCODING encoding_val
| COMPRESSION compression_algorithm
| DEFAULT expr
| BLOCK_SIZE num

The output of the SHOW CREATE TABLE statement was altered to include all the specified
column options for Kudu tables.

Change-Id: I727b9ae1b7b2387db752b58081398dd3f3449c02
Reviewed-on: http://gerrit.cloudera.org:8080/5026
Reviewed-by: Dimitris Tsirogiannis <dtsirogiannis@cloudera.com>
Tested-by: Internal Jenkins
2016-11-18 11:41:01 +00:00

371 lines
10 KiB
Plaintext

====
---- QUERY
create table tdata
(id int primary key, valf float null, vali bigint null, valv string null,
valb boolean null, valt tinyint null, vals smallint null, vald double null)
DISTRIBUTE BY RANGE (PARTITION VALUES < 100, PARTITION 100 <= VALUES < 1000,
PARTITION 1000 <= VALUES <= 10000) STORED AS KUDU
---- RESULTS
====
---- QUERY
insert into table tdata values
(1, 1.0, 1, 'one', true, 1, 1, 1),
(2, -2, 20, 'two', false, 0, 1, NULL),
(3, 0, NULL, 'three', false, 10, 20, 30),
(4, 5, 6, 'four', true, 7, 8, 9),
(5, 0, 10, 'five', NULL, 15, 20, 25),
(6, 9, 12, 'six', true, -1, -2, cast('inf' as double)),
(7, NULL, 7, 'seven', false, 77, 777, NULL),
(8, 0, 80, NULL, true, 10, 11, 12),
(9, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
(127, 1, 2, '127', false, 3, 4, 5)
---- RESULTS
: 10
====
---- QUERY
# single row, predicate on key
delete from tdata where id = 1
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
4,5,6,'four',true,7,8,9
5,0,10,'five',NULL,15,20,25
6,9,12,'six',true,-1,-2,Infinity
7,NULL,7,'seven',false,77,777,NULL
8,0,80,'NULL',true,10,11,12
9,NULL,NULL,'NULL',NULL,NULL,NULL,NULL
127,1,2,'127',false,3,4,5
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# predicate on key, NULL
delete from tdata where id is NULL
---- RUNTIME_PROFILE
NumModifiedRows: 0
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
4,5,6,'four',true,7,8,9
5,0,10,'five',NULL,15,20,25
6,9,12,'six',true,-1,-2,Infinity
7,NULL,7,'seven',false,77,777,NULL
8,0,80,'NULL',true,10,11,12
9,NULL,NULL,'NULL',NULL,NULL,NULL,NULL
127,1,2,'127',false,3,4,5
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# predicate on key, nothing is deleted
delete from tdata where id = 10
---- RUNTIME_PROFILE
NumModifiedRows: 0
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
4,5,6,'four',true,7,8,9
5,0,10,'five',NULL,15,20,25
6,9,12,'six',true,-1,-2,Infinity
7,NULL,7,'seven',false,77,777,NULL
8,0,80,'NULL',true,10,11,12
9,NULL,NULL,'NULL',NULL,NULL,NULL,NULL
127,1,2,'127',false,3,4,5
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# predicate on key, boundary value
delete from tdata where id = max_tinyint()
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
4,5,6,'four',true,7,8,9
5,0,10,'five',NULL,15,20,25
6,9,12,'six',true,-1,-2,Infinity
7,NULL,7,'seven',false,77,777,NULL
8,0,80,'NULL',true,10,11,12
9,NULL,NULL,'NULL',NULL,NULL,NULL,NULL
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# compound predicate on key
delete from tdata where id > 6 and id < 8
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
4,5,6,'four',true,7,8,9
5,0,10,'five',NULL,15,20,25
6,9,12,'six',true,-1,-2,Infinity
8,0,80,'NULL',true,10,11,12
9,NULL,NULL,'NULL',NULL,NULL,NULL,NULL
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# predicate on key, multiple rows
delete from tdata where id % 4 = 0
---- RUNTIME_PROFILE
NumModifiedRows: 2
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
5,0,10,'five',NULL,15,20,25
6,9,12,'six',true,-1,-2,Infinity
9,NULL,NULL,'NULL',NULL,NULL,NULL,NULL
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# insert new values, including some that were previously deleted
insert into table tdata values
(10, 20, 30, 'ten', true, 40, 50, 60),
(1, 1.0, 1, 'one', true, 1, 1, 1),
(11, -11, 11, 'eleven', false, 1, 11, 111),
(8, 0, 80, NULL, true, 10, 11, 12)
====
---- QUERY
# single row, predicate on non-key
delete from tdata where valv = 'five'
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
6,9,12,'six',true,-1,-2,Infinity
9,NULL,NULL,'NULL',NULL,NULL,NULL,NULL
10,20,30,'ten',true,40,50,60
1,1.0,1,'one',true,1,1,1
11,-11,11,'eleven',false,1,11,111
8,0,80,'NULL',true,10,11,12
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# predicate on non-key, NULL
delete from tdata where valb is NULL
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
6,9,12,'six',true,-1,-2,Infinity
10,20,30,'ten',true,40,50,60
1,1.0,1,'one',true,1,1,1
11,-11,11,'eleven',false,1,11,111
8,0,80,'NULL',true,10,11,12
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# predicate on non-key, nothing is deleted
delete from tdata where vals = -100
---- RUNTIME_PROFILE
NumModifiedRows: 0
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
6,9,12,'six',true,-1,-2,Infinity
10,20,30,'ten',true,40,50,60
1,1.0,1,'one',true,1,1,1
11,-11,11,'eleven',false,1,11,111
8,0,80,'NULL',true,10,11,12
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# predicate on non-key, compound predicate
delete from tdata where valf = 0 and vali = 80
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
3,0,NULL,'three',false,10,20,30
6,9,12,'six',true,-1,-2,Infinity
10,20,30,'ten',true,40,50,60
1,1.0,1,'one',true,1,1,1
11,-11,11,'eleven',false,1,11,111
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# predicate on non-key, multiple rows
delete from tdata where vals % 10 = 0
---- RUNTIME_PROFILE
NumModifiedRows: 2
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
6,9,12,'six',true,-1,-2,Infinity
1,1.0,1,'one',true,1,1,1
11,-11,11,'eleven',false,1,11,111
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# 'from' syntax - the join results in four deletes, 3 of which fail
delete a from tdata a, tdata b where a.id = 11
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 3
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
6,9,12,'six',true,-1,-2,Infinity
1,1.0,1,'one',true,1,1,1
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
# Try to delete a row with a primary key value that is not covered by the existing range
# partitions. This doesn't actually end up selecting any rows to modify.
delete from tdata where id = 10001
---- RUNTIME_PROFILE
NumModifiedRows: 0
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
2,-2,20,'two',false,0,1,NULL
6,9,12,'six',true,-1,-2,Infinity
1,1.0,1,'one',true,1,1,1
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
insert into tdata
select cast(id + 100 as int), float_col, bigint_col, string_col, bool_col, tinyint_col,
smallint_col, double_col
from functional_kudu.alltypes
---- RESULTS
: 7300
---- RUNTIME_PROFILE
NumModifiedRows: 7300
NumRowErrors: 0
====
---- QUERY
# Test a larger DELETE
delete from tdata where id > -1
---- RUNTIME_PROFILE
NumModifiedRows: 7303
NumRowErrors: 0
---- LABELS
ID, VALF, VALI, VALV, VALB, VALT, VALS, VALD
---- DML_RESULTS: tdata
---- TYPES
INT,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE
====
---- QUERY
create table multiple_key_cols
(string_col string, bigint_col bigint, tinyint_col tinyint,
smallint_col smallint, bool_col boolean null, int_col int null,
double_col double null, float_col float null,
primary key (string_col, bigint_col, tinyint_col, smallint_col))
DISTRIBUTE BY HASH (string_col) INTO 16 BUCKETS STORED AS KUDU
====
---- QUERY
insert into multiple_key_cols values
('a', 1, 2, 3, true, 4, 5, NULL),
('b', 1, 2, 3, false, 7, NULL, 9),
('c', 4, 5, 6, true, 0, -1, 0),
('d', 10, 20, 30, false, NULL, 40, 50)
---- RESULTS
: 4
====
---- QUERY
# multiple key cols, predicate on one of them
delete from multiple_key_cols where bigint_col = 1
---- RUNTIME_PROFILE
NumModifiedRows: 2
NumRowErrors: 0
---- LABELS
STRING_COL, BIGINT_COL, TINYINT_COL, SMALLINT_COL, BOOL_COL, INT_COL, DOUBLE_COL, FLOAT_COL
---- DML_RESULTS: multiple_key_cols
'c',4,5,6,true,0,-1,0
'd',10,20,30,false,NULL,40,50
---- TYPES
STRING,BIGINT,TINYINT,SMALLINT,BOOLEAN,INT,DOUBLE,FLOAT
====
---- QUERY
# multiple key cols, predicate on non-key col
delete from multiple_key_cols where bool_col = false
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
STRING_COL, BIGINT_COL, TINYINT_COL, SMALLINT_COL, BOOL_COL, INT_COL, DOUBLE_COL, FLOAT_COL
---- DML_RESULTS: multiple_key_cols
'c',4,5,6,true,0,-1,0
---- TYPES
STRING,BIGINT,TINYINT,SMALLINT,BOOLEAN,INT,DOUBLE,FLOAT
====
---- QUERY
# IMPALA-3454: A delete that requires a rewrite may not get the Kudu column order correct
# if the Kudu columns are of different types.
create table impala_3454 (key_1 tinyint, key_2 bigint, PRIMARY KEY (key_1, key_2))
DISTRIBUTE BY HASH INTO 3 BUCKETS STORED AS KUDU
---- RESULTS
====
---- QUERY
insert into impala_3454 values
(1, 1),
(2, 2),
(3, 3)
---- RESULTS
: 3
====
---- QUERY
delete from impala_3454 where key_1 < (select max(key_2) from impala_3454)
---- RESULTS
---- RUNTIME_PROFILE
NumModifiedRows: 2
NumRowErrors: 0
====
---- QUERY
select * from impala_3454
---- RESULTS
3,3
---- TYPES
TINYINT,BIGINT
====