Re: Removing Database Names as Spaces?

From: Jonathon Batson <jonathon(at)octahedron(dot)com(dot)au>
To: Postgres Novice <pgsql-novice(at)postgresql(dot)org>
Subject: Re: Removing Database Names as Spaces?
Date: 2004-08-19 02:57:04
Message-ID: 41241700.5090300@octahedron.com.au
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

Some interesting results with the Database name and spaces issue

template1=# select datname,length(datname),ascii(datname[0]) as
ascii0,ascii(datname[1]) as ascii1, ascii(datname[2]) as ascii2 from pg_da
tabase;
datname | length | ascii0 | ascii1 | ascii2
---------------+--------+--------+--------+--------
template1 | 9 | 116 | 101 | 109
template0 | 9 | 116 | 101 | 109
jess | 4 | 106 | 101 | 115
| 11 | 99 | 97 | 109
| 10 | 106 | 117 | 115
swim_user_log | 13 | 115 | 119 | 105
(6 rows)

So there are regular characters in the datname field but where are they?.
And yet there is a name when doing the following query names are in the
result.

template1=# select oid, datname from pg_database;
oid | datname
--------+---------------
1 | template1
16975 | template0
58468 | jess
520136 | cam_testdb
540414 | justatest
358025 | swim_user_log
(6 rows)

So from here with the oids is was easy if brutal to drop the dbs.

update pg_database set datname = 'foo' where oid = 520136;
drop database foo;

Thanx Tom

Tom Lane wrote:

>Jonathon Batson <jonathon(at)octahedron(dot)com(dot)au> writes:
>
>
>>I have a script that went haywire and created 2 databases with what
>>looks like empty names OR names made up of spaces.
>>
>>
>
>Judging by your lack of success and the funny formatting of the -l
>output, they're not spaces. Possibly carriage returns and other stuff.
>
>One approach is to find out exactly what you got, instead of guessing.
>Try "select datname,length(datname) from pg_database" then
>"select datname,ascii(datname[N]) from pg_database" where N ranges
>from 0 to one less than the length you just found out. That will
>give you the ASCII codes of the characters that are there. After
>that you can start thinking about how to type it ;-)
>
>Also, there's always the brute-force way of renaming databases:
>
> select oid, datname from pg_database;
> update pg_database set datname = 'foo' where oid = <number from above>
>
>This isn't ordinarily recommended but it seems safe enough, especially
>if you're going to drop the database immediately after ...
>
> regards, tom lane
>
>---------------------------(end of broadcast)---------------------------
>TIP 8: explain analyze is your friend
>
>
>

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Keith Worthington 2004-08-19 03:01:23 Re: New Installation
Previous Message George Weaver 2004-08-19 01:52:08 Re: pgAdmin Connection