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