]> granicus.if.org Git - postgresql/commitdiff
Fix REASSIGN OWNED for text search objects
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 15 Jul 2014 17:24:07 +0000 (13:24 -0400)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 15 Jul 2014 17:24:07 +0000 (13:24 -0400)
Trying to reassign objects owned by a user that had text search
dictionaries or configurations used to fail with:
ERROR:  unexpected classid 3600
or
ERROR:  unexpected classid 3602

Fix by adding cases for those object types in a switch in pg_shdepend.c.

Both REASSIGN OWNED and text search objects go back all the way to 8.1,
so backpatch to all supported branches.  In 9.3 the alter-owner code was
made generic, so the required change in recent branches is pretty
simple; however, for 9.2 and older ones we need some additional
reshuffling to enable specifying objects by OID rather than name.

Text search templates and parsers are not owned objects, so there's no
change required for them.

Per bug #9749 reported by Michal Novotný

src/backend/catalog/pg_shdepend.c

index 7aa70fa3b2f3bc1a09e12e000fcae46858a23950..5d41ae4a487dad25b6f7ee52e8946b74996c348f 100644 (file)
@@ -40,6 +40,8 @@
 #include "catalog/pg_proc.h"
 #include "catalog/pg_shdepend.h"
 #include "catalog/pg_tablespace.h"
+#include "catalog/pg_ts_config.h"
+#include "catalog/pg_ts_dict.h"
 #include "catalog/pg_type.h"
 #include "commands/alter.h"
 #include "commands/dbcommands.h"
@@ -1394,6 +1396,8 @@ shdepReassignOwned(List *roleids, Oid newrole)
                                case ExtensionRelationId:
                                case TableSpaceRelationId:
                                case DatabaseRelationId:
+                               case TSConfigRelationId:
+                               case TSDictionaryRelationId:
                                        {
                                                Oid                     classId = sdepForm->classid;
                                                Relation        catalog;