Re: BUG #1495: RPM: wrong quoting of error message about old database format after upgrading

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "Markus Bertheau" <twanger(at)bluetwanger(dot)de>
Cc: pgsql-bugs(at)postgresql(dot)org, pgsqlrpms-hackers(at)pgfoundry(dot)org
Subject: Re: BUG #1495: RPM: wrong quoting of error message about old database format after upgrading
Date: 2005-02-21 21:52:33
Message-ID: 2751.1109022753@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

"Markus Bertheau" <twanger(at)bluetwanger(dot)de> writes:
> Description: RPM: wrong quoting of error message about old database
> format after upgrading

> [bertheau(at)dicaprio ~]$ sudo /etc/init.d/postgresql start

> An old version of the database format was found.\nYou need to upgrade the
> data format before using PostgreSQL.\nSee (Your System's documentation
> directory)/postgresql-8.0/README.rpm-dist for more information.

> This is the literal output. The \n's are overquoted.

Good catch. That code has got worse problems too: it ought to be able
to report the correct location of the README.rpm-dist file, but it fails
because of confusion about which version number to use.

I've applied fixes in Red Hat's current RPMs, as attached.

regards, tom lane

Index: postgresql.init
===================================================================
RCS file: /cvs/dist/rpms/postgresql/devel/postgresql.init,v
retrieving revision 1.19
retrieving revision 1.20
diff -c -r1.19 -r1.20
*** postgresql.init 19 Jan 2005 05:02:10 -0000 1.19
--- postgresql.init 21 Feb 2005 21:44:36 -0000 1.20
***************
*** 62,69 ****
# postgres-owned processes laying about.


! # PGVERSION is:
! PGVERSION=8.0

# Source function library.
INITD=/etc/rc.d/init.d
--- 62,72 ----
# postgres-owned processes laying about.


! # PGVERSION is the full package version, e.g., 7.4.7
! # Note: the specfile ordinarily updates this during install
! PGVERSION=xxxx
! # PGMAJORVERSION is major version, e.g., 7.4 (this should match PG_VERSION)
! PGMAJORVERSION=`echo "$PGVERSION" | sed 's/^\([0-9]*\.[0-9]*\).*$/\1/'`

# Source function library.
INITD=/etc/rc.d/init.d
***************
*** 134,140 ****
then
# Check version of existing PGDATA

! if [ `cat "$PGDATA/PG_VERSION"` != "$PGVERSION" ]
then
SYSDOCDIR="(Your System's documentation directory)"
if [ -d "/usr/doc/postgresql-$PGVERSION" ]
--- 137,143 ----
then
# Check version of existing PGDATA

! if [ x`cat "$PGDATA/PG_VERSION"` != x"$PGMAJORVERSION" ]
then
SYSDOCDIR="(Your System's documentation directory)"
if [ -d "/usr/doc/postgresql-$PGVERSION" ]
***************
*** 154,160 ****
SYSDOCDIR=/usr/share/doc/packages
fi
echo
! echo $"An old version of the database format was found.\nYou need to upgrade the data format before using PostgreSQL.\nSee $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information."
exit 1
fi

--- 157,165 ----
SYSDOCDIR=/usr/share/doc/packages
fi
echo
! echo $"An old version of the database format was found."
! echo $"You need to upgrade the data format before using PostgreSQL."
! echo $"See $SYSDOCDIR/postgresql-$PGVERSION/README.rpm-dist for more information."
exit 1
fi

Index: postgresql.spec
===================================================================
RCS file: /cvs/dist/rpms/postgresql/devel/postgresql.spec,v
retrieving revision 1.43
retrieving revision 1.44
diff -c -r1.43 -r1.44
*** postgresql.spec 31 Jan 2005 03:15:07 -0000 1.43
--- postgresql.spec 21 Feb 2005 21:44:36 -0000 1.44
***************
*** 64,70 ****
# Pre-release RPM's should not be put up on the public ftp.postgresql.org server
# -- only test releases or full releases should be.

! Release: 1
License: BSD
Group: Applications/Databases
Source0: ftp://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2
--- 64,70 ----
# Pre-release RPM's should not be put up on the public ftp.postgresql.org server
# -- only test releases or full releases should be.

! Release: 2
License: BSD
Group: Applications/Databases
Source0: ftp://ftp.postgresql.org/pub/source/v%{version}/postgresql-%{version}.tar.bz2
***************
*** 483,489 ****
if [ -d /etc/rc.d/init.d ]
then
install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
! install -m 755 %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/postgresql
fi

# Remove stuff we don't want to ship.
--- 483,490 ----
if [ -d /etc/rc.d/init.d ]
then
install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
! sed 's/^PGVERSION=.*$/PGVERSION=%{version}/' <%{SOURCE3} >postgresql.init
! install -m 755 postgresql.init $RPM_BUILD_ROOT/etc/rc.d/init.d/postgresql
fi

# Remove stuff we don't want to ship.
***************
*** 784,789 ****
--- 785,794 ----
%endif

%changelog
+ * Mon Feb 21 2005 Tom Lane <tgl(at)redhat(dot)com> 8.0.1-2
+ - Repair improper error message in init script when PGVERSION doesn't match.
+ - Arrange for auto update of version embedded in init script.
+
* Sun Jan 30 2005 Tom Lane <tgl(at)redhat(dot)com> 8.0.1-1
- Update to PostgreSQL 8.0.1.
- Add versionless symlinks to jar files (bz#145744)

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Barry Brown 2005-02-21 22:57:40 BUG #1497: Default permissions allow any user to create objects in any database
Previous Message Sergius 2005-02-21 21:19:47 BUG #1496: Problem with instalation