Change SQLSTATE for event triggers "wrong context" message
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 8 Apr 2015 18:26:50 +0000 (15:26 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Wed, 8 Apr 2015 18:26:50 +0000 (15:26 -0300)
When certain event-trigger-only functions are called when not in the
wrong context, they were reporting the "feature not supported" SQLSTATE,
which is somewhat misleading.  Create a new custom error code for such
uses instead.

Not backpatched since it may be seen as an undesirable behavioral
change.

Author: Michael Paquier
Discussion: https://www.postgresql.org/message-id/CAB7nPqQ-5NAkHQHh_NOm7FPep37NCiLKwPoJ2Yxb8TDoGgbYYA@mail.gmail.com

src/backend/commands/event_trigger.c
src/backend/utils/errcodes.txt

index 0026e53e8425342d0cf230a7ef0ddabfc415ed65..f07fd06337b79b3744b09a75fd63668bc15f3f46 100644 (file)
@@ -1416,7 +1416,7 @@ pg_event_trigger_dropped_objects(PG_FUNCTION_ARGS)
    if (!currentEventTriggerState ||
        !currentEventTriggerState->in_sql_drop)
        ereport(ERROR,
-               (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+               (errcode(ERRCODE_E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED),
         errmsg("%s can only be called in a sql_drop event trigger function",
                "pg_event_trigger_dropped_objects()")));
 
@@ -1536,7 +1536,7 @@ pg_event_trigger_table_rewrite_oid(PG_FUNCTION_ARGS)
    if (!currentEventTriggerState ||
        currentEventTriggerState->table_rewrite_oid == InvalidOid)
        ereport(ERROR,
-               (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+               (errcode(ERRCODE_E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED),
         errmsg("%s can only be called in a table_rewrite event trigger function",
                "pg_event_trigger_table_rewrite_oid()")));
 
@@ -1557,7 +1557,7 @@ pg_event_trigger_table_rewrite_reason(PG_FUNCTION_ARGS)
    if (!currentEventTriggerState ||
        currentEventTriggerState->table_rewrite_reason == 0)
        ereport(ERROR,
-               (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+               (errcode(ERRCODE_E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED),
         errmsg("%s can only be called in a table_rewrite event trigger function",
                "pg_event_trigger_table_rewrite_reason()")));
 
index 6a113b8f74cae012ec2234df18940b70f6b1ccac..6cc3ed96c447bd5b7a743d015cd14ec06b9b3f0a 100644 (file)
@@ -278,6 +278,7 @@ Section: Class 39 - External Routine Invocation Exception
 39004    E    ERRCODE_E_R_I_E_NULL_VALUE_NOT_ALLOWED                         null_value_not_allowed
 39P01    E    ERRCODE_E_R_I_E_TRIGGER_PROTOCOL_VIOLATED                      trigger_protocol_violated
 39P02    E    ERRCODE_E_R_I_E_SRF_PROTOCOL_VIOLATED                          srf_protocol_violated
+39P03    E    ERRCODE_E_R_I_E_EVENT_TRIGGER_PROTOCOL_VIOLATED                event_trigger_protocol_violated
 
 Section: Class 3B - Savepoint Exception