blob: 5719fcf9813313c4ce60e5843db73d09edf167be [file]
-- Test: TEST315
-- Functionality: This tests the handling of 3-byte UTF8 characters
-- Expected files: EXPECTED315
-- Tables created: cs315t*
-- 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 @@@
--set terminal_charset utf8; -- NOT on SeaQuest
--set session default iso_mapping 'UTF8'; -- NOT on SeaQuest
obey test315(clnup);
log log315 clear;
obey test315(ddl);
obey test315(Three_Byte_tests);
obey test315(clnup);
log;
exit;
?section ddl
create schema cs315s;
set schema cs315s;
?section Three_Byte_tests
select converttohex(cast( x'E0 A0 A1 E0 A0 A2 E0 A0 A3' as char(8))) from (values(0))x;
select converttohex(cast(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3' as char(8 BYTES) character set utf8)) from (values(0))x;
select converttohex(cast( x'E0 A0 A1 E0 A0 A2 E0 A0 A3' as char(9))) from (values(0))x;
select converttohex(cast(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3' as char(9 BYTES) character set utf8)) from (values(0))x;
select converttohex(cast( x'E0 A0 A1 E0 A0 A2 E0 A0 A3' as char(12))) from (values(0))x;
select converttohex(cast(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3' as char(12 BYTES) character set utf8)) from (values(0))x;
--
set terminal_charset gbk;
select cast(_ucs2 x'515c515c515c515c' as char(11 bytes) character set utf8) from (values(1))t;
select cast(_ucs2 x'515c515c515c515c' as char(12 bytes) character set utf8) from (values(1))t;
select cast(_ucs2 x'515c515c515c515c' as char(3 ) character set utf8) from (values(1))t;
select cast(_ucs2 x'515c515c515c515c' as char(4 ) character set utf8) from (values(1))t;
select cast(_ucs2 x'515c515c515c515c0020' as char(12 bytes) character set utf8) from (values(1))t;
select cast(_ucs2 x'515c515c515c515c0020' as char(13 bytes) character set utf8) from (values(1))t;
select cast(_ucs2 x'515c515c515c515c0020' as char(4 ) character set utf8) from (values(1))t;
select cast(_ucs2 x'515c515c515c515c0020' as char(5 ) character set utf8) from (values(1))t;
--
select octet_length(cast(_ucs2 x'515c515c515c515c' as char(11 bytes) character set utf8)), converttohex(cast(_ucs2 x'515c515c515c515c' as char(11 bytes) character set utf8)) from (values(1))t;
select octet_length(cast(_ucs2 x'515c515c515c515c' as char(13 bytes) character set utf8)), converttohex(cast(_ucs2 x'515c515c515c515c' as char(13 bytes) character set utf8)) from (values(1))t;
select octet_length(cast(_ucs2 x'515c515c515c515c' as char(3 ) character set utf8)), converttohex(cast(_ucs2 x'515c515c515c515c' as char(3 ) character set utf8)) from (values(1))t;
select octet_length(cast(_ucs2 x'515c515c515c515c' as char(5 ) character set utf8)), converttohex(cast(_ucs2 x'515c515c515c515c' as char(5 ) character set utf8)) from (values(1))t;
set terminal_charset iso88591;
--
select converttohex(x'E0 A0 A1' || _utf8 x'E0 A0 A1') from (values(0))x;
select 'BAD' from (values(0))x where x'E0 A0 A1' = _utf8 x'E0 A0 A1';
select 'OK ' from (values(0))x where x'E0 A0 A1' != _utf8 x'E0 A0 A1';
select converttohex(substr( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4',1,3)) from (values(0))x;
select converttohex(substr(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4',1,3)) from (values(0))x;
select converttohex(substr( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4',2,2)) from (values(0))x;
select converttohex(substr(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4',2,2)) from (values(0))x;
select converttohex(insert( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 2, 0, 'Z')) from (values(0))x;
select converttohex(insert(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 2, 0, 'Z')) from (values(0))x;
select converttohex(insert( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 2, 2, 'Z')) from (values(0))x;
select converttohex(insert(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 2, 2, 'Z')) from (values(0))x;
select converttohex(replace( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', x'E0 A0 A2', x'E0 A3 A7')) from (values(0))x;
select converttohex(replace(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', x'E0 A0 A2', x'E0 A3 A7')) from (values(0))x;
select converttohex(replace(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', _utf8 x'E0 A0 A2', x'E0 A3 A7')) from (values(0))x;
select converttohex(replace(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', _utf8 x'E0 A0 A2', _utf8 x'E0 A3 A7')) from (values(0))x;
select CODE_VALUE( _utf8 x'20 20 21 E0 A0 A2 E0 A0 A3 E0 A0 A4') from (values(0))x;
select CODE_VALUE( _utf8 x'C9 A0 20 E0 A0 A2 E0 A0 A3 E0 A0 A4') from (values(0))x;
select CODE_VALUE( _utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4') from (values(0))x;
select CODE_VALUE( _utf8 x'F7 BF BF BF 20 E0 A0 A2 E0 A0 A3' ) from (values(0))x;
select case when _utf8 x'E0 A0 A1' = CHAR(CODE_VALUE(_utf8 x'E0 A0 A1'),UTF8) then 'GOOD' else 'BAD' end from (values(0))x;
select converttohex(LOWER( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4')) from (values(0))x;
select converttohex(LOWER(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4')) from (values(0))x;
select converttohex(UPPER( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4')) from (values(0))x;
select converttohex(UPPER(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4')) from (values(0))x;
select converttohex(UPPER(_ucs2 x'1FF7 1FCC FB04')) from (values(0))x;
select converttohex(UPPER(TRANSLATE(_ucs2 x'1FF7 1FCC FB04' USING UCS2toUTF8))) from (values(0))x;
select * from (values(1))x where UPPER(_ucs2 x'1FF7 1FCC FB04') = UPPER(TRANSLATE(_ucs2 x'1FF7 1FCC FB04' USING UCS2toUTF8));
select converttohex(LEFT( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4',3)) from (values(0))x;
select converttohex(LEFT(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4',3)) from (values(0))x;
select converttohex(RIGHT( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4',3)) from (values(0))x;
select converttohex(RIGHT(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4',3)) from (values(0))x;
select converttohex(LPAD( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 15, x'E1 A1 A1')) from (values(0))x;
select converttohex(LPAD(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 15, x'E1 A1 A1')) from (values(0))x;
select converttohex(LPAD(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 15, _utf8 x'E1 A1 A1')) from (values(0))x;
create table cs315t99 (c1 varchar(10) character set utf8, c2 char(10) character set utf8) no partition;
insert into cs315t99 values(_UTF8 x'E4B8ADE59BAF', _UTF8 x'E4B8ADE59BAF');
select LPAD(c1,0,_utf8'z') from cs315t99;
select LPAD(c2,0,_utf8'z') from cs315t99;
select RPAD(c1,0,_utf8'z') from cs315t99;
select RPAD(c2,0,_utf8'z') from cs315t99;
select LPAD(c1,2,_utf8'z') from cs315t99;
select LPAD(c2,2,_utf8'z') from cs315t99;
select RPAD(c1,2,_utf8'z') from cs315t99;
select RPAD(c2,2,_utf8'z') from cs315t99;
select LPAD(c1,3,_utf8'z') from cs315t99;
select LPAD(c2,3,_utf8'z') from cs315t99;
select RPAD(c1,3,_utf8'z') from cs315t99;
select RPAD(c2,3,_utf8'z') from cs315t99;
select LPAD(c1,5,_utf8'ab') from cs315t99;
select LPAD(c2,5,_utf8'ab') from cs315t99;
select RPAD(c1,5,_utf8'ab') from cs315t99;
select RPAD(c2,5,_utf8'ab') from cs315t99;
select RPAD(c1,13,_utf8'ab') from cs315t99;
select RPAD(c2,13,_utf8'ab') from cs315t99;
select converttohex(RPAD( x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 15, x'E1 A1 A1')) from (values(0))x;
select converttohex(RPAD(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 15, x'E1 A1 A1')) from (values(0))x;
select converttohex(RPAD(_utf8 x'E0 A0 A1 E0 A0 A2 E0 A0 A3 E0 A0 A4', 15, _utf8 x'E1 A1 A1')) from (values(0))x;
select DECODE(x'E0 A0 A1', _utf8 x'E0 A0 A1', 'BAD',
'E0 A0 A1', 'BAD',
substr(x'E0 A0 A2 E0 A0 A1',4,3), 'GOOD')
from (values(0))x;
select DECODE(_utf8 x'E0 A0 A1', x'E0 A0 A1', 'BAD',
substr(x'E0 A0 A2 E0 A0 A1',2,1), 'BAD',
substr(_utf8 x'E0 A0 A2 E0 A0 A1',2,1), 'GOOD')
from (values(0))x;
select converttohex(TRANSLATE('abcdefgh' || _utf8 x'E0A0A0' using UTF8toUCS2)) from (values(0))x;
--
-- Both of the following should get error at runtime because TRANSLATION encounters non-ISO88591 char
--
select converttohex(TRANSLATE(TRANSLATE('abcdefgh' || _utf8 x'E0A0A0' using UTF8toUCS2) using UCS2toISO88591)) from (values(0))x;
select converttohex(TRANSLATE('abcdefgh' || _utf8 x'E0A0A0' using UTF8toISO88591)) from (values(0))x;
create table cs315t1 (uf8 char(8) character set utf8, uf8v varchar(8) character set utf8) no partition;
insert into cs315t1 values(_utf8 x'E0A0A0E0A0A0E0A0A0' _utf8'zz' _utf8 x'E0A0A0E0A0A0E0A0A0',
_utf8 x'E0A0A0E0A0A0E0A0A0' _utf8'zz' _utf8 x'E0A0A0E0A0A0E0A0A0');
select char_length( TRIM(_utf8 x'E0A0A0' FROM uf8)),
octet_length(TRIM(_utf8 x'E0A0A0' FROM uf8)),
converttohex(TRIM(_utf8 x'E0A0A0' FROM uf8)) from cs315t1 order by 1,2,3;
select char_length( TRIM(_utf8 x'E0A0A0' FROM uf8v)),
octet_length(TRIM(_utf8 x'E0A0A0' FROM uf8v)),
converttohex(TRIM(_utf8 x'E0A0A0' FROM uf8v)) from cs315t1 order by 1,2,3;
select char_length( TRIM(LEADING _utf8 x'E0A0A0' FROM uf8)),
octet_length(TRIM(LEADING _utf8 x'E0A0A0' FROM uf8)),
converttohex(TRIM(LEADING _utf8 x'E0A0A0' FROM uf8)) from cs315t1 order by 1,2,3;
select char_length( TRIM(LEADING _utf8 x'E0A0A0' FROM uf8v)),
octet_length(TRIM(LEADING _utf8 x'E0A0A0' FROM uf8v)),
converttohex(TRIM(LEADING _utf8 x'E0A0A0' FROM uf8v)) from cs315t1 order by 1,2,3;
select char_length( TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8)),
octet_length(TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8)),
converttohex(TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8)) from cs315t1 order by 1,2,3;
select char_length( TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8v)),
octet_length(TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8v)),
converttohex(TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8v)) from cs315t1 order by 1,2,3;
--
create table cs315t2 (uf8 char(10) character set utf8, uf8v varchar(10) character set utf8) no partition;
insert into cs315t2 values(_utf8 x'E0A0A0E0A0A0E0A0A0' _utf8'zz' _utf8 x'E0A0A0E0A0A0E0A0A0',
_utf8 x'E0A0A0E0A0A0E0A0A0' _utf8'zz' _utf8 x'E0A0A0E0A0A0E0A0A0');
select char_length( TRIM(_utf8 x'E0A0A0' FROM uf8)),
octet_length(TRIM(_utf8 x'E0A0A0' FROM uf8)),
converttohex(TRIM(_utf8 x'E0A0A0' FROM uf8)) from cs315t2 order by 1,2,3;
select char_length( TRIM(_utf8 x'E0A0A0' FROM uf8v)),
octet_length(TRIM(_utf8 x'E0A0A0' FROM uf8v)),
converttohex(TRIM(_utf8 x'E0A0A0' FROM uf8v)) from cs315t2 order by 1,2,3;
select char_length( TRIM(LEADING _utf8 x'E0A0A0' FROM uf8)),
octet_length(TRIM(LEADING _utf8 x'E0A0A0' FROM uf8)),
converttohex(TRIM(LEADING _utf8 x'E0A0A0' FROM uf8)) from cs315t2 order by 1,2,3;
select char_length( TRIM(LEADING _utf8 x'E0A0A0' FROM uf8v)),
octet_length(TRIM(LEADING _utf8 x'E0A0A0' FROM uf8v)),
converttohex(TRIM(LEADING _utf8 x'E0A0A0' FROM uf8v)) from cs315t2 order by 1,2,3;
select char_length( TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8)),
octet_length(TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8)),
converttohex(TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8)) from cs315t2 order by 1,2,3;
select char_length( TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8v)),
octet_length(TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8v)),
converttohex(TRIM(TRAILING _utf8 x'E0A0A0' FROM uf8v)) from cs315t2 order by 1,2,3;
create table cs315t3 (trimc char(1) character set utf8, uf8 char(8) character set utf8, uf8v varchar(8) character set utf8) no partition;
insert into cs315t3 values(_utf8 x'E0A0A0',
_utf8 x'E0A0A0E0A0A0E0A0A0' _utf8'zz' _utf8 x'E0A0A0E0A0A0E0A0A0',
_utf8 x'E0A0A0E0A0A0E0A0A0' _utf8'zz' _utf8 x'E0A0A0E0A0A0E0A0A0');
insert into cs315t3 values(_utf8 x'E0A0A0',
_utf8 x'E0A0A0' _utf8' 333' _utf8 x'E0A0A0E0A0A0E0A0A0',
_utf8 x'E0A0A0' _utf8' 333' _utf8 x'E0A0A0E0A0A0E0A0A0');
insert into cs315t3 values(_utf8 x'E0A0A0',
_utf8 x'E0A0A0' _utf8' 444' _utf8 x'E0A0A0' _utf8 x'2020',
_utf8 x'E0A0A0' _utf8' 444' _utf8 x'E0A0A0' _utf8 x'2020');
insert into cs315t3 values(_utf8' ',
_utf8' 555555 ',
_utf8' 555555 ');
insert into cs315t3 values(_utf8 x'F7BFBFBF',
_utf8 x'F7BFBFBFF7BFBFBFF7BFBFBF' _utf8'66' _utf8 x'F7BFBFBFF7BFBFBFF7BFBFBF',
_utf8 x'F7BFBFBFF7BFBFBFF7BFBFBF' _utf8'66' _utf8 x'F7BFBFBFF7BFBFBFF7BFBFBF');
insert into cs315t3 values(_utf8 x'F7BFBFBF',
_utf8 x'F7BFBFBF' _utf8' 77' _utf8 x'F7BFBFBFF7BFBFBF' _utf8 x'20',
_utf8 x'F7BFBFBF' _utf8' 77' _utf8 x'F7BFBFBFF7BFBFBF' _utf8 x'20');
select char_length( TRIM( trimc from uf8 ) ),
octet_length( TRIM( trimc from uf8 ) ),
converttohex( TRIM( trimc from uf8 ) ) from cs315t3 order by 1,2,3;
select char_length( TRIM( trimc from uf8v ) ),
octet_length( TRIM( trimc from uf8v ) ),
converttohex( TRIM( trimc from uf8v ) ) from cs315t3 order by 1,2,3;
select char_length( TRIM( LEADING trimc from uf8 ) ),
octet_length( TRIM( LEADING trimc from uf8 ) ),
converttohex( TRIM( LEADING trimc from uf8 ) ) from cs315t3 order by 1,2,3;
select char_length( TRIM( LEADING trimc from uf8v ) ),
octet_length( TRIM( LEADING trimc from uf8v ) ),
converttohex( TRIM( LEADING trimc from uf8v ) ) from cs315t3 order by 1,2,3;
select char_length( TRIM( TRAILING trimc from uf8 ) ),
octet_length( TRIM( TRAILING trimc from uf8 ) ),
converttohex( TRIM( TRAILING trimc from uf8 ) ) from cs315t3 order by 1,2,3;
select char_length( TRIM( TRAILING trimc from uf8v ) ),
octet_length( TRIM( TRAILING trimc from uf8v ) ),
converttohex( TRIM( TRAILING trimc from uf8v ) ) from cs315t3 order by 1,2,3;
--
-- Now try with CHAR(32 BYTES) CHARACTER SET UTF8
--
create table cs315t4 (trimc char(1) character set utf8, uf8 char(32 BYTES) character set utf8, uf8v varchar(32 BYTES) character set utf8) no partition;
insert into cs315t4 values(_utf8 x'E0A0A0',
_utf8 x'E0A0A0E0A0A0E0A0A0' _utf8'zz' _utf8 x'E0A0A0E0A0A0E0A0A0',
_utf8 x'E0A0A0E0A0A0E0A0A0' _utf8'zz' _utf8 x'E0A0A0E0A0A0E0A0A0');
insert into cs315t4 values(_utf8 x'E0A0A0',
_utf8 x'E0A0A0' _utf8' 333' _utf8 x'E0A0A0E0A0A0E0A0A0',
_utf8 x'E0A0A0' _utf8' 333' _utf8 x'E0A0A0E0A0A0E0A0A0');
insert into cs315t4 values(_utf8 x'E0A0A0',
_utf8 x'E0A0A0' _utf8' 444' _utf8 x'E0A0A0' _utf8 x'2020',
_utf8 x'E0A0A0' _utf8' 444' _utf8 x'E0A0A0' _utf8 x'2020');
insert into cs315t4 values(_utf8' ',
_utf8' 777777 ',
_utf8' 777777 ');
insert into cs315t4 values(_utf8 x'F7BFBFBF',
_utf8 x'F7BFBFBFF7BFBFBFF7BFBFBF' _utf8'33' _utf8 x'F7BFBFBFF7BFBFBFF7BFBFBF',
_utf8 x'F7BFBFBFF7BFBFBFF7BFBFBF' _utf8'33' _utf8 x'F7BFBFBFF7BFBFBFF7BFBFBF');
insert into cs315t4 values(_utf8 x'F7BFBFBF',
_utf8 x'F7BFBFBF' _utf8' 55' _utf8 x'F7BFBFBFF7BFBFBF' _utf8 x'20',
_utf8 x'F7BFBFBF' _utf8' 55' _utf8 x'F7BFBFBFF7BFBFBF' _utf8 x'20');
select char_length( TRIM( trimc from uf8 ) ),
octet_length( TRIM( trimc from uf8 ) ),
converttohex( TRIM( trimc from uf8 ) ) from cs315t4 order by 1,2,3;
select char_length( TRIM( trimc from uf8v ) ),
octet_length( TRIM( trimc from uf8v ) ),
converttohex( TRIM( trimc from uf8v ) ) from cs315t4 order by 1,2,3;
select char_length( TRIM( LEADING trimc from uf8 ) ),
octet_length( TRIM( LEADING trimc from uf8 ) ),
converttohex( TRIM( LEADING trimc from uf8 ) ) from cs315t4 order by 1,2,3;
select char_length( TRIM( LEADING trimc from uf8v ) ),
octet_length( TRIM( LEADING trimc from uf8v ) ),
converttohex( TRIM( LEADING trimc from uf8v ) ) from cs315t4 order by 1,2,3;
select char_length( TRIM( TRAILING trimc from uf8 ) ),
octet_length( TRIM( TRAILING trimc from uf8 ) ),
converttohex( TRIM( TRAILING trimc from uf8 ) ) from cs315t4 order by 1,2,3;
select char_length( TRIM( TRAILING trimc from uf8v ) ),
octet_length( TRIM( TRAILING trimc from uf8v ) ),
converttohex( TRIM( TRAILING trimc from uf8v ) ) from cs315t4 order by 1,2,3;
-- tests for REVERSE function on single and multibyte characters
select char_length(reverse('abc')) from dual;
select reverse('abc') from dual;
select char_length(reverse('')) from dual;
select reverse('') from dual;
select char_length(reverse(cast('abc' as varchar(10)))) from dual;
select reverse(cast('abc' as varchar(10))) from dual;
select char_length(_utf8 x'C3B6C3BAC3BBE0A0A0') from dual;
select converttohex(_utf8 x'C3B6C3BAC3BBE0A0A0') from dual;
select char_length(reverse(_utf8 x'C3B6C3BAC3BBE0A0A0')) from dual;
select converttohex(reverse(_utf8 x'C3B6C3BAC3BBE0A0A0')) from dual;
select char_length(cast(_utf8 x'C3B6C3BAC3BBE0A0A0' as varchar(10))) from dual;
select converttohex(cast(_utf8 x'C3B6C3BAC3BBE0A0A0' as varchar(10))) from dual;
select char_length(reverse(cast(_utf8 x'C3B6C3BAC3BBE0A0A0' as varchar(10)))) from dual;
select converttohex(reverse(cast(_utf8 x'C3B6C3BAC3BBE0A0A0' as varchar(10)))) from dual;
select char_length('abc' || _utf8 x'C3B6C3BAC3BBE0A0A0') from dual;
select converttohex('abc' || _utf8 x'C3B6C3BAC3BBE0A0A0') from dual;
select char_length(reverse('abc' || _utf8 x'C3B6C3BAC3BBE0A0A0')) from dual;
select converttohex(reverse('abc' || _utf8 x'C3B6C3BAC3BBE0A0A0')) from dual;
select char_length(_ucs2 x'515a515b515c515d') from dual;
select converttohex(_ucs2 x'515a515b515c515d') from dual;
select char_length(reverse(_ucs2 x'515a515b515c515d')) from dual;
select converttohex(reverse(_ucs2 x'515a515b515c515d')) from dual;
-- tests for OVERLAY function
select overlay('w1234567xyz' placing 'abcde' from 3) from dual;
select overlay('w1234567xyz' placing 'abcde' from 3 for 4) from dual;
select overlay('w1234567xyz' placing 'abcde' from 3 for 5) from dual;
select overlay('w1234567xyz' placing 'abcde' from 3 for 6) from dual;
select overlay('w1234567xyz' placing 'abcde' from 30 for 6) from dual;
select overlay(cast(NULL as char(10)) placing 'abcde' from 30 for 6) from dual;
select converttohex(overlay (uf8 placing uf8v from 4 for 2)) from cs315t4;
select converttohex(overlay(_utf8 x'C3B6C3BAC3BBE0A0A0' placing _UTF8 x'C3B6' from 2 for 2)) from dual;
select stuff ('abcdefg', 3, 4, 'xy') from dual;
select stuff ('abcdefg', 1, 0, 'xy') from dual;
select unhex(hex((overlay(to_binary('abcdefg') placing to_binary('wx') from 2 for 3)))) from dual;
select unhex(hex((overlay(to_binary('abcdefg') placing 'wx' from 2 for 3)))) from dual;
-- OVERLAY error cases
select overlay('w1234567xyz' placing 'abcde' from 1.2 for 4) from dual;
select overlay('w1234567xyz' placing 'abcde' from 1 for 4.1) from dual;
select overlay('w1234567xyz' placing 'abcde' from 'a' for 4) from dual;
select stuff ('abcdefg', -1, 4, 'xy') from dual;
select overlay(1 placing 'abcde' from 1 for 4) from dual;
select overlay('xy' placing 'abcde' from -1 for 4) from dual;
select overlay('xy' placing 'abcde' from 0 for -4) from dual;
?section clnup
drop schema cs315s cascade;