Re: create tablespace fails silently, or succeeds improperly

Bruce Momjian <bruce@momjian.us>

From: Bruce Momjian <bruce@momjian.us>
To: Alvaro Herrera <alvherre@commandprompt.com>
Cc: Dave Cramer <pg@fastcrypt.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2010-10-18T18:20:02Z
Lists: pgsql-hackers
Alvaro Herrera wrote:
> Hi Dave,
> 
> Excerpts from Dave Cramer's message of lun oct 18 12:23:40 -0300 2010:
> > as seen below create tablespace does not throw an error or appear to
> > do anything other than register the tablespace.
> > 
> > postgres@db01:~> less /opt/pg/data/jnj_indexes/PG_VERSION
> > 8.4
> > postgres@db01:~> /opt/pg91/bin/psql -p 5433
> > psql (9.0.1)
> > Type "help" for help.
> > 
> > postgres=# select version();
> >                                                       version
> > -------------------------------------------------------------------------------------------------------------------
> >  PostgreSQL 9.0.1 on x86_64-unknown-linux-gnu, compiled by GCC gcc
> > (GCC) 3.4.6 20060404 (Red Hat 3.4.6-11), 64-bit
> > (1 row)
> > 
> > postgres=# create TABLESPACE jnj_indexes location '/opt/pg/data/jnj_indexes';
> > CREATE TABLESPACE
> 
> IIRC the reason this works is that the tablespace code now creates a
> version-specific subdirectory inside the specified directory.  This was
> done to help binary upgrades.

Right, the directory is catalog-version named, which was done to allow
for pg_upgrade to work for alpha/beta upgrades (pretty cool).  The case
above happened because 8.4 still has data in that tablespace. 
pg_upgrade does supply a script to delete old data files, but it was not
used in the case above.

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

  + It's impossible for everything to be true. +