Обсуждение: Database Oid from SPI
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
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
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
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
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 ... >