psql 8.4 \c repeats version banner

Started by Peter Eisentrautover 16 years ago4 messageshackers
Jump to latest
#1Peter Eisentraut
peter_e@gmx.net

In 8.3, running \c from a file prints something like

You are now connected to database "postgres".

In 8.4 it prints

psql (8.4.1)
You are now connected to database "postgres".

Is it intentional/sensible to repeat the startup banner every time the
connection changes, or was this unintentionally introduced while the
startup banner was reshuffled in 8.4?

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Peter Eisentraut (#1)
Re: psql 8.4 \c repeats version banner

Peter Eisentraut <peter_e@gmx.net> writes:

In 8.3, running \c from a file prints something like
You are now connected to database "postgres".

In 8.4 it prints

psql (8.4.1)
You are now connected to database "postgres".

Is it intentional/sensible to repeat the startup banner every time the
connection changes, or was this unintentionally introduced while the
startup banner was reshuffled in 8.4?

I think the argument was that if you are connecting to a new server, the
server version number could change, and so it is useful to repeat that
line to have a place to display the possible version mismatch indicator.
Maybe we could suppress it if the third and fourth arguments are
omitted, but I'm not sure it's worth the trouble.

The original design didn't have the third and fourth arguments, hence no
possibility of server change.

regards, tom lane

#3Bruce Momjian
bruce@momjian.us
In reply to: Peter Eisentraut (#1)
Re: psql 8.4 \c repeats version banner

Peter Eisentraut wrote:

In 8.3, running \c from a file prints something like

You are now connected to database "postgres".

In 8.4 it prints

psql (8.4.1)
You are now connected to database "postgres".

Is it intentional/sensible to repeat the startup banner every time the
connection changes, or was this unintentionally introduced while the
startup banner was reshuffled in 8.4?

I did some reseach on this. I bet this behavior was added when we
decided to print the backend version warning banner on \c as well as
startup, because it is possible for the backend to be different version
from the backend originally used for psql startup. The code that prints
the psql banner and the warning banner are in the same function and
share the same output line.

What I did in the attached patch is to add a boolean to
connection_warnings() to indicate whether it was being called on psql
startup or via \c, and to supress the psql banner on \c if the client
and server versions match:

$ psql test
psql (8.5devel)
Type "help" for help.

test=> \c test
You are now connected to database "test".
test=>

Any version mismatch will still print the psql banner for \c, which is
what I think we want.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

Attachments:

/pgpatches/psql_bannertext/x-diffDownload+11-11
#4Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#3)
Re: psql 8.4 \c repeats version banner

Applied.

---------------------------------------------------------------------------

Bruce Momjian wrote:

Peter Eisentraut wrote:

In 8.3, running \c from a file prints something like

You are now connected to database "postgres".

In 8.4 it prints

psql (8.4.1)
You are now connected to database "postgres".

Is it intentional/sensible to repeat the startup banner every time the
connection changes, or was this unintentionally introduced while the
startup banner was reshuffled in 8.4?

I did some reseach on this. I bet this behavior was added when we
decided to print the backend version warning banner on \c as well as
startup, because it is possible for the backend to be different version
from the backend originally used for psql startup. The code that prints
the psql banner and the warning banner are in the same function and
share the same output line.

What I did in the attached patch is to add a boolean to
connection_warnings() to indicate whether it was being called on psql
startup or via \c, and to supress the psql banner on \c if the client
and server versions match:

$ psql test
psql (8.5devel)
Type "help" for help.

test=> \c test
You are now connected to database "test".
test=>

Any version mismatch will still print the psql banner for \c, which is
what I think we want.

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ If your life is a hard drive, Christ can be your backup. +