Thread: pg_dump doesn't work well with large object ...

pg_dump doesn't work well with large object ...

From
David Sauer
Date:
I have problem with pg_dump with CVS snapshot 19990526:
david=> \c test
connecting to new database: test
test=> \d
Database    = test+------------------+----------------------------------+----------+|  Owner           |
Relation            |   Type   |+------------------+----------------------------------+----------+| david            |
tst                             | table    || david            | xinx35274                        | index
|+------------------+----------------------------------+----------+

test=> select * from tst;
entry
-----
35274
(1 row)

test=> \d tst
Table    = tst
+----------------------------------+----------------------------------+-------+
|              Field               |              Type                | Length|
+----------------------------------+----------------------------------+-------+
| entry                            | oid                              |   4   |
+----------------------------------+----------------------------------+-------+
EOF

But pg_dump prints:
$ pg_dump test
CREATE TABLE "tst" ("entry" oid);
COPY "tst" FROM stdin;
35274
\.
failed sanity check, table xinv35274 was not found
===============================================================
But xinv35274 exist:

david=> \c test        
connecting to new database: test
test=> select * from pg_class where relname like 'xin%';
relname
|reltype|relowner|relam|relpages|reltuples|relhasindex|relisshared|relkind|relnatts|relchecks|reltriggers|relukeys|relfkeys|relrefs|relhaspkey|relhasrules|relacl

---------+-------+--------+-----+--------+---------+-----------+-----------+-------+--------+---------+-----------+--------+--------+-------+----------+-----------+------
xinv35274|      0|     501|    0|       0|        0|t          |f          |l      |       2|        0|          0|
 0|       0|      0|f         |f          |      
 
xinx35274|      0|     501|  403|       2|     2048|f          |f          |i      |       1|        0|          0|
 0|       0|      0|f         |f          |      
 
(2 rows)

I think, that this is problem (mainly if I need backup).

-- 
* David Sauer, student of Czech Technical University
* electronic mail: davids@orfinet.cz (mime compatible)


Re: [HACKERS] pg_dump doesn't work well with large object ...

From
Tom Lane
Date:
David Sauer <davids@orfinet.cz> writes:
> I have problem with pg_dump with CVS snapshot 19990526:
> failed sanity check, table xinv35274 was not found

I have fixed this to the extent that pg_dump ignores large objects,
as it is documented to do.  (It was doing that just fine, but it
failed to ignore the indexes on the large objects :-(.)

Of course what you'd really like is for a pg_dump script to save
and restore large objects along with everything else.  But there
seem to be several big problems to be solved before that can happen.
The worst is that a large object's OID will likely be recorded in
at least one other table in the database, and pg_dump is not nearly
smart enough to find and update those references...
        regards, tom lane