st 24. 8. 2022 v 10:04 odesílatel Erik Rijkers <e...@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 > >