Re: Possibilities on code change to implement pseudodatatypes

From: Vinícius Abrahão <vinnix(dot)bsd(at)gmail(dot)com>
To: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Possibilities on code change to implement pseudodatatypes
Date: 2024-10-03 11:21:37
Message-ID: CAM9Bfty1-cS_H5OqVNK-jqKYVs4W-htaHqBADUSGypSk5u_QwQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Mon, Sep 30, 2024 at 10:19 AM Vinícius Abrahão <vinnix(dot)bsd(at)gmail(dot)com>
wrote:

> On Mon, Sep 30, 2024 at 9:01 AM Vinícius Abrahão <vinnix(dot)bsd(at)gmail(dot)com>
> wrote:
>
>> Greetings
>>
>> I understand the complexity of implementing a pseudo data type when
>> passing it over parameters, or using it when creating an object.
>> vide: git grep pseudo | egrep -v -e "po|out|sgml|sql" | more
>>
>> My initial problem was saving history (for backup to be used during
>> troubleshoot analysis) of plan changing and so on.. of the pg_statistic
>> table/object.
>>
>> I was surprised - in a good way - to observe so much effort when handling
>> it for that specific purpose. I started to wonder if/when I want to create
>> an object of other *pseudatatypes *or pass it through a function
>> parameter that the same level of effort during code implementation would be
>> the same.
>>
>> I understand this would be much more a code architecture discretion
>> rather than a punctual question.
>>
>> I have posted in pgsql-admin a question which is "simple problem" when
>> creating a table using anyarray and indeed the problem is simple - the
>> solution might not be.
>>
>> What folks, more experienced in this subject, would recommend as a
>> starting point to achieve that objective?
>>
>> Kind regards,
>>
>> Bazana Schmidt, Vinícius
>>
>> PS.: apologize in advance for the HTML email.
>>
>
> Complementing -
>
> Under this optics below:
>
> [vinnix(at)vesuvio postgres]$ git grep CheckAttributeType
> src/backend/catalog/heap.c: * flags controls which datatypes are
> allowed, cf CheckAttributeType.
> src/backend/catalog/heap.c:
> CheckAttributeType(NameStr(TupleDescAttr(tupdesc, i)->attname),
> src/backend/catalog/heap.c: * CheckAttributeType
> src/backend/catalog/heap.c:CheckAttributeType(const char *attname,
> src/backend/catalog/heap.c: CheckAttributeType(attname,
> getBaseType(atttypid), attcollation,
> src/backend/catalog/heap.c:
> CheckAttributeType(NameStr(attr->attname),
> src/backend/catalog/heap.c: CheckAttributeType(attname,
> get_range_subtype(atttypid),
> src/backend/catalog/heap.c: CheckAttributeType(attname,
> att_typelem, attcollation,
> src/backend/catalog/index.c:
> CheckAttributeType(NameStr(to->attname),
> src/backend/commands/tablecmds.c:
> CheckAttributeType(NameStr(attribute->attname), attribute->atttypid,
> attribute->attcollation,
> src/backend/commands/tablecmds.c: CheckAttributeType(colName,
> targettype, targetcollid,
> src/backend/commands/tablecmds.c:
> CheckAttributeType(partattname,
> src/include/catalog/heap.h:/* flag bits for
> CheckAttributeType/CheckAttributeNamesTypes */
> src/include/catalog/heap.h:extern void CheckAttributeType(const char
> *attname,
>
> and this line:
>
> https://github.com/postgres/postgres/blob/master/src/backend/catalog/heap.c#L562
>
> if (att_typtype == TYPTYPE_PSEUDO)
> {
> /*
> * We disallow pseudo-type columns, with the exception of ANYARRAY,"
> <<==
>
>
> What WE are missing? WHY? How could we make this state true for creating
> table commands?
> I will try to find time to keep researching about it - if you folks have
> any insights please let me know.
>

I see now how to workaround it based on the parameter below. However, it's
expected this will never work for a regular user/role.

postgres=# set allow_system_table_mods to on;
SET
Time: 5.190 ms
postgres=# create table a(a anyarray) ;
CREATE TABLE
Time: 132.959 ms

This is verified at heap_create_with_catalog(...) function.

Cheers,

--
vinnix
aka: Vinícius Abrahão Bazana Schmidt
twitter.com/vischmidt
linkedin.com/in/vischmidt

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Eisentraut 2024-10-03 11:31:19 Re: Rename PageData to XLogPageData
Previous Message Shubham Khanna 2024-10-03 11:04:56 Re: Pgoutput not capturing the generated columns