Thread: Skip WAL in ALTER TABLE
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
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
Simon Riggs <simon@2ndQuadrant.com> 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
Attachment
On Thu, 2009-10-15 at 13:18 +0900, Itagaki Takahiro wrote: > Simon Riggs <simon@2ndQuadrant.com> 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
Simon Riggs wrote: > On Thu, 2009-10-15 at 13:18 +0900, Itagaki Takahiro wrote: >> Simon Riggs <simon@2ndQuadrant.com> 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