Commit 70ad7ed4 authored by Tom Lane's avatar Tom Lane

Adjust largeobject regression test to leave a couple of LOs behind.

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.
parent 9d4444a6
...@@ -79,6 +79,18 @@ SELECT lo_close(fd) FROM lotest_stash_values; ...@@ -79,6 +79,18 @@ SELECT lo_close(fd) FROM lotest_stash_values;
END; 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 -- Read out a portion
BEGIN; BEGIN;
UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); 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 ...@@ -207,8 +219,10 @@ SELECT pageno, data FROM pg_largeobject WHERE loid = (SELECT loid from lotest_st
EXCEPT EXCEPT
SELECT pageno, data FROM pg_largeobject WHERE loid = :newloid; SELECT pageno, data FROM pg_largeobject WHERE loid = :newloid;
SELECT lo_unlink(loid) FROM lotest_stash_values; SELECT lo_unlink(loid) FROM lotest_stash_values;
TRUNCATE lotest_stash_values;
\lo_unlink :newloid \lo_unlink :newloid
\lo_import 'results/lotest.txt' \lo_import 'results/lotest.txt'
...@@ -232,5 +246,13 @@ SELECT lo_get(:newloid_1, 4294967294, 100); ...@@ -232,5 +246,13 @@ SELECT lo_get(:newloid_1, 4294967294, 100);
\lo_unlink :newloid_1 \lo_unlink :newloid_1
\lo_unlink :newloid_2 \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; DROP ROLE regresslo;
...@@ -85,6 +85,15 @@ SELECT lo_close(fd) FROM lotest_stash_values; ...@@ -85,6 +85,15 @@ SELECT lo_close(fd) FROM lotest_stash_values;
(1 row) (1 row)
END; 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 -- Read out a portion
BEGIN; BEGIN;
UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); 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; ...@@ -398,6 +407,7 @@ SELECT lo_unlink(loid) FROM lotest_stash_values;
1 1
(1 row) (1 row)
TRUNCATE lotest_stash_values;
\lo_unlink :newloid \lo_unlink :newloid
\lo_import 'results/lotest.txt' \lo_import 'results/lotest.txt'
\set newloid_1 :LASTOID \set newloid_1 :LASTOID
...@@ -449,5 +459,15 @@ SELECT lo_get(:newloid_1, 4294967294, 100); ...@@ -449,5 +459,15 @@ SELECT lo_get(:newloid_1, 4294967294, 100);
\lo_unlink :newloid_1 \lo_unlink :newloid_1
\lo_unlink :newloid_2 \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; DROP ROLE regresslo;
...@@ -85,6 +85,15 @@ SELECT lo_close(fd) FROM lotest_stash_values; ...@@ -85,6 +85,15 @@ SELECT lo_close(fd) FROM lotest_stash_values;
(1 row) (1 row)
END; 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 -- Read out a portion
BEGIN; BEGIN;
UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer)); 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; ...@@ -398,6 +407,7 @@ SELECT lo_unlink(loid) FROM lotest_stash_values;
1 1
(1 row) (1 row)
TRUNCATE lotest_stash_values;
\lo_unlink :newloid \lo_unlink :newloid
\lo_import 'results/lotest.txt' \lo_import 'results/lotest.txt'
\set newloid_1 :LASTOID \set newloid_1 :LASTOID
...@@ -449,5 +459,15 @@ SELECT lo_get(:newloid_1, 4294967294, 100); ...@@ -449,5 +459,15 @@ SELECT lo_get(:newloid_1, 4294967294, 100);
\lo_unlink :newloid_1 \lo_unlink :newloid_1
\lo_unlink :newloid_2 \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; DROP ROLE regresslo;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment