blob: 28c9c25ff8eeed1dc6238eeed071fc88f5eb423f [file] [log] [blame]
-- Test: TEST0106 (Executor)
-- @@@ 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 @@@
--
-- Functionality: SQL Query Cancel
-- Expected files: EXPECTED106
-- Table created:
-- Limitations:
-- To do:
-- Revision history:
-- temporarily turning off ddl xns for this test suite.
-- it runs into a hang issue in dtm due to cancel processing.
cqd ddl_transactions 'OFF';
sh echo > cumulative_GET_STATS106;
sh echo > LOG106;
sh echo > T106_INTERLEAVED_LOG;
sh rm ${REGRRUNDIR}/test106_synch ;
sh sqlci -i"TEST106(setup)";
log LOG106;
obey TEST106(dml);
select msg, 'FUNKY_OPT_UNIQUE', ts
from T106_interleaved_log order by ts;
obey TEST106(clnup);
log;
exit;
?section clnup
drop table t106a;
drop table t106c;
log T106_INTERLEAVED_LOG;
select * from T106_interleaved_log
order by ts;
drop table T106_interleaved_log;
?section setup
set schema $$TEST_SCHEMA$$;
obey TEST106(clnup);
log LOG106 clear;
create table T106_interleaved_log (
ts timestamp(6) not null,
msg char(60) ) no partition;
create table t106a
(uniq int not null,
c10K int ,
c1K int,
c100 int,
c10 int,
c1 int,
primary key (uniq)
)
salt using 4 partitions ;
upsert using load into t106a
select
0 + (100000 * x100000) + (10000 * x10000) + (1000 * x1000) + (100 * x100)
+ (10 * x10) +( 1 * x1),
0 + (1000 * x1000) + (100 * x100) + (10 * x10) + (1 * x1),
0 + (100 * x100) + (10 * x10) + (1 * x1),
0 + (10 * x10) + (1 * x1),
0 + (1 * x1),
0
from (values(1)) as t1
transpose 0,1 as x100000
transpose 0,1,2,3,4,5,6,7,8,9 as x10000
transpose 0,1,2,3,4,5,6,7,8,9 as x1000
transpose 0,1,2,3,4,5,6,7,8,9 as x100
transpose 0,1,2,3,4,5,6,7,8,9 as x10
transpose 0,1,2,3,4,5,6,7,8,9 as x1
;
update statistics for table t106a on every column;
create table t106c
(uniq int not null,
c10K int ,
c1K int,
c100 int,
c10 int,
c1 int,
primary key (uniq)
)
salt using 4 partitions ;
?section dml
sh rm cancel_cmd cancel_log106_all LOCK_LOG106;
obey TEST106(cursor_close_early);
obey TEST106(uniq_query_test);
obey TEST106(positive_test1);
obey TEST106(positive_test2);
obey TEST106(update_test1);
obey TEST106(delete_test1);
obey TEST106(insert_test1);
obey TEST106(insert_test2);
obey TEST106(upsert_test1);
obey TEST106(cpu_bound_esps);
obey TEST106(escalation1);
#ifdef SEABASE_CANCEL_TBD
obey TEST106(positive_test1_pname);
obey TEST106(positive_test2_pname);
obey TEST106(cpu_bound_esps_pname);
obey TEST106(escalation1_pname);
obey TEST106(positive_test1_nid_pid);
obey TEST106(positive_test2_nid_pid);
obey TEST106(cpu_bound_esps_nid_pid);
obey TEST106(escalation1_nid_pid);
#endif
obey TEST106(showplan1);
obey TEST106(explain1);
obey TEST106(invalid_qid);
obey TEST106(invalid_pname);
obey TEST106(invalid_nid_pid);
obey TEST106(qc1314);
obey TEST106(qc1351);
-- this one removes histograms for t106a so do it at the end.
obey TEST106(ustats_test);
?section cursor_close_early
-- From bug 2583
set envvar sqlci_cursor '1';
declare c1 cursor for select * from t106a A, t106a B;
values('FUNKY_OPT_UNIQUE', current_timestamp);
open c1;
close c1;
values('FUNKY_OPT_UNIQUE', current_timestamp);
open c1;
close c1;
values('FUNKY_OPT_UNIQUE', current_timestamp);
open c1;
close c1;
values('FUNKY_OPT_UNIQUE', current_timestamp);
?section uniq_query_test
-- By default, cannot cancel unique queries. And since we
-- do not have locks in trafodion, it doesn't make sense to
-- try to cancel a unique query.
-- TBD -- add tests to show the unique query does not register
-- with cancel broker
---------- unique select query ---------------------
prepare s1 from select 'unique query row' from t106a where uniq = 44;
---------- unique delete query ---------------------
prepare s1 from delete from t106a where uniq = 44;
---------- unique update query ---------------------
prepare s1 from update t106a set c10k = 12 where uniq = 46;
---------- unique insert query ---------------------
prepare s1 from insert into t106a values (44, 2, 3, 4, 5, 6);
?section positive_test1
-- Test canceling a query with and without the
-- CANCEL_QUERY_ALLOWED.
------- long running, cpu-bound select query -------
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
control query default ATTEMPT_ESP_PARALLELISM 'off';
prepare s1 from select count(*) from t106a A, t106a B
where A.uniq < 3000;
control query default ATTEMPT_ESP_PARALLELISM 'system';
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_stmt);
select 'subject launch canceler - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
select 'subject synch cancel - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1, launch canceler, finish');
obey TEST106(synch_cancel);
select 'subject execute s1 - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1, execute, start');
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1, execute, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section positive_test2
-- Test canceling a query with and without the
-- CANCEL_QUERY_ALLOWED.
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
control query shape expr(sort_groupby(esp_exchange(cut)));
prepare s1 from select count(*) from t106a A, t106a B
where A.uniq < 3000;
control query shape cut;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_stmt);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2, execute s1, start');
------- long running, cpu-bound select query -------
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2, execute s1, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section update_test1
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
prepare s1 from update t106a set c100 = c100 + 1;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_stmt);
select 'subject launch canceler - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'update_test1, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
select 'subject synch cancel - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'update_test1, launch canceler, finish');
obey TEST106(synch_cancel);
select 'subject execute s1 - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'update_test1, execute, start');
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'update_test1, execute, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section delete_test1
prepare s1 from delete from t106a;
obey TEST106(make_cancel_stmt);
select 'subject launch canceler - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'delete_test1, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
select 'subject synch cancel - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'delete_test1, launch canceler, finish');
obey TEST106(synch_cancel);
select 'subject execute s1 - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'delete_test1, execute, start');
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'delete_test1, execute, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section insert_test1
prepare s1 from insert into t106c select * from t106a;
obey TEST106(make_cancel_stmt);
select 'subject launch canceler - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'insert_test1, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
select 'subject synch cancel - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'insert_test1, launch canceler, finish');
obey TEST106(synch_cancel);
select 'subject execute s1 - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'insert_test1, execute, start');
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'insert_test1, execute, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section insert_test2
prepare s1 from insert into t106c
select
0 + (100000 * x100000) + (10000 * x10000) + (1000 * x1000) + (100 * x100)
+ (10 * x10) +( 1 * x1),
0 + (1000 * x1000) + (100 * x100) + (10 * x10) + (1 * x1),
0 + (100 * x100) + (10 * x10) + (1 * x1),
0 + (10 * x10) + (1 * x1),
0 + (1 * x1),
0
from (values(1)) as t1
transpose 0,1 as x100000
transpose 0,1,2,3,4,5,6,7,8,9 as x10000
transpose 0,1,2,3,4,5,6,7,8,9 as x1000
transpose 0,1,2,3,4,5,6,7,8,9 as x100
transpose 0,1,2,3,4,5,6,7,8,9 as x10
transpose 0,1,2,3,4,5,6,7,8,9 as x1
;
obey TEST106(make_cancel_stmt);
select 'subject launch canceler - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'insert_test2, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
select 'subject synch cancel - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'insert_test2, launch canceler, finish');
obey TEST106(synch_cancel);
select 'subject execute s1 - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'insert_test2, execute, start');
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'insert_test2, execute, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section upsert_test1
cqd DYN_QUEUE_RESIZE_OVERRIDE 'ON';
cqd GEN_TRSP_SIZE_DOWN '16';
cqd GEN_TRSP_SIZE_UP '16';
prepare s1 from
upsert using load into t106c
select
0 + (100000 * x100000) + (10000 * x10000) + (1000 * x1000) + (100 * x100)
+ (10 * x10) +( 1 * x1),
0 + (1000 * x1000) + (100 * x100) + (10 * x10) + (1 * x1),
0 + (100 * x100) + (10 * x10) + (1 * x1),
0 + (10 * x10) + (1 * x1),
0 + (1 * x1),
0
from (values(1)) as t1
transpose 0,1,2,3,4,5,6,7,8,9 as x100000
transpose 0,1,2,3,4,5,6,7,8,9 as x10000
transpose 0,1,2,3,4,5,6,7,8,9 as x1000
transpose 0,1,2,3,4,5,6,7,8,9 as x100
transpose 0,1,2,3,4,5,6,7,8,9 as x10
transpose 0,1,2,3,4,5,6,7,8,9 as x1
;
obey TEST106(make_cancel_stmt);
select 'subject launch canceler - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'upsert_test1, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
select 'subject synch cancel - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'upsert_test1, launch canceler, finish');
obey TEST106(synch_cancel);
select 'subject execute s1 - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'upsert_test1, execute, start');
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'upsert_test1, execute, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
cqd DYN_QUEUE_RESIZE_OVERRIDE reset;
cqd GEN_TRSP_SIZE_DOWN reset;
cqd GEN_TRSP_SIZE_UP reset;
?section cpu_bound_esps
-- Test cancel when esps are CPU-bound.
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
prepare s1 from select C.c10k, count(*) from t106a A, t106a B, t106a C
group by c.c10k order by 2;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_stmt);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps, execute s1, start');
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps, execute s1, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section escalation1
-- Test cancel escalation. Simulate unresponsive ESPs with COMP_INT_39.
control query default COMP_INT_39 '4';
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
prepare s1 from select C.c10k, count(*) from t106a A, t106a B, t106a C
group by c.c10k order by 2;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
control query default COMP_INT_39 'reset';
obey TEST106(make_cancel_stmt);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1, execute s1, start');
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1, execute s1, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section ustats_test
upsert using load into t106a
select
200000 +
0 + (100000 * x100000) + (10000 * x10000) + (1000 * x1000) + (100 * x100)
+ (10 * x10) +( 1 * x1),
0 + (1000 * x1000) + (100 * x100) + (10 * x10) + (1 * x1),
0 + (100 * x100) + (10 * x10) + (1 * x1),
0 + (10 * x10) + (1 * x1),
0 + (1 * x1),
0
from (values(1)) as t1
transpose 0,1 as x100000
transpose 0,1,2,3,4,5,6,7,8,9 as x10000
transpose 0,1,2,3,4,5,6,7,8,9 as x1000
transpose 0,1,2,3,4,5,6,7,8,9 as x100
transpose 0,1,2,3,4,5,6,7,8,9 as x10
transpose 0,1,2,3,4,5,6,7,8,9 as x1
;
upsert using load into t106a
select
400000 +
0 + (100000 * x100000) + (10000 * x10000) + (1000 * x1000) + (100 * x100)
+ (10 * x10) +( 1 * x1),
0 + (1000 * x1000) + (100 * x100) + (10 * x10) + (1 * x1),
0 + (100 * x100) + (10 * x10) + (1 * x1),
0 + (10 * x10) + (1 * x1),
0 + (1 * x1),
0
from (values(1)) as t1
transpose 0,1 as x100000
transpose 0,1,2,3,4,5,6,7,8,9 as x10000
transpose 0,1,2,3,4,5,6,7,8,9 as x1000
transpose 0,1,2,3,4,5,6,7,8,9 as x100
transpose 0,1,2,3,4,5,6,7,8,9 as x10
transpose 0,1,2,3,4,5,6,7,8,9 as x1
;
update statistics for table t106a clear;
prepare s1 from
update statistics for table t106a on
c10k, c1k, c100, c10, c1, uniq
, (uniq, c10k)
, (uniq, c1k)
, (uniq, c100)
, (uniq, c10)
, (uniq, c1)
, (c10k, c1k)
, (c10k, c100)
, (c10k, c10)
, (c10k, c1)
, (c1k, c100)
, (c1k, c10)
, (c1k, c1)
, (c100, c10)
, (c100, c1)
, (c10, c1)
, (uniq, c10k, c1k)
, (uniq, c10k, c100)
, (uniq, c10k, c10)
, (uniq, c10k, c1)
, (uniq, c1k, c100)
, (uniq, c1k, c10)
, (uniq, c1k, c1)
, (uniq, c100, c10)
, (uniq, c100, c1)
, (uniq, c10, c1)
, (c10k, c1k, c100)
, (c10k, c1k, c10)
, (c10k, c1k, c1)
, (c10k, c100, c10)
, (c10k, c100, c1)
, (c10k, c10, c1)
, (c1k, c100, c10)
, (c1k, c100, c1)
, (c1k, c10, c1)
, (uniq, c10k, c1k, c100)
, (uniq, c10k, c1k, c10)
, (uniq, c10k, c1k, c1)
, (uniq, c10k, c100, c10)
, (uniq, c10k, c100, c1)
, (uniq, c10k, c10, c1)
, (uniq, c1k, c100, c10)
, (uniq, c1k, c100, c1)
, (uniq, c1k, c10, c1)
, (c10k, c1k, c100, c10)
, (c10k, c1k, c100, c1)
, (c10k, c1k, c10, c1)
;
obey TEST106(make_cancel_stmt);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'ustats_test, launch canceler, start');
sh sqlci -i"TEST106(do_cancel)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'ustats_test, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'ustats_test, execute s1, start');
execute s1;
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'ustats_test, execute s1, finished');
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section positive_test1_nid_pid
-- Test canceling a query with and without the
-- CANCEL_QUERY_ALLOWED.
------- long running, cpu-bound select query -------
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
control query default ATTEMPT_ESP_PARALLELISM 'off';
prepare s1 from select count(*) from t106a A, t106a B
where A.uniq < 3000;
control query default ATTEMPT_ESP_PARALLELISM 'system';
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_nid_pid_stmt);
select 'subject launch canceler - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1_nid_pid, launch canceler, start');
sh sqlci -i"TEST106(do_cancel_nid_pid)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1_nid_pid, launch canceler, finished');
select 'subject synch cancel - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
select 'subject execute s1 - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1_nid_pid, execute s1, start');
execute s1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1_nid_pid, execute s1, finished');
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section positive_test2_nid_pid
-- Test canceling a query with and without the
-- CANCEL_QUERY_ALLOWED.
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
control query shape expr(sort_groupby(esp_exchange(cut)));
prepare s1 from select count(*) from t106a A, t106a B
where A.uniq < 3000;
control query shape cut;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_nid_pid_stmt);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2_nid_pid, launch canceler, start');
sh sqlci -i"TEST106(do_cancel_nid_pid)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2_nid_pid, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2_nid_pid, execute s1, start');
------- long running, cpu-bound select query -------
execute s1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2_nid_pid, execute s1, finished');
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section cpu_bound_esps_nid_pid
-- Test cancel when esps are CPU-bound.
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
prepare s1 from select C.c10k, count(*) from t106a A, t106a B, t106a C
group by c.c10k order by 2;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_nid_pid_stmt);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps_nid_pid, launch canceler, start');
sh sqlci -i"TEST106(do_cancel_nid_pid)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps_nid_pid, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps_nid_pid, execute s1, start');
execute s1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps_nid_pid, execute s1, finished');
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section escalation1_nid_pid
-- Test cancel escalation. Simulate unresponsive ESPs with COMP_INT_39.
control query default COMP_INT_39 '4';
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
prepare s1 from select C.c10k, count(*) from t106a A, t106a B, t106a C
group by c.c10k order by 2;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
control query default COMP_INT_39 'reset';
obey TEST106(make_cancel_nid_pid_stmt);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1_nid_pid, launch canceler, start');
sh sqlci -i"TEST106(do_cancel_nid_pid)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1_nid_pid, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1_nid_pid, execute s1, start');
execute s1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1_nid_pid, execute s1, finished');
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section positive_test1_pname
-- Test canceling a query with and without the
-- CANCEL_QUERY_ALLOWED.
------- long running, cpu-bound select query -------
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
control query default ATTEMPT_ESP_PARALLELISM 'off';
prepare s1 from select count(*) from t106a A, t106a B
where A.uniq < 3000;
control query default ATTEMPT_ESP_PARALLELISM 'system';
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_pname_stmt);
select 'subject launch canceler - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1_pname, launch canceler, start');
sh sqlci -i"TEST106(do_cancel_pname)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1_pname, launch canceler, finished');
select 'subject synch cancel - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
select 'subject execute s1 - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1_pname, execute s1, start');
execute s1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test1_pname, execute s1, finished');
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section positive_test2_pname
-- Test canceling a query with and without the
-- CANCEL_QUERY_ALLOWED.
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
control query shape expr(sort_groupby(esp_exchange(cut)));
prepare s1 from select count(*) from t106a A, t106a B
where A.uniq < 3000;
control query shape cut;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_pname_stmt);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2_pname, launch canceler, start');
sh sqlci -i"TEST106(do_cancel_pname)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2_pname, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2_pname, execute s1, start');
------- long running, cpu-bound select query -------
execute s1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'positive_test2_pname, execute s1, finished');
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section cpu_bound_esps_pname
-- Test cancel when esps are CPU-bound.
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
prepare s1 from select C.c10k, count(*) from t106a A, t106a B, t106a C
group by c.c10k order by 2;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
obey TEST106(make_cancel_pname_stmt);
insert into T106_interleaved_log values
(CURRENT_TIME (6),
'cpu_bound_esps_pname, launch canceler, start');
sh sqlci -i"TEST106(do_cancel_pname)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps_pname, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps_pname, execute s1, start');
execute s1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'cpu_bound_esps_pname, execute s1, finished');
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section escalation1_pname
-- Test cancel escalation. Simulate unresponsive ESPs with COMP_INT_39.
control query default COMP_INT_39 '4';
control query default QUERY_LIMIT_SQL_PROCESS_CPU '20';
prepare s1 from select C.c10k, count(*) from t106a A, t106a B, t106a C
group by c.c10k order by 2;
control query default QUERY_LIMIT_SQL_PROCESS_CPU 'reset';
control query default COMP_INT_39 'reset';
obey TEST106(make_cancel_pname_stmt);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1_pname, launch canceler, start');
sh sqlci -i"TEST106(do_cancel_pname)" & ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1_pname, launch canceler, finished');
obey TEST106(synch_cancel);
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1_pname, execute s1, start');
execute s1;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'escalation1_pname, execute s1, finished');
select 'subject - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
obey TEST106(synch_cancel);
obey TEST106(append_cancel_log);
?section showplan1
log; log SP106 clear;
showplan control query cancel qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
showplan control query activate qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
showplan control query suspend qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
showplan control query suspend qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1, force;
#ifdef SEABASE_CANCEL_TBD
showplan control query cancel pid 0, 17677;
showplan control query cancel pid $Z00034G;
#endif
log;
sh echo "cancel-specific showplan output" >> LOG106;
sh grep "Contents of EX_CANCEL" SP106 >> LOG106;
sh grep "For ComTdbCancel" SP106 >> LOG106;
sh grep "^qid_ =" SP106 >> LOG106;
sh grep "^action_ =" SP106 >> LOG106;
sh grep "^cancelNid_" SP106 >> LOG106;
sh grep "^cancelPname_" SP106 >> LOG106;
sh grep "^comment_ =" SP106 >> LOG106;
log LOG106;
?section explain1
log; log EXPLAIN106 clear;
explain control query cancel qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
explain control query suspend qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
explain control query suspend qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1, force;
explain control query activate qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
#ifdef SEABASE_CANCEL_TBD
explain control query cancel pid 0, 17677;
explain control query cancel pid $Z00034G;
#endif
log;
sh echo "cancel-specific explain output" >> LOG106;
sh grep "CONTROL_RUNNING_QUERY" EXPLAIN106 >> LOG106;
sh grep "control_action" EXPLAIN106 >> LOG106;
sh grep "nid_pid" EXPLAIN106 >> LOG106;
sh grep "min_blocking_interval" EXPLAIN106 >> LOG106;
sh grep "process_name" EXPLAIN106 >> LOG106;
log LOG106;
?section invalid_qid
control query cancel qid foo;
set envvar HP_FAKE_ERROR_201;
control query cancel qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
reset envvar HP_FAKE_ERROR_201;
control query cancel qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
control query suspend qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
control query suspend qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1, force;
control query activate qid
MXID11000026954212168745269419968000000000217DEFAULT_MXCI_USER00_22_S1;
?section invalid_pname
control query cancel pid $ZXXXXX;
?section invalid_nid_pid
control query cancel pid 44,66666;
?section qc1314
-- Test case for QC 1314. Exercise IPC timeout in
-- ex_root_tcb::cancel.
set envvar SQLMX_CANCEL_TIMEOUT '10';
-- Simulate unresponsive ESPs with COMP_INT_39.
control query default COMP_INT_39 '4';
set envvar sqlci_cursor '1';
control query shape esp_exchange(cut);
declare c1 cursor for
select C.c10k, count(*) from t106a A, t106a B, t106a C
group by c.c10k order by 2
for read uncommitted access;
control query shape cut;
control query default COMP_INT_39 'reset';
values('FUNKY_OPT_UNIQUE', current_timestamp);
open c1;
close c1;
values('FUNKY_OPT_UNIQUE', current_timestamp);
open c1;
close c1;
values('FUNKY_OPT_UNIQUE', current_timestamp);
open c1;
close c1;
values('FUNKY_OPT_UNIQUE', current_timestamp);
open c1;
close c1;
values('FUNKY_OPT_UNIQUE', current_timestamp);
open c1;
close c1;
values('FUNKY_OPT_UNIQUE', current_timestamp);
?section qc1351
log LOG106;
prepare s1 from select * from t106a;
obey TEST106(make_cancel_stmt);
obey cancel_cmd;
?section synch_cancel
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'foreground awaits synch_cancel');
-- wait until other mxci is ready
sh sh $scriptsdir/executor/synch_106.ksh;
select 'done with synch_cancel - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
log;
sh rm ${REGRRUNDIR}/test106_synch ;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'foreground finished synch_cancel');
log LOG106;
?section do_cancel
set schema $$TEST_SCHEMA$$;
log CANCEL_LOG106 clear;
------------------------------------------;
------ Contents of cancel session --------;
------------------------------------------;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'do_cancel has begun');
sh touch ${REGRRUNDIR}/test106_synch;
select 'canceler going to sleep - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
sh sleep 13;
select 'canceler woke up - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
set session default CANCEL_ESCALATION_INTERVAL '5';
log;
log GET_STATS106 clear;
set session default RTS_TIMEOUT '10';
obey get_stats_cmd;
log;
sh cat GET_STATS106 >> cumulative_GET_STATS106;
sh grep "Execute End Time" GET_STATS106 >> CANCEL_LOG106;
log CANCEL_LOG106;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'do_cancel will cancel');
obey cancel_cmd;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'do_cancel has canceled');
select 'canceler - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
log;
sh cat CANCEL_LOG106 >> cancel_log106_all;
sh touch ${REGRRUNDIR}/test106_synch;
?section do_cancel_pname
set schema $$TEST_SCHEMA$$;
log CANCEL_LOG106 clear;
------------------------------------------;
------ Contents of cancel session --------;
------------------------------------------;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'do_cancel_pname has begun');
sh touch ${REGRRUNDIR}/test106_synch;
select 'canceler going to sleep - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
sh sleep 13;
select 'canceler woke up - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
set session default CANCEL_ESCALATION_INTERVAL '5';
log;
log GET_STATS106 clear;
obey get_stats_cmd;
log;
sh cat GET_STATS106 >> cumulative_GET_STATS106;
sh grep "Execute End Time" GET_STATS106 >> CANCEL_LOG106;
log CANCEL_LOG106;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'do_cancel_pname will cancel');
obey cancel_pname_cmd;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'do_cancel_pname has canceled');
select 'canceler - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
log;
sh cat CANCEL_LOG106 >> cancel_log106_all;
sh touch ${REGRRUNDIR}/test106_synch;
?section do_cancel_nid_pid
set schema $$TEST_SCHEMA$$;
log CANCEL_LOG106 clear;
------------------------------------------;
------ Contents of cancel session --------;
------------------------------------------;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'do_cancel_nid_pid has begun');
sh touch ${REGRRUNDIR}/test106_synch;
select 'canceler going to sleep - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
sh sleep 13;
select 'canceler woke up - FUNKY_OPT_UNIQUE',
CURRENT_TIMESTAMP (6) from (values (1)) as t1;
set session default CANCEL_ESCALATION_INTERVAL '5';
log;
log GET_STATS106 clear;
obey get_stats_cmd;
log;
sh cat GET_STATS106 >> cumulative_GET_STATS106;
sh grep "Execute End Time" GET_STATS106 >> CANCEL_LOG106;
log CANCEL_LOG106;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'do_cancel_nid_pid will cancel');
obey cancel_nid_pid_cmd;
insert into T106_interleaved_log values
(CURRENT_TIMESTAMP (6),
'do_cancel_nid_pid has canceled');
select 'canceler - FUNKY_OPT_UNIQUE', CURRENT_TIMESTAMP (6) from (values (1)) as t1;
log;
sh cat CANCEL_LOG106 >> cancel_log106_all;
sh touch ${REGRRUNDIR}/test106_synch;
?section make_suicide_script
-- Make a shell script to stop this mxci.
sh gtacl -c 'status *,term' | grep mxci | cut -c 12-19 | sed "s/^/sleep 8; gtacl -c 'stop/g" | sed "s/$/'/g">stop_cmd ;
sh chmod +x stop_cmd;
?section make_cancel_stmt
log;
log QIDLOG clear;
display qid for s1;
log;
sh grep "^QID is " QIDLOG | cut -c 8- | sed "s/^/control query cancel qid /g" | sed "s/$/;/g" > cancel_cmd;
sh grep "^QID is " QIDLOG | cut -c 8- | sed "s/^/get statistics for qid /g" | sed "s/$/;/g" > get_stats_cmd;
log LOG106;
?section make_cancel_pname_stmt
log;
log QIDLOG clear;
display qid for s1;
log;
sh echo "control query default CANCEL_MINIMUM_BLOCKING_INTERVAL '1';" > cancel_pname_cmd;
sh grep "^ Pin:" QIDLOG | cut -c 8- | sed "s/^/sqps | grep sqlci | grep /g" | sh | cut -c 42-50 | sed "s/^/control query cancel pid /g" >> cancel_pname_cmd;
sh echo ";" >> cancel_pname_cmd;
sh grep "^QID is " QIDLOG | cut -c 8- | sed "s/^/get statistics for qid /g" | sed "s/$/;/g" > get_stats_cmd;
log LOG106;
?section make_cancel_nid_pid_stmt
log;
log QIDLOG clear;
display qid for s1;
log;
sh echo "control query default CANCEL_MINIMUM_BLOCKING_INTERVAL '1';" > cancel_nid_pid_cmd;
sh grep "^ Pin:" QIDLOG | cut -c 8- | sed "s/^/control query cancel pid 0,/g" >> cancel_nid_pid_cmd;
sh echo ";" >> cancel_nid_pid_cmd;
sh grep "^QID is " QIDLOG | cut -c 8- | sed "s/^/get statistics for qid /g" | sed "s/$/;/g" > get_stats_cmd;
log LOG106;
?section append_cancel_log
log;
sh sleep 2;
sh cat CANCEL_LOG106 >> LOG106;
log LOG106;
?section append_lock_log
log;
sh sleep 2;
sh cat LOCK_LOG106 >> LOG106;
log LOG106;