-- @@@ 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 cleanup command

set schema trafodion.sch026;
cleanup table t026t0;
cleanup index t026t1i1;
cleanup table t026t1;
cleanup schema sch026;
create schema sch026;
cleanup metadata;

log LOG026 clear;

drop table if exists t026t0;
drop table if exists t026t1 cascade;

create table t026t0 (a int not null primary key);
create table t026t1 (a int not null primary key, b int not null);
create index t026t1i1 on t026t1(b);

set parserflags 131072;
update "_MD_".objects set valid_def = 'N' where catalog_name = 'TRAFODION' and
     schema_name = 'SCH026' and object_name = 'T026T1' and object_type = 'BT';
update "_MD_".objects set valid_def = 'N' where catalog_name = 'TRAFODION' and
     schema_name = 'SCH026' and object_name = 'T026T1I1' and object_type = 'IX';
reset parserflags 131072;

invoke t026t1;
drop table t026t1;
drop index t026t1i1;
create index t026t1i2 on t026t1(b);
alter table t026t1 rename to t026t1new;
alter table t026t1 add column c int;
alter table t026t1 drop column b;
alter table t026t1 add constraint t026t1c1 unique(b);
alter table t026t1 add constraint t026t1c2 foreign key (b) references t026t0;
alter table t026t1 add constraint t026t1c3 check (b > 0);
alter table t026t1 drop constraint t026t1c3;

cleanup table t026t0;
cleanup index t026t1i1;
cleanup table t026t1;

invoke t026t0;
invoke t026t1;

set parserflags 131072;
update "_MD_".objects set valid_def = 'Y' where catalog_name = 'TRAFODION' and
     schema_name = 'SCH026' and object_name = 'T026T1' and object_type = 'BT';
update "_MD_".objects set valid_def = 'Y' where catalog_name = 'TRAFODION' and
     schema_name = 'SCH026' and object_name = 'T026T1I1' and object_type = 'IX';
reset parserflags 131072;

cqd traf_blob_as_varchar 'OFF';
set schema sch026;
cleanup schema sch026;
create private schema sch026;
create table t026t20(a int not null primary key);
create table t026t2 (a int not null primary key, 
                              b int not null unique, 
                              c int not null references t026t20(a),
                              d blob, 
                              e char(2) check (e > 'a'), 
                              f largeint generated by default as identity not null);
create index t026t2i1 on t026t2(b);
select count(*) from "_MD_".objects where schema_name = 'SCH026' and object_name like 'T026%';
cleanup table t026t2;
select count(*) from "_MD_".objects where schema_name = 'SCH026' and object_name like 'T026%';
cleanup schema sch026;
select count(*) from "_MD_".objects where schema_name = 'SCH026' and object_name like 'T026%';

create private schema sch026;
set schema sch026;
create table t026t20(a int not null primary key);
create table t026t2 (a int not null primary key, 
                              b int not null unique, 
                              c int not null references t026t20(a),
                              d blob, 
                              e char(2) check (e > 'a'), 
                              f largeint generated by default as identity not null);
create index t026t2i1 on t026t2(b);

drop hbase table "TRAFODION.SCH026.T026T2I1";
set parserflags 131072;
cqd hide_indexes 'ALL';
delete from "_MD_".objects where catalog_name = 'TRAFODION' and
     schema_name = 'SCH026' and object_name = 'T026T2' and object_type = 'BT';
delete from "_MD_".objects where catalog_name = 'TRAFODION' and
     schema_name = 'SCH026' and object_type = 'PK';
cqd hide_indexes reset;
reset parserflags 131072;

select count(*) from "_MD_".objects where schema_name = 'SCH026' and object_name like 'T026%';
cleanup table t026t2;
select count(*) from "_MD_".objects where schema_name = 'SCH026' and object_name like 'T026%';
cleanup schema sch026;
select count(*) from "_MD_".objects where schema_name = 'SCH026' and object_name like 'T026%';


-- test for CLEANUP METADATA
cleanup schema sch026;
create schema sch026;
set schema sch026;
create table t026t10(a int);
create table t026t11(a int);
create table t026t12(a int);
cleanup metadata, check;
drop hbase table "TRAFODION.SCH026.T026T10";
set parserflags 131072;
delete from "_MD_".objects where schema_name = 'SCH026' and object_name = 'T026T11';
set parserflags 1;
delete from table(index_table "_MD_".objects_uniq_idx) where schema_name = 'SCH026' and object_name = 'T026T12';

cleanup metadata, check;
cleanup metadata, check, return details;
cleanup metadata, return details;
cleanup metadata, check;
cleanup schema sch026;

log;


