psql -l gives bad output

Started by Jeff Beckalmost 24 years ago6 messagesgeneral
Jump to latest
#1Jeff Beck
jeff.beck@mssm.edu

Hi, I am running PostgreSQL 7.1.3 on Solaris 8.

The output of psql -l seems wrong. In the following, their are 2
databases named "pay-test" and one named "/usr/local/pgsql/bi". I can
dropdb one of the pay-tests but not the other, and I can't dropdb the
/usr/local/pgsql/bi database. I can't access these databases either.
vacuumdb -a gives me an error too, when attempting to access these
databases.

# psql -U postgres -l
List of databases
Database | Owner
---------------------------------+----------
pay | postgres
pay-test | postgres
pay-test
/usr/local/pgsql/bi | postgres
template0 | postgres
template1 | postgres
(5 rows)

Does anyone have any ideas?

Thanks,
Jeff

#2Ron Snyder
snyder@roguewave.com
In reply to: Jeff Beck (#1)
Re: psql -l gives bad output

---------------------------------+----------
pay | postgres
pay-test | postgres
pay-test
/usr/local/pgsql/bi | postgres

It looks to me like this 'second paytest' database is actually named
'pay-test\n/usr/local/pgsql/bi' , possibly created by trying to create a
database without having a closing quote:
User# createdb 'pay-test

(and then beginning to type some /usr/local/pgsql/bin command.)

The command dropdb doesn't seem (at least for me) to work the exact same
way, so the only way I could recover is the following:

(First create the problem)
bash-2.05$ createdb 'blah

this is a test'

CREATE DATABASE
bash-2.05$ psql -l
List of databases
Name | Owner
---------------------+----------
blah
this is a test | pg721tmp
quickview | pg721tmp
template0 | pg721tmp
template1 | pg721tmp
(4 rows)

template1=# update pg_database set datname='foo' where datname like 'blah%';
UPDATE 1

bash-2.05$ psql -l
List of databases
Name | Owner
-----------+----------
foo | pg721tmp
quickview | pg721tmp
template0 | pg721tmp
template1 | pg721tmp
(4 rows)

-ron

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Ron Snyder (#2)
Re: psql -l gives bad output

Ron Snyder <snyder@roguewave.com> writes:

It looks to me like this 'second paytest' database is actually named
'pay-test\n/usr/local/pgsql/bi' , possibly created by trying to create a
database without having a closing quote:

I concur.

The command dropdb doesn't seem (at least for me) to work the exact same
way,

It works for me in current sources:

$ createdb 'ab

cd'

CREATE DATABASE
$ psql -l
List of databases
Name | Owner | Encoding
------------+----------+-----------
ab
cd | postgres | SQL_ASCII
regression | postgres | SQL_ASCII
template0 | postgres | SQL_ASCII
template1 | postgres | SQL_ASCII
(4 rows)

$ dropdb 'ab

cd'

DROP DATABASE
$ psql -l
List of databases
Name | Owner | Encoding
------------+----------+-----------
regression | postgres | SQL_ASCII
template0 | postgres | SQL_ASCII
template1 | postgres | SQL_ASCII
(3 rows)

But I recall a number of rounds of bug-fixes concerning quoting in
the pgsql shell scripts, so I'd not be surprised in the least to hear
that pre-7.2 PG releases get this wrong. Or for that matter, we might
still have some problems in this line on some platforms with oddball
shells. If you find that dropdb messes up with weird names in 7.2,
please send details about the test case and your platform...

regards, tom lane

#4Ron Snyder
snyder@roguewave.com
In reply to: Tom Lane (#3)
Re: psql -l gives bad output

The command dropdb doesn't seem (at least for me) to work

the exact same

way,

It works for me in current sources:

Current from cvs, or current 7.2.1?
bash-2.05$ createdb `ab

cd

bash-2.05$ createdb 'ab

cd'

CREATE DATABASE
bash-2.05$ dropdb 'ab

cd'

ERROR: DROP DATABASE: database "ab cd" does not exist
dropdb: database removal failed
bash-2.05$ psql template1 -c 'select version();'
version
-------------------------------------------------------------
PostgreSQL 7.2.1 on i686-pc-linux-gnu, compiled by GCC 2.96
(1 row)
bash-2.05$ which psql dropdb
/usr/local/pgsql-7.2.1/bin/psql
/usr/local/pgsql-7.2.1/bin/dropdb

It's definitely not a problem for me, but it does seem odd that it works for
you and not for me. (I suppose since all I'm doing is sitting here sort of
watching nypd blue, I'll see if I can figure it out.) :)

-ron

Show quoted text

$ createdb 'ab

cd'

CREATE DATABASE
$ psql -l
List of databases
Name | Owner | Encoding
------------+----------+-----------
ab
cd | postgres | SQL_ASCII
regression | postgres | SQL_ASCII
template0 | postgres | SQL_ASCII
template1 | postgres | SQL_ASCII
(4 rows)

$ dropdb 'ab

cd'

DROP DATABASE
$ psql -l
List of databases
Name | Owner | Encoding
------------+----------+-----------
regression | postgres | SQL_ASCII
template0 | postgres | SQL_ASCII
template1 | postgres | SQL_ASCII
(3 rows)

But I recall a number of rounds of bug-fixes concerning quoting in
the pgsql shell scripts, so I'd not be surprised in the least to hear
that pre-7.2 PG releases get this wrong. Or for that matter, we might
still have some problems in this line on some platforms with oddball
shells. If you find that dropdb messes up with weird names in 7.2,
please send details about the test case and your platform...

regards, tom lane

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Ron Snyder (#4)
Re: psql -l gives bad output

Ron Snyder <snyder@roguewave.com> writes:

It works for me in current sources:

Current from cvs, or current 7.2.1?

CVS tip. Looking at the logs, it appears that Bruce made a further
round of quoting fixups on 12-Apr.

regards, tom lane

#6Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#5)
Re: psql -l gives bad output

Tom Lane wrote:

Ron Snyder <snyder@roguewave.com> writes:

It works for me in current sources:

Current from cvs, or current 7.2.1?

CVS tip. Looking at the logs, it appears that Bruce made a further
round of quoting fixups on 12-Apr.

Yes, and fixing whitespace in dbnames was the purpose.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026