diff --git a/src/backend/distributed/metadata/metadata_cache.c b/src/backend/distributed/metadata/metadata_cache.c index f5f3a111b..1c4b4673b 100644 --- a/src/backend/distributed/metadata/metadata_cache.c +++ b/src/backend/distributed/metadata/metadata_cache.c @@ -2558,6 +2558,12 @@ master_dist_partition_cache_invalidate(PG_FUNCTION_ARGS) CheckCitusVersion(ERROR); + if (RelationGetRelid(triggerData->tg_relation) != DistPartitionRelationId()) + { + ereport(ERROR, (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), + errmsg("triggered on incorrect relation"))); + } + HeapTuple newTuple = triggerData->tg_newtuple; HeapTuple oldTuple = triggerData->tg_trigtuple; @@ -2619,6 +2625,12 @@ master_dist_shard_cache_invalidate(PG_FUNCTION_ARGS) CheckCitusVersion(ERROR); + if (RelationGetRelid(triggerData->tg_relation) != DistShardRelationId()) + { + ereport(ERROR, (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), + errmsg("triggered on incorrect relation"))); + } + HeapTuple newTuple = triggerData->tg_newtuple; HeapTuple oldTuple = triggerData->tg_trigtuple; @@ -2680,6 +2692,23 @@ master_dist_placement_cache_invalidate(PG_FUNCTION_ARGS) CheckCitusVersion(ERROR); + /* + * Before 7.0-2 this trigger is on pg_dist_shard_placement, + * ignore trigger in this scenario. + */ + Oid pgDistShardPlacementId = get_relname_relid("pg_dist_shard_placement", + PG_CATALOG_NAMESPACE); + if (RelationGetRelid(triggerData->tg_relation) == pgDistShardPlacementId) + { + PG_RETURN_DATUM(PointerGetDatum(NULL)); + } + + if (RelationGetRelid(triggerData->tg_relation) != DistPlacementRelationId()) + { + ereport(ERROR, (errcode(ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED), + errmsg("triggered on incorrect relation"))); + } + HeapTuple newTuple = triggerData->tg_newtuple; HeapTuple oldTuple = triggerData->tg_trigtuple; diff --git a/src/backend/distributed/worker/task_tracker_protocol.c b/src/backend/distributed/worker/task_tracker_protocol.c index bfb12dd5d..0016e96b8 100644 --- a/src/backend/distributed/worker/task_tracker_protocol.c +++ b/src/backend/distributed/worker/task_tracker_protocol.c @@ -242,7 +242,7 @@ task_tracker_cleanup_job(PG_FUNCTION_ARGS) /* * task_tracker_conninfo_cache_invalidate is a trigger function that signals to - * the task tracker to refresh its conn params cache after a authinfo change. + * the task tracker to refresh its conn params cache after an authinfo change. * * NB: We decided there is little point in checking permissions here, there * are much easier ways to waste CPU than causing cache invalidations.