1 | /*------------------------------------------------------------------------- |
2 | * |
3 | * defrem.h |
4 | * POSTGRES define and remove utility definitions. |
5 | * |
6 | * |
7 | * Portions Copyright (c) 1996-2019, PostgreSQL Global Development Group |
8 | * Portions Copyright (c) 1994, Regents of the University of California |
9 | * |
10 | * src/include/commands/defrem.h |
11 | * |
12 | *------------------------------------------------------------------------- |
13 | */ |
14 | #ifndef DEFREM_H |
15 | #define DEFREM_H |
16 | |
17 | #include "catalog/objectaddress.h" |
18 | #include "nodes/params.h" |
19 | #include "nodes/parsenodes.h" |
20 | #include "tcop/dest.h" |
21 | #include "utils/array.h" |
22 | |
23 | /* commands/dropcmds.c */ |
24 | extern void RemoveObjects(DropStmt *stmt); |
25 | |
26 | /* commands/indexcmds.c */ |
27 | extern ObjectAddress DefineIndex(Oid relationId, |
28 | IndexStmt *stmt, |
29 | Oid indexRelationId, |
30 | Oid parentIndexId, |
31 | Oid parentConstraintId, |
32 | bool is_alter_table, |
33 | bool check_rights, |
34 | bool check_not_in_use, |
35 | bool skip_build, |
36 | bool quiet); |
37 | extern void ReindexIndex(RangeVar *indexRelation, int options, bool concurrent); |
38 | extern Oid ReindexTable(RangeVar *relation, int options, bool concurrent); |
39 | extern void ReindexMultipleTables(const char *objectName, ReindexObjectType objectKind, |
40 | int options, bool concurrent); |
41 | extern char *makeObjectName(const char *name1, const char *name2, |
42 | const char *label); |
43 | extern char *ChooseRelationName(const char *name1, const char *name2, |
44 | const char *label, Oid namespaceid, |
45 | bool isconstraint); |
46 | extern bool CheckIndexCompatible(Oid oldId, |
47 | const char *accessMethodName, |
48 | List *attributeList, |
49 | List *exclusionOpNames); |
50 | extern Oid GetDefaultOpClass(Oid type_id, Oid am_id); |
51 | extern Oid ResolveOpClass(List *opclass, Oid attrType, |
52 | const char *accessMethodName, Oid accessMethodId); |
53 | |
54 | /* commands/functioncmds.c */ |
55 | extern ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt); |
56 | extern void RemoveFunctionById(Oid funcOid); |
57 | extern void SetFunctionReturnType(Oid funcOid, Oid newRetType); |
58 | extern void SetFunctionArgType(Oid funcOid, int argIndex, Oid newArgType); |
59 | extern ObjectAddress AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt); |
60 | extern ObjectAddress CreateCast(CreateCastStmt *stmt); |
61 | extern void DropCastById(Oid castOid); |
62 | extern ObjectAddress CreateTransform(CreateTransformStmt *stmt); |
63 | extern void DropTransformById(Oid transformOid); |
64 | extern void IsThereFunctionInNamespace(const char *proname, int pronargs, |
65 | oidvector *proargtypes, Oid nspOid); |
66 | extern void ExecuteDoStmt(DoStmt *stmt, bool atomic); |
67 | extern void ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver *dest); |
68 | extern TupleDesc CallStmtResultDesc(CallStmt *stmt); |
69 | extern Oid get_cast_oid(Oid sourcetypeid, Oid targettypeid, bool missing_ok); |
70 | extern Oid get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok); |
71 | extern void interpret_function_parameter_list(ParseState *pstate, |
72 | List *parameters, |
73 | Oid languageOid, |
74 | ObjectType objtype, |
75 | oidvector **parameterTypes, |
76 | ArrayType **allParameterTypes, |
77 | ArrayType **parameterModes, |
78 | ArrayType **parameterNames, |
79 | List **parameterDefaults, |
80 | Oid *variadicArgType, |
81 | Oid *requiredResultType); |
82 | |
83 | /* commands/operatorcmds.c */ |
84 | extern ObjectAddress DefineOperator(List *names, List *parameters); |
85 | extern void RemoveOperatorById(Oid operOid); |
86 | extern ObjectAddress AlterOperator(AlterOperatorStmt *stmt); |
87 | |
88 | /* commands/statscmds.c */ |
89 | extern ObjectAddress CreateStatistics(CreateStatsStmt *stmt); |
90 | extern void RemoveStatisticsById(Oid statsOid); |
91 | extern void UpdateStatisticsForTypeChange(Oid statsOid, |
92 | Oid relationOid, int attnum, |
93 | Oid oldColumnType, Oid newColumnType); |
94 | |
95 | /* commands/aggregatecmds.c */ |
96 | extern ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle, |
97 | List *parameters, bool replace); |
98 | |
99 | /* commands/opclasscmds.c */ |
100 | extern ObjectAddress DefineOpClass(CreateOpClassStmt *stmt); |
101 | extern ObjectAddress DefineOpFamily(CreateOpFamilyStmt *stmt); |
102 | extern Oid AlterOpFamily(AlterOpFamilyStmt *stmt); |
103 | extern void RemoveOpClassById(Oid opclassOid); |
104 | extern void RemoveOpFamilyById(Oid opfamilyOid); |
105 | extern void RemoveAmOpEntryById(Oid entryOid); |
106 | extern void RemoveAmProcEntryById(Oid entryOid); |
107 | extern void IsThereOpClassInNamespace(const char *opcname, Oid opcmethod, |
108 | Oid opcnamespace); |
109 | extern void IsThereOpFamilyInNamespace(const char *opfname, Oid opfmethod, |
110 | Oid opfnamespace); |
111 | extern Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok); |
112 | extern Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok); |
113 | |
114 | /* commands/tsearchcmds.c */ |
115 | extern ObjectAddress DefineTSParser(List *names, List *parameters); |
116 | extern void RemoveTSParserById(Oid prsId); |
117 | |
118 | extern ObjectAddress DefineTSDictionary(List *names, List *parameters); |
119 | extern void RemoveTSDictionaryById(Oid dictId); |
120 | extern ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt); |
121 | |
122 | extern ObjectAddress DefineTSTemplate(List *names, List *parameters); |
123 | extern void RemoveTSTemplateById(Oid tmplId); |
124 | |
125 | extern ObjectAddress DefineTSConfiguration(List *names, List *parameters, |
126 | ObjectAddress *copied); |
127 | extern void RemoveTSConfigurationById(Oid cfgId); |
128 | extern ObjectAddress AlterTSConfiguration(AlterTSConfigurationStmt *stmt); |
129 | |
130 | extern text *serialize_deflist(List *deflist); |
131 | extern List *deserialize_deflist(Datum txt); |
132 | |
133 | /* commands/foreigncmds.c */ |
134 | extern ObjectAddress AlterForeignServerOwner(const char *name, Oid newOwnerId); |
135 | extern void AlterForeignServerOwner_oid(Oid, Oid newOwnerId); |
136 | extern ObjectAddress AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId); |
137 | extern void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId); |
138 | extern ObjectAddress CreateForeignDataWrapper(CreateFdwStmt *stmt); |
139 | extern ObjectAddress AlterForeignDataWrapper(AlterFdwStmt *stmt); |
140 | extern void RemoveForeignDataWrapperById(Oid fdwId); |
141 | extern ObjectAddress CreateForeignServer(CreateForeignServerStmt *stmt); |
142 | extern ObjectAddress AlterForeignServer(AlterForeignServerStmt *stmt); |
143 | extern void RemoveForeignServerById(Oid srvId); |
144 | extern ObjectAddress CreateUserMapping(CreateUserMappingStmt *stmt); |
145 | extern ObjectAddress AlterUserMapping(AlterUserMappingStmt *stmt); |
146 | extern Oid RemoveUserMapping(DropUserMappingStmt *stmt); |
147 | extern void RemoveUserMappingById(Oid umId); |
148 | extern void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid); |
149 | extern void ImportForeignSchema(ImportForeignSchemaStmt *stmt); |
150 | extern Datum transformGenericOptions(Oid catalogId, |
151 | Datum oldOptions, |
152 | List *options, |
153 | Oid fdwvalidator); |
154 | |
155 | /* commands/amcmds.c */ |
156 | extern ObjectAddress CreateAccessMethod(CreateAmStmt *stmt); |
157 | extern void RemoveAccessMethodById(Oid amOid); |
158 | extern Oid get_index_am_oid(const char *amname, bool missing_ok); |
159 | extern Oid get_table_am_oid(const char *amname, bool missing_ok); |
160 | extern Oid get_am_oid(const char *amname, bool missing_ok); |
161 | extern char *get_am_name(Oid amOid); |
162 | |
163 | /* support routines in commands/define.c */ |
164 | |
165 | extern char *defGetString(DefElem *def); |
166 | extern double defGetNumeric(DefElem *def); |
167 | extern bool defGetBoolean(DefElem *def); |
168 | extern int32 defGetInt32(DefElem *def); |
169 | extern int64 defGetInt64(DefElem *def); |
170 | extern List *defGetQualifiedName(DefElem *def); |
171 | extern TypeName *defGetTypeName(DefElem *def); |
172 | extern int defGetTypeLength(DefElem *def); |
173 | extern List *defGetStringList(DefElem *def); |
174 | |
175 | #endif /* DEFREM_H */ |
176 | |