Skip to content

Commit bd9b4f1

Browse files
committed
Improve largeobject regression test to show size of object read from file.
The idea here is to provide a more easily diagnosable failure diff when the problem is that tenk.data has been DOS-ified, as I believe to be happening currently on buildfarm member hamerkop. Per suggestion from Magnus Hagander. Also, sync output/largeobject_1.source with current regression test. Failure to do that in commit 3a0e4d3 turns out to be the real reason that hamerkop has been complaining.
1 parent b8fbbcf commit bd9b4f1

File tree

3 files changed

+37
-0
lines changed

3 files changed

+37
-0
lines changed

src/test/regress/input/largeobject.source

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,9 @@ INSERT INTO lotest_stash_values (loid) SELECT lo_import('@abs_srcdir@/data/tenk.
136136
BEGIN;
137137
UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer));
138138

139+
-- verify length of large object
140+
SELECT lo_lseek(fd, 0, 2) FROM lotest_stash_values;
141+
139142
-- with the default BLKSZ, LOBLKSZ = 2048, so this positions us for a block
140143
-- edge case
141144
SELECT lo_lseek(fd, 2030, 0) FROM lotest_stash_values;

src/test/regress/output/largeobject.source

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,13 @@ TRUNCATE lotest_stash_values;
222222
INSERT INTO lotest_stash_values (loid) SELECT lo_import('@abs_srcdir@/data/tenk.data');
223223
BEGIN;
224224
UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer));
225+
-- verify length of large object
226+
SELECT lo_lseek(fd, 0, 2) FROM lotest_stash_values;
227+
lo_lseek
228+
----------
229+
670800
230+
(1 row)
231+
225232
-- with the default BLKSZ, LOBLKSZ = 2048, so this positions us for a block
226233
-- edge case
227234
SELECT lo_lseek(fd, 2030, 0) FROM lotest_stash_values;

src/test/regress/output/largeobject_1.source

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,25 @@ CREATE TABLE lotest_stash_values (loid oid, fd integer);
99
-- The mode arg to lo_creat is unused, some vestigal holdover from ancient times
1010
-- returns the large object id
1111
INSERT INTO lotest_stash_values (loid) SELECT lo_creat(42);
12+
-- Test ALTER LARGE OBJECT
13+
CREATE ROLE regresslo;
14+
DO $$
15+
BEGIN
16+
EXECUTE 'ALTER LARGE OBJECT ' || (select loid from lotest_stash_values)
17+
|| ' OWNER TO regresslo';
18+
END
19+
$$;
20+
SELECT
21+
rol.rolname
22+
FROM
23+
lotest_stash_values s
24+
JOIN pg_largeobject_metadata lo ON s.loid = lo.oid
25+
JOIN pg_authid rol ON lo.lomowner = rol.oid;
26+
rolname
27+
-----------
28+
regresslo
29+
(1 row)
30+
1231
-- NOTE: large objects require transactions
1332
BEGIN;
1433
-- lo_open(lobjId oid, mode integer) returns integer
@@ -203,6 +222,13 @@ TRUNCATE lotest_stash_values;
203222
INSERT INTO lotest_stash_values (loid) SELECT lo_import('@abs_srcdir@/data/tenk.data');
204223
BEGIN;
205224
UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS integer));
225+
-- verify length of large object
226+
SELECT lo_lseek(fd, 0, 2) FROM lotest_stash_values;
227+
lo_lseek
228+
----------
229+
680801
230+
(1 row)
231+
206232
-- with the default BLKSZ, LOBLKSZ = 2048, so this positions us for a block
207233
-- edge case
208234
SELECT lo_lseek(fd, 2030, 0) FROM lotest_stash_values;
@@ -284,3 +310,4 @@ SELECT lo_unlink(loid) FROM lotest_stash_values;
284310

285311
\lo_unlink :newloid
286312
TRUNCATE lotest_stash_values;
313+
DROP ROLE regresslo;

0 commit comments

Comments
 (0)