diff --git a/createas.c b/createas.c index 37e4d8b..a1f0981 100644 --- a/createas.c +++ b/createas.c @@ -768,7 +768,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/matview.c b/matview.c index 0c5ab73..726d8c4 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); diff --git a/pg_ivm.c b/pg_ivm.c index 19dad93..a090331 100644 --- a/pg_ivm.c +++ b/pg_ivm.c @@ -319,7 +319,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 */