Re: a modest improvement to get_object_address()

From: Cédric Villemain <cedric(dot)villemain(dot)debian(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: a modest improvement to get_object_address()
Date: 2011-11-09 13:37:53
Message-ID: CAF6yO=2UXe5oeWp3nVtXvzuZHnEvFeB-vY0qo-kC5ni=5dhb5g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

2011/11/9 Robert Haas <robertmhaas(at)gmail(dot)com>:
> I'd like to propose the attached patch, which changes
> get_object_address() in a manner similar to what we did in
> RangeVarGetRelid() in commit 4240e429d0c2d889d0cda23c618f94e12c13ade7.
>  The basic idea is that, if we look up an object name, acquire the
> corresponding lock, and then find that the object was dropped during
> the lock wait, we retry the whole operation instead of emitting a
> baffling error message.  Example:
>
> rhaas=# create schema x;
> CREATE SCHEMA
> rhaas=# begin;
> BEGIN
> rhaas=# drop schema x;
> DROP SCHEMA
>
> Then, in another session:
>
> rhaas=# comment on schema x is 'doodle';
>
> Then, in the first session:
>
> rhaas=# commit;
> COMMIT
>
> At this point, the first session must error out.  The current code
> produces this:
>
> ERROR:  cache lookup failed for class 2615 object 16386 subobj 0
>
> With the attached patch, you instead get:
>
> ERROR:  schema "x" does not exist
>
> ...which is obviously quite a bit nicer.
>
> Also, if the concurrent transaction drops and creates the schema
> instead of just dropping it, the new code will allow the operation to
> succeed (with the expected results) rather than failing.
>
> Objections?

Maybe I miss something but:
The ERROR message is misleading: the schema 'x' does exist. And also
why a drop schema would fail and a drop+create would success ?!

>
> --
> Robert Haas
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>
>
> --
> Sent via pgsql-hackers mailing list (pgsql-hackers(at)postgresql(dot)org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-hackers
>
>

--
Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2011-11-09 13:41:58 Re: Materialized views
Previous Message Thom Brown 2011-11-09 13:26:31 Re: Syntax for partitioning