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 120802af-b7cd-5f6e-d18f-ecb001ab610f@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[]  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-hackers

On 2023/10/17 12:15, Pavel Stehule wrote:
> 
> 
> út 17. 10. 2023 v 3:30 odesílatel Quan Zongliang <quanzongliang@yeah.net 
> <mailto:quanzongliang@yeah.net>> napsal:
> 
> 
> 
>     On 2023/10/16 20:05, Pavel Stehule wrote:
>      >
>      >
>      > po 16. 10. 2023 v 13:56 odesílatel Daniel Gustafsson
>     <daniel@yesql.se <mailto:daniel@yesql.se>
>      > <mailto:daniel@yesql.se <mailto:daniel@yesql.se>>> napsal:
>      >
>      >      > On 16 Oct 2023, at 12:15, Quan Zongliang
>     <quanzongliang@yeah.net <mailto:quanzongliang@yeah.net>
>      >     <mailto:quanzongliang@yeah.net
>     <mailto:quanzongliang@yeah.net>>> wrote:
>      >
>      >      > Implement TODO item:
>      >      > PL/pgSQL
>      >      > Incomplete item Allow handling of %TYPE arrays, e.g.
>     tab.col%TYPE[]
>      >
>      >     Cool!  While I haven't looked at the patch yet, I've wanted this
>      >     myself many
>      >     times in the past when working with large plpgsql codebases.
>      >
>      >      > As a first step, deal only with [], such as
>      >      > xxx.yyy%TYPE[]
>      >      > xxx%TYPE[]
>      >      >
>      >      > It can be extended to support multi-dimensional and complex
>      >     syntax in the future.
>      >
>      >     Was this omitted due to complexity of implementation or for some
>      >     other reason?
>      >
>     Because of complexity.
> 
>      >
>      > There is no reason for describing enhancement. The size and
>     dimensions
>      > of postgresql arrays are dynamic, depends on the value, not on
>      > declaration. Now, this information is ignored, and can be
>     compatibility
>      > break to check and enforce this info.
>      >
>     Yes. I don't think it's necessary.
>     If anyone needs it, we can continue to enhance it in the future.
> 
> 
> I don't think it is possible to do it.  But there is another missing 
> functionality, if I remember well. There is no possibility to declare 
> variables for elements of array.
The way it's done now is more like laziness.

Is it possible to do that?
If the parser encounters %TYPE[][]. It can be parsed. Then let 
parse_datatype do the rest.

For example, partitioned_table.a%TYPE[][100][]. Parse the type 
name(int4) of partitioned_table.a%TYPE and add the following [][100][]. 
Passing "int4[][100][]" to parse_datatype will give us the array 
definition we want.

Isn't this code a little ugly?

> 
> I propose syntax xxx.yyy%ELEMENTTYPE and xxx%ELEMENTTYPE
> 
> What do you think about it?
No other relational database can be found with such an implementation. 
But it seems like a good idea. It can bring more convenience to write 
stored procedure.

> 
> Regards
> 
> Pavel
> 
> 
>      >
>      >     --
>      >     Daniel Gustafsson
>      >
>      >
>      >
> 




В списке pgsql-hackers по дате отправления:

Предыдущее
От: Aleksander Alekseev
Дата:
Сообщение: Re: [PATCH] Clarify the behavior of the system when approaching XID wraparound
Следующее
От: Ashutosh Bapat
Дата:
Сообщение: Re: Asymmetric partition-wise JOIN