Re: COPY FREEZE has no warning
Bruce Momjian <bruce@momjian.us>
From: Bruce Momjian <bruce@momjian.us>
To: Noah Misch <noah@leadboat.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Jeff Janes <jeff.janes@gmail.com>, Robert Haas <robertmhaas@gmail.com>, Andres Freund <andres@2ndquadrant.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2013-02-02T15:12:54Z
Lists: pgsql-hackers
On Sat, Feb 2, 2013 at 09:51:13AM -0500, Noah Misch wrote: > > OK, so, should we change the error message: > > > > cannot perform FREEZE because of transaction activity after table > > creation or truncation > > > > to > > > > cannot perform FREEZE because the table was not created or > > truncated in the current subtransaction > > > > or do we need to keep the "transaction activity" weasel wording because > > of the second case you listed above? I am suspecting the later. > > Let's touch on the exception in passing by using the phrase "last truncated", > giving this wording for both the second and the third COPY FREEZE error sites: > > cannot perform FREEZE because the table was not created or last > truncated in the current subtransaction Well, so you are saying that there really isn't any use-visible logic for those messages to be different, i.e. that the transaction id can be set to invalid even if we created/truncated in the same transaction, but not the same subtransaction? The comparisons that trigger the two messages are: if (cstate->rel->rd_createSubid != InvalidSubTransactionId || cstate->rel->rd_newRelfilenodeSubid != InvalidSubTransactionId) and if (cstate->rel->rd_createSubid != GetCurrentSubTransactionId() || cstate->rel->rd_newRelfilenodeSubid != GetCurrentSubTransactionId()) The first comparison is creation, the second, truncation. Please confirm and I will make the change, or you can. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + It's impossible for everything to be true. +