Re: PL/pgSQL: Incomplete item Allow handling of %TYPE arrays, e.g. tab.col%TYPE[]
От | Quan Zongliang |
---|---|
Тема | Re: PL/pgSQL: Incomplete item Allow handling of %TYPE arrays, e.g. tab.col%TYPE[] |
Дата | |
Msg-id | ead1c86f-3f6c-4c05-88e2-692549551b48@yeah.net обсуждение исходный текст |
Ответ на | Re: PL/pgSQL: Incomplete item Allow handling of %TYPE arrays, e.g. tab.col%TYPE[] (Pavel Stehule <pavel.stehule@gmail.com>) |
Ответы |
Re: PL/pgSQL: Incomplete item Allow handling of %TYPE arrays, e.g. tab.col%TYPE[]
|
Список | pgsql-hackers |
On 2023/11/20 17:33, Pavel Stehule wrote: > > > I did some deeper check: > > - I don't like too much parser's modification (I am sending alternative > own implementation) - the SQL parser allows richer syntax, and for full > functionality is only few lines more Agree. > > - original patch doesn't solve %ROWTYPE > > (2023-11-20 10:04:36) postgres=# select * from foo; > ┌────┬────┐ > │ a │ b │ > ╞════╪════╡ > │ 10 │ 20 │ > │ 30 │ 40 │ > └────┴────┘ > (2 rows) > > (2023-11-20 10:08:29) postgres=# do $$ > declare v foo%rowtype[]; > begin > v := array(select row(a,b) from foo); > raise notice '%', v; > end; > $$; > NOTICE: {"(10,20)","(30,40)"} > DO > two little fixes 1. spelling mistake ARRAY [ icons ] --> ARRAY [ iconst ] 2. code bug if (!OidIsValid(dtype->typoid)) --> if (!OidIsValid(array_typeid)) > - original patch doesn't solve type RECORD > the error message should be more intuitive, although the arrays of > record type can be supported, but it probably needs bigger research. > > (2023-11-20 10:10:34) postgres=# do $$ > declare r record; v r%type[]; > begin > v := array(select row(a,b) from foo); > raise notice '%', v; > end; > $$; > ERROR: syntax error at or near "%" > LINE 2: declare r record; v r%type[]; > ^ > CONTEXT: invalid type name "r%type[]" > Currently only scalar variables are supported. This error is consistent with the r%type error. And record arrays are not currently supported. Support for r%type should be considered first. For now, let r%type[] report the same error as record[]. I prefer to implement it with a new patch. > - missing documentation My English is not good. I wrote it down, please correct it. Add a note in the "Record Types" documentation that arrays and "Copying Types" are not supported yet. > > - I don't like using the word "partitioned" in the regress test name > "partitioned_table". It is confusing fixed > > Regards > > Pavel
Вложения
В списке pgsql-hackers по дате отправления: