[v9.2] DROP Reworks Part.1 - Consolidate routines to handle DropStmt - Mailing list pgsql-hackers

From Kohei KaiGai
Subject [v9.2] DROP Reworks Part.1 - Consolidate routines to handle DropStmt
Date
Msg-id BANLkTi=jtKuUBF2B5eKC7oS1E-FwY4KFmw@mail.gmail.com
Whole thread Raw
Responses Re: [v9.2] DROP Reworks Part.1 - Consolidate routines to handle DropStmt
List pgsql-hackers
The attached patch can be applied on the part-0 patch, and enables to
consolidate routines to handle DropStmt into one common function;
    void RemoveObjects(DropStmt *stmt);

The top-half of object deletion steps are almost consist of the following steps.
1) Look up object-Id of the supplied object name
   If not found, it raises an error or a notice with skip this deletion.
2) Apply ownership checks on the target object itself or the schema
that underlies
  the target object.
3) Add the ObjectAddress of the target object into ObjectAddresses, then invokes
   performMultipleDeletions() or performDeletion().

However, we don't need to have individual routines for each object classes,
because get_object_address takes up the portion of (1), and
check_object_ownership also takes up the portion of (2).
Here is no differences between most of objects classes on the (3).

So, the new RemoveObjects() consolidates routines to handle DropStmt for
each object classes. Instead of this common function, the following routines
were eliminated.
  RemoveRelations(DropStmt *drop);
  RemoveTypes(DropStmt *drop);
  DropCollationsCommand(DropStmt *drop);
  DropConversionsCommand(DropStmt *drop);
  RemoveSchemas(DropStmt *drop);
  RemoveTSParsers(DropStmt *drop);
  RemoveTSDictionaries(DropStmt *drop);
  RemoveTSTemplates(DropStmt *drop);
  RemoveTSConfigurations(DropStmt *drop);
  RemoveExtensions(DropStmt *drop);

Routines to handle other DROP statement (such as RemoveFuncStmt or
DropPLangStmt) are not scope of this patch to restrain the patch size.
However, it is not a tough work to fit these objects with this structure.
(It may need a discussion for databases, tablespaces and roles)

Thanks,
--
KaiGai Kohei <kaigai@kaigai.gr.jp>

Attachment

pgsql-hackers by date:

Previous
From: Franklin Haut
Date:
Subject: Re: 9.1 beta1 error
Next
From: Bruce Momjian
Date:
Subject: Re: Creating new remote branch in git?