Upper and Lower-cased Database names?

Started by Daniel B. Thurmanover 18 years ago6 messagesgeneral
Jump to latest
#1Daniel B. Thurman
dant@cdkkt.com

I am finding out for the first time that by having a database created
with the name: MyTest, I cannot do a simple query as follows:

postgres=# select * from MyTest.public.cars;
ERROR: cross-database references are not implemented: "mytest.public.cars"

Notice, however since I created a cars table in the postgres database, I was
able to do a query:

postgres=# select * from postgres.public.cars ;

carid | name | vendor | type
-------+--------------+--------+------
H1 | Civic | Honda | FF
N1 | Skyline GT-R | Nissan | 4WD
T1 | Supra | Toyota | FR
T2 | MR-2 | Toyota | FF
(4 rows)

So the problem, it seems that mixed case database names might not be supported
with pssql? I have a feeling that the default character set is SQL-ASCII and should be
changed to something else? What might that be and how can I change/update the
character-set (encoding)?

Thanks!
Dan

No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.488 / Virus Database: 269.14.6/1060 - Release Date: 10/9/2007 4:43 PM

#2Christian Rengstl
Christian.Rengstl@klinik.uni-regensburg.de
In reply to: Daniel B. Thurman (#1)
Re: Upper and Lower-cased Database names?

This error probably does not have anything to do with the case of your
database name. Instead you probably logged into a database which is not
MyTest, because it is not possible to log into a database x and make a
query on database y.

Christian Rengstl M.A.
Klinik und Poliklinik für Innere Medizin II
Kardiologie - Forschung
Universitätsklinikum Regensburg
B3 1.388
Franz-Josef-Strauss-Allee 11
93053 Regensburg
Tel.: +49-941-944-7230

On Wed, Oct 10, 2007 at 10:05 AM, in message

<021126B987E43D44A860139823C079110E2BA6@orion.cdkkt.com>, "Daniel B.
Thurman"
<dant@cdkkt.com> wrote:

I am finding out for the first time that by having a database

created

with the name: MyTest, I cannot do a simple query as follows:

postgres=# select * from MyTest.public.cars;
ERROR: cross- database references are not implemented:

"mytest.public.cars"

Notice, however since I created a cars table in the postgres

database, I was

able to do a query:

postgres=# select * from postgres.public.cars ;

carid | name | vendor | type
------- +-------------- +-------- +------
H1 | Civic | Honda | FF
N1 | Skyline GT- R | Nissan | 4WD
T1 | Supra | Toyota | FR
T2 | MR- 2 | Toyota | FF
(4 rows)

So the problem, it seems that mixed case database names might not be

supported
with pssql? I have a feeling that the default character set is SQL-

ASCII and

should be
changed to something else? What might that be and how can I

change/update

the
character- set (encoding)?

Thanks!
Dan

No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.5.488 / Virus Database: 269.14.6/1060 - Release Date:

10/9/2007

4:43 PM

--------------------------- (end of

broadcast)---------------------------

Show quoted text

TIP 2: Don't 'kill - 9' the postmaster

#3Harald Armin Massa
haraldarminmassa@gmail.com
In reply to: Daniel B. Thurman (#1)
Re: Upper and Lower-cased Database names?

Daniel,

please try:

select * from "MyTest".public.cars;

mixed cases need those ", per SQL-Standard. In my experienced mixed cases in
qualifiers which cross OS-barriers cause more trouble then use (...
filenames with WebServers ...)

Harald

postgres=# select * from MyTest.public.cars;
ERROR: cross-database references are not implemented: "mytest.public.cars
"

--
GHUM Harald Massa
persuadere et programmare
Harald Armin Massa
Spielberger Straße 49
70435 Stuttgart
0173/9409607
fx 01212-5-13695179
-
EuroPython 2008 will take place in Vilnius, Lithuania - Stay tuned!

#4Ian Lawrence Barwick
barwick@gmail.com
In reply to: Daniel B. Thurman (#1)
Re: Upper and Lower-cased Database names?

2007/10/10, Daniel B. Thurman <dant@cdkkt.com>:

I am finding out for the first time that by having a database created
with the name: MyTest, I cannot do a simple query as follows:

postgres=# select * from MyTest.public.cars;
ERROR: cross-database references are not implemented: "mytest.public.cars"

Notice, however since I created a cars table in the postgres database, I was
able to do a query:

postgres=# select * from postgres.public.cars ;

carid | name | vendor | type
-------+--------------+--------+------
H1 | Civic | Honda | FF
N1 | Skyline GT-R | Nissan | 4WD
T1 | Supra | Toyota | FR
T2 | MR-2 | Toyota | FF
(4 rows)

So the problem, it seems that mixed case database names might not be supported
with pssql? I have a feeling that the default character set is SQL-ASCII and should be
changed to something else? What might that be and how can I change/update the
character-set (encoding)?

PostgreSQL doesn't support cross-database references, as per the error
message, i.e. you can only perform queries on the current database.
*However*, the syntax works when the named database is the same as one
you're connected to. If you do

\c MyTest
mytest=# select * from MyTest.public.cars;

the query will work (case is not the problem here).

HTH

Ian Barwick

--
http://sql-info.de/index.html

#5Richard Huxton
dev@archonet.com
In reply to: Daniel B. Thurman (#1)
Re: Upper and Lower-cased Database names?

Daniel B. Thurman wrote:

I am finding out for the first time that by having a database created
with the name: MyTest, I cannot do a simple query as follows:

postgres=# select * from MyTest.public.cars;
ERROR: cross-database references are not implemented: "mytest.public.cars"

Correct - a query takes place within a specific database. You want to
connect to "mytest" and then issue your query.

Notice, however since I created a cars table in the postgres database, I was
able to do a query:

postgres=# select * from postgres.public.cars ;

carid | name | vendor | type
-------+--------------+--------+------
H1 | Civic | Honda | FF
N1 | Skyline GT-R | Nissan | 4WD
T1 | Supra | Toyota | FR
T2 | MR-2 | Toyota | FF
(4 rows)

You're logged in to the postgres database, and you're querying the
postgres database. The query is equivalent to:
SELECT * FROM public.cars;
or, assuming the "public" schema is in your search_path:
SELECT * FROM cars;
If you were logged in to a different database your query would fail with
the same error as previously.

So the problem, it seems that mixed case database names might not be supported
with pssql?

No, it works fine, lthough PG folds to lower-case rather than upper-case
(the standard). However, the rule-of-thumb is if you create the
database/table with "" to preserve case then always access it with ""

So:
CREATE TABLE Foo -- Gets folded to lower-case
SELECT * FROM Foo -- So does this, so it works
SELECT * FROM FOO
SELECT * FROM foo
SELECT * FROM "Foo" -- Fails, because you've stopped case-folding
CREATE TABLE "Bar"
SELECT * FROM "Bar"
SELECT * FROM Bar -- fails, because this gets folded to lower-case

I have a feeling that the default character set is SQL-ASCII and should be
changed to something else? What might that be and how can I change/update the
character-set (encoding)?

Well, you probably want a different character-set, but that will depend
upon your locale and the character-set of the data you are storing.
Nothing to do with this.

HTH
--
Richard Huxton
Archonet Ltd

#6Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Daniel B. Thurman (#1)
Re: Upper and Lower-cased Database names?

Daniel B. Thurman wrote:

I am finding out for the first time that by having a database created
with the name: MyTest, I cannot do a simple query as follows:

postgres=# select * from MyTest.public.cars;
ERROR: cross-database references are not implemented:
"mytest.public.cars"

Try:

select * from "MyTest".public.cars;

Yours,
Laurenz Albe