]> granicus.if.org Git - postgresql/commitdiff
Adjust largeobject regression test to leave a couple of LOs behind.
authorTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Jun 2014 21:51:47 +0000 (17:51 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Thu, 12 Jun 2014 21:51:47 +0000 (17:51 -0400)
Since we commonly test pg_dump/pg_restore by seeing whether they can dump
and restore the regression test database, it behooves us to include some
large objects in that test scenario.

I tried to include a comment on one of these large objects to improve
the test scenario further ... but it turns out that pg_upgrade fails to
preserve comments on large objects, and its regression test notices
the discrepancy.  So uncommenting that COMMENT is a TODO for later.

src/test/regress/input/largeobject.source
src/test/regress/output/largeobject.source
src/test/regress/output/largeobject_1.source

index bd577d58b2b788502238afbaca5361e6c487fa8a..a19959a1b8757782b4752aed7de54e227ee9d662 100644 (file)
@@ -79,6 +79,18 @@ SELECT lo_close(fd) FROM lotest_stash_values;
 
 END;
 
+-- Copy to another large object.
+-- Note: we intentionally don't remove the object created here;
+-- it's left behind to help test pg_dump.
+
+SELECT lo_from_bytea(0, lo_get(loid)) AS newloid FROM lotest_stash_values
+\gset
+
+-- Ideally we'd put a comment on this object for pg_dump testing purposes.
+-- But since pg_upgrade fails to preserve large object comments, doing so
+-- would break pg_upgrade's regression test.
+-- COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud';
+
 -- Read out a portion
 BEGIN;
 UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer));
@@ -207,8 +219,10 @@ SELECT pageno, data FROM pg_largeobject WHERE loid = (SELECT loid from lotest_st
 EXCEPT
 SELECT pageno, data FROM pg_largeobject WHERE loid = :newloid;
 
-
 SELECT lo_unlink(loid) FROM lotest_stash_values;
+
+TRUNCATE lotest_stash_values;
+
 \lo_unlink :newloid
 
 \lo_import 'results/lotest.txt'
@@ -232,5 +246,13 @@ SELECT lo_get(:newloid_1, 4294967294, 100);
 \lo_unlink :newloid_1
 \lo_unlink :newloid_2
 
-TRUNCATE lotest_stash_values;
+-- This object is left in the database for pg_dump test purposes
+SELECT lo_from_bytea(0, E'\\xdeadbeef') AS newloid
+\gset
+
+SET bytea_output TO hex;
+SELECT lo_get(:newloid);
+
+DROP TABLE lotest_stash_values;
+
 DROP ROLE regresslo;
index 63a51241d017f0b70c35c4b08b02c2f2c6ed8d26..8b34ac491b4fc77d2cd1a46174ab43e177791caf 100644 (file)
@@ -85,6 +85,15 @@ SELECT lo_close(fd) FROM lotest_stash_values;
 (1 row)
 
 END;
+-- Copy to another large object.
+-- Note: we intentionally don't remove the object created here;
+-- it's left behind to help test pg_dump.
+SELECT lo_from_bytea(0, lo_get(loid)) AS newloid FROM lotest_stash_values
+\gset
+-- Ideally we'd put a comment on this object for pg_dump testing purposes.
+-- But since pg_upgrade fails to preserve large object comments, doing so
+-- would break pg_upgrade's regression test.
+-- COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud';
 -- Read out a portion
 BEGIN;
 UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer));
@@ -398,6 +407,7 @@ SELECT lo_unlink(loid) FROM lotest_stash_values;
          1
 (1 row)
 
+TRUNCATE lotest_stash_values;
 \lo_unlink :newloid
 \lo_import 'results/lotest.txt'
 \set newloid_1 :LASTOID
@@ -449,5 +459,15 @@ SELECT lo_get(:newloid_1, 4294967294, 100);
 
 \lo_unlink :newloid_1
 \lo_unlink :newloid_2
-TRUNCATE lotest_stash_values;
+-- This object is left in the database for pg_dump test purposes
+SELECT lo_from_bytea(0, E'\\xdeadbeef') AS newloid
+\gset
+SET bytea_output TO hex;
+SELECT lo_get(:newloid);
+   lo_get   
+------------
+ \xdeadbeef
+(1 row)
+
+DROP TABLE lotest_stash_values;
 DROP ROLE regresslo;
index dee56e10b355c774d3f3ee38aa5f0497e1d85ef1..5167a0141834ee4e5073702f5a9e6fcf04adc9a2 100644 (file)
@@ -85,6 +85,15 @@ SELECT lo_close(fd) FROM lotest_stash_values;
 (1 row)
 
 END;
+-- Copy to another large object.
+-- Note: we intentionally don't remove the object created here;
+-- it's left behind to help test pg_dump.
+SELECT lo_from_bytea(0, lo_get(loid)) AS newloid FROM lotest_stash_values
+\gset
+-- Ideally we'd put a comment on this object for pg_dump testing purposes.
+-- But since pg_upgrade fails to preserve large object comments, doing so
+-- would break pg_upgrade's regression test.
+-- COMMENT ON LARGE OBJECT :newloid IS 'I Wandered Lonely as a Cloud';
 -- Read out a portion
 BEGIN;
 UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer));
@@ -398,6 +407,7 @@ SELECT lo_unlink(loid) FROM lotest_stash_values;
          1
 (1 row)
 
+TRUNCATE lotest_stash_values;
 \lo_unlink :newloid
 \lo_import 'results/lotest.txt'
 \set newloid_1 :LASTOID
@@ -449,5 +459,15 @@ SELECT lo_get(:newloid_1, 4294967294, 100);
 
 \lo_unlink :newloid_1
 \lo_unlink :newloid_2
-TRUNCATE lotest_stash_values;
+-- This object is left in the database for pg_dump test purposes
+SELECT lo_from_bytea(0, E'\\xdeadbeef') AS newloid
+\gset
+SET bytea_output TO hex;
+SELECT lo_get(:newloid);
+   lo_get   
+------------
+ \xdeadbeef
+(1 row)
+
+DROP TABLE lotest_stash_values;
 DROP ROLE regresslo;