From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Simon Riggs <simon(at)2ndquadrant(dot)com> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Theo Schlossnagle <jesus(at)omniti(dot)com>, Martijn van Oosterhout <kleptog(at)svana(dot)org>, pgsql-hackers(at)postgresql(dot)org, Diogo Biazus <diogob(at)gmail(dot)com> |
Subject: | Re: xlogdump fixups and WAL log question. |
Date: | 2006-10-22 15:59:19 |
Message-ID: | 20061022155919.GA2138@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Simon Riggs wrote:
> On Sat, 2006-10-21 at 19:24 -0400, Tom Lane wrote:
> > Can you make the patch cover the case of
> >
> > begin;
> > truncate foo;
> > copy foo from ...
> > commit;
> >
> > It might be infeasible to detect this case, but if it's not ...
>
> I think it is possible to detect this case without making catalog
> entries, so I'll give this a try. Methinks that the truncate *must* be
> the immediately preceding command, otherwise we might have a trigger
> executing to put rows back into the table before we COPY.
Hmm, is it possible to save the "is empty" info somewhere in local
memory, perhaps the relcache (not necessarily propagated), and have
heap_insert turn it off?
That would help when you do things like
begin;
truncate foo, bar;
copy foo from ...
copy bar from ...
commit;
On the other hand, what happens if you do
begin;
truncate foo;
-- another session
copy foo from ...
-- original session
copy foo from ...
commit;
How do you detect that the table is no longer empty?
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2006-10-22 16:12:04 | Re: xlogdump fixups and WAL log question. |
Previous Message | Simon Riggs | 2006-10-22 15:23:02 | Re: adminpack and pg_catalog |