codekingpro/portable-devtools
114k
1/*-------------------------------------------------------------------------2 *3 * deparse_utility.h4 *5 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group6 * Portions Copyright (c) 1994, Regents of the University of California7 *8 * src/include/tcop/deparse_utility.h9 *10 *-------------------------------------------------------------------------11 */12#ifndef DEPARSE_UTILITY_H13#define DEPARSE_UTILITY_H14 15#include "access/attnum.h"16#include "catalog/objectaddress.h"17#include "nodes/nodes.h"18#include "utils/aclchk_internal.h"19 20 21/*22 * Support for keeping track of collected commands.23 */24typedef enum CollectedCommandType25{26 SCT_Simple,27 SCT_AlterTable,28 SCT_Grant,29 SCT_AlterOpFamily,30 SCT_AlterDefaultPrivileges,31 SCT_CreateOpClass,32 SCT_AlterTSConfig33} CollectedCommandType;34 35/*36 * For ALTER TABLE commands, we keep a list of the subcommands therein.37 */38typedef struct CollectedATSubcmd39{40 ObjectAddress address; /* affected column, constraint, index, ... */41 Node *parsetree;42} CollectedATSubcmd;43 44typedef struct CollectedCommand45{46 CollectedCommandType type;47 48 bool in_extension;49 Node *parsetree;50 51 union52 {53 /* most commands */54 struct55 {56 ObjectAddress address;57 ObjectAddress secondaryObject;58 } simple;59 60 /* ALTER TABLE, and internal uses thereof */61 struct62 {63 Oid objectId;64 Oid classId;65 List *subcmds;66 } alterTable;67 68 /* GRANT / REVOKE */69 struct70 {71 InternalGrant *istmt;72 } grant;73 74 /* ALTER OPERATOR FAMILY */75 struct76 {77 ObjectAddress address;78 List *operators;79 List *procedures;80 } opfam;81 82 /* CREATE OPERATOR CLASS */83 struct84 {85 ObjectAddress address;86 List *operators;87 List *procedures;88 } createopc;89 90 /* ALTER TEXT SEARCH CONFIGURATION ADD/ALTER/DROP MAPPING */91 struct92 {93 ObjectAddress address;94 Oid *dictIds;95 int ndicts;96 } atscfg;97 98 /* ALTER DEFAULT PRIVILEGES */99 struct100 {101 ObjectType objtype;102 } defprivs;103 } d;104 105 struct CollectedCommand *parent; /* when nested */106} CollectedCommand;107 108#endif /* DEPARSE_UTILITY_H */109 