mirror of
https://github.com/apache/impala.git
synced 2025-12-30 12:02:10 -05:00
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
371 lines
10 KiB
Plaintext
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
|
|
====
|