PostgreSQL Source Code  git master
Go to the documentation of this file.
1 /*-------------------------------------------------------------------------
2  *
3  * defrem.h
4  * POSTGRES define and remove utility definitions.
5  *
6  *
7  * Portions Copyright (c) 1996-2020, 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
17 #include "catalog/objectaddress.h"
18 #include "nodes/params.h"
19 #include "parser/parse_node.h"
20 #include "tcop/dest.h"
21 #include "utils/array.h"
23 /* commands/dropcmds.c */
24 extern void RemoveObjects(DropStmt *stmt);
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);
54 /* commands/functioncmds.c */
56 extern void RemoveFunctionById(Oid funcOid);
59 extern void DropCastById(Oid castOid);
61 extern void DropTransformById(Oid transformOid);
62 extern void IsThereFunctionInNamespace(const char *proname, int pronargs,
63  oidvector *proargtypes, Oid nspOid);
64 extern void ExecuteDoStmt(DoStmt *stmt, bool atomic);
65 extern void ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver *dest);
67 extern Oid get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok);
69  List *parameters,
70  Oid languageOid,
71  ObjectType objtype,
72  oidvector **parameterTypes,
73  ArrayType **allParameterTypes,
74  ArrayType **parameterModes,
75  ArrayType **parameterNames,
76  List **parameterDefaults,
77  Oid *variadicArgType,
78  Oid *requiredResultType);
80 /* commands/operatorcmds.c */
81 extern ObjectAddress DefineOperator(List *names, List *parameters);
82 extern void RemoveOperatorById(Oid operOid);
85 /* commands/statscmds.c */
88 extern void RemoveStatisticsById(Oid statsOid);
89 extern void UpdateStatisticsForTypeChange(Oid statsOid,
90  Oid relationOid, int attnum,
91  Oid oldColumnType, Oid newColumnType);
93 /* commands/aggregatecmds.c */
94 extern ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle,
95  List *parameters, bool replace);
97 /* commands/opclasscmds.c */
100 extern Oid AlterOpFamily(AlterOpFamilyStmt *stmt);
101 extern void RemoveOpClassById(Oid opclassOid);
102 extern void RemoveOpFamilyById(Oid opfamilyOid);
103 extern void RemoveAmOpEntryById(Oid entryOid);
104 extern void RemoveAmProcEntryById(Oid entryOid);
105 extern void IsThereOpClassInNamespace(const char *opcname, Oid opcmethod,
106  Oid opcnamespace);
107 extern void IsThereOpFamilyInNamespace(const char *opfname, Oid opfmethod,
108  Oid opfnamespace);
109 extern Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok);
110 extern Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok);
112 /* commands/tsearchcmds.c */
113 extern ObjectAddress DefineTSParser(List *names, List *parameters);
114 extern void RemoveTSParserById(Oid prsId);
116 extern ObjectAddress DefineTSDictionary(List *names, List *parameters);
117 extern void RemoveTSDictionaryById(Oid dictId);
120 extern ObjectAddress DefineTSTemplate(List *names, List *parameters);
121 extern void RemoveTSTemplateById(Oid tmplId);
123 extern ObjectAddress DefineTSConfiguration(List *names, List *parameters,
124  ObjectAddress *copied);
125 extern void RemoveTSConfigurationById(Oid cfgId);
128 extern text *serialize_deflist(List *deflist);
129 extern List *deserialize_deflist(Datum txt);
131 /* commands/foreigncmds.c */
132 extern ObjectAddress AlterForeignServerOwner(const char *name, Oid newOwnerId);
133 extern void AlterForeignServerOwner_oid(Oid, Oid newOwnerId);
134 extern ObjectAddress AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId);
135 extern void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId);
138 extern void RemoveForeignDataWrapperById(Oid fdwId);
141 extern void RemoveForeignServerById(Oid srvId);
145 extern void RemoveUserMappingById(Oid umId);
146 extern void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid);
148 extern Datum transformGenericOptions(Oid catalogId,
149  Datum oldOptions,
150  List *options,
151  Oid fdwvalidator);
153 /* commands/amcmds.c */
155 extern void RemoveAccessMethodById(Oid amOid);
156 extern Oid get_index_am_oid(const char *amname, bool missing_ok);
157 extern Oid get_table_am_oid(const char *amname, bool missing_ok);
158 extern Oid get_am_oid(const char *amname, bool missing_ok);
159 extern char *get_am_name(Oid amOid);
161 /* support routines in commands/define.c */
163 extern char *defGetString(DefElem *def);
164 extern double defGetNumeric(DefElem *def);
165 extern bool defGetBoolean(DefElem *def);
166 extern int32 defGetInt32(DefElem *def);
167 extern int64 defGetInt64(DefElem *def);
168 extern List *defGetQualifiedName(DefElem *def);
169 extern TypeName *defGetTypeName(DefElem *def);
170 extern int defGetTypeLength(DefElem *def);
171 extern List *defGetStringList(DefElem *def);
173 #endif /* DEFREM_H */
Oid RemoveUserMapping(DropUserMappingStmt *stmt)
Definition: foreigncmds.c:1363
void RemoveTSTemplateById(Oid tmplId)
Definition: tsearchcmds.c:827
List * defGetStringList(DefElem *def)
Definition: define.c:327
Oid GetDefaultOpClass(Oid type_id, Oid am_id)
Definition: indexcmds.c:2045
Oid AlterOpFamily(AlterOpFamilyStmt *stmt)
Definition: opclasscmds.c:777
Definition: c.h:594
void RemoveFunctionById(Oid funcOid)
char * makeObjectName(const char *name1, const char *name2, const char *label)
Definition: indexcmds.c:2154
Oid ResolveOpClass(List *opclass, Oid attrType, const char *accessMethodName, Oid accessMethodId)
Definition: indexcmds.c:1960
NameData proname
Definition: pg_proc.h:35
void RemoveOpClassById(Oid opclassOid)
Definition: opclasscmds.c:1683
void ImportForeignSchema(ImportForeignSchemaStmt *stmt)
Definition: foreigncmds.c:1546
void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId)
Definition: foreigncmds.c:313
void ExecuteDoStmt(DoStmt *stmt, bool atomic)
char * get_am_name(Oid amOid)
Definition: amcmds.c:219
void AlterForeignServerOwner_oid(Oid, Oid newOwnerId)
Definition: foreigncmds.c:450
TupleDesc CallStmtResultDesc(CallStmt *stmt)
ObjectAddress CreateCast(CreateCastStmt *stmt)
List * defGetQualifiedName(DefElem *def)
Definition: define.c:223
Oid get_index_am_oid(const char *amname, bool missing_ok)
Definition: amcmds.c:190
int16 pronargs
Definition: pg_proc.h:81
unsigned int Oid
Definition: postgres_ext.h:31
Definition: parsenodes.h:3355
bool CheckIndexCompatible(Oid oldId, const char *accessMethodName, List *attributeList, List *exclusionOpNames)
Definition: indexcmds.c:142
Oid get_am_oid(const char *amname, bool missing_ok)
Definition: amcmds.c:210
signed int int32
Definition: c.h:355
ObjectAddress DefineTSParser(List *names, List *parameters)
Definition: tsearchcmds.c:179
void RemoveOpFamilyById(Oid opfamilyOid)
Definition: opclasscmds.c:1664
void UpdateStatisticsForTypeChange(Oid statsOid, Oid relationOid, int attnum, Oid oldColumnType, Oid newColumnType)
Definition: statscmds.c:604
void RemoveTSParserById(Oid prsId)
Definition: tsearchcmds.c:298
double defGetNumeric(DefElem *def)
Definition: define.c:85
void RemoveAmProcEntryById(Oid entryOid)
Definition: opclasscmds.c:1731
ObjectAddress DefineIndex(Oid relationId, IndexStmt *stmt, Oid indexRelationId, Oid parentIndexId, Oid parentConstraintId, bool is_alter_table, bool check_rights, bool check_not_in_use, bool skip_build, bool quiet)
Definition: indexcmds.c:479
ObjectAddress CreateForeignDataWrapper(CreateFdwStmt *stmt)
Definition: foreigncmds.c:562
Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok)
Definition: opclasscmds.c:223
void IsThereFunctionInNamespace(const char *proname, int pronargs, oidvector *proargtypes, Oid nspOid)
ObjectAddress DefineTSTemplate(List *names, List *parameters)
Definition: tsearchcmds.c:733
bool defGetBoolean(DefElem *def)
Definition: define.c:111
ObjectAddress AlterForeignServerOwner(const char *name, Oid newOwnerId)
Definition: foreigncmds.c:415
ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt)
Definition: functioncmds.c:922
ObjectAddress DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied)
Definition: tsearchcmds.c:966
int64 defGetInt64(DefElem *def)
Definition: define.c:190
void ReindexMultipleTables(const char *objectName, ReindexObjectType objectKind, int options, bool concurrent)
Definition: indexcmds.c:2596
ObjectAddress AlterStatistics(AlterStatsStmt *stmt)
Definition: statscmds.c:427
void RemoveTSDictionaryById(Oid dictId)
Definition: tsearchcmds.c:511
int defGetTypeLength(DefElem *def)
Definition: define.c:283
ObjectAddress DefineTSDictionary(List *names, List *parameters)
Definition: tsearchcmds.c:415
ObjectAddress AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt)
TypeName * defGetTypeName(DefElem *def)
Definition: define.c:255
char * ChooseRelationName(const char *name1, const char *name2, const char *label, Oid namespaceid, bool isconstraint)
Definition: indexcmds.c:2240
void DropTransformById(Oid transformOid)
Definition: parsenodes.h:1693
ObjectAddress DefineOpFamily(CreateOpFamilyStmt *stmt)
Definition: opclasscmds.c:732
ObjectAddress CreateUserMapping(CreateUserMappingStmt *stmt)
Definition: foreigncmds.c:1143
ObjectAddress CreateStatistics(CreateStatsStmt *stmt)
Definition: statscmds.c:62
Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok)
Definition: opclasscmds.c:142
ObjectAddress AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId)
Definition: foreigncmds.c:275
uintptr_t Datum
Definition: postgres.h:367
static char * label
void RemoveOperatorById(Oid operOid)
Definition: operatorcmds.c:340
void ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver *dest)
text * serialize_deflist(List *deflist)
Definition: tsearchcmds.c:1527
void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid)
Definition: foreigncmds.c:1466
Oid ReindexTable(RangeVar *relation, int options, bool concurrent)
Definition: indexcmds.c:2545
void RemoveAmOpEntryById(Oid entryOid)
Definition: opclasscmds.c:1702
int16 attnum
Definition: pg_attribute.h:79
ObjectAddress AlterTSConfiguration(AlterTSConfigurationStmt *stmt)
Definition: tsearchcmds.c:1182
void RemoveTSConfigurationById(Oid cfgId)
Definition: tsearchcmds.c:1134
Oid get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok)
ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle, List *parameters, bool replace)
Definition: aggregatecmds.c:57
ObjectAddress CreateTransform(CreateTransformStmt *stmt)
ObjectAddress AlterUserMapping(AlterUserMappingStmt *stmt)
Definition: foreigncmds.c:1265
void IsThereOpFamilyInNamespace(const char *opfname, Oid opfmethod, Oid opfnamespace)
Definition: opclasscmds.c:1789
void ReindexIndex(RangeVar *indexRelation, int options, bool concurrent)
Definition: indexcmds.c:2423
Datum transformGenericOptions(Oid catalogId, Datum oldOptions, List *options, Oid fdwvalidator)
Definition: foreigncmds.c:110
ObjectAddress CreateForeignServer(CreateForeignServerStmt *stmt)
Definition: foreigncmds.c:866
ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt)
Definition: tsearchcmds.c:535
ObjectAddress AlterForeignServer(AlterForeignServerStmt *stmt)
Definition: foreigncmds.c:993
const char * name
Definition: encode.c:555
char * defGetString(DefElem *def)
Definition: define.c:49
Oid get_table_am_oid(const char *amname, bool missing_ok)
Definition: amcmds.c:200
ObjectAddress DefineOperator(List *names, List *parameters)
Definition: operatorcmds.c:65
ObjectAddress DefineOpClass(CreateOpClassStmt *stmt)
Definition: opclasscmds.c:331
void RemoveObjects(DropStmt *stmt)
Definition: dropcmds.c:57
void interpret_function_parameter_list(ParseState *pstate, List *parameters, Oid languageOid, ObjectType objtype, oidvector **parameterTypes, ArrayType **allParameterTypes, ArrayType **parameterModes, ArrayType **parameterNames, List **parameterDefaults, Oid *variadicArgType, Oid *requiredResultType)
Definition: functioncmds.c:184
ObjectAddress CreateAccessMethod(CreateAmStmt *stmt)
Definition: amcmds.c:43
void RemoveStatisticsById(Oid statsOid)
Definition: statscmds.c:531
int32 defGetInt32(DefElem *def)
Definition: define.c:166
void RemoveUserMappingById(Oid umId)
Definition: foreigncmds.c:1442
Definition: c.h:555
List * deserialize_deflist(Datum txt)
Definition: tsearchcmds.c:1583
void DropCastById(Oid castOid)
ObjectAddress AlterOperator(AlterOperatorStmt *stmt)
Definition: operatorcmds.c:385
Definition: pg_list.h:50
ObjectAddress AlterForeignDataWrapper(AlterFdwStmt *stmt)
Definition: foreigncmds.c:678
void RemoveForeignDataWrapperById(Oid fdwId)
Definition: foreigncmds.c:842
void RemoveAccessMethodById(Oid amOid)
Definition: amcmds.c:122
void RemoveForeignServerById(Oid srvId)
Definition: foreigncmds.c:1092
void IsThereOpClassInNamespace(const char *opcname, Oid opcmethod, Oid opcnamespace)
Definition: opclasscmds.c:1766