aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2011-01-03 22:08:55 -0500
committerRobert Haas <rhaas@postgresql.org>2011-01-03 22:08:55 -0500
commit7f60be72b0865dd442c4f6164a997ff528a44d85 (patch)
tree510b1cf3846a5976fd1c5b2efa2833b2abbf3c90 /src/backend/commands
parentdc8a14311a4825b6bf7b787764b9f0c3f8d8df8e (diff)
downloadpostgresql-7f60be72b0865dd442c4f6164a997ff528a44d85.tar.gz
postgresql-7f60be72b0865dd442c4f6164a997ff528a44d85.zip
Fix crash in ALTER OPERATOR CLASS/FAMILY .. SET SCHEMA.
In the previous coding, the parser emitted a List containing a C string, which is no good, because copyObject() can't handle it. Dimitri Fontaine
Diffstat (limited to 'src/backend/commands')
-rw-r--r--src/backend/commands/alter.c4
-rw-r--r--src/backend/commands/opclasscmds.c9
2 files changed, 4 insertions, 9 deletions
diff --git a/src/backend/commands/alter.c b/src/backend/commands/alter.c
index 6a9b21d01fe..1c6ae0243e4 100644
--- a/src/backend/commands/alter.c
+++ b/src/backend/commands/alter.c
@@ -198,11 +198,11 @@ ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt)
break;
case OBJECT_OPCLASS:
- AlterOpClassNamespace(stmt->object, stmt->objarg, stmt->newschema);
+ AlterOpClassNamespace(stmt->object, stmt->addname, stmt->newschema);
break;
case OBJECT_OPFAMILY:
- AlterOpFamilyNamespace(stmt->object, stmt->objarg, stmt->newschema);
+ AlterOpFamilyNamespace(stmt->object, stmt->addname, stmt->newschema);
break;
case OBJECT_SEQUENCE:
diff --git a/src/backend/commands/opclasscmds.c b/src/backend/commands/opclasscmds.c
index ab9bc327feb..662b9420387 100644
--- a/src/backend/commands/opclasscmds.c
+++ b/src/backend/commands/opclasscmds.c
@@ -1993,16 +1993,13 @@ AlterOpClassOwner_internal(Relation rel, HeapTuple tup, Oid newOwnerId)
* ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name
*/
void
-AlterOpClassNamespace(List *name, List *argam, const char *newschema)
+AlterOpClassNamespace(List *name, char *access_method, const char *newschema)
{
Oid amOid;
- char *access_method = linitial(argam);
Relation rel;
Oid oid;
Oid nspOid;
- Assert(list_length(argam) == 1);
-
amOid = get_am_oid(access_method, false);
rel = heap_open(OperatorClassRelationId, RowExclusiveLock);
@@ -2185,15 +2182,13 @@ get_am_oid(const char *amname, bool missing_ok)
* ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name
*/
void
-AlterOpFamilyNamespace(List *name, List *argam, const char *newschema)
+AlterOpFamilyNamespace(List *name, char *access_method, const char *newschema)
{
Oid amOid;
- char *access_method = linitial(argam);
Relation rel;
Oid nspOid;
Oid oid;
- Assert(list_length(argam) == 1);
amOid = get_am_oid(access_method, false);
rel = heap_open(OperatorFamilyRelationId, RowExclusiveLock);