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