From e553a610eaa7e63e6f2a6c6387aec37d185607b3 Mon Sep 17 00:00:00 2001 From: Artyom Abakumov Date: Mon, 18 May 2026 12:44:16 +0300 Subject: [PATCH 1/3] Remove MetadataCache routines for package body DFW --- src/jrd/dfw.epp | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/src/jrd/dfw.epp b/src/jrd/dfw.epp index cf03e7181db..9cdaf5648c9 100644 --- a/src/jrd/dfw.epp +++ b/src/jrd/dfw.epp @@ -2409,27 +2409,9 @@ static bool drop_package_body(thread_db* tdbb, SSHORT phase, DeferredWork* work, Cached::Package* routine; switch (phase) { - case 0: - routine = MetadataCache::getPerm(tdbb, work->dfw_id, CacheFlag::NOSCAN); - if (routine) - routine->rollback(tdbb); - - return false; case 1: MET_delete_dependencies(tdbb, work->getQualifiedName(), obj_package_body); - return true; - - case 2: - case 3: - case 4: - case 5: - case 6: - return true; - case 7: - routine = MetadataCache::getPerm(tdbb, work->dfw_id, CacheFlag::ERASED | CacheFlag::NOSCAN); - fb_assert(routine); - if (routine) - routine->commit(tdbb); + return false; } return false; From 83884b863ff431b751d21639921104379019c5f8 Mon Sep 17 00:00:00 2001 From: Artyom Abakumov Date: Mon, 18 May 2026 14:00:37 +0300 Subject: [PATCH 2/3] Revert "Remove MetadataCache routines for package body DFW" This reverts commit e553a610eaa7e63e6f2a6c6387aec37d185607b3. --- src/jrd/dfw.epp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/jrd/dfw.epp b/src/jrd/dfw.epp index 9cdaf5648c9..cf03e7181db 100644 --- a/src/jrd/dfw.epp +++ b/src/jrd/dfw.epp @@ -2409,9 +2409,27 @@ static bool drop_package_body(thread_db* tdbb, SSHORT phase, DeferredWork* work, Cached::Package* routine; switch (phase) { + case 0: + routine = MetadataCache::getPerm(tdbb, work->dfw_id, CacheFlag::NOSCAN); + if (routine) + routine->rollback(tdbb); + + return false; case 1: MET_delete_dependencies(tdbb, work->getQualifiedName(), obj_package_body); - return false; + return true; + + case 2: + case 3: + case 4: + case 5: + case 6: + return true; + case 7: + routine = MetadataCache::getPerm(tdbb, work->dfw_id, CacheFlag::ERASED | CacheFlag::NOSCAN); + fb_assert(routine); + if (routine) + routine->commit(tdbb); } return false; From 915f57c97fd966d61eeda1f116867f51d14c9582 Mon Sep 17 00:00:00 2001 From: Artyom Abakumov Date: Mon, 18 May 2026 14:12:52 +0300 Subject: [PATCH 3/3] Commit package body drop without CacheFlag::ERASED flag --- src/jrd/dfw.epp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/jrd/dfw.epp b/src/jrd/dfw.epp index cf03e7181db..f29c431c9f2 100644 --- a/src/jrd/dfw.epp +++ b/src/jrd/dfw.epp @@ -2426,8 +2426,7 @@ static bool drop_package_body(thread_db* tdbb, SSHORT phase, DeferredWork* work, case 6: return true; case 7: - routine = MetadataCache::getPerm(tdbb, work->dfw_id, CacheFlag::ERASED | CacheFlag::NOSCAN); - fb_assert(routine); + routine = MetadataCache::getPerm(tdbb, work->dfw_id, CacheFlag::NOSCAN); if (routine) routine->commit(tdbb); }