Обсуждение: How to add built-in func?

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

How to add built-in func?

От
jacktby jacktby
Дата:
I only add below:

Datum fake_dinstance2(PG_FUNCTION_ARGS)
{
    PG_RETURN_INT16(0);
}
in src/backend/utils/adt/int8.c, and the I run “make install”,
But I can’t find the fake_distance2 in src/backend/utils/fmgrtab.c which is
generated by src/backend/utils/Gen_fmgrtab.pl.  What else do I need to add?


Re: How to add built-in func?

От
Aleksander Alekseev
Дата:
Hi,

> I only add below:
>
> Datum fake_dinstance2(PG_FUNCTION_ARGS)
> {
>         PG_RETURN_INT16(0);
> }
> in src/backend/utils/adt/int8.c, and the I run “make install”,
> But I can’t find the fake_distance2 in src/backend/utils/fmgrtab.c which is
> generated by src/backend/utils/Gen_fmgrtab.pl.  What else do I need to add?

If the goal is to add a function that can be executed by a user (e.g.
via psql) you have to add it to pg_proc.dat, or alternatively (and
often better) add a corresponding extension to /contrib/. You can find
a complete example here [1] for instance, see v4-0001 patch and the
function pg_get_relation_publishing_info(). Make sure it has a proper
volatility [2]. The patch [3] shows how to add an extension.

[1]: https://postgr.es/m/CAAWbhmjcnoV7Xu6LHr_hxqWmVtehv404bvDye%2BQZcUDSg8NSKw%40mail.gmail.com
[2]: https://www.postgresql.org/docs/current/xfunc-volatility.html
[3]: https://postgr.es/m/CAJ7c6TMSat6qjPrrrK0tRTgZsdXwFAbkDn5gjeDtFnUFrjZX-g%40mail.gmail.com
--
Best regards,
Aleksander Alekseev



Re: How to add built-in func?

От
Pavel Stehule
Дата:
Hi

po 11. 9. 2023 v 17:59 odesílatel jacktby jacktby <jacktby@gmail.com> napsal:
I only add below:

Datum fake_dinstance2(PG_FUNCTION_ARGS)
{
        PG_RETURN_INT16(0);
}
in src/backend/utils/adt/int8.c, and the I run “make install”,
But I can’t find the fake_distance2 in src/backend/utils/fmgrtab.c which is
generated by src/backend/utils/Gen_fmgrtab.pl.  What else do I need to add?

you need to add the function metadata to pg_proc.dat

For free oid use unused_oids script

Regards

Pavel

Re: How to add built-in func?

От
Pavel Stehule
Дата:


po 11. 9. 2023 v 18:18 odesílatel Pavel Stehule <pavel.stehule@gmail.com> napsal:
Hi

po 11. 9. 2023 v 17:59 odesílatel jacktby jacktby <jacktby@gmail.com> napsal:
I only add below:

Datum fake_dinstance2(PG_FUNCTION_ARGS)
{
        PG_RETURN_INT16(0);
}
in src/backend/utils/adt/int8.c, and the I run “make install”,
But I can’t find the fake_distance2 in src/backend/utils/fmgrtab.c which is
generated by src/backend/utils/Gen_fmgrtab.pl.  What else do I need to add?

you need to add the function metadata to pg_proc.dat

For free oid use unused_oids script





Regards

Pavel

Re: How to add built-in func?

От
jacktby jacktby
Дата:

