0010-Clean-up-ALTER-OBJECT-SET-SCHEMA-patch.patch
application/octet-stream
Filename: 0010-Clean-up-ALTER-OBJECT-SET-SCHEMA-patch.patch
Type: application/octet-stream
Part: 0
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0010
Subject: Clean up ALTER <OBJECT> SET SCHEMA patch
| File | + | − |
|---|---|---|
| src/backend/catalog/namespace.c | 36 | 0 |
| src/backend/catalog/pg_namespace.c | 0 | 38 |
| src/backend/commands/conversioncmds.c | 4 | 2 |
| src/backend/commands/opclasscmds.c | 6 | 2 |
| src/backend/commands/operatorcmds.c | 13 | 12 |
| src/backend/commands/tsearchcmds.c | 9 | 1 |
| src/include/catalog/namespace.h | 2 | 0 |
| src/include/catalog/pg_namespace.h | 0 | 2 |
| src/include/commands/conversioncmds.h | 0 | 2 |
| src/include/commands/defrem.h | 0 | 9 |
From 29f8757ab3760a4cbabd701e2925eccb2733aa99 Mon Sep 17 00:00:00 2001
From: Alvaro Herrera <alvherre@alvh.no-ip.org>
Date: Wed, 3 Nov 2010 14:10:10 -0300
Subject: [PATCH 10/10] Clean up ALTER <OBJECT> SET SCHEMA patch
---
src/backend/catalog/namespace.c | 36 +++++++++++++++++++++++++++++++
src/backend/catalog/pg_namespace.c | 38 ---------------------------------
src/backend/commands/conversioncmds.c | 6 +++-
src/backend/commands/opclasscmds.c | 8 +++++-
src/backend/commands/operatorcmds.c | 25 +++++++++++----------
src/backend/commands/tsearchcmds.c | 10 +++++++-
src/include/catalog/namespace.h | 2 +
src/include/catalog/pg_namespace.h | 2 -
src/include/commands/conversioncmds.h | 2 -
src/include/commands/defrem.h | 9 -------
10 files changed, 70 insertions(+), 68 deletions(-)
diff --git a/src/backend/catalog/namespace.c b/src/backend/catalog/namespace.c
index 3727146..0a04f4d 100644
--- a/src/backend/catalog/namespace.c
+++ b/src/backend/catalog/namespace.c
@@ -2340,6 +2340,42 @@ LookupCreationNamespace(const char *nspname)
}
/*
+ * Check new namespace validity in ALTER OBJECT ... SET SCHEMA ... and
+ * ereport(ERROR, ...) in case of any problem.
+ */
+void
+CheckSetNamespace(Oid oldNspOid, Oid nspOid,
+ const char *name, const char *objtype)
+{
+ if (oldNspOid == nspOid)
+ ereport(ERROR,
+ (errcode(ERRCODE_DUPLICATE_OBJECT),
+ errmsg("%s \"%s\" already exists in schema \"%s\"",
+ objtype, name, get_namespace_name(nspOid))));
+
+ /* disallow renaming into or out of temp schemas */
+ if (isAnyTempNamespace(nspOid) || isAnyTempNamespace(oldNspOid))
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("cannot move objects into or out of temporary schemas")));
+
+ /* same for TOAST schema */
+ if (nspOid == PG_TOAST_NAMESPACE || oldNspOid == PG_TOAST_NAMESPACE)
+ ereport(ERROR,
+ (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+ errmsg("cannot move objects into or out of TOAST schema")));
+
+ /* check for duplicate name (more friendly than unique-index failure) */
+ if (SearchSysCacheExists2(TYPENAMENSP,
+ CStringGetDatum(name),
+ ObjectIdGetDatum(nspOid)))
+ ereport(ERROR,
+ (errcode(ERRCODE_DUPLICATE_OBJECT),
+ errmsg("%s \"%s\" already exists in schema \"%s\"",
+ objtype, name, get_namespace_name(nspOid))));
+}
+
+/*
* QualifiedNameGetCreationNamespace
* Given a possibly-qualified name for an object (in List-of-Values
* format), determine what namespace the object should be created in.
diff --git a/src/backend/catalog/pg_namespace.c b/src/backend/catalog/pg_namespace.c
index eabb19d..71ebd7a 100644
--- a/src/backend/catalog/pg_namespace.c
+++ b/src/backend/catalog/pg_namespace.c
@@ -17,10 +17,8 @@
#include "access/heapam.h"
#include "catalog/dependency.h"
#include "catalog/indexing.h"
-#include "catalog/namespace.h"
#include "catalog/pg_namespace.h"
#include "utils/builtins.h"
-#include "utils/lsyscache.h"
#include "utils/rel.h"
#include "utils/syscache.h"
@@ -79,39 +77,3 @@ NamespaceCreate(const char *nspName, Oid ownerId)
return nspoid;
}
-
-/*
- * Check new namespace validity in ALTER OBJECT ... SET SCHEMA ... and
- * ereport(ERROR, ...) in case of any problem.
- */
-void
-CheckSetNamespace(Oid oldNspOid, Oid nspOid,
- const char *name, const char *objtype)
-{
- if (oldNspOid == nspOid)
- ereport(ERROR,
- (errcode(ERRCODE_DUPLICATE_OBJECT),
- errmsg("%s \"%s\" already exists in schema \"%s\"",
- objtype, name, get_namespace_name(nspOid))));
-
- /* disallow renaming into or out of temp schemas */
- if (isAnyTempNamespace(nspOid) || isAnyTempNamespace(oldNspOid))
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("cannot move objects into or out of temporary schemas")));
-
- /* same for TOAST schema */
- if (nspOid == PG_TOAST_NAMESPACE || oldNspOid == PG_TOAST_NAMESPACE)
- ereport(ERROR,
- (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("cannot move objects into or out of TOAST schema")));
-
- /* check for duplicate name (more friendly than unique-index failure) */
- if (SearchSysCacheExists2(TYPENAMENSP,
- CStringGetDatum(name),
- ObjectIdGetDatum(nspOid)))
- ereport(ERROR,
- (errcode(ERRCODE_DUPLICATE_OBJECT),
- errmsg("%s \"%s\" already exists in schema \"%s\"",
- objtype, name, get_namespace_name(nspOid))));
-}
diff --git a/src/backend/commands/conversioncmds.c b/src/backend/commands/conversioncmds.c
index d989c07..75c06aa 100644
--- a/src/backend/commands/conversioncmds.c
+++ b/src/backend/commands/conversioncmds.c
@@ -33,6 +33,8 @@
static void AlterConversionOwner_internal(Relation rel, Oid conversionOid,
Oid newOwnerId);
+static void AlterConversionNamespace_internal(Relation rel, Oid conversionOid,
+ Oid nspOid);
/*
* CREATE CONVERSION
@@ -350,7 +352,7 @@ AlterConversionNamespace(List *name, const char *newschema)
}
/*
- * Change conversion owner, by oid
+ * Change conversion schema, by oid
*/
void
AlterConversionNamespace_oid(Oid conversionOid, Oid newNspOid)
@@ -364,7 +366,7 @@ AlterConversionNamespace_oid(Oid conversionOid, Oid newNspOid)
heap_close(rel, NoLock);
}
-void
+static void
AlterConversionNamespace_internal(Relation rel, Oid conversionOid, Oid nspOid)
{
Oid oldNspOid;
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c
index 596779c..bfda30c 100644
--- a/src/backend/commands/opclasscmds.c
+++ b/src/backend/commands/opclasscmds.c
@@ -81,6 +81,10 @@ static void AlterOpClassOwner_internal(Relation rel, HeapTuple tuple,
Oid newOwnerId);
static void AlterOpFamilyOwner_internal(Relation rel, HeapTuple tuple,
Oid newOwnerId);
+static void AlterOpClassNamespace_internal(Relation rel, HeapTuple tup,
+ Oid nspOid);
+extern void AlterOpFamilyNamespace_internal(Relation rel, HeapTuple tup,
+ Oid nspOid);
/*
@@ -1955,13 +1959,13 @@ AlterOpClassNamespace_oid(Oid opclassOid, Oid newNspOid)
if (!HeapTupleIsValid(tup))
elog(ERROR, "cache lookup failed for opclass %u", opclassOid);
- AlterOpClassOwner_internal(rel, tup, newNspOid);
+ AlterOpClassNamespace_internal(rel, tup, newNspOid);
heap_freetuple(tup);
heap_close(rel, NoLock);
}
-void
+static void
AlterOpClassNamespace_internal(Relation rel, HeapTuple tup, Oid nspOid)
{
Oid oldNspOid;
diff --git a/src/backend/commands/operatorcmds.c b/src/backend/commands/operatorcmds.c
index 0a94c12..3868216 100644
--- a/src/backend/commands/operatorcmds.c
+++ b/src/backend/commands/operatorcmds.c
@@ -53,6 +53,7 @@
static void AlterOperatorOwner_internal(Relation rel, Oid operOid, Oid newOwnerId);
+static void AlterOperatorNamespace_internal(Relation rel, Oid operOid, Oid nspOid);
/*
* DefineOperator
@@ -458,18 +459,6 @@ AlterOperatorOwner_internal(Relation rel, Oid operOid, Oid newOwnerId)
* Execute ALTER OPERATOR SET SCHEMA
*/
void
-AlterOperatorNamespace_oid(Oid operOid, Oid newNspOid)
-{
- Relation rel;
-
- rel = heap_open(OperatorRelationId, RowExclusiveLock);
-
- AlterOperatorOwner_internal(rel, operOid, newNspOid);
-
- heap_close(rel, NoLock);
-}
-
-void
AlterOperatorNamespace(List *names, List *argtypes, const char *newschema)
{
List *operatorName = names;
@@ -494,6 +483,18 @@ AlterOperatorNamespace(List *names, List *argtypes, const char *newschema)
}
void
+AlterOperatorNamespace_oid(Oid operOid, Oid newNspOid)
+{
+ Relation rel;
+
+ rel = heap_open(OperatorRelationId, RowExclusiveLock);
+
+ AlterOperatorNamespace_internal(rel, operOid, newNspOid);
+
+ heap_close(rel, NoLock);
+}
+
+static void
AlterOperatorNamespace_internal(Relation rel, Oid operOid, Oid nspOid)
{
Form_pg_operator oprForm;
diff --git a/src/backend/commands/tsearchcmds.c b/src/backend/commands/tsearchcmds.c
index aa309be..e441038 100644
--- a/src/backend/commands/tsearchcmds.c
+++ b/src/backend/commands/tsearchcmds.c
@@ -52,6 +52,14 @@ static void MakeConfigurationMapping(AlterTSConfigurationStmt *stmt,
HeapTuple tup, Relation relMap);
static void DropConfigurationMapping(AlterTSConfigurationStmt *stmt,
HeapTuple tup, Relation relMap);
+static void AlterTSParserNamespace_internal(Relation rel, Oid prsId,
+ Oid nspOid);
+static void AlterTSDictionaryNamespace_internal(Relation rel, Oid dictId,
+ Oid nspOid);
+static void AlterTSTemplateNamespace_internal(Relation rel, Oid tmplId,
+ Oid nspOid);
+static void AlterTSConfigurationNamespace_internal(Relation rel, Oid cfgId,
+ Oid nspOid);
/* --------------------- TS Parser commands ------------------------ */
@@ -426,7 +434,7 @@ AlterTSParserNamespace_oid(Oid prsId, Oid newNspOid)
heap_close(rel, NoLock);
}
-void
+static void
AlterTSParserNamespace_internal(Relation rel, Oid prsId, Oid nspOid)
{
HeapTuple tup;
diff --git a/src/include/catalog/namespace.h b/src/include/catalog/namespace.h
index c6672e9..16d5763 100644
--- a/src/include/catalog/namespace.h
+++ b/src/include/catalog/namespace.h
@@ -94,6 +94,8 @@ extern Oid LookupExplicitNamespace(const char *nspname);
extern Oid get_namespace_oid(const char *nspname, bool missing_ok);
extern Oid LookupCreationNamespace(const char *nspname);
+extern void CheckSetNamespace(Oid oldNspOid, Oid nspOid,
+ const char *name, const char *objtype);
extern Oid QualifiedNameGetCreationNamespace(List *names, char **objname_p);
extern RangeVar *makeRangeVarFromNameList(List *names);
extern char *NameListToString(List *names);
diff --git a/src/include/catalog/pg_namespace.h b/src/include/catalog/pg_namespace.h
index b8bed97..1d866d4 100644
--- a/src/include/catalog/pg_namespace.h
+++ b/src/include/catalog/pg_namespace.h
@@ -78,7 +78,5 @@ DESCR("standard public schema");
* prototypes for functions in pg_namespace.c
*/
extern Oid NamespaceCreate(const char *nspName, Oid ownerId);
-extern void CheckSetNamespace(Oid oldNspOid, Oid nspOid,
- const char *name, const char *objtype);
#endif /* PG_NAMESPACE_H */
diff --git a/src/include/commands/conversioncmds.h b/src/include/commands/conversioncmds.h
index 7cd96fa..b315a54 100644
--- a/src/include/commands/conversioncmds.h
+++ b/src/include/commands/conversioncmds.h
@@ -16,7 +16,6 @@
#define CONVERSIONCMDS_H
#include "nodes/parsenodes.h"
-#include "utils/relcache.h"
extern void CreateConversionCommand(CreateConversionStmt *parsetree);
extern void DropConversionsCommand(DropStmt *drop);
@@ -25,7 +24,6 @@ extern void AlterConversionOwner(List *name, Oid newOwnerId);
extern void AlterConversionOwner_oid(Oid conversionOid, Oid newOwnerId);
extern void AlterConversionNamespace(List *name, const char *newschema);
extern void AlterConversionNamespace_oid(Oid conversionOid, Oid newNspOid);
-extern void AlterConversionNamespace_internal(Relation rel, Oid conversionOid, Oid nspOid);
#endif /* CONVERSIONCMDS_H */
diff --git a/src/include/commands/defrem.h b/src/include/commands/defrem.h
index e2153ba..584ef90 100644
--- a/src/include/commands/defrem.h
+++ b/src/include/commands/defrem.h
@@ -14,9 +14,7 @@
#ifndef DEFREM_H
#define DEFREM_H
-#include "access/htup.h"
#include "nodes/parsenodes.h"
-#include "utils/relcache.h"
/* commands/indexcmds.c */
@@ -83,7 +81,6 @@ extern Oid get_opclass_oid(Oid amID, List *opclassname, bool missing_ok);
extern Oid get_opfamily_oid(Oid amID, List *opfamilyname, bool missing_ok);
extern void AlterOperatorNamespace_oid(Oid operOid, Oid newNspOid);
extern void AlterOperatorNamespace(List *names, List *argtypes, const char *newschema);
-extern void AlterOperatorNamespace_internal(Relation rel, Oid operoid, Oid nspOid);
/* commands/aggregatecmds.c */
extern void DefineAggregate(List *name, List *args, bool oldstyle,
@@ -108,13 +105,11 @@ extern void AlterOpClassOwner(List *name, const char *access_method, Oid newOwne
extern void AlterOpClassOwner_oid(Oid opclassOid, Oid newOwnerId);
extern void AlterOpClassNamespace(List *name, List *argam, const char *newschema);
extern void AlterOpClassNamespace_oid(Oid opclassOid, Oid newNspOid);
-extern void AlterOpClassNamespace_internal(Relation rel, HeapTuple tup, Oid nspOid);
extern void AlterOpFamilyOwner(List *name, const char *access_method, Oid newOwnerId);
extern void AlterOpFamilyOwner_oid(Oid opfamilyOid, Oid newOwnerId);
extern Oid get_am_oid(const char *amname, bool missing_ok);
extern void AlterOpFamilyNamespace(List *name, List *argam, const char *newschema);
extern void AlterOpFamilyNamespace_oid(Oid opfamilyOid, Oid newNspOid);
-extern void AlterOpFamilyNamespace_internal(Relation rel, HeapTuple tup, Oid nspOid);
/* commands/tsearchcmds.c */
extern void DefineTSParser(List *names, List *parameters);
@@ -123,7 +118,6 @@ extern void RemoveTSParsers(DropStmt *drop);
extern void RemoveTSParserById(Oid prsId);
extern void AlterTSParserNamespace(List *name, const char *newschema);
extern void AlterTSParserNamespace_oid(Oid prsId, Oid newNspOid);
-extern void AlterTSParserNamespace_internal(Relation rel, Oid prsId, Oid nspOid);
extern void DefineTSDictionary(List *names, List *parameters);
extern void RenameTSDictionary(List *oldname, const char *newname);
@@ -133,13 +127,11 @@ extern void AlterTSDictionary(AlterTSDictionaryStmt *stmt);
extern void AlterTSDictionaryOwner(List *name, Oid newOwnerId);
extern void AlterTSDictionaryNamespace(List *name, const char *newschema);
extern void AlterTSDictionaryNamespace_oid(Oid dictId, Oid newNspOid);
-extern void AlterTSDictionaryNamespace_internal(Relation rel, Oid dictId, Oid nspOid);
extern void DefineTSTemplate(List *names, List *parameters);
extern void RenameTSTemplate(List *oldname, const char *newname);
extern void AlterTSTemplateNamespace(List *name, const char *newschema);
extern void AlterTSTemplateNamespace_oid(Oid tmplId, Oid newNspOid);
-extern void AlterTSTemplateNamespace_internal(Relation rel, Oid tmplId, Oid nspOid);
extern void RemoveTSTemplates(DropStmt *stmt);
extern void RemoveTSTemplateById(Oid tmplId);
@@ -147,7 +139,6 @@ extern void DefineTSConfiguration(List *names, List *parameters);
extern void RenameTSConfiguration(List *oldname, const char *newname);
extern void AlterTSConfigurationNamespace(List *name, const char *newschema);
extern void AlterTSConfigurationNamespace_oid(Oid cfgId, Oid newNspOid);
-extern void AlterTSConfigurationNamespace_internal(Relation rel, Oid cfgId, Oid nspOid);
extern void RemoveTSConfigurations(DropStmt *stmt);
extern void RemoveTSConfigurationById(Oid cfgId);
extern void AlterTSConfiguration(AlterTSConfigurationStmt *stmt);
--
1.7.1