Thread: Questionable coding in orderedsetaggs.c

Questionable coding in orderedsetaggs.c

From
Jeremy Harris
Date:
In ordered_set_startup() sorts are initialised in non-randomAccess mode
(tuplesort_begin_heap() and ~datum(), last argument).

The use of tuplesort_skip_tuples() feels very like a random access to
me.  I think it doesn't fail because the only use (and implementation)
is to skip forwards; if backwards were tried (as the interface permits)
external sorts would fail because multiple tapes are present for
FINALMERGE.
-- 
Cheers,   Jeremy



Re: Questionable coding in orderedsetaggs.c

From
Tom Lane
Date:
Jeremy Harris <jgh@wizmail.org> writes:
> In ordered_set_startup() sorts are initialised in non-randomAccess mode
> (tuplesort_begin_heap() and ~datum(), last argument).

> The use of tuplesort_skip_tuples() feels very like a random access to
> me.  I think it doesn't fail because the only use (and implementation)
> is to skip forwards; if backwards were tried (as the interface permits)
> external sorts would fail because multiple tapes are present for
> FINALMERGE.

Well, we certainly don't want to incur the overhead of randomAccess mode
when we're not actually going to use it, so I'd resist changing the code
in ordered_set_startup().

It's true that if tuplesort_skip_tuples() supported backwards skip, it
would need to insist that randomAccess mode be enabled *when a backwards
skip is used*.  But such a feature is purely hypothetical ATM.
        regards, tom lane



Re: Questionable coding in orderedsetaggs.c

From
Atri Sharma
Date:


On Sunday, January 26, 2014, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Jeremy Harris <jgh@wizmail.org> writes:
> In ordered_set_startup() sorts are initialised in non-randomAccess mode
> (tuplesort_begin_heap() and ~datum(), last argument).

> The use of tuplesort_skip_tuples() feels very like a random access to
> me.  I think it doesn't fail because the only use (and implementation)
> is to skip forwards; if backwards were tried (as the interface permits)
> external sorts would fail because multiple tapes are present for
> FINALMERGE.

Well, we certainly don't want to incur the overhead of randomAccess mode
when we're not actually going to use it, so I'd resist changing the code
in ordered_set_startup().

It's true that if tuplesort_skip_tuples() supported backwards skip, it
would need to insist that randomAccess mode be enabled *when a backwards
skip is used*.  But such a feature is purely hypothetical ATM.

                         

+1

In ordered set functions, we normally don't skip backwards and skip tuples while sorting in,for e.g. Hypothetical set functions in only a forward manner. 


--
Regards,
 
Atri
l'apprenant