From: | Дмитрий Цветков <dmitry(dot)cvetkov(at)gmail(dot)com> |
---|---|
To: | pgsql-general(at)postgresql(dot)org |
Subject: | Fwd: Segmentation fault on RelationGetDescr in my first extension |
Date: | 2022-12-29 10:52:18 |
Message-ID: | CALS6dkRaXHV1Od5Xt1zyEUKdhHfE5WrL1sq062Pp_eMw-rZ=DA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hi!
I'm trying to write my first extension and open a table in it.
I use check_password_hook and my function executes at the moment of
changing user password.
But if I try to open a table inside this function, I get Segmentation fault
on the line with "RelationGetDescr".
What am I doing wrong?
void
_PG_init(void)
{
prev_check_password_hook = check_password_hook;
check_password_hook = check_password;
}
...
void check_password(const char *username, const char *shadow_pass,
PasswordType password_type, Datum validuntil_time, bool validuntil_null)
{
Relation rel;
TupleDesc tupdesc;
int Natts;
Oid tbl_oid = DatumGetObjectId(DirectFunctionCall1(to_regclass,
CStringGetTextDatum("my_test_table")));
if (OidIsValid(tbl_oid)) {
rel = table_open(tbl_oid, RowExclusiveLock);
tupdesc = RelationGetDescr(rel); // !!! server process (PID 70525) was
terminated by signal 11: Segmentation fault
Natts = tupdesc->natts;
table_close(rel, RowExclusiveLock);
} else {
ereport(NOTICE, (errmsg("IndexRelationId (%d) is NOT valid !", tbl_oid)));
}
}
Table is fine:
postgres=# \d my_test_table
Table "public.my_test_table"
Column | Type | Collation | Nullable | Default
--------+------+-----------+----------+---------
name | text | | |
From | Date | Subject | |
---|---|---|---|
Next Message | Ranjith Paliyath | 2022-12-30 06:39:33 | Purging few months old data and vacuuming in production |
Previous Message | Melih Mutlu | 2022-12-29 09:51:45 | Re: https://wiki.postgresql.org/wiki/Working_with_Git link one link cannot open, another link is unrelated. |