Version number in psql banner
A release or two ago we added the version number to the psql welcome banner.
I noticed that quite a few people interpret that as the server version.
Somehow, the explicit display of the version numbers leads them to make
inferences that they would otherwise not bother about. Has anyone else
experienced that? I suppose there was a reason we added the version number
there, but I can't recall it. Could we make that more clear?
--
Peter Eisentraut
http://developer.postgresql.org/~petere/
On Thu, Sep 01, 2005 at 05:30:34PM +0200, Peter Eisentraut wrote:
A release or two ago we added the version number to the psql welcome banner.
I noticed that quite a few people interpret that as the server version.
Somehow, the explicit display of the version numbers leads them to make
inferences that they would otherwise not bother about. Has anyone else
experienced that? I suppose there was a reason we added the version number
there, but I can't recall it. Could we make that more clear?
I think the rationale for not adding the server version is that you
could tell people to do "select version()", so it would be unneeded
verbosity, but certainly a lot of people doesn't even know they can do
that.
I think by far the easiest and clearest is to show both psql's version
and the server version. Not the whole "version()" string, as that is
too verbose -- just the version number.
--
Alvaro Herrera -- Valdivia, Chile Architect, www.EnterpriseDB.com
"Cuando miro a alguien, m���s me atrae c���mo cambia que qui���n es" (J. Binoche)
Peter,
A release or two ago we added the version number to the psql welcome
banner. I noticed that quite a few people interpret that as the server
version. Somehow, the explicit display of the version numbers leads them to
make inferences that they would otherwise not bother about. Has anyone
else experienced that? I suppose there was a reason we added the version
number there, but I can't recall it. Could we make that more clear?
Well, Bruce just drafted a patch to warn when the PSQL version and the server
version don't match up, because of PSQL incompatibilities. However, that
won't help for minor versions.
--
Josh Berkus
Aglio Database Solutions
San Francisco
On Thursday 01 September 2005 08:30, Peter Eisentraut wrote:
A release or two ago we added the version number to the psql welcome
banner. I noticed that quite a few people interpret that as the server
version. Somehow, the explicit display of the version numbers leads them to
make inferences that they would otherwise not bother about. Has anyone
else experienced that? I suppose there was a reason we added the version
number there, but I can't recall it. Could we make that more clear?
Yes I've seen the same frustration from users, I think the banner should say
something along the lines of "psql client version foo connected to server bar
version sfoo"
--
Darcy Buskermolen
Wavefire Technologies Corp.
http://www.wavefire.com
ph: 250.717.0200
fx: 250.763.1759
On Thu, 1 Sep 2005, Darcy Buskermolen wrote:
Yes I've seen the same frustration from users, I think the banner should say
something along the lines of "psql client version foo connected to server bar
version sfoo"
I second this, I think that something like "psl client version
8.03 connected to server db01 running PostgreSQL version 8.1" would be
real swell.
Cheers,
Aly.
--
Aly S.P Dharshi
aly.dharshi@telus.net
"A good speech is like a good dress
that's short enough to be interesting
and long enough to cover the subject"
Darcy Buskermolen <darcy@wavefire.com> writes:
Yes I've seen the same frustration from users, I think the banner should say
something along the lines of "psql client version foo connected to server bar
version sfoo"
That seems overly verbose, particularly in the normal case where the
versions are indeed the same. I could live with seeing a display like
that when the versions are different.
The other question is what counts as "different" --- do we want to
complain like this if the minor versions are different?
regards, tom lane
On Thu, 2005-09-01 at 14:53 -0400, Tom Lane wrote:
Darcy Buskermolen <darcy@wavefire.com> writes:
Yes I've seen the same frustration from users, I think the banner should say
something along the lines of "psql client version foo connected to server bar
version sfoo"That seems overly verbose, particularly in the normal case where the
versions are indeed the same. I could live with seeing a display like
that when the versions are different.
Thats the way Oracle sql*plus has worked for years, so its fairly
acceptable to a great many people without too many questions.
The other question is what counts as "different" --- do we want to
complain like this if the minor versions are different?
Which is much harder to define and could itself have a bug in it, so I
prefer the verbose message.... its much better to know for certain every
time.
Best Regards, Simon Riggs
On Thu, Sep 01, 2005 at 11:18:25PM +0100, Simon Riggs wrote:
On Thu, 2005-09-01 at 14:53 -0400, Tom Lane wrote:
Darcy Buskermolen <darcy@wavefire.com> writes:
Yes I've seen the same frustration from users, I think the banner should say
something along the lines of "psql client version foo connected to server bar
version sfoo"That seems overly verbose, particularly in the normal case where the
versions are indeed the same. I could live with seeing a display like
that when the versions are different.Thats the way Oracle sql*plus has worked for years, so its fairly
acceptable to a great many people without too many questions.The other question is what counts as "different" --- do we want to
complain like this if the minor versions are different?Which is much harder to define and could itself have a bug in it, so I
prefer the verbose message.... its much better to know for certain every
time.
I was going to mention that we should report server version info any
time we connect to a different server, though I guess \connect only
allows you to connect to a different database on the same server.
As a side note, there's a typo in \?:
\c[onnect] [DBNAME|- [USER]]
Note the | where there should be a ].
--
Jim C. Nasby, Sr. Engineering Consultant jnasby@pervasive.com
Pervasive Software http://pervasive.com 512-569-9461
On Thu, Sep 01, 2005 at 11:34:37PM -0500, Jim C. Nasby wrote:
As a side note, there's a typo in \?:
\c[onnect] [DBNAME|- [USER]]
Note the | where there should be a ].
Eh? Looks right to me; the | indicates an alternate, i.e., that
you can use either DBNAME or -. I often use - to connect to the
same database as a different user.
test=> \c - postgres
You are now connected as new user "postgres".
test=#
--
Michael Fuhr
Am Donnerstag, den 01.09.2005, 23:34 -0500 schrieb Jim C. Nasby:
On Thu, Sep 01, 2005 at 11:18:25PM +0100, Simon Riggs wrote:
As a side note, there's a typo in \?:
\c[onnect] [DBNAME|- [USER]]
Note the | where there should be a ].
No ;) The | stands for the alternative.
The whole block is optional, where
you can either type dbname or a hypen
for the database name - to be able to
just switch the user.
Tom Lane wrote:
Darcy Buskermolen <darcy@wavefire.com> writes:
Yes I've seen the same frustration from users, I think the banner should say
something along the lines of "psql client version foo connected to server bar
version sfoo"That seems overly verbose, particularly in the normal case where the
versions are indeed the same. I could live with seeing a display like
that when the versions are different.The other question is what counts as "different" --- do we want to
complain like this if the minor versions are different?
I updated the patch. This gives psql three output displays on startup:
full match:
Welcome to psql 8.1beta1, the PostgreSQL interactive terminal.
major match:
Welcome to psql, the PostgreSQL interactive terminal.
psql version 8.19, server version 8.1
and non-major match:
WARNING: You are connected to a server with major version 8.1,
but your psql client is major version 8.2. Informational backslash
commands, like \d, might not work properly.
Welcome to psql, the PostgreSQL interactive terminal.
psql version 8.29, server version 8.1
Patch attached.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073
Attachments:
/pgpatches/psqltext/plainDownload
Index: src/bin/psql/startup.c
===================================================================
RCS file: /cvsroot/pgsql/src/bin/psql/startup.c,v
retrieving revision 1.120
diff -c -c -r1.120 startup.c
*** src/bin/psql/startup.c 25 Jul 2005 17:17:41 -0000 1.120
--- src/bin/psql/startup.c 3 Sep 2005 00:34:52 -0000
***************
*** 312,324 ****
if (!QUIET() && !pset.notty)
{
! printf(_("Welcome to %s %s, the PostgreSQL interactive terminal.\n\n"
! "Type: \\copyright for distribution terms\n"
" \\h for help with SQL commands\n"
" \\? for help with psql commands\n"
" \\g or terminate with semicolon to execute query\n"
! " \\q to quit\n\n"),
! pset.progname, PG_VERSION);
#ifdef USE_SSL
printSSLInfo();
#endif
--- 312,362 ----
if (!QUIET() && !pset.notty)
{
! /*
! * Server value for 8.12 is 80102.
! * This code does not handle release numbers like
! * 8.112. (Is that 8.1, version 12, or 8.11, version 2?
! */
! int client_ver_major_int = atoi(PG_VERSION) * 100 +
! strchr(PG_VERSION, '.')[1] - '0';
! int client_ver_int = atoi(PG_VERSION) * 10000 +
! (strchr(PG_VERSION, '.')[1] - '0') * 100 +
! (isdigit(strchr(PG_VERSION, '.')[2]) ?
! strchr(PG_VERSION, '.')[2] - '0' : '\0');
!
! if (pset.sversion / 100 != client_ver_major_int)
! {
! printf(_("WARNING: You are connected to a server with major version %d.%d,\n"
! "but your %s client is major version %d.%d. Informational backslash\n"
! "commands, like \\d, might not work properly.\n\n"),
! pset.sversion / 10000, (pset.sversion / 100) % 10,
! pset.progname, atoi(PG_VERSION), strchr(PG_VERSION, '.')[1] - '0');
! }
!
! if (pset.sversion != client_ver_int)
! {
! char server_ver_str[16];
!
! snprintf(server_ver_str, 16, "%d.%c%c", pset.sversion / 10000,
! (pset.sversion / 100) % 10 + '0',
! /* print last digit? */
! (pset.sversion % 10 != 0) ?
! pset.sversion % 10 + '0' : '\0');
!
! printf(_("Welcome to %s, the PostgreSQL interactive terminal.\n"),
! pset.progname);
! printf(_("psql version %s, server version %s\n\n"),
! PG_VERSION, server_ver_str);
! }
! else
! printf(_("Welcome to %s %s, the PostgreSQL interactive terminal.\n\n"),
! pset.progname, PG_VERSION);
!
! printf(_("Type: \\copyright for distribution terms\n"
" \\h for help with SQL commands\n"
" \\? for help with psql commands\n"
" \\g or terminate with semicolon to execute query\n"
! " \\q to quit\n\n"));
#ifdef USE_SSL
printSSLInfo();
#endif