Dimitri Fontaine <dimi...@2ndquadrant.fr> writes: > make -C contrib/citext install > psql -f .../head/share/contrib/citext.sql > psql > dim=# do $$ begin execute 'alter operator class public.citext_ops using > btree set schema utils'; end; $$; > server closed the connection unexpectedly > This probably means the server terminated abnormally > before or while processing the request. > The connection to the server was lost. Attempting reset: Failed.
The fix was ok, but I had to test with the right environment to be able to appreciate that :) Please find it attached. Regards, -- Dimitri Fontaine http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support
*** a/src/backend/commands/alter.c --- b/src/backend/commands/alter.c *************** *** 198,208 **** ExecAlterObjectSchemaStmt(AlterObjectSchemaStmt *stmt) break; case OBJECT_OPCLASS: ! AlterOpClassNamespace(stmt->object, stmt->objarg, stmt->newschema); break; case OBJECT_OPFAMILY: ! AlterOpFamilyNamespace(stmt->object, stmt->objarg, stmt->newschema); break; case OBJECT_SEQUENCE: --- 198,208 ---- break; case OBJECT_OPCLASS: ! AlterOpClassNamespace(stmt->object, stmt->addname, stmt->newschema); break; case OBJECT_OPFAMILY: ! AlterOpFamilyNamespace(stmt->object, stmt->addname, stmt->newschema); break; case OBJECT_SEQUENCE: *** a/src/backend/commands/opclasscmds.c --- b/src/backend/commands/opclasscmds.c *************** *** 1993,2008 **** 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) { 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); --- 1993,2005 ---- * ALTER OPERATOR CLASS any_name USING access_method SET SCHEMA name */ void ! AlterOpClassNamespace(List *name, char *access_method, const char *newschema) { Oid amOid; Relation rel; Oid oid; Oid nspOid; amOid = get_am_oid(access_method, false); rel = heap_open(OperatorClassRelationId, RowExclusiveLock); *************** *** 2185,2199 **** 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) { 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); --- 2182,2194 ---- * ALTER OPERATOR FAMILY any_name USING access_method SET SCHEMA name */ void ! AlterOpFamilyNamespace(List *name, char *access_method, const char *newschema) { Oid amOid; Relation rel; Oid nspOid; Oid oid; amOid = get_am_oid(access_method, false); rel = heap_open(OperatorFamilyRelationId, RowExclusiveLock); *** a/src/backend/parser/gram.y --- b/src/backend/parser/gram.y *************** *** 6225,6231 **** AlterObjectSchemaStmt: AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPCLASS; n->object = $4; ! n->objarg = list_make1($6); n->newschema = $9; $$ = (Node *)n; } --- 6225,6231 ---- AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPCLASS; n->object = $4; ! n->addname = $6; n->newschema = $9; $$ = (Node *)n; } *************** *** 6234,6240 **** AlterObjectSchemaStmt: AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPFAMILY; n->object = $4; ! n->objarg = list_make1($6); n->newschema = $9; $$ = (Node *)n; } --- 6234,6240 ---- AlterObjectSchemaStmt *n = makeNode(AlterObjectSchemaStmt); n->objectType = OBJECT_OPFAMILY; n->object = $4; ! n->addname = $6; n->newschema = $9; $$ = (Node *)n; } *** a/src/include/commands/defrem.h --- b/src/include/commands/defrem.h *************** *** 101,111 **** extern void RenameOpClass(List *name, const char *access_method, const char *new extern void RenameOpFamily(List *name, const char *access_method, const char *newname); extern void AlterOpClassOwner(List *name, const char *access_method, Oid newOwnerId); extern void AlterOpClassOwner_oid(Oid opclassOid, Oid newOwnerId); ! extern void AlterOpClassNamespace(List *name, List *argam, const char *newschema); 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); /* commands/tsearchcmds.c */ extern void DefineTSParser(List *names, List *parameters); --- 101,111 ---- extern void RenameOpFamily(List *name, const char *access_method, const char *newname); extern void AlterOpClassOwner(List *name, const char *access_method, Oid newOwnerId); extern void AlterOpClassOwner_oid(Oid opclassOid, Oid newOwnerId); ! extern void AlterOpClassNamespace(List *name, char *access_method, const char *newschema); 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, char *access_method, const char *newschema); /* commands/tsearchcmds.c */ extern void DefineTSParser(List *names, List *parameters);
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers