/*------------------------------------------------------------------------- * * deparse_utility.h * * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * * src/include/tcop/deparse_utility.h * *------------------------------------------------------------------------- */ #ifndef DEPARSE_UTILITY_H #define DEPARSE_UTILITY_H #include "access/attnum.h" #include "catalog/objectaddress.h" #include "nodes/nodes.h" #include "utils/aclchk_internal.h" /* * Support for keeping track of collected commands. */ typedef enum CollectedCommandType { SCT_Simple, SCT_AlterTable, SCT_Grant, SCT_AlterOpFamily, SCT_AlterDefaultPrivileges, SCT_CreateOpClass, SCT_AlterTSConfig } CollectedCommandType; /* * For ALTER TABLE commands, we keep a list of the subcommands therein. */ typedef struct CollectedATSubcmd { ObjectAddress address; /* affected column, constraint, index, ... */ Node *parsetree; } CollectedATSubcmd; typedef struct CollectedCommand { CollectedCommandType type; bool in_extension; Node *parsetree; union { /* most commands */ struct { ObjectAddress address; ObjectAddress secondaryObject; } simple; /* ALTER TABLE, and internal uses thereof */ struct { Oid objectId; Oid classId; List *subcmds; } alterTable; /* GRANT / REVOKE */ struct { InternalGrant *istmt; } grant; /* ALTER OPERATOR FAMILY */ struct { ObjectAddress address; List *operators; List *procedures; } opfam; /* CREATE OPERATOR CLASS */ struct { ObjectAddress address; List *operators; List *procedures; } createopc; /* ALTER TEXT SEARCH CONFIGURATION ADD/ALTER/DROP MAPPING */ struct { ObjectAddress address; Oid *dictIds; int ndicts; } atscfg; /* ALTER DEFAULT PRIVILEGES */ struct { ObjectType objtype; } defprivs; } d; struct CollectedCommand *parent; /* when nested */ } CollectedCommand; #endif /* DEPARSE_UTILITY_H */