Re: indentation in _hash_pgaddtup()

2022-11-24 Thread David Rowley
On Fri, 25 Nov 2022 at 09:31, Tom Lane  wrote:
> If you wanted to be hard-nosed about 80 character width, you could
> pull out the PageGetItemId call into a separate local variable.
> I wasn't going to be quite that picky, but I won't object if that
> seems better to you.

I wasn't too worried about the 1 char, but Ted wrote a patch and it
looked a little nicer.

David




Re: indentation in _hash_pgaddtup()

2022-11-24 Thread David Rowley
On Fri, 25 Nov 2022 at 09:40, Ted Yu  wrote:
> Patch v4 stores ItemId in a local variable.

ok, I pushed that one.  Thank you for working on this.

David




Re: indentation in _hash_pgaddtup()

2022-11-24 Thread Ted Yu
On Thu, Nov 24, 2022 at 12:31 PM Tom Lane  wrote:

> David Rowley  writes:
> > After running pgindent on v2, I see it still pushes the lines out
> > quite far. If I add a new line after PageGetItemId(page, and put the
> > variable assignment away from the variable declaration then it looks a
> > bit better. It's still 1 char over the limit.
>
> If you wanted to be hard-nosed about 80 character width, you could
> pull out the PageGetItemId call into a separate local variable.
> I wasn't going to be quite that picky, but I won't object if that
> seems better to you.
>
> regards, tom lane
>

Patch v4 stores ItemId in a local variable.


hash-pgaddtup-indent-v4.patch
Description: Binary data


Re: indentation in _hash_pgaddtup()

2022-11-24 Thread Tom Lane
David Rowley  writes:
> After running pgindent on v2, I see it still pushes the lines out
> quite far. If I add a new line after PageGetItemId(page, and put the
> variable assignment away from the variable declaration then it looks a
> bit better. It's still 1 char over the limit.

If you wanted to be hard-nosed about 80 character width, you could
pull out the PageGetItemId call into a separate local variable.
I wasn't going to be quite that picky, but I won't object if that
seems better to you.

regards, tom lane




Re: indentation in _hash_pgaddtup()

2022-11-24 Thread David Rowley
On Fri, 25 Nov 2022 at 04:29, Ted Yu  wrote:
> Here is patch v2.

After running pgindent on v2, I see it still pushes the lines out
quite far. If I add a new line after PageGetItemId(page, and put the
variable assignment away from the variable declaration then it looks a
bit better. It's still 1 char over the limit.

David
diff --git a/src/backend/access/hash/hashinsert.c 
b/src/backend/access/hash/hashinsert.c
index 9db522051e..dfc7a90d68 100644
--- a/src/backend/access/hash/hashinsert.c
+++ b/src/backend/access/hash/hashinsert.c
@@ -290,12 +290,20 @@ _hash_pgaddtup(Relation rel, Buffer buf, Size itemsize, 
IndexTuple itup,
{
itup_off = PageGetMaxOffsetNumber(page) + 1;
 
+#ifdef USE_ASSERT_CHECKING
/* ensure this tuple's hashkey is >= the final existing tuple */
-   Assert(PageGetMaxOffsetNumber(page) == 0 ||
-  _hash_get_indextuple_hashkey((IndexTuple)
-   
PageGetItem(page, PageGetItemId(page,
-   

PageGetMaxOffsetNumber(page <=
-  _hash_get_indextuple_hashkey(itup));
+   if (PageGetMaxOffsetNumber(page) > 0)
+   {
+   IndexTuple  lasttup;
+
+   lasttup = PageGetItem(page,
+ 
PageGetItemId(page,
+   
PageGetMaxOffsetNumber(page)));
+
+   Assert(_hash_get_indextuple_hashkey(lasttup) <=
+  _hash_get_indextuple_hashkey(itup));
+   }
+#endif
}
else
{


Re: indentation in _hash_pgaddtup()

2022-11-24 Thread Ted Yu
On Thu, Nov 24, 2022 at 7:11 AM Tom Lane  wrote:

> Daniel Gustafsson  writes:
> >> On 24 Nov 2022, at 13:42, Ted Yu  wrote:
> >> In _hash_pgaddtup(), it seems the indentation is off for the assertion.
>
> > Indentation is handled by applying src/tools/pgindent to the code, and
> > re-running it on this file yields no re-indentation so this is in fact
> correct
> > according to the pgindent rules.
>
> It is one messy bit of code though --- perhaps a little more thought
> about where to put line breaks would help?  Alternatively, it could
> be split into multiple statements, along the lines of
>
> #ifdef USE_ASSERT_CHECKING
> if (PageGetMaxOffsetNumber(page) > 0)
> {
> IndexTuple lasttup = PageGetItem(page,
>  PageGetItemId(page,
>
>  PageGetMaxOffsetNumber(page)));
>
> Assert(_hash_get_indextuple_hashkey(lasttup) <=
>_hash_get_indextuple_hashkey(itup));
> }
> #endif
>
> (details obviously tweakable)
>
> regards, tom lane
>

Thanks Tom for the suggestion.

Here is patch v2.


hash-pgaddtup-indent-v2.patch
Description: Binary data


Re: indentation in _hash_pgaddtup()

2022-11-24 Thread Tom Lane
Daniel Gustafsson  writes:
>> On 24 Nov 2022, at 13:42, Ted Yu  wrote:
>> In _hash_pgaddtup(), it seems the indentation is off for the assertion.

> Indentation is handled by applying src/tools/pgindent to the code, and
> re-running it on this file yields no re-indentation so this is in fact correct
> according to the pgindent rules.

It is one messy bit of code though --- perhaps a little more thought
about where to put line breaks would help?  Alternatively, it could
be split into multiple statements, along the lines of

#ifdef USE_ASSERT_CHECKING
if (PageGetMaxOffsetNumber(page) > 0)
{
IndexTuple lasttup = PageGetItem(page,
 PageGetItemId(page,
   
PageGetMaxOffsetNumber(page)));

Assert(_hash_get_indextuple_hashkey(lasttup) <=
   _hash_get_indextuple_hashkey(itup));
}
#endif

(details obviously tweakable)

regards, tom lane




Re: indentation in _hash_pgaddtup()

2022-11-24 Thread Daniel Gustafsson
> On 24 Nov 2022, at 13:42, Ted Yu  wrote:

> In _hash_pgaddtup(), it seems the indentation is off for the assertion.
> 
> Please take a look at the patch.

Indentation is handled by applying src/tools/pgindent to the code, and
re-running it on this file yields no re-indentation so this is in fact correct
according to the pgindent rules.

--
Daniel Gustafsson   https://vmware.com/





indentation in _hash_pgaddtup()

2022-11-24 Thread Ted Yu
Hi,
I was looking at :

commit d09dbeb9bde6b9faabd30e887eff4493331d6424
Author: David Rowley 
Date:   Thu Nov 24 17:21:44 2022 +1300

Speedup hash index builds by skipping needless binary searches

In _hash_pgaddtup(), it seems the indentation is off for the assertion.

Please take a look at the patch.

Thanks


hash-pgaddtup-indent.patch
Description: Binary data