On Wed, Oct 27, 2021 at 12:39 PM Louise Grandjonc
<louve.grandj...@gmail.com> wrote:
> I'm creating my first ever extension. The function that I'm trying to write 
> takes the schema and name of a table, and adds it in a table with all the 
> tables the extension follows.
> In that table I want the schema, name and oid of the table.
>
> I created a C function for that. Here is the code

I don't think that using cstring as an argument is appropriate here.
That's only used for "internal" functions that are called through C,
rather than being called through SQL.

It would probably be better to use a regclass argument instead. Take a
look at the example of (say) amcheck's bt_index_check() or
verify_heapam() functions to see how that's done. Not all C functions
use this built-in way of specifying a particular relation from SQL (a
few older ones really do just pass a string some other way), but it's
definitely considered the way to go.

Note that you can do stuff like this from SQL:

pg@regression:5432 [2999218]=# select 'pg_class'::regclass::oid;
  oid
───────
 1,259
(1 row)

-- 
Peter Geoghegan


Reply via email to