Re: Does has_table_privilege() have a case bug
От | brian |
---|---|
Тема | Re: Does has_table_privilege() have a case bug |
Дата | |
Msg-id | 47A901F2.4010808@zijn-digital.com обсуждение исходный текст |
Ответ на | Re: Does has_table_privilege() have a case bug (Jeff Davis <pgsql@j-davis.com>) |
Ответы |
Re: Does has_table_privilege() have a case bug
|
Список | pgsql-general |
Jeff Davis wrote: > On Tue, 2008-02-05 at 16:10 -0800, johnf wrote: >> I create a table named "Account_Text_Table" the owner is 'johnf'. >> >> select has_table_privilege('johnf', 'public.Account_Text_Table', 'SELECT') >> I get the following error: >> >> ERROR: relation "public.account_text_table" does not exist > > PostgreSQL folds to lower case unless you put the name in double-quotes. > Try putting the table name in double-quotes. > > E.g.: select has_table_privilege('johnf', 'public."Account_Text_Table"', > 'SELECT') > That won't help if the table was not created with a quoted name. test=# CREATE TABLE Account_Text_Table (foo CHAR(1)); CREATE TABLE test=# SELECT * FROM Account_Text_Table; foo ----- (0 rows) test=# SELECT * FROM "Account_Text_Table"; ERROR: relation "Account_Text_Table" does not exist test=# DROP TABLE account_text_table; DROP TABLE test=# CREATE TABLE "Account_Text_Table" (foo CHAR(1)); CREATE TABLE test=# SELECT * FROM Account_Text_Table; ERROR: relation "account_text_table" does not exist test=# SELECT * FROM "Account_Text_Table"; foo ----- (0 rows) So, you'll need to quote the table name when you create it. But this means that you'll *always* have to quote references to it. Easiest to stick with lowercase, IMO. b
В списке pgsql-general по дате отправления: