Re: Implementation of global temporary tables?

From: Simon Riggs <simon(at)2ndQuadrant(dot)com>
To: Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com>
Cc: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, Zhaomo Yang <zhy001(at)cs(dot)ucsd(dot)edu>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Kevin Grittner <Kevin(dot)Grittner(at)wicourts(dot)gov>, Robert Haas <robertmhaas(at)gmail(dot)com>
Subject: Re: Implementation of global temporary tables?
Date: 2015-07-15 11:58:51
Message-ID: CANP8+jK+FhTi2xQAJRUneXZnZvx6wnv3pM_MQeQjtEBbfvr27Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 14 July 2015 at 23:20, Jim Nasby <Jim(dot)Nasby(at)bluetreble(dot)com> wrote:

> On 7/9/15 12:45 AM, Pavel Stehule wrote:
>
>>
>> 2015-07-09 7:32 GMT+02:00 Zhaomo Yang <zhy001(at)cs(dot)ucsd(dot)edu
>> <mailto:zhy001(at)cs(dot)ucsd(dot)edu>>:
>>
>> > I am not sure, if it is not useless work.
>>
>> I don't understand why an implementation taking approach 2.a would
>> be useless. As I said, its performance will be no worse than current
>> temp tables and it will provide a lot of convenience to users who
>> need to create temp tables in every session.
>>
>>
>> Surely it should be step forward. But you will to have to solve lot of
>> problems with "duplicated" tables in system catalogue, and still it
>> doesn't solve the main problem with temporary tables - the bloating
>> catalogue - and related performance degradation.
>>
>
> That being the "main" problem is strictly a matter of opinion based on
> your experience. Many people don't have a performance problem today, but do
> have to deal with all the pain of handling this manually (as well as all
> the limitations that go with that).
>
> If it's easy to fix the bloat problem at the same time as adding GLOBAL
> TEMP then great! But there's no reason to reject this just because it
> doesn't fix that issue.

Agreed

There are some good arguments for why we need this feature.

Pavel's original description of how to do this seem valid, and from the
link Tom agreed in 2009.

For me the design summary is this

* CREATE GLOBAL TEMP TABLE creates catalog entries like a normal table but
with different relkind
* When we see a request to INSERT, DEL, UPD, SEL from the temp table, if it
does not exist we create it as a TEMP table of the same name, using the
Global's pg_class entry as a template

That meets the SQL Standard and doesn't contain any visibility problems or
need for new internals.

The purpose of this feature is to automatically create a temp table with
the same definition whenever needed. The discussion of "bloat" is just
wrong. We create exactly the same amount of bloat as if we had typed CREATE
TEMP TABLE. Optimising temp table entries in the catalog is another,
separate patch, if we care.

--
Simon Riggs http://www.2ndQuadrant.com/
<http://www.2ndquadrant.com/>
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2015-07-15 12:26:31 Re: Implementation of global temporary tables?
Previous Message Simon Riggs 2015-07-15 11:39:40 Re: Support for N synchronous standby servers - take 2