Thread: Replace offnum++ by OffsetNumberNext

Replace offnum++ by OffsetNumberNext

From
Fujii Masao
Date:
This is the patch replace offnum++ by OffsetNumberNext.

According to off.h, OffsetNumberNext is the macro prepared to
disambiguate the different manipulations on OffsetNumbers.
But, increment operator was used in some places instead of the macro.

--
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center
TEL (03)5860-5115
FAX (03)5463-5490
? patch.diff
Index: src/backend/access/heap/pruneheap.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/access/heap/pruneheap.c,v
retrieving revision 1.9
diff -c -r1.9 pruneheap.c
*** src/backend/access/heap/pruneheap.c    26 Mar 2008 21:10:37 -0000    1.9
--- src/backend/access/heap/pruneheap.c    4 Apr 2008 14:34:19 -0000
***************
*** 789,795 ****
      MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber));

      maxoff = PageGetMaxOffsetNumber(page);
!     for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum++)
      {
          ItemId        lp = PageGetItemId(page, offnum);
          HeapTupleHeader htup;
--- 789,795 ----
      MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber));

      maxoff = PageGetMaxOffsetNumber(page);
!     for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum))
      {
          ItemId        lp = PageGetItemId(page, offnum);
          HeapTupleHeader htup;
Index: src/backend/executor/nodeBitmapHeapscan.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/executor/nodeBitmapHeapscan.c,v
retrieving revision 1.25
diff -c -r1.25 nodeBitmapHeapscan.c
*** src/backend/executor/nodeBitmapHeapscan.c    26 Mar 2008 21:10:38 -0000    1.25
--- src/backend/executor/nodeBitmapHeapscan.c    4 Apr 2008 14:34:19 -0000
***************
*** 301,307 ****
          OffsetNumber maxoff = PageGetMaxOffsetNumber(dp);
          OffsetNumber offnum;

!         for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum++)
          {
              ItemId        lp;
              HeapTupleData loctup;
--- 301,307 ----
          OffsetNumber maxoff = PageGetMaxOffsetNumber(dp);
          OffsetNumber offnum;

!         for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum))
          {
              ItemId        lp;
              HeapTupleData loctup;
Index: src/backend/storage/page/bufpage.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/backend/storage/page/bufpage.c,v
retrieving revision 1.78
diff -c -r1.78 bufpage.c
*** src/backend/storage/page/bufpage.c    10 Feb 2008 20:39:08 -0000    1.78
--- src/backend/storage/page/bufpage.c    4 Apr 2008 14:34:19 -0000
***************
*** 533,539 ****
                   * Since this is just a hint, we must confirm that there is
                   * indeed a free line pointer
                   */
!                 for (offnum = FirstOffsetNumber; offnum <= nline; offnum++)
                  {
                      ItemId        lp = PageGetItemId(page, offnum);

--- 533,539 ----
                   * Since this is just a hint, we must confirm that there is
                   * indeed a free line pointer
                   */
!                 for (offnum = FirstOffsetNumber; offnum <= nline; offnum = OffsetNumberNext(offnum))
                  {
                      ItemId        lp = PageGetItemId(page, offnum);

***************
*** 736,742 ****
      totallen = 0;
      nused = 0;
      nextitm = 0;
!     for (offnum = 1; offnum <= nline; offnum++)
      {
          lp = PageGetItemId(page, offnum);
          Assert(ItemIdHasStorage(lp));
--- 736,742 ----
      totallen = 0;
      nused = 0;
      nextitm = 0;
!     for (offnum = FirstOffsetNumber; offnum <= nline; offnum = OffsetNumberNext(offnum))
      {
          lp = PageGetItemId(page, offnum);
          Assert(ItemIdHasStorage(lp));

Re: Replace offnum++ by OffsetNumberNext

From
Tom Lane
Date:
Fujii Masao <fujii.masao@oss.ntt.co.jp> writes:
> This is the patch replace offnum++ by OffsetNumberNext.
> According to off.h, OffsetNumberNext is the macro prepared to
> disambiguate the different manipulations on OffsetNumbers.
> But, increment operator was used in some places instead of the macro.

I wonder if we shouldn't go the other way, ie, use ++ everywhere.
OffsetNumberNext seems like just useless obscurantism ...

            regards, tom lane

Re: Replace offnum++ by OffsetNumberNext

From
Bruce Momjian
Date:
Tom Lane wrote:
> Fujii Masao <fujii.masao@oss.ntt.co.jp> writes:
> > This is the patch replace offnum++ by OffsetNumberNext.
> > According to off.h, OffsetNumberNext is the macro prepared to
> > disambiguate the different manipulations on OffsetNumbers.
> > But, increment operator was used in some places instead of the macro.
>
> I wonder if we shouldn't go the other way, ie, use ++ everywhere.
> OffsetNumberNext seems like just useless obscurantism ...

The only value I saw to OffsetNumberNext was the fact is does int16
increment, with casting.  There is also the comment:

 *      Increments/decrements the argument.  These macros look pointless
 *      but they help us disambiguate the different manipulations on
 *      OffsetNumbers (e.g., sometimes we subtract one from an
 *      OffsetNumber to move back, and sometimes we do so to form a
 *      real C array index).

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +

Re: Replace offnum++ by OffsetNumberNext

From
Bruce Momjian
Date:
Patch applied.  Thanks.

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


Fujii Masao wrote:
> This is the patch replace offnum++ by OffsetNumberNext.
>
> According to off.h, OffsetNumberNext is the macro prepared to
> disambiguate the different manipulations on OffsetNumbers.
> But, increment operator was used in some places instead of the macro.
>
> --
> Fujii Masao
> NIPPON TELEGRAPH AND TELEPHONE CORPORATION
> NTT Open Source Software Center
> TEL (03)5860-5115
> FAX (03)5463-5490

> ? patch.diff
> Index: src/backend/access/heap/pruneheap.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/src/backend/access/heap/pruneheap.c,v
> retrieving revision 1.9
> diff -c -r1.9 pruneheap.c
> *** src/backend/access/heap/pruneheap.c    26 Mar 2008 21:10:37 -0000    1.9
> --- src/backend/access/heap/pruneheap.c    4 Apr 2008 14:34:19 -0000
> ***************
> *** 789,795 ****
>       MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber));
>
>       maxoff = PageGetMaxOffsetNumber(page);
> !     for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum++)
>       {
>           ItemId        lp = PageGetItemId(page, offnum);
>           HeapTupleHeader htup;
> --- 789,795 ----
>       MemSet(root_offsets, 0, MaxHeapTuplesPerPage * sizeof(OffsetNumber));
>
>       maxoff = PageGetMaxOffsetNumber(page);
> !     for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum))
>       {
>           ItemId        lp = PageGetItemId(page, offnum);
>           HeapTupleHeader htup;
> Index: src/backend/executor/nodeBitmapHeapscan.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/src/backend/executor/nodeBitmapHeapscan.c,v
> retrieving revision 1.25
> diff -c -r1.25 nodeBitmapHeapscan.c
> *** src/backend/executor/nodeBitmapHeapscan.c    26 Mar 2008 21:10:38 -0000    1.25
> --- src/backend/executor/nodeBitmapHeapscan.c    4 Apr 2008 14:34:19 -0000
> ***************
> *** 301,307 ****
>           OffsetNumber maxoff = PageGetMaxOffsetNumber(dp);
>           OffsetNumber offnum;
>
> !         for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum++)
>           {
>               ItemId        lp;
>               HeapTupleData loctup;
> --- 301,307 ----
>           OffsetNumber maxoff = PageGetMaxOffsetNumber(dp);
>           OffsetNumber offnum;
>
> !         for (offnum = FirstOffsetNumber; offnum <= maxoff; offnum = OffsetNumberNext(offnum))
>           {
>               ItemId        lp;
>               HeapTupleData loctup;
> Index: src/backend/storage/page/bufpage.c
> ===================================================================
> RCS file: /projects/cvsroot/pgsql/src/backend/storage/page/bufpage.c,v
> retrieving revision 1.78
> diff -c -r1.78 bufpage.c
> *** src/backend/storage/page/bufpage.c    10 Feb 2008 20:39:08 -0000    1.78
> --- src/backend/storage/page/bufpage.c    4 Apr 2008 14:34:19 -0000
> ***************
> *** 533,539 ****
>                    * Since this is just a hint, we must confirm that there is
>                    * indeed a free line pointer
>                    */
> !                 for (offnum = FirstOffsetNumber; offnum <= nline; offnum++)
>                   {
>                       ItemId        lp = PageGetItemId(page, offnum);
>
> --- 533,539 ----
>                    * Since this is just a hint, we must confirm that there is
>                    * indeed a free line pointer
>                    */
> !                 for (offnum = FirstOffsetNumber; offnum <= nline; offnum = OffsetNumberNext(offnum))
>                   {
>                       ItemId        lp = PageGetItemId(page, offnum);
>
> ***************
> *** 736,742 ****
>       totallen = 0;
>       nused = 0;
>       nextitm = 0;
> !     for (offnum = 1; offnum <= nline; offnum++)
>       {
>           lp = PageGetItemId(page, offnum);
>           Assert(ItemIdHasStorage(lp));
> --- 736,742 ----
>       totallen = 0;
>       nused = 0;
>       nextitm = 0;
> !     for (offnum = FirstOffsetNumber; offnum <= nline; offnum = OffsetNumberNext(offnum))
>       {
>           lp = PageGetItemId(page, offnum);
>           Assert(ItemIdHasStorage(lp));
>
>
> --
> Sent via pgsql-patches mailing list (pgsql-patches@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-patches

--
  Bruce Momjian  <bruce@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +