From 950cfdc223c3f1d1645ff29549136e8fb410638e Mon Sep 17 00:00:00 2001 From: jatin parmar Date: Tue, 22 Apr 2025 15:31:26 +0000 Subject: [PATCH 1/2] Set the dependency type of Triggers to DEPENDENCY_INTERNAL --- createas.c | 2 +- pg_ivm.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/createas.c b/createas.c index b41fd1d..f13c86e 100644 --- a/createas.c +++ b/createas.c @@ -759,7 +759,7 @@ CreateIvmTrigger(Oid relOid, Oid viewOid, int16 type, int16 timing, bool ex_lock address = CreateTrigger(ivm_trigger, NULL, relOid, InvalidOid, InvalidOid, InvalidOid, InvalidOid, InvalidOid, NULL, true, false); - recordDependencyOn(&address, &refaddr, DEPENDENCY_AUTO); + recordDependencyOn(&address, &refaddr, DEPENDENCY_INTERNAL); /* Make changes-so-far visible */ CommandCounterIncrement(); diff --git a/pg_ivm.c b/pg_ivm.c index 19d0e0e..3220fe4 100644 --- a/pg_ivm.c +++ b/pg_ivm.c @@ -315,7 +315,7 @@ CreateChangePreventTrigger(Oid matviewOid) address = CreateTrigger(ivm_trigger, NULL, matviewOid, InvalidOid, InvalidOid, InvalidOid, InvalidOid, InvalidOid, NULL, true, false); - recordDependencyOn(&address, &refaddr, DEPENDENCY_AUTO); + recordDependencyOn(&address, &refaddr, DEPENDENCY_INTERNAL); } /* Make changes-so-far visible */ From da43a30afaefba9344c8f434f68c70bf76479530 Mon Sep 17 00:00:00 2001 From: jatin parmar Date: Fri, 16 May 2025 23:53:30 +0000 Subject: [PATCH 2/2] Set the dependency type of Triggers to DEPENDENCY_INTERNAL --- matview.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/matview.c b/matview.c index d9b9db6..fef3a13 100644 --- a/matview.c +++ b/matview.c @@ -449,12 +449,13 @@ RefreshImmvByOid(Oid matviewOid, bool is_create, bool skipData, obj.objectId = foundDep->objid; obj.objectSubId = foundDep->refobjsubid; add_exact_object_address(&obj, immv_triggers); + deleteDependencyRecordsFor(obj.classId, obj.objectId, false); } systable_endscan(tgscan); } } systable_endscan(scan); - + CommandCounterIncrement(); performMultipleDeletions(immv_triggers, DROP_RESTRICT, PERFORM_DELETION_INTERNAL); table_close(depRel, RowExclusiveLock);