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