Re: Segmentation fault in volatile c function - Mailing list pgsql-general

From Peter Geoghegan
Subject Re: Segmentation fault in volatile c function
Date
Msg-id CAH2-Wznhw+iiW8BEjFFDRoPKF+M9C=DS9pqbYo2w+LeEvQW4iQ@mail.gmail.com
Whole thread Raw
In response to Segmentation fault in volatile c function  (Louise Grandjonc <louve.grandjonc@gmail.com>)
Responses Re: Segmentation fault in volatile c function
List pgsql-general
On Wed, Oct 27, 2021 at 12:39 PM Louise Grandjonc
<louve.grandjonc@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
addsit 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



pgsql-general by date:

Previous
From: Louise Grandjonc
Date:
Subject: Segmentation fault in volatile c function
Next
From: Jérémy Garniaux
Date:
Subject: Re: psql could not connect to server after complete reinstallation [Ubuntu 21.10 / PostgreSQL 13]