Re: How to get Relation tuples in C function

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Andy Fan <zhihui(dot)fan1213(at)gmail(dot)com>
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Patrick Handja <patrick(dot)bungama(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: How to get Relation tuples in C function
Date: 2021-02-14 11:56:11
Message-ID: YCkP2zvJ1JY1qh++@paquier.xyz
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Sun, Feb 14, 2021 at 09:29:08AM +0800, Andy Fan wrote:
> Thank you tom for the reply. What would be the difference between the
> SPI and "write a pure SQL UDF" and call it with DirectFunctionCall1? I
> just ran into a similar situation some days before. Currently I think
> DirectFunctionCall1 doesn't need to maintain a connection but SPI has to
> do that.

Hard to say without knowing your use case. A PL function is more
simple to maintain than a C function, though usually less performant
from the pure point of view of its operations. A SQL function could
finish by being inlined, allowing the planner to apply optimizations
as it would know the function body. Going with SPI has the advantage
to have code able to work without any changes across major versions,
which is a no-brainer when it comes to long-term maintenance.
--
Michael

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Joel Jacobson 2021-02-14 12:52:55 Re: Some regular-expression performance hacking
Previous Message Michael Paquier 2021-02-14 11:22:03 Re: pg_cryptohash_final possible out-of-bounds access (per Coverity)