PostgreSQL Source Code git master
defrem.h
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-2026, 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 "access/stratnum.h"
19#include "nodes/params.h"
20#include "parser/parse_node.h"
21#include "tcop/dest.h"
22#include "utils/array.h"
23
24/* commands/dropcmds.c */
25extern void RemoveObjects(DropStmt *stmt);
26
27/* commands/indexcmds.c */
29 Oid tableId,
31 Oid indexRelationId,
32 Oid parentIndexId,
33 Oid parentConstraintId,
34 int total_parts,
35 bool is_alter_table,
36 bool check_rights,
37 bool check_not_in_use,
38 bool skip_build,
39 bool quiet);
40extern void ExecReindex(ParseState *pstate, const ReindexStmt *stmt, bool isTopLevel);
41extern char *makeObjectName(const char *name1, const char *name2,
42 const char *label);
43extern char *ChooseRelationName(const char *name1, const char *name2,
44 const char *label, Oid namespaceid,
45 bool isconstraint);
46extern bool CheckIndexCompatible(Oid oldId,
47 const char *accessMethodName,
48 const List *attributeList,
49 const List *exclusionOpNames,
50 bool isWithoutOverlaps);
51extern Oid GetDefaultOpClass(Oid type_id, Oid am_id);
52extern Oid ResolveOpClass(const List *opclass, Oid attrType,
53 const char *accessMethodName, Oid accessMethodId);
54extern void GetOperatorFromCompareType(Oid opclass, Oid rhstype, CompareType cmptype,
55 Oid *opid, StrategyNumber *strat);
56
57/* commands/functioncmds.c */
59extern void RemoveFunctionById(Oid funcOid);
63extern void IsThereFunctionInNamespace(const char *proname, int pronargs,
64 oidvector *proargtypes, Oid nspOid);
65extern void ExecuteDoStmt(ParseState *pstate, DoStmt *stmt, bool atomic);
66extern void ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver *dest);
68extern Oid get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok);
70 List *parameters,
71 Oid languageOid,
72 ObjectType objtype,
73 oidvector **parameterTypes,
74 List **parameterTypes_list,
75 ArrayType **allParameterTypes,
76 ArrayType **parameterModes,
77 ArrayType **parameterNames,
78 List **inParameterNames_list,
79 List **parameterDefaults,
80 Oid *variadicArgType,
81 Oid *requiredResultType);
82
83/* commands/operatorcmds.c */
84extern ObjectAddress DefineOperator(List *names, List *parameters);
85extern void RemoveOperatorById(Oid operOid);
87
88/* commands/statscmds.c */
89extern ObjectAddress CreateStatistics(CreateStatsStmt *stmt, bool check_rights);
91extern void RemoveStatisticsById(Oid statsOid);
92extern void RemoveStatisticsDataById(Oid statsOid, bool inh);
93extern Oid StatisticsGetRelation(Oid statId, bool missing_ok);
94
95/* commands/aggregatecmds.c */
96extern ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle,
97 List *parameters, bool replace);
98
99/* commands/opclasscmds.c */
103extern void IsThereOpClassInNamespace(const char *opcname, Oid opcmethod,
104 Oid opcnamespace);
105extern void IsThereOpFamilyInNamespace(const char *opfname, Oid opfmethod,
106 Oid opfnamespace);
107extern Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok);
108extern Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok);
109
110/* commands/tsearchcmds.c */
111extern ObjectAddress DefineTSParser(List *names, List *parameters);
112
113extern ObjectAddress DefineTSDictionary(List *names, List *parameters);
115
116extern ObjectAddress DefineTSTemplate(List *names, List *parameters);
117
118extern ObjectAddress DefineTSConfiguration(List *names, List *parameters,
119 ObjectAddress *copied);
120extern void RemoveTSConfigurationById(Oid cfgId);
122
123extern text *serialize_deflist(List *deflist);
124extern List *deserialize_deflist(Datum txt);
125
126/* commands/foreigncmds.c */
127extern ObjectAddress AlterForeignServerOwner(const char *name, Oid newOwnerId);
128extern void AlterForeignServerOwner_oid(Oid, Oid newOwnerId);
129extern ObjectAddress AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId);
130extern void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId);
140extern Datum transformGenericOptions(Oid catalogId,
141 Datum oldOptions,
142 List *options,
143 Oid fdwvalidator);
144
145/* commands/amcmds.c */
147extern Oid get_index_am_oid(const char *amname, bool missing_ok);
148extern Oid get_table_am_oid(const char *amname, bool missing_ok);
149extern Oid get_am_oid(const char *amname, bool missing_ok);
150extern char *get_am_name(Oid amOid);
151
152/* support routines in commands/define.c */
153
154extern char *defGetString(DefElem *def);
155extern double defGetNumeric(DefElem *def);
156extern bool defGetBoolean(DefElem *def);
157extern int32 defGetInt32(DefElem *def);
158extern int64 defGetInt64(DefElem *def);
159extern Oid defGetObjectId(DefElem *def);
160extern List *defGetQualifiedName(DefElem *def);
161extern TypeName *defGetTypeName(DefElem *def);
162extern int defGetTypeLength(DefElem *def);
163extern List *defGetStringList(DefElem *def);
164pg_noreturn extern void errorConflictingDefElem(DefElem *defel, ParseState *pstate);
165
166#endif /* DEFREM_H */
#define pg_noreturn
Definition: c.h:170
int64_t int64
Definition: c.h:549
int32_t int32
Definition: c.h:548
CompareType
Definition: cmptype.h:32
ObjectAddress CreateStatistics(CreateStatsStmt *stmt, bool check_rights)
Definition: statscmds.c:63
void AlterForeignServerOwner_oid(Oid, Oid newOwnerId)
Definition: foreigncmds.c:461
void ExecuteCallStmt(CallStmt *stmt, ParamListInfo params, bool atomic, DestReceiver *dest)
void ExecReindex(ParseState *pstate, const ReindexStmt *stmt, bool isTopLevel)
Definition: indexcmds.c:2846
ObjectAddress AlterTSConfiguration(AlterTSConfigurationStmt *stmt)
Definition: tsearchcmds.c:1156
List * deserialize_deflist(Datum txt)
Definition: tsearchcmds.c:1621
ObjectAddress DefineTSTemplate(List *names, List *parameters)
Definition: tsearchcmds.c:690
ObjectAddress DefineTSDictionary(List *names, List *parameters)
Definition: tsearchcmds.c:397
ObjectAddress AlterForeignServerOwner(const char *name, Oid newOwnerId)
Definition: foreigncmds.c:426
ObjectAddress CreateCast(CreateCastStmt *stmt)
ObjectAddress DefineOpClass(CreateOpClassStmt *stmt)
Definition: opclasscmds.c:333
TypeName * defGetTypeName(DefElem *def)
Definition: define.c:271
ObjectAddress AlterStatistics(AlterStatsStmt *stmt)
Definition: statscmds.c:639
void ImportForeignSchema(ImportForeignSchemaStmt *stmt)
Definition: foreigncmds.c:1495
text * serialize_deflist(List *deflist)
Definition: tsearchcmds.c:1565
void RemoveTSConfigurationById(Oid cfgId)
Definition: tsearchcmds.c:1108
char * ChooseRelationName(const char *name1, const char *name2, const char *label, Oid namespaceid, bool isconstraint)
Definition: indexcmds.c:2628
ObjectAddress AlterForeignDataWrapperOwner(const char *name, Oid newOwnerId)
Definition: foreigncmds.c:286
ObjectAddress AlterForeignServer(AlterForeignServerStmt *stmt)
Definition: foreigncmds.c:985
ObjectAddress DefineIndex(ParseState *pstate, Oid tableId, IndexStmt *stmt, Oid indexRelationId, Oid parentIndexId, Oid parentConstraintId, int total_parts, bool is_alter_table, bool check_rights, bool check_not_in_use, bool skip_build, bool quiet)
Definition: indexcmds.c:544
ObjectAddress CreateAccessMethod(CreateAmStmt *stmt)
Definition: amcmds.c:43
void RemoveObjects(DropStmt *stmt)
Definition: dropcmds.c:53
void interpret_function_parameter_list(ParseState *pstate, List *parameters, Oid languageOid, ObjectType objtype, oidvector **parameterTypes, List **parameterTypes_list, ArrayType **allParameterTypes, ArrayType **parameterModes, ArrayType **parameterNames, List **inParameterNames_list, List **parameterDefaults, Oid *variadicArgType, Oid *requiredResultType)
Definition: functioncmds.c:185
Oid get_table_am_oid(const char *amname, bool missing_ok)
Definition: amcmds.c:173
Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok)
Definition: opclasscmds.c:220
ObjectAddress AlterOperator(AlterOperatorStmt *stmt)
Definition: operatorcmds.c:462
int32 defGetInt32(DefElem *def)
Definition: define.c:149
pg_noreturn void errorConflictingDefElem(DefElem *defel, ParseState *pstate)
Definition: define.c:371
void IsThereOpFamilyInNamespace(const char *opfname, Oid opfmethod, Oid opfnamespace)
Definition: opclasscmds.c:1851
void RemoveOperatorById(Oid operOid)
Definition: operatorcmds.c:413
char * makeObjectName(const char *name1, const char *name2, const char *label)
Definition: indexcmds.c:2540
Oid GetDefaultOpClass(Oid type_id, Oid am_id)
Definition: indexcmds.c:2365
Oid get_index_am_oid(const char *amname, bool missing_ok)
Definition: amcmds.c:163
int defGetTypeLength(DefElem *def)
Definition: define.c:299
void RemoveStatisticsDataById(Oid statsOid, bool inh)
Definition: statscmds.c:762
char * defGetString(DefElem *def)
Definition: define.c:35
bool defGetBoolean(DefElem *def)
Definition: define.c:94
ObjectAddress CreateFunction(ParseState *pstate, CreateFunctionStmt *stmt)
void RemoveStatisticsById(Oid statsOid)
Definition: statscmds.c:787
ObjectAddress DefineOpFamily(CreateOpFamilyStmt *stmt)
Definition: opclasscmds.c:772
void AlterForeignDataWrapperOwner_oid(Oid fwdId, Oid newOwnerId)
Definition: foreigncmds.c:324
ObjectAddress DefineTSConfiguration(List *names, List *parameters, ObjectAddress *copied)
Definition: tsearchcmds.c:899
char * get_am_name(Oid amOid)
Definition: amcmds.c:192
List * defGetQualifiedName(DefElem *def)
Definition: define.c:239
ObjectAddress DefineAggregate(ParseState *pstate, List *name, List *args, bool oldstyle, List *parameters, bool replace)
Definition: aggregatecmds.c:53
void IsThereFunctionInNamespace(const char *proname, int pronargs, oidvector *proargtypes, Oid nspOid)
int64 defGetInt64(DefElem *def)
Definition: define.c:173
bool CheckIndexCompatible(Oid oldId, const char *accessMethodName, const List *attributeList, const List *exclusionOpNames, bool isWithoutOverlaps)
Definition: indexcmds.c:178
ObjectAddress AlterForeignDataWrapper(ParseState *pstate, AlterFdwStmt *stmt)
Definition: foreigncmds.c:685
ObjectAddress AlterFunction(ParseState *pstate, AlterFunctionStmt *stmt)
ObjectAddress CreateForeignServer(CreateForeignServerStmt *stmt)
Definition: foreigncmds.c:849
Oid ResolveOpClass(const List *opclass, Oid attrType, const char *accessMethodName, Oid accessMethodId)
Definition: indexcmds.c:2280
ObjectAddress AlterTSDictionary(AlterTSDictionaryStmt *stmt)
Definition: tsearchcmds.c:493
Oid RemoveUserMapping(DropUserMappingStmt *stmt)
Definition: foreigncmds.c:1335
ObjectAddress DefineTSParser(List *names, List *parameters)
Definition: tsearchcmds.c:184
ObjectAddress CreateForeignDataWrapper(ParseState *pstate, CreateFdwStmt *stmt)
Definition: foreigncmds.c:569
TupleDesc CallStmtResultDesc(CallStmt *stmt)
Oid defGetObjectId(DefElem *def)
Definition: define.c:206
Oid AlterOpFamily(AlterOpFamilyStmt *stmt)
Definition: opclasscmds.c:817
ObjectAddress AlterUserMapping(AlterUserMappingStmt *stmt)
Definition: foreigncmds.c:1237
ObjectAddress DefineOperator(List *names, List *parameters)
Definition: operatorcmds.c:67
void GetOperatorFromCompareType(Oid opclass, Oid rhstype, CompareType cmptype, Oid *opid, StrategyNumber *strat)
Definition: indexcmds.c:2467
Oid get_transform_oid(Oid type_id, Oid lang_id, bool missing_ok)
double defGetNumeric(DefElem *def)
Definition: define.c:68
void ExecuteDoStmt(ParseState *pstate, DoStmt *stmt, bool atomic)
Oid StatisticsGetRelation(Oid statId, bool missing_ok)
Definition: statscmds.c:938
Oid get_am_oid(const char *amname, bool missing_ok)
Definition: amcmds.c:183
Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok)
Definition: opclasscmds.c:139
void CreateForeignTable(CreateForeignTableStmt *stmt, Oid relid)
Definition: foreigncmds.c:1415
ObjectAddress CreateTransform(CreateTransformStmt *stmt)
Datum transformGenericOptions(Oid catalogId, Datum oldOptions, List *options, Oid fdwvalidator)
Definition: foreigncmds.c:121
void RemoveFunctionById(Oid funcOid)
void IsThereOpClassInNamespace(const char *opcname, Oid opcmethod, Oid opcnamespace)
Definition: opclasscmds.c:1828
List * defGetStringList(DefElem *def)
Definition: define.c:343
ObjectAddress CreateUserMapping(CreateUserMappingStmt *stmt)
Definition: foreigncmds.c:1111
#define stmt
Definition: indent_codes.h:59
ObjectType
Definition: parsenodes.h:2351
static char * label
int16 pronargs
Definition: pg_proc.h:81
NameData proname
Definition: pg_proc.h:35
uint64_t Datum
Definition: postgres.h:70
unsigned int Oid
Definition: postgres_ext.h:32
uint16 StrategyNumber
Definition: stratnum.h:22
Definition: pg_list.h:54
Definition: c.h:751
Definition: c.h:712
const char * name