Files
impala/testdata/workloads/functional-query/queries/QueryTest/kudu_update.test
Attila Bukor 2576952655 IMPALA-5092 Add support for VARCHAR in Kudu tables
KUDU-1938 added VARCHAR column type support to Kudu.
This commit adds support for Kudu's VARCHAR type to Impala.

The length of a Kudu varchar is applied as a character length as opposed
to a byte length like Impala currently uses.

When writing data to Kudu, the VARCHAR length is not an issue because
Impala only officially supports ASCII characters and those characters are
the same size in bytes and characters. Additionally, extra bytes would be
truncated by the Kudu client if somehow a value was too long.

When reading data from Kudu, it is possible that the value written by
some other application is wider in bytes than Impala expects and can
handle. This can happen due to multi-byte UTF-8 characters. In that
case, we adjust the length in Impala to truncate the extra bytes of the
value. This isn’t a great solution, but one other integrations have taken
as well given Impala doesn’t support UTF-8 values.

IMPALA-5675 tracks adding UTF-8 Character length support to VARCHAR
columns and marked the truncation code with a TODO that references
that Jira.

Testing:
* Performed manual testing of standard DDL and DML interaction
* Manually reproduced a check failure due to multi-byte characters
  and tested that length truncation resolve that issue.
* Added/adjusted the following automated tests:
** AnalyzeDDLTest: CTAS into Kudu with varchar type
** AnalyzeKuduDDLTest: CREATE TABLE in Kudu with VARCHAR type
** kudu_create.test: Create table with VARCHAR column, key, hash
   partition, and range partition
** kudu_describe.test: Describe table with VARCHAR column and key
** kudu_insert.test: Insert with VARCHAR columns including null and
   non-null defaults
** kudu_update.test: Updates with VARCHAR column
** kudu_upsert.test: Upserts with VARCHAR column
** kudu_delete.test Deletes with VARCHAR columns
** kudu-scan-node.test Tests basic predicates with VARCHAR columns

Follow on work:
- IMPALA-9580: Add min-max runtime filter support/tests
- IMPALA-9581: Pushdown string predicates
- IMPALA-9583: Automated multibyte truncation tests

Change-Id: I0d4959410fdd882bfa980cb55e8a7837c7823da8
Reviewed-on: http://gerrit.cloudera.org:8080/14197
Tested-by: Impala Public Jenkins <impala-public-jenkins@cloudera.com>
Reviewed-by: Thomas Tauber-Marshall <tmarshall@cloudera.com>
2020-04-01 15:48:36 +00:00

361 lines
16 KiB
Plaintext

