Skip to content

Commit 8defe56

Browse files
committed
Resolved issues with regex for DDL trigger processing.
1 parent a0e98ed commit 8defe56

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

source/core/annotations/ut_annotation_manager.pkb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,14 +264,17 @@ create or replace package body ut_annotation_manager as
264264
l_sql_clob clob;
265265
l_sql_lines ut_varchar2_rows := ut_varchar2_rows();
266266
l_result sys_refcursor;
267-
l_sql_text ora_name_list_t := a_sql_text;
268267
begin
269268
if a_parts > 0 then
270269
for i in 1..a_parts loop
271-
ut_utils.append_to_clob(l_sql_clob, l_sql_text(i));
270+
ut_utils.append_to_clob(l_sql_clob, a_sql_text(i));
272271
end loop;
273272
l_sql_clob := ut_utils.replace_multiline_comments(l_sql_clob);
274-
l_sql_clob := regexp_replace(l_sql_clob, '^(.*?[^-]{2,}\s*create(\s+or\s+replace){0,1}(\s+(editionable|noneditionable))?\s+?)((package|type).*)', '\5', 1, 1, 'ni');
273+
-- replace comment lines that contain "-- create or replace"
274+
l_sql_clob := regexp_replace(l_sql_clob, '^.*[-]{2,}\s*create(\s+or\s+replace).*$', modiafier => 'mi');
275+
-- remove the "create [or replace] [[non]editionable] " so that we have only "type|package" for parsing
276+
-- needed for dbms_preprocessor
277+
l_sql_clob := regexp_replace(l_sql_clob, '^(.*?\s*create(\s+or\s+replace)?(\s+(editionable|noneditionable))?\s+?)((package|type).*)', '\5', 1, 1, 'ni');
275278
l_sql_lines := ut_utils.convert_collection( ut_utils.clob_to_table(l_sql_clob) );
276279
end if;
277280
open l_result for

0 commit comments

Comments
 (0)