Re: Schema variables - new implementation for Postgres 15
Pavel Stehule <pavel.stehule@gmail.com>
From: Pavel Stehule <pavel.stehule@gmail.com>
To: Erik Rijkers <er@xs4all.nl>
Cc: Julien Rouhaud <rjuju123@gmail.com>,
Dean Rasheed <dean.a.rasheed@gmail.com>, Joel Jacobson <joel@compiler.org>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2022-08-25T17:40:57Z
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 →
-
Allow underscores in integer and numeric constants.
- faff8f8e47f1 16.0 cited
-
Remove special outfuncs/readfuncs handling of RangeVar.catalogname.
- 3cece34be842 16.0 cited
-
Remove extra space from dumped ALTER DEFAULT PRIVILEGES.
- 2af33369e794 16.0 cited
-
Create FKs properly when attaching table as partition
- b0284bfb1db5 16.0 cited
-
psql: improve tab-complete's handling of variant SQL names.
- 02b8048ba5dc 15.0 cited
st 24. 8. 2022 v 10:04 odesílatel Erik Rijkers <er@xs4all.nl> napsal: > Op 24-08-2022 om 08:37 schreef Pavel Stehule: > >> > > > > I fixed these. > > > > > [v20220824-1-*.patch] > > Hi Pavel, > > I noticed just now that variable assignment (i.e., LET) unexpectedly > (for me anyway) cast the type of the input value. Surely that's wrong? > The documentation says clearly enough: > > 'The result must be of the same data type as the session variable.' > > > Example: > > create variable x integer; > let x=1.5; > select x, pg_typeof(x); > x | pg_typeof > ---+----------- > 2 | integer > (1 row) > > > Is this correct? > > If such casts (there are several) are intended then the text of the > documentation should be changed. > yes - the behave is designed like plpgsql assignment or SQL assignment (2022-08-25 19:35:35) postgres=# do $$ postgres$# declare i int; postgres$# begin postgres$# i := 1.5; postgres$# raise notice '%', i; postgres$# end; postgres$# $$; NOTICE: 2 DO (2022-08-25 19:38:10) postgres=# create table foo1(a int); CREATE TABLE (2022-08-25 19:38:13) postgres=# insert into foo1 values(1.5); INSERT 0 1 (2022-08-25 19:38:21) postgres=# select * from foo1; ┌───┐ │ a │ ╞═══╡ │ 2 │ └───┘ (1 row) There are the same rules as in SQL. This sentence is not good - the value should be casteable to the target type. Regards Pavel > Thanks, > > Erik > >