From: | Tomas Vondra <tomas(dot)vondra(at)enterprisedb(dot)com> |
---|---|
To: | Thomas <thomasmannhart97(at)gmail(dot)com>, daniel(at)yesql(dot)se |
Cc: | Jaime Casanova <jcasanov(at)systemguards(dot)com(dot)ec>, pgsql <pgsql(at)j-davis(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org, dignoes(at)inf(dot)unibz(dot)it, boehlen(at)ifi(dot)uzh(dot)ch, p(dot)moser(at)noi(dot)bz(dot)it, gamper(at)inf(dot)unibz(dot)it, Thomas Mannhart <thomas_m(at)hotmail(dot)ch> |
Subject: | Re: Patch: Range Merge Join |
Date: | 2021-11-17 22:28:43 |
Message-ID: | 1dbe10e3-2264-d6ad-bd1f-6f98cf474818@enterprisedb.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 11/17/21 15:45, Thomas wrote:
> Thank you for the feedback and sorry for the oversight. I fixed the bug
> and attached a new version of the patch.
>
> Kind Regards, Thomas
>
> Am Mi., 17. Nov. 2021 um 15:03 Uhr schrieb Daniel Gustafsson
> <daniel(at)yesql(dot)se <mailto:daniel(at)yesql(dot)se>>:
>
> This patch fails to compile due to an incorrect function name in an
> assertion:
>
> nodeMergejoin.c:297:9: warning: implicit declaration of function
> 'list_legth' is invalid in C99 [-Wimplicit-function-declaration]
> Assert(list_legth(node->rangeclause) < 3);
>
That still doesn't compile with asserts, because MJCreateRangeData has
Assert(list_length(node->rangeclause) < 3);
but there's no 'node' variable :-/
I took a brief look at the patch, and I think there are two main issues
preventing it from moving forward.
1) no tests
There's not a *single* regression test exercising the new code, so even
after adding Assert(false) to MJCreateRangeData() tests pass just fine.
Clearly, that needs to change.
2) lack of comments
The patch adds a bunch of functions, but it does not really explain what
the functions do (unlike the various surrounding functions). Even if I
can work out what the functions do, it's much harder to determine what
the "contract" is (i.e. what assumptions the function do and what is
guaranteed).
Similarly, the patch modifies/reworks large blocks of executor code,
without updating the comments describing what the block does.
See 0002 for various places that I think are missing comments.
Aside from that, I have a couple minor comments:
3) I'm not quite sure I like "Range Merge Join" to be honest. It's still
a "Merge Join" pretty much. What about ditching the "Range"? There'll
still be "Range Cond" key, which should be good enough I think.
4) Some minor whitespace issues (tabs vs. spaces). See 0002.
regards
--
Tomas Vondra
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company
Attachment | Content-Type | Size |
---|---|---|
0002-review.patch | text/x-patch | 9.2 KB |
0001-2021-11-17.patch | text/x-patch | 48.5 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2021-11-17 22:47:10 | Re: XLogReadRecord() error in XlogReadTwoPhaseData() |
Previous Message | Thomas Munro | 2021-11-17 22:26:57 | Re: Windows: Wrong error message at connection termination |