> 2023年9月11日 23:51,Aleksander Alekseev <aleksander@timescale.com> 写道:
>
> Hi,
>
>> I only add below:
>>
>> Datum fake_dinstance2(PG_FUNCTION_ARGS)
>> {
>>        PG_RETURN_INT16(0);
>> }
>> in src/backend/utils/adt/int8.c, and the I run “make install”,
>> But I can’t find the fake_distance2 in src/backend/utils/fmgrtab.c which is
>> generated by src/backend/utils/Gen_fmgrtab.pl.  What else do I need to add?
>
> If the goal is to add a function that can be executed by a user (e.g.
> via psql) you have to add it to pg_proc.dat, or alternatively (and
> often better) add a corresponding extension to /contrib/. You can find
> a complete example here [1] for instance, see v4-0001 patch and the
> function pg_get_relation_publishing_info(). Make sure it has a proper
> volatility [2]. The patch [3] shows how to add an extension.
>
> [1]: https://postgr.es/m/CAAWbhmjcnoV7Xu6LHr_hxqWmVtehv404bvDye%2BQZcUDSg8NSKw%40mail.gmail.com
> [2]: https://www.postgresql.org/docs/current/xfunc-volatility.html
> [3]: https://postgr.es/m/CAJ7c6TMSat6qjPrrrK0tRTgZsdXwFAbkDn5gjeDtFnUFrjZX-g%40mail.gmail.com
> --
> Best regards,
> Aleksander Alekseev
I need to make it used for  a new operator in my pg.


Re: How to add built-in func?

От
Chapman Flack
Дата:
On 2023-09-11 12:28, jacktby jacktby wrote:
>> 2023年9月11日 23:51,Aleksander Alekseev <aleksander@timescale.com> 写道:
>> often better) add a corresponding extension to /contrib/. You can find
>> a complete example here [1] for instance, see v4-0001 patch and the
>> function pg_get_relation_publishing_info(). Make sure it has a proper
>> volatility [2]. The patch [3] shows how to add an extension.
>> 
>> [1]: 
>> https://postgr.es/m/CAAWbhmjcnoV7Xu6LHr_hxqWmVtehv404bvDye%2BQZcUDSg8NSKw%40mail.gmail.com
>> [2]: https://www.postgresql.org/docs/current/xfunc-volatility.html
>> [3]: 
>> https://postgr.es/m/CAJ7c6TMSat6qjPrrrK0tRTgZsdXwFAbkDn5gjeDtFnUFrjZX-g%40mail.gmail.com
>> --
> I need to make it used for  a new operator in my pg.

You can implement both a function and an operator (and all that goes 
with)
in an extension, without having to hack at all on PostgreSQL itself.
You can then, if it seems generally useful enough, offer that extension
to go in contrib/. If it's agreed to be something everyone should have,
it could then make its way into core.

Do you have it working as an extension yet? That can be a good way
to start, separating the difficulties you have to solve from the ones
you don't have to solve yet.

Regards,
-Chap



Re: How to add built-in func?

От
jacktby jacktby
Дата:

> 2023年9月12日 00:34,Chapman Flack <chap@anastigmatix.net> 写道:
>
> On 2023-09-11 12:28, jacktby jacktby wrote:
>>> 2023年9月11日 23:51,Aleksander Alekseev <aleksander@timescale.com> 写道:
>>> often better) add a corresponding extension to /contrib/. You can find
>>> a complete example here [1] for instance, see v4-0001 patch and the
>>> function pg_get_relation_publishing_info(). Make sure it has a proper
>>> volatility [2]. The patch [3] shows how to add an extension.
>>> [1]: https://postgr.es/m/CAAWbhmjcnoV7Xu6LHr_hxqWmVtehv404bvDye%2BQZcUDSg8NSKw%40mail.gmail.com
>>> [2]: https://www.postgresql.org/docs/current/xfunc-volatility.html
>>> [3]: https://postgr.es/m/CAJ7c6TMSat6qjPrrrK0tRTgZsdXwFAbkDn5gjeDtFnUFrjZX-g%40mail.gmail.com
>>> --
>> I need to make it used for  a new operator in my pg.
>
> You can implement both a function and an operator (and all that goes with)
> in an extension, without having to hack at all on PostgreSQL itself.
> You can then, if it seems generally useful enough, offer that extension
> to go in contrib/. If it's agreed to be something everyone should have,
> it could then make its way into core.
>
> Do you have it working as an extension yet? That can be a good way
> to start, separating the difficulties you have to solve from the ones
> you don't have to solve yet.
>
> Regards,
> -Chap
I solved it , but I need to use it in my new grammar, so I have to add in into core. That’s necessary. Thanks. But My
ownstorage engine is implemented by extension. Extension is a good idea and I’m using it now.