blob: 28406d3b19441716d84b6b03ebbfdb94cdac7f29 [file] [log] [blame]
-- Test: TEST014
-- Functionality: This tests charset inference for UCS2 SQL texts.
-- Expected files: EXPECTED014
-- Tables created: taa, intv1, t014A, t014B
-- Limitations: None
-- Precondition: the shell variable UCS2_SQL_TEXT_DEBUG should be preset so that the
-- charset of the query is internally marked as UCS2. The setting for
-- running this query is done inside the script runregr_charsets.ksh.
--
-- @@@ 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 @@@
-- an existing bug causes process loop when infer_charset is ON
-- and query invalidation needs to remove entries from query cache.
-- Until this bug is fixed, turn query_cache OFF.
cqd query_cache '0';
obey TEST014(clnup);
log LOG014 clear;
obey TEST014(ddl);
obey TEST014(real_test);
obey TEST014(clnup);
log;
exit;
?section ddl
create table taa(a char(10), b char(10) character set ucs2);
create table intv1 (Column_IntervalYearToMonth interval year(3) to month default {interval
'100-10' year(3) to month}) ;
create table t014A
(i smallint UNSIGNED NO DEFAULT NOT NULL,
c CHAR(15) NOT NULL,
PRIMARY KEY (i
,c) NOT DROPPABLE
)
#ifndef SEABASE_REGRESS
HASH2 PARTITION BY (c)
#endif
;
CREATE TABLE t014B
(
i SMALLINT UNSIGNED NOT NULL
,c CHAR(15) NOT NULL
,PRIMARY KEY (i
,c
) NOT DROPPABLE
)
#ifndef SEABASE_REGRESS
HASH2 PARTITION BY (c)
#endif
;
CREATE VIEW t014VA AS SELECT * FROM t014A;
CREATE VIEW t014VB AS SELECT * FROM t014B;
create table t014c (a char(10) not casespecific, b char(10)) no partition;
?section real_test
control query default INFER_CHARSET 'on';
insert into taa values('long', 'river');
insert into taa values('mighty', 'mountain');
insert into taa values('socket', 'host');
select * from taa where B = 'mountain';
select * from taa where char_length(trim(B)) = 4;
-- should infer '163-11' as _iso88591'163-11'
insert into intv1(Column_IntervalYearToMonth)
values (cast ('163-11' as interval year(3) to month));
select * from intv1;
-- testing for solution 10-060719-7821
-- (NEO ODBC/MX fails to compile query with a literal in the select-list )
control query default odbc_process 'on';
SELECT DISTINCT va.i, 'C007I021', 1 FROM t014va va
LEFT JOIN t014vb vb ON va.c = vb.c ;
SELECT i, 'C007I021', 1 FROM t014a;
SELECT i, 'C007I021', 'abc' || 'cde' FROM t014a;
SELECT i, 'C007I021', _ucs2'abc' || 'cde' FROM t014a;
-- end testing solution
control query default odbc_process 'off';
control query default INFER_CHARSET 'off';
insert into taa values('long', 'river');
-- teseting for solution 10-070329-3662
-- (R2.1:NE: SELECT behaves incorrectly when CQD Infer_CharSet is TRUE in MX)
insert into t014c values ('a', 'a');
control query default infer_charset 'on';
-- expect 0 rows
select * from t014c where a = 'A';
-- expect 1 rows
select * from t014c where a = 'A' (not casespecific);
-- expect 1 rows
select * from t014c;
control query default infer_charset 'off';
-- expect 0 rows
select * from t014c where a = 'A';
-- expect 1 rows
select * from t014c where a = 'A' (not casespecific);
-- expect 1 rows
select * from t014c;
-- end testing solution
?section clnup
drop table taa;
drop table intv1;
drop table t014A cascade;
drop table t014B cascade;
drop table t014c ;