====
---- QUERY
create table tdata
(id int primary key, name string null, valf float null, vali bigint null,
valv string null, valb boolean null, valt tinyint null, vals smallint null,
vald double null, valdec4 decimal(9,9) null, valdec8 decimal(18,2) null,
valdec16 decimal(38, 0) null, valdate date null, valvc varchar(10) null)
PARTITION BY RANGE (PARTITION VALUES < 10, PARTITION 10 <= VALUES < 30,
PARTITION 30 <= VALUES <= 10000) STORED AS KUDU
---- RESULTS
'Table has been created.'
====
---- QUERY
insert into tdata values
(1, "martin", 1.0, 232232323, cast('a' as string), true, 1, 2, 3, 0.000000001, 2.22, 3, DATE '1970-01-01', cast('martin' as varchar(10))),
(2, "david", cast(1.0 as float), 99398493939, cast('b' as string), false, 4, 5, 6, 0.000000004, 5.55, 6, DATE '1970-01-02', cast('david' as varchar(10))),
(3, "todd", cast(1.0 as float), 993393939, "c", true, 7, 8, 9, 0.000000007, 8.88, 9,DATE '1970-01-03', cast('todd' as varchar(10))),
(40, "he", cast(0.0 as float), 43, cast('e' as string), false, 50, 60, 70, 0.000000050, 66.60, 70, DATE '1970-01-04', cast('he' as varchar(10))),
(120, "she", cast(0.0 as float), 99, cast('f' as string), true, -1, 0, 1, -0.000000001, 0.00, 1, DATE '1970-01-05', cast('she' as varchar(10)))
---- RESULTS
: 5
---- RUNTIME_PROFILE
NumModifiedRows: 5
NumRowErrors: 0
====
---- QUERY
# single row, equality on key, bigint
# TODO: Verify row count in RESULTS after fixing IMPALA-3713, and supporting RESULTS and
# DML_RESULTS in the same test case.
update tdata set vali=43 where id = 1
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'martin',1.0,43,'a',true,1,2,3,0.000000001,2.22,3,1970-01-01,'martin'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, equality on key, string
# Try updating a string col where casting a value that is bigger than the varchar in the
# cast. The value gets truncated and stored to the string col.
update tdata set valv=cast('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as varchar(20)) where id = 1
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',true,1,2,3,0.000000001,2.22,3,1970-01-01,'martin'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, equality on key, boolean
update tdata set valb=false where id = 1
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'martin'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, equality on key, set to NULL
update tdata set name=null, valvc=null where id = 40
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'martin'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9,1970-01-03,'todd'
40,'NULL',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'NULL'
120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, equlity on key, set from NULL
update tdata set name='he', valvc=cast('he' as varchar(10)) where id = 40
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'martin'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,99,'f',true,-1,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, equality on key, boundary value
update tdata set vali = max_bigint() where id = 120
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'martin'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',true,-1,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, inequality on key, float
update tdata set valf = -1 where id > 2 and id < 4
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'martin'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',-1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',true,-1,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, inequality on key, tinyint
update tdata set valt = 10 where id > 100
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'martin',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'martin'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',-1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',true,10,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, equality on non-key, string
update tdata set name='unknown', valvc=cast('unknown' as varchar(10)) where name = 'martin'
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'unknown'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',-1.0,993393939,'c',true,7,8,9,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',true,10,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, inequality on non-key, double
update tdata set vald = 0 where valf < 0
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'unknown'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',-1.0,993393939,'c',true,7,8,0,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',true,10,0,1,-0.000000001,0.00,1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# single row, inequality on non-key, decimal
update tdata set valdec4 = 0.000000001, valdec16 = -1 where valdec4 < 0
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'unknown'
2,'david',1.0,99398493939,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',-1.0,993393939,'c',true,7,8,0,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',true,10,0,1,0.000000001,0.00,-1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# multiple rows, predicate on key
update tdata set vali=43 where id > 1 and id < 10
---- RUNTIME_PROFILE
NumModifiedRows: 2
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'unknown'
2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',true,10,0,1,0.000000001,0.00,-1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# multiple rows, predicate on non-key
update tdata set valb=false where name LIKE '%he'
---- RUNTIME_PROFILE
NumModifiedRows: 2
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'unknown',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'unknown'
2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# update the same row multiple times: cross join produces 5 identical updates
update a set a.name='they', a.valvc=cast('they' as varchar(10)) from tdata a, tdata b where a.id = 1
---- RUNTIME_PROFILE
NumModifiedRows: 5
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'they',1.0,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'they'
2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# value of update is a constant expression
update tdata set valf = 1 + 2 where id = 1
---- RUNTIME_PROFILE
NumModifiedRows: 1
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'they',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'they'
2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'todd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9,1970-01-03,'todd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# value of update is a non-constant expression
update tdata set name = concat(name, name), valvc = cast(concat(valvc, valvc) as varchar(10)) where id % 2 = 1
---- RUNTIME_PROFILE
NumModifiedRows: 2
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'theythey',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'theythey'
2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'toddtodd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9,1970-01-03,'toddtodd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# error - update key column
update tdata set id = 0 where name = 'he'
---- CATCH
Key column 'id' cannot be updated.
====
---- QUERY
# no rows updated
update tdata set name = 'none' where id = 10
---- RUNTIME_PROFILE
NumModifiedRows: 0
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'theythey',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'theythey'
2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'toddtodd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9,1970-01-03,'toddtodd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
# Try to update 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.
update tdata set vali = 10 where id = 10001
---- RUNTIME_PROFILE
NumModifiedRows: 0
NumRowErrors: 0
---- LABELS
ID, NAME, VALF, VALI, VALV, VALB, VALT, VALS, VALD, VALDEC4, VALDEC8, VALDEC16, VALDATE, VALVC
---- DML_RESULTS: tdata
1,'theythey',3,43,'aaaaaaaaaaaaaaaaaaaa',false,1,2,3,0.000000001,2.22,3,1970-01-01,'theythey'
2,'david',1.0,43,'b',false,4,5,6,0.000000004,5.55,6,1970-01-02,'david'
3,'toddtodd',-1.0,43,'c',true,7,8,0,0.000000007,8.88,9,1970-01-03,'toddtodd'
40,'he',0.0,43,'e',false,50,60,70,0.000000050,66.60,70,1970-01-04,'he'
120,'she',0.0,9223372036854775807,'f',false,10,0,1,0.000000001,0.00,-1,1970-01-05,'she'
---- TYPES
INT,STRING,FLOAT,BIGINT,STRING,BOOLEAN,TINYINT,SMALLINT,DOUBLE,DECIMAL,DECIMAL,DECIMAL,DATE,STRING
====
---- QUERY
insert into tdata
select id, string_col, float_col, bigint_col, string_col, bool_col, tinyint_col,
smallint_col, double_col, NULL, NULL, NULL, NULL, NULL from functional_kudu.alltypes
---- RESULTS
: 7295
---- RUNTIME_PROFILE
NumModifiedRows: 7295
NumRowErrors: 5
====
---- QUERY
# Test a larger UPDATE
update tdata set vali = -1
---- RESULTS
---- RUNTIME_PROFILE
NumModifiedRows: 7300
NumRowErrors: 0
====