Обсуждение: Postgres do not allow to create many tables with more than 63-symbols prefix

Поиск
Список
Период
Сортировка

Postgres do not allow to create many tables with more than 63-symbols prefix

От
Andrey Lepikhov
Дата:
According to subj you can try to create many tables (induced by the case 
of partitioned table) with long prefix - see 6727v.sql for reproduction.
But now it's impossible because of logic of the makeUniqueTypeName() 
routine.
You get the error:
ERROR:  could not form array type name for type ...

It is very corner case, of course. But solution is easy and short. So, 
why not to fix? - See the patch in attachment.

-- 
regards,
Andrey Lepikhov
Postgres Professional
Вложения

Re: Postgres do not allow to create many tables with more than 63-symbols prefix

От
Masahiko Sawada
Дата:
Hi,

On Sat, Jun 4, 2022 at 4:03 AM Andrey Lepikhov
<a.lepikhov@postgrespro.ru> wrote:
>
> According to subj you can try to create many tables (induced by the case
> of partitioned table) with long prefix - see 6727v.sql for reproduction.
> But now it's impossible because of logic of the makeUniqueTypeName()
> routine.
> You get the error:
> ERROR:  could not form array type name for type ...
>
> It is very corner case, of course. But solution is easy and short. So,
> why not to fix? - See the patch in attachment.

While this seems to be a good improvement, I think it's not a bug.
Probably we cannot backpatch it as it will end up having type names
defined by different naming rules. I'd suggest discussing it on
-hackers.

Regarding the patch, I think we can merge makeUniqueTypeName() to
makeArrayTypeName() as there is no caller of makeUniqueTypeName() who
pass tryOriginal = true. Also looking at other ChooseXXXName()
functions, we don't care about integer overflow. Is it better to make
it consistent with them?

Regards,

-- 
Masahiko Sawada
EDB:  https://www.enterprisedb.com/