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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy