From 5e45211a64149b3c659b90ff2de6fa982a5a93ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 14:17:33 +0200 Subject: Adding upstream version 15.5. Signed-off-by: Daniel Baumann --- doc/src/sgml/html/event-trigger-interface.html | 68 ++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 doc/src/sgml/html/event-trigger-interface.html (limited to 'doc/src/sgml/html/event-trigger-interface.html') diff --git a/doc/src/sgml/html/event-trigger-interface.html b/doc/src/sgml/html/event-trigger-interface.html new file mode 100644 index 0000000..1374d38 --- /dev/null +++ b/doc/src/sgml/html/event-trigger-interface.html @@ -0,0 +1,68 @@ + +40.3. Writing Event Trigger Functions in C

40.3. Writing Event Trigger Functions in C

+ This section describes the low-level details of the interface to an + event trigger function. This information is only needed when writing + event trigger functions in C. If you are using a higher-level language + then these details are handled for you. In most cases you should + consider using a procedural language before writing your event triggers + in C. The documentation of each procedural language explains how to + write an event trigger in that language. +

+ Event trigger functions must use the version 1 function + manager interface. +

+ When a function is called by the event trigger manager, it is not passed + any normal arguments, but it is passed a context pointer + pointing to a EventTriggerData structure. C functions can + check whether they were called from the event trigger manager or not by + executing the macro: +

+CALLED_AS_EVENT_TRIGGER(fcinfo)
+

+ which expands to: +

+((fcinfo)->context != NULL && IsA((fcinfo)->context, EventTriggerData))
+

+ If this returns true, then it is safe to cast + fcinfo->context to type EventTriggerData + * and make use of the pointed-to + EventTriggerData structure. The function must + not alter the EventTriggerData + structure or any of the data it points to. +

+ struct EventTriggerData is defined in + commands/event_trigger.h: + +

+typedef struct EventTriggerData
+{
+    NodeTag     type;
+    const char *event;      /* event name */
+    Node       *parsetree;  /* parse tree */
+    CommandTag  tag;        /* command tag */
+} EventTriggerData;
+

+ + where the members are defined as follows: + +

type

+ Always T_EventTriggerData. +

event

+ Describes the event for which the function is called, one of + "ddl_command_start", "ddl_command_end", + "sql_drop", "table_rewrite". + See Section 40.1 for the meaning of these + events. +

parsetree

+ A pointer to the parse tree of the command. Check the PostgreSQL + source code for details. The parse tree structure is subject to change + without notice. +

tag

+ The command tag associated with the event for which the event trigger + is run, for example "CREATE FUNCTION". +

+

+ An event trigger function must return a NULL pointer + (not an SQL null value, that is, do not + set isNull true). +

\ No newline at end of file -- cgit v1.2.3