Re: Misleading comment in tuplesort_set_bound

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: James Coleman <jtc331(at)gmail(dot)com>
Cc: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Misleading comment in tuplesort_set_bound
Date: 2019-08-26 21:51:21
Message-ID: 25719.1566856281@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

James Coleman <jtc331(at)gmail(dot)com> writes:
> While digging into the incremental sort patch, I noticed in
> tuplesort.c at the beginning of the function in $SUBJECT we have this
> comment and assertion:

> tuplesort_set_bound(Tuplesortstate *state, int64 bound)
> {
> /* Assert we're called before loading any tuples */
> Assert(state->status == TSS_INITIAL);

> But AFAICT from reading the code in puttuple_common the state remains
> TSS_INITIAL while tuples are inserted (unless we reach a point where
> we decide to transition it to TSS_BOUNDED or TSS_BUILDRUNS).

You missed the relevance of the next line:

Assert(state->memtupcount == 0);

I think the comment is fine as-is. Perhaps the code would be clearer
though, if we merged those two asserts into one?

/* Assert we're called before loading any tuples */
Assert(state->status == TSS_INITIAL &&
state->memtupcount == 0);

I'm not totally sure about the usefulness/relevance of the two
assertions following these, but they could likely do with their
own comment(s), because this one surely isn't covering them.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Geoghegan 2019-08-26 22:48:48 IoT/sensor data and B-Tree page splits
Previous Message Tom Lane 2019-08-26 21:28:57 Re: old_snapshot_threshold vs indexes