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)
andif (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. +