[v9.2] DROP Reworks Part.1 - Consolidate routines to handle DropStmt

From: Kohei KaiGai <kaigai(at)kaigai(dot)gr(dot)jp>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: PgHacker <pgsql-hackers(at)postgresql(dot)org>
Subject: [v9.2] DROP Reworks Part.1 - Consolidate routines to handle DropStmt
Date: 2011-06-14 12:33:16
Message-ID: BANLkTi=jtKuUBF2B5eKC7oS1E-FwY4KFmw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)kaigai(dot)gr(dot)jp>

Attachment Content-Type Size
pgsql-v9.2-drop-reworks-part-1.1.patch application/octet-stream 46.0 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Bruce Momjian 2011-06-14 12:40:09 Re: Creating new remote branch in git?
Previous Message Franklin Haut 2011-06-14 12:29:42 Re: 9.1 beta1 error