1 | /*------------------------------------------------------------------------- |
2 | * |
3 | * deparse_utility.h |
4 | * |
5 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
6 | * Portions Copyright (c) 1994, Regents of the University of California |
7 | * |
8 | * src/include/tcop/deparse_utility.h |
9 | * |
10 | *------------------------------------------------------------------------- |
11 | */ |
12 | #ifndef DEPARSE_UTILITY_H |
13 | #define DEPARSE_UTILITY_H |
14 | |
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 | */ |
24 | typedef enum CollectedCommandType |
25 | { |
26 | SCT_Simple, |
27 | SCT_AlterTable, |
28 | SCT_Grant, |
29 | SCT_AlterOpFamily, |
30 | SCT_AlterDefaultPrivileges, |
31 | SCT_CreateOpClass, |
32 | SCT_AlterTSConfig |
33 | } CollectedCommandType; |
34 | |
35 | /* |
36 | * For ALTER TABLE commands, we keep a list of the subcommands therein. |
37 | */ |
38 | typedef struct CollectedATSubcmd |
39 | { |
40 | ObjectAddress address; /* affected column, constraint, index, ... */ |
41 | Node *parsetree; |
42 | } CollectedATSubcmd; |
43 | |
44 | typedef struct CollectedCommand |
45 | { |
46 | CollectedCommandType type; |
47 | |
48 | bool in_extension; |
49 | Node *parsetree; |
50 | |
51 | union |
52 | { |
53 | /* most commands */ |
54 | struct |
55 | { |
56 | ObjectAddress address; |
57 | ObjectAddress secondaryObject; |
58 | } simple; |
59 | |
60 | /* ALTER TABLE, and internal uses thereof */ |
61 | struct |
62 | { |
63 | Oid objectId; |
64 | Oid classId; |
65 | List *subcmds; |
66 | } alterTable; |
67 | |
68 | /* GRANT / REVOKE */ |
69 | struct |
70 | { |
71 | InternalGrant *istmt; |
72 | } grant; |
73 | |
74 | /* ALTER OPERATOR FAMILY */ |
75 | struct |
76 | { |
77 | ObjectAddress address; |
78 | List *operators; |
79 | List *procedures; |
80 | } opfam; |
81 | |
82 | /* CREATE OPERATOR CLASS */ |
83 | struct |
84 | { |
85 | ObjectAddress address; |
86 | List *operators; |
87 | List *procedures; |
88 | } createopc; |
89 | |
90 | /* ALTER TEXT SEARCH CONFIGURATION ADD/ALTER/DROP MAPPING */ |
91 | struct |
92 | { |
93 | ObjectAddress address; |
94 | Oid *dictIds; |
95 | int ndicts; |
96 | } atscfg; |
97 | |
98 | /* ALTER DEFAULT PRIVILEGES */ |
99 | struct |
100 | { |
101 | ObjectType objtype; |
102 | } defprivs; |
103 | } d; |
104 | |
105 | struct CollectedCommand *parent; /* when nested */ |
106 | } CollectedCommand; |
107 | |
108 | #endif /* DEPARSE_UTILITY_H */ |
109 | |