Re: Reduce per tuple overhead (bitmap)

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Manfred Koizar <mkoi-pg(at)aon(dot)at>
Cc: pgsql-patches(at)postgresql(dot)org
Subject: Re: Reduce per tuple overhead (bitmap)
Date: 2002-06-03 04:23:46
Message-ID: 200206030423.g534NkU10363@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-patches


I assume this will be safe for 7.3 using 7.2 files via pg_upgrade
because those old 7.2 files will just have the longer length, right?

---------------------------------------------------------------------------

Manfred Koizar wrote:
> This small patch makes the length of the null bitmap a multiple
> of 1 byte (has been a multiple of 4 bytes previously), thus saving
> MAXIMUM_ALIGNOF (4 or 8 on modern platforms) bytes per on-disk-tuple
> in certain cases (depending on number of attributes and if there is
> at least one null attribute).
>
> It passes make check for 7.2 and for cvs HEAD.
>
> Though it changes the on-disk-format, there's no need to initdb,
> because data offsets are stored in t_hoff for each tuple. So this
> patch can be applied to HEAD and to the 7.2 branch.
>
> Servus
> Manfred
>
>
> diff -r -u ../orig/src/include/access/htup.h src/include/access/htup.h
> --- ../orig/src/include/access/htup.h Mon Nov 5 18:46:31 2001
> +++ src/include/access/htup.h Sun May 5 08:03:29 2002
> @@ -17,7 +17,7 @@
> #include "storage/bufpage.h"
> #include "storage/relfilenode.h"
>
> -#define MinHeapTupleBitmapSize 32 /* 8 * 4 */
> +#define MinHeapTupleBitmapLen 1 /* in bytes, must be 2**n */
>
> /*
> * MaxHeapAttributeNumber limits the number of (user) columns in a table.
> @@ -57,7 +57,7 @@
>
> /* ^ - 31 bytes - ^ */
>
> - bits8 t_bits[MinHeapTupleBitmapSize / 8];
> + bits8 t_bits[MinHeapTupleBitmapLen];
> /* bit map of NULLs */
>
> /* MORE DATA FOLLOWS AT END OF STRUCT */
> @@ -225,8 +225,8 @@
> * Computes minimum size of bitmap given number of domains.
> */
> #define BITMAPLEN(NATTS) \
> - ((((((int)(NATTS) - 1) >> 3) + 4 - (MinHeapTupleBitmapSize >> 3)) \
> - & ~03) + (MinHeapTupleBitmapSize >> 3))
> + (((((int)(NATTS) - 1) >> 3) \
> + & ~(MinHeapTupleBitmapLen - 1)) + MinHeapTupleBitmapLen)
>
> /*
> * HeapTupleIsValid
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026

In response to

Responses

Browse pgsql-patches by date

  From Date Subject
Next Message Manfred Koizar 2002-06-03 09:52:28 Re: Reduce per tuple overhead (bitmap)
Previous Message Bruce Momjian 2002-06-03 01:10:47 Re: fix for typo in docs