-- Test: TEST012
-- Functionality: This tests LONG VARCHAR CHARACTER SET UCS2 and LONGWVARCHAR data types
-- Expected files:   EXPECTED012
-- Tables created:   tlongvarchar0, tlongwvarchar0 and tlongwvarchar1
-- 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 @@@

drop table tlongvarchar0;
drop table tlongwvarchar0;
drop table tlongwvarchar1;

log LOG012 clear;

create table tlongvarchar0(a long varchar(10) character set ucs2);
create table tlongwvarchar0(a longwvarchar(50));
create table tlongwvarchar1(
                            a longwvarchar default _ucs2'good day', 
                            b longwvarchar default _ucs2'today', 
                            c int, d real)
#ifNSK
attribute blocksize 4096
#ifNSK
;


showddl tlongvarchar0;
showddl tlongwvarchar0;
invoke  tlongwvarchar1;

insert into tlongvarchar0 values(N'4356'), (_ucs2'today');
insert into tlongwvarchar0 values(N'4356'), (_ucs2'tomorrow');
insert into tlongwvarchar1 values(N'abc', N'4356', 1, 2), (_ucs2'today', _ucs2'tomorrow', 2, 3);
insert into tlongwvarchar1(c, d) values(1, 2);

select cast(_ucs2'abcd' as longwvarchar(20)) from (values(1))x;
select char_length(cast(_ucs2'abcd' as longwvarchar(20))) from (values(1))x;
select octet_length(cast(_ucs2'abcd' as longwvarchar(20))) from (values(1))x;
select char_length(cast(_ucs2'abcd' as longwvarchar)) from (values(1))x;

select a || _ucs2'_suffix' from tlongvarchar0;
select a || _ucs2'_suffix' from tlongwvarchar0;
select a || _ucs2'_suffix' from tlongwvarchar1;

update tlongwvarchar0 set a = _ucs2'the day after tomorrow';
update tlongwvarchar1 set a = _ucs2'the day after tomorrow';
delete from tlongwvarchar0;

-- test min/max values
control query default Min_LONG_VARCHAR_DEFAULT_SIZE '2';
control query default Min_LONG_VARCHAR_DEFAULT_SIZE '3';
control query default Min_LONG_WVARCHAR_DEFAULT_SIZE '4';
control query default Min_LONG_WVARCHAR_DEFAULT_SIZE '9';

control query default MAX_LONG_VARCHAR_DEFAULT_SIZE '11';
control query default MAX_LONG_VARCHAR_DEFAULT_SIZE '10';
control query default MAX_LONG_WVARCHAR_DEFAULT_SIZE '111';
control query default MAX_LONG_WVARCHAR_DEFAULT_SIZE '100';

-- A valid range must be maintained (i.e., MIN <= MAX). The following 
-- four CQD should fail
control query default MIN_LONG_VARCHAR_DEFAULT_SIZE '12';
control query default MIN_LONG_WVARCHAR_DEFAULT_SIZE '101';
control query default MAX_LONG_VARCHAR_DEFAULT_SIZE '2';
control query default MAX_LONG_WVARCHAR_DEFAULT_SIZE '6';

drop table tlongvarchar0;
drop table tlongwvarchar0;
drop table tlongwvarchar1;

log;


