Re: cannot read pg_class without having selected a database / is this a bug?
От | Tom Lane |
---|---|
Тема | Re: cannot read pg_class without having selected a database / is this a bug? |
Дата | |
Msg-id | 23048.1323015017@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: cannot read pg_class without having selected a database / is this a bug? (Tomas Vondra <tv@fuzzy.cz>) |
Ответы |
Re: cannot read pg_class without having selected a database
/ is this a bug?
|
Список | pgsql-hackers |
Tomas Vondra <tv@fuzzy.cz> writes: > On 4.12.2011 05:19, Tom Lane wrote: >> It should be possible to access shared catalogs from an auth hook. >> pg_stat_activity is neither shared nor a catalog. Like Robert, >> I find it astonishing that this works ever, because the info needed >> simply isn't available until you've connected to a particular database. >> The fact that the view is actually defined the same in every database >> doesn't enter into that ... > Hmmm, I do admit this is the first time I play with these things > (relcache, catalogs ...) so closely. so there are obviously things I'm > not aware of. For example I'm a bit confused what is / is not a shared > catalogue. Thanks in advance for your patience. See pg_class.relisshared. > Anyway, the code I posted does not fail because of pg_stat_activity, it > fails because it attempts for find the dbname/username for the backends > (read from pg_stat_activity). Well, get_database_name tries to do a syscache lookup, and the syscache infrastructure isn't working yet. It is possible to read a shared catalog at this stage, but you have to use lower-level access mechanisms --- for an example with some comments, look at GetDatabaseTuple in postinit.c. regards, tom lane
В списке pgsql-hackers по дате отправления: