From: | Andres Freund <andres(at)2ndquadrant(dot)com> |
---|---|
To: | Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com> |
Cc: | "PostgreSQL-development" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: [COMMITTERS] pgsql: Move WAL continuation record information to WAL page header. |
Date: | 2012-06-27 16:10:31 |
Message-ID: | 201206271810.32248.andres@2ndquadrant.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers pgsql-hackers |
On Wednesday, June 27, 2012 05:09:46 PM Heikki Linnakangas wrote:
> On 27.06.2012 17:53, Andres Freund wrote:
> > I had noticed one thing when reviewing the patches before:
> >
> > @@ -717,6 +719,15 @@ XLogInsert(RmgrId rmid, uint8 info, XLogRecData
> > *rdata)
> >
> > bool doPageWrites;
> > bool isLogSwitch = (rmid == RM_XLOG_ID&& info ==
> > XLOG_SWITCH); uint8 info_orig = info;
> >
> > + static XLogRecord *rechdr;
> > +
> > + if (rechdr == NULL)
> > + {
> > + rechdr = malloc(SizeOfXLogRecord);
> > + if (rechdr == NULL)
> > + elog(ERROR, "out of memory");
> > + MemSet(rechdr, 0, SizeOfXLogRecord);
> > + }
> >
> > /* cross-check on whether we should be here or not */
> > if (!XLogInsertAllowed())
> >
> > Why do you allocate this dynamically? XLogRecord is 32bytes, there
> > doesn't seem to be much point in this?
>
> On 64-bit architectures, the struct needs padding at the end to make the
> size MAXALIGNed to 32 bytes; a simple "XLogRecord rechdr" local variable
> would not include that. You could do something like:
>
> union
> {
> XLogRecord rechdr;
> char bytes[SizeOfXLogRecord];
> }
>
> but that's quite ugly too.
Ah, yes. Makes sense.
Btw, the XLogRecord struct is directly layed out with 32bytes here (64bit,
linux) because xl_prev needs to be 8byte aligned...
Andres
--
Andres Freund http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2012-06-27 16:12:47 | pgsql: Fix two more neglected comments, still referring to log/seg. |
Previous Message | Heikki Linnakangas | 2012-06-27 15:09:46 | Re: [COMMITTERS] pgsql: Move WAL continuation record information to WAL page header. |
From | Date | Subject | |
---|---|---|---|
Next Message | Heikki Linnakangas | 2012-06-27 16:13:42 | Re: Regarding WAL Format Changes |
Previous Message | Florian Pflug | 2012-06-27 15:58:47 | Re: [v9.3] Row-Level Security |