Re: [Proposal] Global temporary tables

曾文旌 (义从) <wenjing.zwj@alibaba-inc.com>

From: 曾文旌 <wenjing.zwj@alibaba-inc.com>
To: Prabhat Sahu <prabhat.sahu@enterprisedb.com>
Cc: tushar <tushar.ahuja@enterprisedb.com>, Pavel Stehule <pavel.stehule@gmail.com>, Robert Haas <robertmhaas@gmail.com>, Tomas Vondra <tomas.vondra@2ndquadrant.com>, Konstantin Knizhnik <k.knizhnik@postgrespro.ru>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>, "蔡松露(子嘉)" <zijia@taobao.com>, "Cai, Le" <le.cai@alibaba-inc.com>, "萧少聪(铁庵)" <shaocong.xsc@alibaba-inc.com>
Date: 2020-04-07T08:51:01Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. PageAddItemExtended(): Add LP_UNUSED assertion.

  2. Remove temporary files after backend crash

  3. Fix comment in indexing.c

  4. Fix failure to ignore leftover temp tables after a server crash.


> 2020年4月3日 下午8:43,Prabhat Sahu <prabhat.sahu@enterprisedb.com> 写道:
> 
> Hi Wenjing,
> 
> Please check the allowed values for boolean parameter "on_commit_delete_rows".
> 
> postgres=# create global temp table gtt1(c1 int) with(on_commit_delete_rows='true');
> CREATE TABLE
> Similarly we can successfully create GTT by using the values as: 'true','false', true, false, 'ON', 'OFF', ON, OFF, 1, 0 for boolean parameter "on_commit_delete_rows"
> 
> But we are getting error while using the boolean value as: '1', '0', 't', 'f', 'yes', 'no', 'y', 'n' as below.
> postgres=# create global temp table gtt11(c1 int) with(on_commit_delete_rows='1');
> ERROR:  on_commit_delete_rows requires a Boolean value
> postgres=# create global temp table gtt11(c1 int) with(on_commit_delete_rows='0');
> ERROR:  on_commit_delete_rows requires a Boolean value
> postgres=# create global temp table gtt11(c1 int) with(on_commit_delete_rows='t');
> ERROR:  on_commit_delete_rows requires a Boolean value
> postgres=# create global temp table gtt11(c1 int) with(on_commit_delete_rows='f');
> ERROR:  on_commit_delete_rows requires a Boolean value
> postgres=# create global temp table gtt11(c1 int) with(on_commit_delete_rows='yes');
> ERROR:  on_commit_delete_rows requires a Boolean value
> postgres=# create global temp table gtt11(c1 int) with(on_commit_delete_rows='no');
> ERROR:  on_commit_delete_rows requires a Boolean value
> postgres=# create global temp table gtt11(c1 int) with(on_commit_delete_rows='y');
> ERROR:  on_commit_delete_rows requires a Boolean value
> postgres=# create global temp table gtt11(c1 int) with(on_commit_delete_rows='n');
> ERROR:  on_commit_delete_rows requires a Boolean value
Thanks for review.
This parameter should support all types of writing of the bool type like parameter autovacuum_enabled.
So I fixed in global_temporary_table_v24-pg13.patch.


Wenjing



> 
> -- As per the error message "ERROR:  on_commit_delete_rows requires a Boolean value" either we should allow all the boolean values.
> Example: CREATE VIEW view1 WITH (security_barrier = 'true') as select 5;
> The syntax of VIEW allows all the above possible boolean values for the boolean parameter "security_barrier"
> 
> -- or else we should change the error message something like 
> "ERROR:  on_commit_delete_rows requires 'true','false','ON','OFF',1,0 as Boolean value".
> 
> -- 
> With Regards,
> Prabhat Kumar Sahu
> EnterpriseDB: http://www.enterprisedb.com <http://www.enterprisedb.com/>