psql \c error

Started by Philip Yarraalmost 20 years ago5 messages
#1Philip Yarra
philip@utiba.com

Hi folks, I've found that CVS HEAD psql's \c doesn't quite behave as expected
when postmaster is listening on non-default port. In this case I have
postmaster listening on port 5434:

[pyarra@punky pgsql]$ /usr/local/pgsql-cvs-head/bin/psql -p5434 -dpyarra
Welcome to psql 8.2devel, the PostgreSQL interactive terminal.

Type: \copyright for distribution terms
\h for help with SQL commands
\? for help with psql commands
\g or terminate with semicolon to execute query
\q to quit

pyarra=# \d
No relations found. (correct, nothing in DB 'pyarra')
pyarra=# \l
List of databases
Name | Owner | Encoding
-----------+--------+----------
postgres | pyarra | LATIN1
pyarra | pyarra | LATIN1
spctest | pyarra | LATIN1
template0 | pyarra | LATIN1
template1 | pyarra | LATIN1
(5 rows)

pyarra=# \c spctest
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Previous connection kept
pyarra=# \c spctest - - 5434
You are now connected to database "spctest" as user "pyarra" on host "(null)"
at port 5434.
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Previous connection kept
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Previous connection kept
spctest=# \d
List of relations
Schema | Name | Type | Owner
--------+------+-------+--------
public | foo | table | pyarra
(1 row)
(correct, one table in DB 'spctest')

The comments in src/bin/psql/command.c, starting at line 192, indicate the new
connection should use the current port (5434) but this is not happening. Also
note that when port is explicitly specified (\c spctest - - 5434) it does
connect to the new DB on the right port, but still prints a spurious error.

The comments further down say "default" instead of "current" when the dash is
used, so the comments may not be quite right. What behaviour was this change
(http://archives.postgresql.org/pgsql-patches/2006-03/msg00154.php) actually
supposed to give us?

Regards, Philip.

--

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." - Brian W. Kernighan

-----------------
Utiba Pty Ltd
This message has been scanned for viruses and
dangerous content by Utiba mail server and is
believed to be clean.

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Philip Yarra (#1)
Re: psql \c error

Philip Yarra <philip@utiba.com> writes:

Hi folks, I've found that CVS HEAD psql's \c doesn't quite behave as
expected

Yeah, there were complaints about this already. I think the problem was
introduced by this patch:

2006-02-11 21:54 momjian

* doc/src/sgml/ref/psql-ref.sgml, src/bin/psql/command.c,
src/bin/psql/help.c: Please find enclosed a patch that lets you use
\c to connect (optionally) to a new host and port without exiting
psql. This eliminates, IMHO, a surprise in that you can now
connect to PostgreSQL on a differnt machine from the one where you
started your session. This should help people who use psql as an
administrative tool.

David Fetter

The patch seems not to behave very reasonably with respect to preserving
prior values for the newly-changeable connection parameters. I haven't
got time to look into it myself right now though --- do you want to?

regards, tom lane

#3David Fetter
david@fetter.org
In reply to: Tom Lane (#2)
Re: psql \c error

On Wed, Mar 29, 2006 at 10:19:51PM -0500, Tom Lane wrote:

Philip Yarra <philip@utiba.com> writes:

Hi folks, I've found that CVS HEAD psql's \c doesn't quite behave as
expected

Yeah, there were complaints about this already. I think the problem was
introduced by this patch:

I sent one patch to fix this, which went ignored, and Volkan Yazici
sent another one, to which the same thing happened.

Cheers,
D

2006-02-11 21:54 momjian

* doc/src/sgml/ref/psql-ref.sgml, src/bin/psql/command.c,
src/bin/psql/help.c: Please find enclosed a patch that lets you use
\c to connect (optionally) to a new host and port without exiting
psql. This eliminates, IMHO, a surprise in that you can now
connect to PostgreSQL on a differnt machine from the one where you
started your session. This should help people who use psql as an
administrative tool.

David Fetter

The patch seems not to behave very reasonably with respect to preserving
prior values for the newly-changeable connection parameters. I haven't
got time to look into it myself right now though --- do you want to?

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

--
David Fetter <david@fetter.org> http://fetter.org/
phone: +1 415 235 3778 AIM: dfetter666
Skype: davidfetter

Remember to vote!

#4Neil Conway
neilc@samurai.com
In reply to: Philip Yarra (#1)
Re: psql \c error

On Thu, 2006-03-30 at 11:20 +1000, Philip Yarra wrote:

Hi folks, I've found that CVS HEAD psql's \c doesn't quite behave as expected
when postmaster is listening on non-default port.

I've committed a patch to HEAD that should improve this behavior. Let me
know if the current behavior is still unsatisfactory.

-Neil

#5Philip Yarra
philip@utiba.com
In reply to: Neil Conway (#4)
Re: psql \c error

On Mon, 3 Apr 2006 06:13 am, Neil Conway wrote:

I've committed a patch to HEAD that should improve this behavior. Let me
know if the current behavior is still unsatisfactory.

Yes, thanks, it fixes the stuff that bugged me:

[pyarra@punky pgsql]$ psql -p5434 -dpyarra
[snip opening car chase]
pyarra=# \c foo
You are now connected to database "foo".
foo=# \c philip - - 5432
You are now connected to database "philip" at port "5432".
philip=#

Regards, Philip.

--

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." - Brian W. Kernighan

-----------------
Utiba Pty Ltd
This message has been scanned for viruses and
dangerous content by Utiba mail server and is
believed to be clean.