@ -41,31 +41,39 @@ UPDATE lotest_stash_values SET fd = lo_open(loid, CAST(x'20000' | x'40000' AS in
-- lowrite(fd integer, data bytea) returns integer
-- lowrite(fd integer, data bytea) returns integer
-- the integer is the number of bytes written
-- the integer is the number of bytes written
SELECT lowrite(fd, '
SELECT lowrite(fd, '
Whose woods these are I think I know,
I wandered lonely as a cloud
His house is in the village though.
That floats on high o''er vales and hills,
He will not see me stopping here,
When all at once I saw a crowd,
To watch his woods fill up with snow.
A host, of golden daffodils;
Beside the lake, beneath the trees,
My little horse must think it queer,
Fluttering and dancing in the breeze.
To stop without a farmhouse near,
Between the woods and frozen lake,
Continuous as the stars that shine
The darkest evening of the year.
And twinkle on the milky way,
They stretched in never-ending line
He gives his harness bells a shake,
Along the margin of a bay:
To ask if there is some mistake.
Ten thousand saw I at a glance,
The only other sound''s the sweep,
Tossing their heads in sprightly dance.
Of easy wind and downy flake.
The waves beside them danced; but they
The woods are lovely, dark and deep,
Out-did the sparkling waves in glee:
But I have promises to keep,
A poet could not but be gay,
And miles to go before I sleep,
In such a jocund company:
And miles to go before I sleep.
I gazed--and gazed--but little thought
What wealth the show to me had brought:
-- Robert Frost
For oft, when on my couch I lie
In vacant or in pensive mood,
They flash upon that inward eye
Which is the bliss of solitude;
And then my heart with pleasure fills,
And dances with the daffodils.
-- William Wordsworth
') FROM lotest_stash_values;
') FROM lotest_stash_values;
lowrite
lowrite
---------
---------
578
84 8
(1 row)
(1 row)
-- lo_close(fd integer) returns integer
-- lo_close(fd integer) returns integer
@ -86,24 +94,24 @@ UPDATE lotest_stash_values SET fd=lo_open(loid, CAST(x'20000' | x'40000' AS inte
-- SEEK_CUR (= 1) meaning relative to current position
-- SEEK_CUR (= 1) meaning relative to current position
-- SEEK_END (= 2) meaning relative to end (offset better be negative)
-- SEEK_END (= 2) meaning relative to end (offset better be negative)
-- returns current position in file
-- returns current position in file
SELECT lo_lseek(fd, 422 , 0) FROM lotest_stash_values;
SELECT lo_lseek(fd, 10 4, 0) FROM lotest_stash_values;
lo_lseek
lo_lseek
----------
----------
422
10 4
(1 row)
(1 row)
-- loread/lowrite names are wonky, different from other functions which are lo_*
-- loread/lowrite names are wonky, different from other functions which are lo_*
-- loread(fd integer, len integer) returns bytea
-- loread(fd integer, len integer) returns bytea
SELECT loread(fd, 35 ) FROM lotest_stash_values;
SELECT loread(fd, 28 ) FROM lotest_stash_values;
loread
loread
-------------------------------------
------------------------------
The woods are lovely, dark and deep
A host, of golden daffodils;
(1 row)
(1 row)
SELECT lo_lseek(fd, -19, 1) FROM lotest_stash_values;
SELECT lo_lseek(fd, -19, 1) FROM lotest_stash_values;
lo_lseek
lo_lseek
----------
----------
438
113
(1 row)
(1 row)
SELECT lowrite(fd, 'n') FROM lotest_stash_values;
SELECT lowrite(fd, 'n') FROM lotest_stash_values;
@ -115,19 +123,19 @@ SELECT lowrite(fd, 'n') FROM lotest_stash_values;
SELECT lo_tell(fd) FROM lotest_stash_values;
SELECT lo_tell(fd) FROM lotest_stash_values;
lo_tell
lo_tell
---------
---------
439
11 4
(1 row)
(1 row)
SELECT lo_lseek(fd, -156 , 2) FROM lotest_stash_values;
SELECT lo_lseek(fd, -744 , 2) FROM lotest_stash_values;
lo_lseek
lo_lseek
----------
----------
422
10 4
(1 row)
(1 row)
SELECT loread(fd, 35 ) FROM lotest_stash_values;
SELECT loread(fd, 28 ) FROM lotest_stash_values;
loread
loread
-------------------------------------
------------------------------
The woods are lonely, dark and deep
A host, on golden daffodils;
(1 row)
(1 row)
SELECT lo_close(fd) FROM lotest_stash_values;
SELECT lo_close(fd) FROM lotest_stash_values;
@ -149,7 +157,7 @@ ABORT;
-- Test truncation.
-- Test truncation.
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));
SELECT lo_truncate(fd, 10 ) FROM lotest_stash_values;
SELECT lo_truncate(fd, 11 ) FROM lotest_stash_values;
lo_truncate
lo_truncate
-------------
-------------
0
0
@ -157,8 +165,8 @@ SELECT lo_truncate(fd, 10) FROM lotest_stash_values;
SELECT loread(fd, 15) FROM lotest_stash_values;
SELECT loread(fd, 15) FROM lotest_stash_values;
loread
loread
---------------
----------------
\012Whose woo
\012I wandered
(1 row)
(1 row)
SELECT lo_truncate(fd, 10000) FROM lotest_stash_values;
SELECT lo_truncate(fd, 10000) FROM lotest_stash_values;