Skip WAL in ALTER TABLE

View: New views
5 Messages — Rating Filter:   Alert me  

Skip WAL in ALTER TABLE

by Takahiro Itagaki :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

We can skip writing WAL during COPY and CLUSTER if archive_mode is off,
but we don't use the skipping during tables rewrites in ALTER TABLE.
Also we don't use BulkInsertState there.

Is it possible to use WAL-skipping and BulkInsertState in ATRewriteTable() ?
If ok, I'll submit a patch for the next commitfest.

Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center


--
Sent via pgsql-hackers mailing list (pgsql-hackers@...)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Re: Skip WAL in ALTER TABLE

by Simon Riggs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Tue, 2009-10-13 at 11:39 +0900, Itagaki Takahiro wrote:

> We can skip writing WAL during COPY and CLUSTER if archive_mode is off,
> but we don't use the skipping during tables rewrites in ALTER TABLE.
> Also we don't use BulkInsertState there.
>
> Is it possible to use WAL-skipping and BulkInsertState in ATRewriteTable() ?
> If ok, I'll submit a patch for the next commitfest.

Yes

--
 Simon Riggs           www.2ndQuadrant.com


--
Sent via pgsql-hackers mailing list (pgsql-hackers@...)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Re: Skip WAL in ALTER TABLE

by Takahiro Itagaki :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Simon Riggs <simon@...> wrote:

> > Is it possible to use WAL-skipping and BulkInsertState in ATRewriteTable() ?
> > If ok, I'll submit a patch for the next commitfest.
>
> Yes

Patch attached.
This patch skip WAL writes during table rewrites from ALTER TABLE.

Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center




--
Sent via pgsql-hackers mailing list (pgsql-hackers@...)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

nowal-on-alter-table_20091015.patch (3K) Download Attachment

Re: Skip WAL in ALTER TABLE

by Simon Riggs :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

On Thu, 2009-10-15 at 13:18 +0900, Itagaki Takahiro wrote:
> Simon Riggs <simon@...> wrote:
>
> > > Is it possible to use WAL-skipping and BulkInsertState in ATRewriteTable() ?
> > > If ok, I'll submit a patch for the next commitfest.
> >
> > Yes
>
> Patch attached.
> This patch skip WAL writes during table rewrites from ALTER TABLE.

Looks fine to me, apart from

 if (!XLogArchivingActive() || newrel->rd_istemp)
        hi_options |= HEAP_INSERT_SKIP_WAL;

I think the second condition is unnecessary, so just

 if (!XLogArchivingActive())
        hi_options |= HEAP_INSERT_SKIP_WAL;

which is what COPY does. Temp tables are excluded in heap_insert()

--
 Simon Riggs           www.2ndQuadrant.com


--
Sent via pgsql-hackers mailing list (pgsql-hackers@...)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Re: Skip WAL in ALTER TABLE

by Heikki Linnakangas-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Simon Riggs wrote:

> On Thu, 2009-10-15 at 13:18 +0900, Itagaki Takahiro wrote:
>> Simon Riggs <simon@...> wrote:
>>
>>>> Is it possible to use WAL-skipping and BulkInsertState in ATRewriteTable() ?
>>>> If ok, I'll submit a patch for the next commitfest.
>>> Yes
>> Patch attached.
>> This patch skip WAL writes during table rewrites from ALTER TABLE.
>
> Looks fine to me, apart from
>
>  if (!XLogArchivingActive() || newrel->rd_istemp)
> hi_options |= HEAP_INSERT_SKIP_WAL;
>
> I think the second condition is unnecessary, so just
>
>  if (!XLogArchivingActive())
> hi_options |= HEAP_INSERT_SKIP_WAL;
>
> which is what COPY does. Temp tables are excluded in heap_insert()

Yep.

Committed with the above and some other small changes. I moved the
initialization of BulkInsertState and hi_options outside the if-block.
Feels clearer this way, and they're only needed if newrel==true, not if
only needscan==true.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@...)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers