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
---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings