blob: a7d58a709f82d1fd5fdf91209e7f879b61773392 [file] [log] [blame]
-- @@@ START COPYRIGHT @@@
--
-- Licensed to the Apache Software Foundation (ASF) under one
-- or more contributor license agreements. See the NOTICE file
-- distributed with this work for additional information
-- regarding copyright ownership. The ASF licenses this file
-- to you under the Apache License, Version 2.0 (the
-- "License"); you may not use this file except in compliance
-- with the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing,
-- software distributed under the License is distributed on an
-- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-- KIND, either express or implied. See the License for the
-- specific language governing permissions and limitations
-- under the License.
--
-- @@@ END COPYRIGHT @@@
-- Tests for tinyint, largeint unsigned, binary datatypes
obey TEST003(clean_up);
log LOG003 clear;
cqd traf_tinyint_support 'ON';
cqd traf_tinyint_return_values 'ON';
cqd traf_tinyint_input_params 'ON';
obey TEST003(setup_tiny);
obey TEST003(dml_tiny);
obey TEST003(hive_tiny);
obey TEST003(errors_tiny);
cqd traf_tinyint_support 'ON';
cqd traf_tinyint_return_values 'OFF';
cqd traf_tinyint_input_params 'OFF';
obey TEST003(setup_tiny);
obey TEST003(dml_tiny);
obey TEST003(hive_tiny);
obey TEST003(errors_tiny);
cqd traf_largeint_unsigned_io 'ON';
cqd traf_create_signed_numeric_literal 'ON';
obey TEST003(setup_lu);
obey TEST003(dml_lu);
obey TEST003(errors_lu);
cqd traf_create_signed_numeric_literal 'OFF';
obey TEST003(setup_lu);
obey TEST003(dml_lu);
obey TEST003(errors_lu);
cqd traf_create_signed_numeric_literal 'ON';
cqd traf_largeint_unsigned_io 'OFF';
obey TEST003(setup_lu);
obey TEST003(dml_lu);
obey TEST003(errors_lu);
cqd traf_boolean_io 'ON';
obey TEST003(setup_bool);
obey TEST003(dml_bool);
obey TEST003(errors_bool);
obey TEST003(hive_bool);
cqd traf_boolean_io 'OFF';
obey TEST003(setup_bool);
obey TEST003(dml_bool_short);
log;
exit;
?section setup_tiny
-----------------------------------------------------------
-------------- TINYINT datatype ---------------------------
-----------------------------------------------------------
drop table if exists t003t1 cascade;
drop table if exists t003t1_like;
drop table if exists t003t1_as;
create table t003t1(a tinyint not null primary key, b tinyint,
c tinyint unsigned default 10 not null, d tinyint unsigned);
invoke t003t1;
create table t003t1_like like t003t1;
invoke t003t1_like;
create table t003t1_as primary key (a) as select * from t003t1;
invoke t003t1_as;
create view t003t1_view as select * from t003t1;
invoke t003t1_view;
?section dml_tiny
insert into t003t1 values (1, 2, 3, 4);
insert into t003t1 values (-1, -2, 255, 255);
insert into t003t1 values (-128, 127, 0, 0);
select * from t003t1;
insert into t003t1_as select * from t003t1;
select * from t003t1_as;
select * from t003t1 where a = 1;
select * from t003t1 where a = -1;
select * from t003t1 where a < 1;
select * from t003t1 where a <= -1;
select * from t003t1 where a < 1000;
select * from t003t1 where a < 100000;
select * from t003t1 where a > -1000;
select * from t003t1 where a > -100000;
select * from t003t1 where d = 4;
select * from t003t1 where d < -1;
select * from t003t1 where d < 1000;
select * from t003t1 where d > -1000;
select a+10 from t003t1 where a = 1 or a = -1;
select cast(100 as tinyint unsigned) from (values(1)) x(a);
select cast(-100 as tinyint) from (values(1)) x(a);
select cast(a as char(10)), cast (b as varchar(11)) from t003t1;
prepare s from insert into t003t1 values (?, ?, ?, ?);
execute s using -3, 10, 251, 0;
select * from t003t1;
begin work;
delete from t003t1 where b = -2;
select * from t003t1;
rollback work;
begin work;
update t003t1 set b = b + 1 where b <> 127;
select * from t003t1;
rollback work;
?section hive_tiny
process hive statement 'drop table ttiny';
process hive statement 'create table ttiny(a tinyint, b tinyint)';
sh echo "insert into ttiny values (1, -1);" > TEST003_junk;
sh regrhive.ksh -f TEST003_junk;
invoke hive.hive.ttiny;
select * from hive.hive.ttiny;
insert into hive.hive.ttiny values (127, 10), (-128, -50);
select * from hive.hive.ttiny;
insert overwrite table hive.hive.ttiny select a, b from t003t1;
select * from hive.hive.ttiny;
?section errors_tiny
update t003t1 set b = b + 1;
select cast(1.0 as numeric(1,1) not null) from (values(1)) x(a);
delete from t003t1;
insert into t003t1 values (128, 2, 3, 4);
insert into t003t1 values (2, -129, 3, 4);
insert into t003t1 values (3, 4, 256, 4);
insert into t003t1 values (4, 4, 256, -4);
select cast(-1 as tinyint unsigned) from (values(1)) x(a);
select cast(256 as tinyint unsigned) from (values(1)) x(a);
select cast(-129 as tinyint) from (values(1)) x(a);
select cast(128 as tinyint) from (values(1)) x(a);
prepare s from insert into t003t1 values (?, ?, ?, ?);
execute s using 128, 2, 3, 4;
execute s using 4, 4, 256, -4;
?section setup_lu
drop table if exists t003t2 cascade;
drop table if exists t003t2_like;
drop table if exists t003t2_as;
create table t003t2(a largeint unsigned not null primary key, b largeint unsigned);
invoke t003t2;
create table t003t2_like like t003t2;
invoke t003t2_like;
create table t003t2_as primary key(a) as select * from t003t2;
invoke t003t2_as;
create view t003t2_view as select * from t003t2;
invoke t003t2_view;
?section dml_lu
insert into t003t2 values (1, 2);
insert into t003t2 values (18446744073709551615, 18446744073709551615);
select * from t003t2;
insert into t003t2_as select * from t003t2;
select * from t003t2_as;
select * from t003t2 where a = 1;
select * from t003t2 where a = -1;
select * from t003t2 where a < 1;
select * from t003t2 where a <= -1;
select * from t003t2 where a < 1000;
select * from t003t2 where a > -1000;
select * from t003t2 where a = 18446744073709551615;
select * from t003t2 where b = 2;
select * from t003t2 where b < -1;
select * from t003t2 where b < 1000;
select * from t003t2 where b > -1000;
select * from t003t2 where b = 18446744073709551615;
select a, cast(cast(a as varchar(40)) as largeint unsigned) from t003t2;
select cast('-9223372036854775808' as largeint) from (values(1)) x(a);
select cast('-9223372036854775809' as largeint) from (values(1)) x(a);
select a+10 from t003t2 where a = 1 or a = -1;
select cast(100 as largeint unsigned) from (values(1)) x(a);
select cast(a as char(21)), cast (b as varchar(22)) from t003t2;
prepare s from insert into t003t2 values (?, ?);
execute s using 251, 0;
execute s using 11, 18446744073709551615;
select * from t003t2;
begin work;
delete from t003t2 where b = 1;
select * from t003t2;
rollback work;
begin work;
update t003t2 set b = b + 1 where b = 2;
select * from t003t2;
rollback work;
?section errors_lu
update t003t2 set b = b + 1;
delete from t003t2;
insert into t003t2 values (18446744073709551616, 2);
insert into t003t2 values (2, 18446744073709551616);
insert into t003t2 values (-1, 1);
select cast(-1 as largeint unsigned) from (values(1)) x(a);
select cast(18446744073709551616 as largeint unsigned) from (values(1)) x(a);
prepare s from insert into t003t2 values (?, ?);
execute s using 18446744073709551616, 2;
?section setup_bool
-----------------------------------------------------------
-------------- BOOLEAN datatype ---------------------------
-----------------------------------------------------------
drop table if exists t003t3 cascade;
drop table if exists t003t3_like;
drop table if exists t003t3_as;
create table if not exists t003t3(a boolean not null primary key, b boolean)
attribute aligned format;
invoke t003t3;
create table if not exists t003t3_like like t003t3;
invoke t003t3_like;
create table if not exists t003t3_as primary key (a) as select * from t003t3;
invoke t003t3_as;
create table if not exists t003t3_salt(a boolean not null primary key)
salt using 2 partitions;
invoke t003t3_salt;
create view t003t3_view as select * from t003t3;
invoke t003t3_view;
?section dml_bool
insert into t003t3 values (true, true);
insert into t003t3 values (false, false);
select * from t003t3;
insert into t003t3_as select * from t003t3;
select * from t003t3_as;
select * from t003t3 where a = true;
select * from t003t3 where a = false;
select * from t003t3 where b = true;
select * from t003t3 where b = false;
select * from t003t3 where a != true;
select * from t003t3 where a != false;
select * from t003t3 where b != true;
select * from t003t3 where b != false;
select * from t003t3 where a is null;
select * from t003t3 where b is not null;
select * from t003t3 where a = true or a = false;
select * from t003t3 where b = true or b = false;
select cast('true' as boolean) from (values(1)) x(a);
select cast(' faLse ' as boolean) from (values(1)) x(a);
select cast(true as boolean not null) from (values(1)) x(a);
select cast(false as boolean) from (values(1)) x(a);
select cast(a as char(10)), cast (b as varchar(11)) from t003t3;
delete from t003t3;
prepare s from insert into t003t3 values (?, ?);
execute s using true, true;
execute s using 'false', ' falSE ';
select * from t003t3;
select !a, !b from t003t3;
select * from t003t3 where !a = false;
update t003t3 set b = !b;
select * from t003t3;
begin work;
delete from t003t3 where b = false;
select * from t003t3;
rollback work;
select * from t003t3;
begin work;
update t003t3 set b = false where b != false;
select * from t003t3;
rollback work;
select * from t003t3;
?section hive_bool
process hive statement 'drop table tbool';
process hive statement 'create table tbool(a boolean)';
sh echo "insert into tbool values (true), (false), (NULL);" > TEST003_junk;
sh regrhive.ksh -f TEST003_junk;
invoke hive.hive.tbool;
select * from hive.hive.tbool;
insert into hive.hive.tbool values (false), (true), (null);
select * from hive.hive.tbool;
insert overwrite table hive.hive.tbool select a from t003t3;
select * from hive.hive.tbool;
?section errors_bool
update t003t3 set b = b + 1;
delete from t003t3;
insert into t003t3 values ('true', false);
insert into t003t3 values (1, true);
select cast(' truee' as boolean) from (values(1)) x(a);
prepare s from insert into t003t3 values (?, ?);
execute s using 1, 2;
?section dml_bool_short
insert into t003t3 values (true, true);
insert into t003t3 values (false, false);
select * from t003t3;
delete from t003t3;
prepare s from insert into t003t3 values (cast(? as boolean), cast(? as boolean));
execute s using true, true;
execute s using 'false', 'falSE';
select * from t003t3;
?section clean_up
drop view t003t1_view;
drop table t003t1 cascade;
drop table t003t1_like;
drop table t003t1_as;
drop view t003t2_view;
drop table t003t2 cascade;
drop table t003t2_like;
drop table t003t2_as;
drop view t003t3_view;
drop table t003t3 cascade;
drop table t003t3_like;
drop table t003t3_as;
drop table t003t3_salt;