Re: pg_get_expr() hangs with uncommitted DDL transaction - Mailing list pgsql-general

From Tom Lane
Subject Re: pg_get_expr() hangs with uncommitted DDL transaction
Date
Msg-id 24253.1415720122@sss.pgh.pa.us
Whole thread Raw
In response to pg_get_expr() hangs with uncommitted DDL transaction  (Thomas Kellerer <spam_eater@gmx.net>)
Responses Re: pg_get_expr() hangs with uncommitted DDL transaction  (Thomas Kellerer <spam_eater@gmx.net>)
List pgsql-general
Thomas Kellerer <spam_eater@gmx.net> writes:
> Is there a reason why pg_catalog.pg_get_expr() will wait until the exclusive lock on the table is released?

Yes.  It needs to extract attribute names, data types, etc for the target
table and it would also like to be sure that that data is self-consistent.
So it takes out AccessShareLock the same as a query on the table would.

There have been periodic debates about how it would be nice if this and
related ruleutils.c functions would work based on the calling query's
snapshot instead of trying to provide up-to-date info.  However, short
of a rather massive rewrite (and, probably, a lot of duplicative code)
that's not going to happen :-(

            regards, tom lane


pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: trigger Before or After
Next
From: Thomas Kellerer
Date:
Subject: Re: pg_get_expr() hangs with uncommitted DDL transaction