Обсуждение: Database Oid from SPI

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

Database Oid from SPI

От
Markus Schiltknecht
Дата:
Hi,

how can I get the database name or OID of the current backend in a SPI
function (in plain C)? I tried including storage/proc.h and accessing
MyProc->databaseId, but that leads to a segfault :-(  (and seems like
the wrong way to do it.)

The SPI documentation didn't help.

Thank you

Markus

Re: Database Oid from SPI

От
Markus Schiltknecht
Дата:
Whoops, sorry, there was another reason for the segfault. Using
MyProc->databaseId works. Is it the right way to do it, though?

Markus Schiltknecht wrote:
> Hi,
>
> how can I get the database name or OID of the current backend in a SPI
> function (in plain C)? I tried including storage/proc.h and accessing
> MyProc->databaseId, but that leads to a segfault :-(  (and seems like
> the wrong way to do it.)
>
> The SPI documentation didn't help.
>
> Thank you
>
> Markus

Re: Database Oid from SPI

От
Alvaro Herrera
Дата:
Markus Schiltknecht wrote:
> Whoops, sorry, there was another reason for the segfault. Using
> MyProc->databaseId works. Is it the right way to do it, though?

I'd use MyDatabaseId ...

--
Alvaro Herrera                                http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

Re: Database Oid from SPI

От
Tom Lane
Дата:
Markus Schiltknecht <markus@bluegap.ch> writes:
> Whoops, sorry, there was another reason for the segfault. Using
> MyProc->databaseId works. Is it the right way to do it, though?

Actually I'd recommend you use the global MyDatabaseId from
"miscadmin.h".  It'll be the same value, but it's always best
to avoid unnecessary accesses to shared memory.

            regards, tom lane

Re: Database Oid from SPI

От
Markus Schiltknecht
Дата:
Hi,

thank you both. I first tried that, but the segfault really irritated
me. It's now working fine with miscadmin.h. Sorry for the noise.

Regards

Markus

Tom Lane wrote:
> Actually I'd recommend you use the global MyDatabaseId from
> "miscadmin.h".  It'll be the same value, but it's always best
> to avoid unnecessary accesses to shared memory.
>
>             regards, tom lane

Alvaro Herrera wrote:
 > I'd use MyDatabaseId ...
 >