blob: 0cd5e993713bc6892e42c784bfdc81b2534777b4 [file]
-- Test: TEST002
-- Functionality: This tests ISO88591-only string literal requirement.
-- (see fullstack2/test029 for examples on constraints)
-- Expected files: EXPECTED002
-- Tables created: t001 t002 t003 t004 t005 t006 t007 t008 t009 t010
-- t011 t012 t013 nt001 nt002 nt003 nt004 nt005 t006v nt007
-- nt008 nt009
-- Limitations: None
--
-- @@@ 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 @@@
?section ddl
obey test002(clnup);
log log002 clear;
--HEADING can only be character_string_literal without Phase I work
create table t001 (c char(10) HEADING 'MYHEADING');
create table t002 (c char(10) HEADING _ISO88591'MYISOHEADING');
create table t003 (c char(10) default 'asdf');
--default can be UCS2
create table t004 (c char(10) character set UCS2 default _UCS2'adf');
create table t005 (c char(10) check (c > 'aaaa'));
create table t006 (c char(10), check (c > 'aaaa'));
create table t007 (c char(10), constraint myc1 check (c > 'qwew'));
--UNIQUE constraint can be specified on UCS2 columns
create table t008 (c char(10) character set UCS2 NOT NULL,
d char(10) character set UCS2 NOT NULL,
primary key(c),
constraint myc5 unique(c,d));
--Referential Integrity on UCS2 colums
create table t009 (x char(10) character set UCS2, y int NOT NULL NOT DROPPABLE,
primary key(y),
foreign key(x) references $$TEST_SCHEMA$$.t008(c));
create table t010 (c char(10) character set UCS2);
--view can be defined on a UCS2 column
create view t010v2 as select c from t010;
--index can be created on a UCS2 column
create table t011(c char(10) character set UCS2, d char(10) character set UCS2);
create index t011i1 on t011(c,d);
--the COLLATION clause can be specified on the UCS2 or ISO88591 column
--and DEFAULT/BINARY is the only allowed collation
create table t012 (a char(10) character set ISO88591 COLLATE default,
b char(10) character set UCS2 COLLATE default);
create table nt001 (c char(10) HEADING _UCS2'MYUCS2HEADING');
create table nt002 (c char(10) character set UCS2 default _UCS2'default');
--UCS2 strings are NOW allowed in a constraint
create table nt003 (c char(10) character set UCS2 check (c > _UCS2'aaaa'));
--UCS2 strings are NOW allowed in a constraint
create table nt004 (c char(10) character set UCS2, check (c = _UCS2'aaaa'));
--UCS2 strings are NOW allowed in a constraint
create table nt005 (c char(10) character set UCS2, constraint myc2 check (c >
_UCS2'asdf'));
--no UCS2 strings in a view text
create view nt006v1 as select * from t013 where c > _UCS2'aaaa';
--no UCS2 strings in a trigger text
create table nt007 (d char(10) character set UCS2, i int);
--ok
create table nt008 (d char(10) character set UCS2, i int);
create trigger t013t1 after insert on nt008
update nt008 set i = 7 where i = 9;
--not ok
create trigger t013t2 after insert on nt008
update nt007 set d = _UCS2'qwer' where d = _UCS2'aaaa';
--no UCS2 strings in a FIRST KEY clause
create table nt009 (c char(10) character set UCS2)
partition (add first key (_UCS2'aaa') location $DATA);
--INFER_CHARSET works for default values in CREATE TABLE DDL
control query default infer_charset 'on';
create table t013(a char(10) character set ucs2 default 'aa');
create table t013a(a char(10));
invoke t013;
-- test INFER_CHARSET fixes:
-- test fix to genesis case 10-060317-2228
select *,case when a is null then 'A' else 'B' end as test_fld from t013;
-- select used to get error 4035
-- test fix to genesis case 10-060315-0580
select * from (values('A'),('B')) as t(c); -- used to get error 4035
-- test fix to case 10-081022-6724
prepare xx from insert into t013 select 'a' from t013a;
prepare xx from insert into t013 select 'a' from t013a group by 'a';
prepare xx from insert into t013 select 'a'||'b' from t013a;
control query default infer_charset 'off';
?section dml
?section clnup
drop table t001;
drop table t002;
drop table t003;
drop table t004;
drop table t005;
drop table t006;
drop table t007;
drop table t008 cascade;
drop table t009;
drop table t010 cascade;
drop table t011;
drop table t012;
drop table t013;
drop table t013a;
drop table nt001;
drop table nt002;
drop table nt003;
drop table nt004;
drop table nt005;
drop table nt007 cascade;
drop table nt008 cascade;
log;