Thread: Why we have tuplestore and tuplesort?

Why we have tuplestore and tuplesort?

From
Hitoshi Harada
Date:
Thinking about window function performance improvement as well as
concerning about GROUPING SETS discussed a couple of days before, I
wonder why we have both of tuplestore and tuplesort. They are very
similar but have different functions such as multiple read pointer
with tuplestore whereas perform_sort with tuplesort. If we integrate
them, nodeWindowAgg, for instance, won't need Sort node before it and
will be able to avoid redundant tuple copy from the tuplesort (on the
Sort node) to the tuplestore.

Looking for git/cvs log a bit, tuplesort was already there since 1999
while tuplestore was introduced around 2000 for materialized node. Why
then was tuplestore invented as a new feature instead of extending
tuplesort? Can't we unit them now?


Regards,

-- 
Hitoshi Harada


Re: Why we have tuplestore and tuplesort?

From
Tom Lane
Date:
Hitoshi Harada <umi.tanuki@gmail.com> writes:
> Looking for git/cvs log a bit, tuplesort was already there since 1999
> while tuplestore was introduced around 2000 for materialized node. Why
> then was tuplestore invented as a new feature instead of extending
> tuplesort? Can't we unit them now?

I think they'd be unmaintainable if merged.  Each one is complicated
enough as-is, and they have different concerns and different use-cases
to optimize for.  Moreover it's not clear that merging them would buy us
much --- saving one copy step doesn't excite me, even if it actually
came out to be true which I'm unconvinced about.
        regards, tom lane


Re: Why we have tuplestore and tuplesort?

From
Hitoshi Harada
Date:
2009/8/16 Tom Lane <tgl@sss.pgh.pa.us>:
> Hitoshi Harada <umi.tanuki@gmail.com> writes:
>> Looking for git/cvs log a bit, tuplesort was already there since 1999
>> while tuplestore was introduced around 2000 for materialized node. Why
>> then was tuplestore invented as a new feature instead of extending
>> tuplesort? Can't we unit them now?
>
> I think they'd be unmaintainable if merged.  Each one is complicated
> enough as-is, and they have different concerns and different use-cases
> to optimize for.  Moreover it's not clear that merging them would buy us
> much --- saving one copy step doesn't excite me, even if it actually
> came out to be true which I'm unconvinced about.
>
>                        regards, tom lane
>

I agree it would be unmaintainable. However it sounds like there's no
crystal clear reason the two are separated. Before tuplestore got
multiple read pointers it was quite similar to tuplestore except
performing sort so I can imagine allowing tuplesort to have multiple
read pointers.


Regards,

--
Hitoshi Harada


Re: Why we have tuplestore and tuplesort?

From
Hitoshi Harada
Date:
2009/8/16 Hitoshi Harada <umi.tanuki@gmail.com>:
> 2009/8/16 Tom Lane <tgl@sss.pgh.pa.us>:
>> Hitoshi Harada <umi.tanuki@gmail.com> writes:
>>> Looking for git/cvs log a bit, tuplesort was already there since 1999
>>> while tuplestore was introduced around 2000 for materialized node. Why
>>> then was tuplestore invented as a new feature instead of extending
>>> tuplesort? Can't we unit them now?
>>
>> I think they'd be unmaintainable if merged.  Each one is complicated
>> enough as-is, and they have different concerns and different use-cases
>> to optimize for.  Moreover it's not clear that merging them would buy us
>> much --- saving one copy step doesn't excite me, even if it actually
>> came out to be true which I'm unconvinced about.
>>
>>                        regards, tom lane
>>
>
> I agree it would be unmaintainable. However it sounds like there's no
> crystal clear reason the two are separated. Before tuplestore got
> multiple read pointers it was quite similar to tuplestore except

oops, "similar to tuplesort"

> performing sort so I can imagine allowing tuplesort to have multiple
> read pointers.
>
>
> Regards,
>
> --
> Hitoshi Harada
>



--
Hitoshi Harada