It seems that PG uses the PGDATA directory even for operations
that affect databases on different tablespaces. For example, when
an index is created on a table that is in tablespace TS, the
index ends up in TS (as it should), but first a temporary
file (with size comparable to the final index) is written below
PGDATA, and is truncated only at the end of the operation.
As a more drastic example: I created a DB on a tablespace TS, and
copied a 25 MB file into one of its tables. I ended up having 60
MB of extra data in $PGDATA/pg_xlog that doesn't go away even
after dropping the database.
The docs (19.6 Tablespaces) says
"The tablespace associated with a database is used to store the
system catalogs of that database, as well as any temporary files
created by server processes using that database."
so I must be missing something.
Andras