Skip to content

Commit 14eca7f

Browse files
committed
Adding noparallel hint to elements causing issues on parallel-enabled servers.
1 parent e48508f commit 14eca7f

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

source/core/annotations/ut_annotation_cache_manager.pkb

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -21,39 +21,39 @@ create or replace package body ut_annotation_cache_manager as
2121
l_timestamp timestamp := systimestamp;
2222
pragma autonomous_transaction;
2323
begin
24-
update ut_annotation_cache_schema s
24+
update /*+ noparallel */ ut_annotation_cache_schema s
2525
set s.max_parse_time = l_timestamp
2626
where s.object_type = a_object.object_type and s.object_owner = a_object.object_owner;
2727

2828
if sql%rowcount = 0 then
29-
insert into ut_annotation_cache_schema s
29+
insert /*+ noparallel */ into ut_annotation_cache_schema s
3030
(object_owner, object_type, max_parse_time)
3131
values (a_object.object_owner, a_object.object_type, l_timestamp);
3232
end if;
3333

3434
-- if not in trigger, or object has annotations
3535
if ora_sysevent is null or a_object.annotations is not null and a_object.annotations.count > 0 then
3636

37-
update ut_annotation_cache_info i
37+
update /*+ noparallel */ ut_annotation_cache_info i
3838
set i.parse_time = l_timestamp
3939
where (i.object_owner, i.object_name, i.object_type)
4040
in ((a_object.object_owner, a_object.object_name, a_object.object_type))
4141
returning cache_id into l_cache_id;
4242

4343
if sql%rowcount = 0 then
4444

45-
insert into ut_annotation_cache_info
45+
insert /*+ noparallel */ into ut_annotation_cache_info
4646
(cache_id, object_owner, object_name, object_type, parse_time)
4747
values (ut_annotation_cache_seq.nextval, a_object.object_owner, a_object.object_name, a_object.object_type, l_timestamp)
4848
returning cache_id into l_cache_id;
4949
end if;
5050

5151
end if;
5252

53-
delete from ut_annotation_cache c where cache_id = l_cache_id;
53+
delete /*+ noparallel */ from ut_annotation_cache c where cache_id = l_cache_id;
5454

5555
if a_object.annotations is not null and a_object.annotations.count > 0 then
56-
insert into ut_annotation_cache
56+
insert /*+ noparallel */ into ut_annotation_cache
5757
(cache_id, annotation_position, annotation_name, annotation_text, subobject_name)
5858
select l_cache_id, a.position, a.name, a.text, a.subobject_name
5959
from table(a_object.annotations) a;
@@ -67,7 +67,7 @@ create or replace package body ut_annotation_cache_manager as
6767
pragma autonomous_transaction;
6868
begin
6969

70-
delete from ut_annotation_cache c
70+
delete /*+ noparallel */ from ut_annotation_cache c
7171
where c.cache_id
7272
in (select i.cache_id
7373
from ut_annotation_cache_info i
@@ -78,7 +78,7 @@ create or replace package body ut_annotation_cache_manager as
7878
and o.needs_refresh = 'Y'
7979
);
8080

81-
update ut_annotation_cache_schema s
81+
update /*+ noparallel */ ut_annotation_cache_schema s
8282
set s.max_parse_time = l_timestamp
8383
where (s.object_owner, s.object_type)
8484
in (
@@ -88,14 +88,15 @@ create or replace package body ut_annotation_cache_manager as
8888
);
8989

9090
if sql%rowcount = 0 then
91-
insert into ut_annotation_cache_schema s
91+
insert /*+ noparallel */ into ut_annotation_cache_schema s
9292
(object_owner, object_type, max_parse_time)
9393
select distinct o.object_owner, o.object_type, l_timestamp
9494
from table(a_objects) o
9595
where o.needs_refresh = 'Y';
9696
end if;
9797

98-
merge into ut_annotation_cache_info i
98+
merge /*+ noparallel */
99+
into ut_annotation_cache_info i
99100
using (select o.object_name, o.object_type, o.object_owner
100101
from table(a_objects) o
101102
where o.needs_refresh = 'Y'
@@ -149,7 +150,7 @@ create or replace package body ut_annotation_cache_manager as
149150
procedure set_fully_refreshed(a_object_owner varchar2, a_object_type varchar2) is
150151
pragma autonomous_transaction;
151152
begin
152-
update ut_annotation_cache_schema s
153+
update /*+ noparallel */ ut_annotation_cache_schema s
153154
set s.full_refresh_time = s.max_parse_time
154155
where s.object_owner = a_object_owner
155156
and s.object_type = a_object_type;
@@ -160,7 +161,7 @@ create or replace package body ut_annotation_cache_manager as
160161
pragma autonomous_transaction;
161162
begin
162163

163-
delete from ut_annotation_cache_info i
164+
delete /*+ noparallel */ from ut_annotation_cache_info i
164165
where exists (
165166
select 1 from table (a_objects) o
166167
where o.object_name = i.object_name
@@ -206,13 +207,13 @@ create or replace package body ut_annotation_cache_manager as
206207
l_filter := l_filter || ' and ' || case when a_object_type is null then ':a_object_type is null' else 'object_type = :a_object_type' end;
207208
l_cache_filter := ' c.cache_id in (select i.cache_id from ut_annotation_cache_info i where ' || l_filter || ' )';
208209
end if;
209-
execute immediate 'delete from ut_annotation_cache c where ' || l_cache_filter
210+
execute immediate 'delete /*+ noparallel */ from ut_annotation_cache c where ' || l_cache_filter
210211
using a_object_owner, a_object_type;
211212

212-
execute immediate ' delete from ut_annotation_cache_info i where ' || l_filter
213+
execute immediate ' delete /*+ noparallel */ from ut_annotation_cache_info i where ' || l_filter
213214
using a_object_owner, a_object_type;
214215

215-
execute immediate ' delete from ut_annotation_cache_schema s where ' || l_filter
216+
execute immediate ' delete /*+ noparallel */ from ut_annotation_cache_schema s where ' || l_filter
216217
using a_object_owner, a_object_type;
217218

218219
commit;

0 commit comments

Comments
 (0)