diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-06-06 20:22:58 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-06-06 20:22:58 +0000 |
commit | ee7ac7b11e9e6623871833729958662a4598fbc5 (patch) | |
tree | 61d4f69957d8971b497bbc0cbcc42c4742a0b352 /src/backend/commands | |
parent | 4c8495a1f2ae7a027a4b3e8fdb2aa5b21a5be1fc (diff) | |
download | postgresql-ee7ac7b11e9e6623871833729958662a4598fbc5.tar.gz postgresql-ee7ac7b11e9e6623871833729958662a4598fbc5.zip |
Modify XLogInsert API to make callers specify whether pages to be backed
up have the standard layout with unused space between pd_lower and pd_upper.
When this is set, XLogInsert will omit the unused space without bothering
to scan it to see if it's zero. That saves time in XLogInsert, and also
allows reversion of my earlier patch to make PageRepairFragmentation et al
explicitly re-zero freed space. Per suggestion by Heikki Linnakangas.
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/dbcommands.c | 6 | ||||
-rw-r--r-- | src/backend/commands/sequence.c | 18 | ||||
-rw-r--r-- | src/backend/commands/tablecmds.c | 6 | ||||
-rw-r--r-- | src/backend/commands/tablespace.c | 8 |
4 files changed, 19 insertions, 19 deletions
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c index 370977c6586..40cfb3e6586 100644 --- a/src/backend/commands/dbcommands.c +++ b/src/backend/commands/dbcommands.c @@ -15,7 +15,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.158 2005/06/06 17:01:23 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/dbcommands.c,v 1.159 2005/06/06 20:22:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -444,9 +444,9 @@ createdb(const CreatedbStmt *stmt) xlrec.src_db_id = src_dboid; xlrec.src_tablespace_id = srctablespace; - rdata[0].buffer = InvalidBuffer; rdata[0].data = (char *) &xlrec; rdata[0].len = sizeof(xl_dbase_create_rec); + rdata[0].buffer = InvalidBuffer; rdata[0].next = NULL; (void) XLogInsert(RM_DBASE_ID, XLOG_DBASE_CREATE, rdata); @@ -1074,9 +1074,9 @@ remove_dbtablespaces(Oid db_id) xlrec.db_id = db_id; xlrec.tablespace_id = dsttablespace; - rdata[0].buffer = InvalidBuffer; rdata[0].data = (char *) &xlrec; rdata[0].len = sizeof(xl_dbase_drop_rec); + rdata[0].buffer = InvalidBuffer; rdata[0].next = NULL; (void) XLogInsert(RM_DBASE_ID, XLOG_DBASE_DROP, rdata); diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index 3278be1239f..78b9225b83c 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/sequence.c,v 1.121 2005/06/06 17:01:23 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/sequence.c,v 1.122 2005/06/06 20:22:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -264,14 +264,14 @@ DefineSequence(CreateSeqStmt *seq) newseq->log_cnt = 0; xlrec.node = rel->rd_node; - rdata[0].buffer = InvalidBuffer; rdata[0].data = (char *) &xlrec; rdata[0].len = sizeof(xl_seq_rec); + rdata[0].buffer = InvalidBuffer; rdata[0].next = &(rdata[1]); - rdata[1].buffer = InvalidBuffer; rdata[1].data = (char *) tuple->t_data; rdata[1].len = tuple->t_len; + rdata[1].buffer = InvalidBuffer; rdata[1].next = NULL; recptr = XLogInsert(RM_SEQ_ID, XLOG_SEQ_LOG | XLOG_NO_TRAN, rdata); @@ -338,15 +338,15 @@ AlterSequence(AlterSeqStmt *stmt) XLogRecData rdata[2]; xlrec.node = seqrel->rd_node; - rdata[0].buffer = InvalidBuffer; rdata[0].data = (char *) &xlrec; rdata[0].len = sizeof(xl_seq_rec); + rdata[0].buffer = InvalidBuffer; rdata[0].next = &(rdata[1]); - rdata[1].buffer = InvalidBuffer; rdata[1].data = (char *) page + ((PageHeader) page)->pd_upper; rdata[1].len = ((PageHeader) page)->pd_special - ((PageHeader) page)->pd_upper; + rdata[1].buffer = InvalidBuffer; rdata[1].next = NULL; recptr = XLogInsert(RM_SEQ_ID, XLOG_SEQ_LOG | XLOG_NO_TRAN, rdata); @@ -531,9 +531,9 @@ nextval(PG_FUNCTION_ARGS) XLogRecData rdata[2]; xlrec.node = seqrel->rd_node; - rdata[0].buffer = InvalidBuffer; rdata[0].data = (char *) &xlrec; rdata[0].len = sizeof(xl_seq_rec); + rdata[0].buffer = InvalidBuffer; rdata[0].next = &(rdata[1]); /* set values that will be saved in xlog */ @@ -541,10 +541,10 @@ nextval(PG_FUNCTION_ARGS) seq->is_called = true; seq->log_cnt = 0; - rdata[1].buffer = InvalidBuffer; rdata[1].data = (char *) page + ((PageHeader) page)->pd_upper; rdata[1].len = ((PageHeader) page)->pd_special - ((PageHeader) page)->pd_upper; + rdata[1].buffer = InvalidBuffer; rdata[1].next = NULL; recptr = XLogInsert(RM_SEQ_ID, XLOG_SEQ_LOG | XLOG_NO_TRAN, rdata); @@ -666,9 +666,9 @@ do_setval(RangeVar *sequence, int64 next, bool iscalled) Page page = BufferGetPage(buf); xlrec.node = seqrel->rd_node; - rdata[0].buffer = InvalidBuffer; rdata[0].data = (char *) &xlrec; rdata[0].len = sizeof(xl_seq_rec); + rdata[0].buffer = InvalidBuffer; rdata[0].next = &(rdata[1]); /* set values that will be saved in xlog */ @@ -676,10 +676,10 @@ do_setval(RangeVar *sequence, int64 next, bool iscalled) seq->is_called = true; seq->log_cnt = 0; - rdata[1].buffer = InvalidBuffer; rdata[1].data = (char *) page + ((PageHeader) page)->pd_upper; rdata[1].len = ((PageHeader) page)->pd_special - ((PageHeader) page)->pd_upper; + rdata[1].buffer = InvalidBuffer; rdata[1].next = NULL; recptr = XLogInsert(RM_SEQ_ID, XLOG_SEQ_LOG | XLOG_NO_TRAN, rdata); diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index c7669dfc58f..9981129c0eb 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.160 2005/06/05 00:38:08 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.161 2005/06/06 20:22:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -5667,14 +5667,14 @@ copy_relation_data(Relation rel, SMgrRelation dst) xlrec.node = dst->smgr_rnode; xlrec.blkno = blkno; - rdata[0].buffer = InvalidBuffer; rdata[0].data = (char *) &xlrec; rdata[0].len = SizeOfHeapNewpage; + rdata[0].buffer = InvalidBuffer; rdata[0].next = &(rdata[1]); - rdata[1].buffer = InvalidBuffer; rdata[1].data = (char *) page; rdata[1].len = BLCKSZ; + rdata[1].buffer = InvalidBuffer; rdata[1].next = NULL; recptr = XLogInsert(RM_HEAP_ID, XLOG_HEAP_NEWPAGE, rdata); diff --git a/src/backend/commands/tablespace.c b/src/backend/commands/tablespace.c index f9041a0a643..fac20708c0d 100644 --- a/src/backend/commands/tablespace.c +++ b/src/backend/commands/tablespace.c @@ -37,7 +37,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.20 2005/06/06 17:01:23 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablespace.c,v 1.21 2005/06/06 20:22:57 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -356,14 +356,14 @@ CreateTableSpace(CreateTableSpaceStmt *stmt) XLogRecData rdata[2]; xlrec.ts_id = tablespaceoid; - rdata[0].buffer = InvalidBuffer; rdata[0].data = (char *) &xlrec; rdata[0].len = offsetof(xl_tblspc_create_rec, ts_path); + rdata[0].buffer = InvalidBuffer; rdata[0].next = &(rdata[1]); - rdata[1].buffer = InvalidBuffer; rdata[1].data = (char *) location; rdata[1].len = strlen(location) + 1; + rdata[1].buffer = InvalidBuffer; rdata[1].next = NULL; (void) XLogInsert(RM_TBLSPC_ID, XLOG_TBLSPC_CREATE, rdata); @@ -461,9 +461,9 @@ DropTableSpace(DropTableSpaceStmt *stmt) XLogRecData rdata[1]; xlrec.ts_id = tablespaceoid; - rdata[0].buffer = InvalidBuffer; rdata[0].data = (char *) &xlrec; rdata[0].len = sizeof(xl_tblspc_drop_rec); + rdata[0].buffer = InvalidBuffer; rdata[0].next = NULL; (void) XLogInsert(RM_TBLSPC_ID, XLOG_TBLSPC_DROP, rdata); |