aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/event_trigger.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/event_trigger.c')
-rw-r--r--src/backend/commands/event_trigger.c35
1 files changed, 27 insertions, 8 deletions
diff --git a/src/backend/commands/event_trigger.c b/src/backend/commands/event_trigger.c
index 4bcc327a2b5..0026e53e842 100644
--- a/src/backend/commands/event_trigger.c
+++ b/src/backend/commands/event_trigger.c
@@ -121,6 +121,7 @@ typedef struct SQLDropObject
List *addrargs;
bool original;
bool normal;
+ bool istemp;
slist_node next;
} SQLDropObject;
@@ -1294,9 +1295,10 @@ EventTriggerSQLDropAddObject(const ObjectAddress *object, bool original, bool no
Assert(EventTriggerSupportsObjectClass(getObjectClass(object)));
- /* don't report temp schemas */
+ /* don't report temp schemas except my own */
if (object->classId == NamespaceRelationId &&
- isAnyTempNamespace(object->objectId))
+ (isAnyTempNamespace(object->objectId) &&
+ !isTempNamespace(object->objectId)))
return;
oldcxt = MemoryContextSwitchTo(currentEventTriggerState->cxt);
@@ -1336,16 +1338,24 @@ EventTriggerSQLDropAddObject(const ObjectAddress *object, bool original, bool no
Oid namespaceId;
namespaceId = DatumGetObjectId(datum);
- /* Don't report objects in temp namespaces */
- if (isAnyTempNamespace(namespaceId))
+ /* temp objects are only reported if they are my own */
+ if (isTempNamespace(namespaceId))
+ {
+ obj->schemaname = "pg_temp";
+ obj->istemp = true;
+ }
+ else if (isAnyTempNamespace(namespaceId))
{
pfree(obj);
heap_close(catalog, AccessShareLock);
MemoryContextSwitchTo(oldcxt);
return;
}
-
- obj->schemaname = get_namespace_name(namespaceId);
+ else
+ {
+ obj->schemaname = get_namespace_name(namespaceId);
+ obj->istemp = false;
+ }
}
}
@@ -1365,6 +1375,12 @@ EventTriggerSQLDropAddObject(const ObjectAddress *object, bool original, bool no
heap_close(catalog, AccessShareLock);
}
+ else
+ {
+ if (object->classId == NamespaceRelationId &&
+ isTempNamespace(object->objectId))
+ obj->istemp = true;
+ }
/* object identity, objname and objargs */
obj->objidentity =
@@ -1433,8 +1449,8 @@ pg_event_trigger_dropped_objects(PG_FUNCTION_ARGS)
{
SQLDropObject *obj;
int i = 0;
- Datum values[11];
- bool nulls[11];
+ Datum values[12];
+ bool nulls[12];
obj = slist_container(SQLDropObject, next, iter.cur);
@@ -1456,6 +1472,9 @@ pg_event_trigger_dropped_objects(PG_FUNCTION_ARGS)
/* normal */
values[i++] = BoolGetDatum(obj->normal);
+ /* is_temporary */
+ values[i++] = BoolGetDatum(obj->istemp);
+
/* object_type */
values[i++] = CStringGetTextDatum(obj->objecttype);