From 81d4194383ec00cf2e6cdf10da0443f91256bdc5 Mon Sep 17 00:00:00 2001 From: Jacek Gebal Date: Mon, 3 Aug 2020 17:38:34 +0100 Subject: [PATCH 1/2] Fixes to annotation parsing. Resolves #1088 Changed tests to reproduce issue with `dbms_preprocessor` failing to parse source that start with: `package owner.name authid definer is ...` --- test/ut3_tester_helper/annotation_cache_helper.pkb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/ut3_tester_helper/annotation_cache_helper.pkb b/test/ut3_tester_helper/annotation_cache_helper.pkb index 1a52faade..0715b6af1 100644 --- a/test/ut3_tester_helper/annotation_cache_helper.pkb +++ b/test/ut3_tester_helper/annotation_cache_helper.pkb @@ -4,7 +4,7 @@ create or replace package body annotation_cache_helper as pragma autonomous_transaction; begin execute immediate - 'create or replace package ut3_cache_test_owner.granted_test_suite is + 'create or replace package ut3_cache_test_owner.granted_test_suite authid definer is --%suite --%test @@ -19,7 +19,7 @@ create or replace package body annotation_cache_helper as procedure test2 is begin ut3_develop.ut.expect( 1 ).to_equal( 1 ); end; end;'; execute immediate - 'create or replace package ut3_cache_test_owner.not_granted_test_suite is + 'create or replace package ut3_cache_test_owner.not_granted_test_suite authid definer is --%suite --%test @@ -54,7 +54,7 @@ create or replace package body annotation_cache_helper as pragma autonomous_transaction; begin execute immediate - 'create or replace package ut3_cache_test_owner.new_suite is + 'create or replace package ut3_cache_test_owner.new_suite authid definer is --%suite --%test From 86e335e8c534db4f0f93f7a64683971acba1442f Mon Sep 17 00:00:00 2001 From: Jacek Gebal Date: Mon, 3 Aug 2020 17:45:34 +0100 Subject: [PATCH 2/2] Fixed issue by removing owner from beginning of source code. --- source/core/annotations/ut_annotation_manager.pkb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/source/core/annotations/ut_annotation_manager.pkb b/source/core/annotations/ut_annotation_manager.pkb index f8ca03326..c9de1c7e4 100644 --- a/source/core/annotations/ut_annotation_manager.pkb +++ b/source/core/annotations/ut_annotation_manager.pkb @@ -246,6 +246,9 @@ create or replace package body ut_annotation_manager as -- remove the "create [or replace] [[non]editionable] " so that we have only "type|package" for parsing -- needed for dbms_preprocessor l_sql_clob := regexp_replace(l_sql_clob, '^(.*?\s*create(\s+or\s+replace)?(\s+(editionable|noneditionable))?\s+?)((package|type).*)', '\5', 1, 1, 'ni'); + -- remove "OWNER." from create or replace statement. + -- Owner is not supported along with AUTHID - see issue https://github.com/utPLSQL/utPLSQL/issues/1088 + l_sql_clob := regexp_replace(l_sql_clob, '^(package|type)\s+("?[a-zA-Z][a-zA-Z0-9#_$]*"?\.)(.*)', '\1 \3', 1, 1, 'ni'); l_sql_lines := ut_utils.convert_collection( ut_utils.clob_to_table(l_sql_clob) ); end if; open l_result for