Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
325c0a39
Commit
325c0a39
authored
Mar 22, 2008
by
Tatsuo Ishii
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add server side lo_import(filename, oid) function.
parent
bc49703d
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
38 additions
and
11 deletions
+38
-11
doc/src/sgml/lobj.sgml
doc/src/sgml/lobj.sgml
+4
-1
src/backend/libpq/be-fsstubs.c
src/backend/libpq/be-fsstubs.c
+27
-6
src/include/catalog/catversion.h
src/include/catalog/catversion.h
+2
-2
src/include/catalog/pg_proc.h
src/include/catalog/pg_proc.h
+3
-1
src/include/libpq/be-fsstubs.h
src/include/libpq/be-fsstubs.h
+2
-1
No files found.
doc/src/sgml/lobj.sgml
View file @
325c0a39
<!-- $PostgreSQL: pgsql/doc/src/sgml/lobj.sgml,v 1.4
7 2008/03/19 00:39:33
ishii Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/lobj.sgml,v 1.4
8 2008/03/22 01:55:14
ishii Exp $ -->
<chapter id="largeObjects">
<title id="largeObjects-title">Large Objects</title>
...
...
@@ -422,6 +422,9 @@ SELECT lo_unlink(173454); -- deletes large object with OID 173454
INSERT INTO image (name, raster)
VALUES ('beautiful image', lo_import('/etc/motd'));
INSERT INTO image (name, raster) -- same as above, but specify OID to use
VALUES ('beautiful image', lo_import('/etc/motd', 68583));
SELECT lo_export(image.raster, '/tmp/motd') FROM image
WHERE name = 'beautiful image';
</programlisting>
...
...
src/backend/libpq/be-fsstubs.c
View file @
325c0a39
...
...
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/libpq/be-fsstubs.c,v 1.8
7 2008/01/01 19:45:49 momjian
Exp $
* $PostgreSQL: pgsql/src/backend/libpq/be-fsstubs.c,v 1.8
8 2008/03/22 01:55:14 ishii
Exp $
*
* NOTES
* This should be moved to a more appropriate place. It is here
...
...
@@ -79,6 +79,7 @@ static MemoryContext fscxt = NULL;
static
int
newLOfd
(
LargeObjectDesc
*
lobjCookie
);
static
void
deleteLOfd
(
int
fd
);
static
Oid
lo_import_internal
(
text
*
filename
,
Oid
lobjOid
);
/*****************************************************************************
...
...
@@ -320,13 +321,33 @@ Datum
lo_import
(
PG_FUNCTION_ARGS
)
{
text
*
filename
=
PG_GETARG_TEXT_P
(
0
);
PG_RETURN_OID
(
lo_import_internal
(
filename
,
InvalidOid
));
}
/*
* lo_import_with_oid -
* imports a file as an (inversion) large object specifying oid.
*/
Datum
lo_import_with_oid
(
PG_FUNCTION_ARGS
)
{
text
*
filename
=
PG_GETARG_TEXT_P
(
0
);
Oid
oid
=
PG_GETARG_OID
(
1
);
PG_RETURN_OID
(
lo_import_internal
(
filename
,
oid
));
}
static
Oid
lo_import_internal
(
text
*
filename
,
Oid
lobjOid
)
{
File
fd
;
int
nbytes
,
tmp
;
char
buf
[
BUFSIZE
];
char
fnamebuf
[
MAXPGPATH
];
LargeObjectDesc
*
lobj
;
Oid
lobjO
id
;
Oid
o
id
;
#ifndef ALLOW_DANGEROUS_LO_FUNCTIONS
if
(
!
superuser
())
...
...
@@ -356,12 +377,12 @@ lo_import(PG_FUNCTION_ARGS)
/*
* create an inversion object
*/
lobjOid
=
inv_create
(
Invalid
Oid
);
oid
=
inv_create
(
lobj
Oid
);
/*
* read in from the filesystem and write to the inversion object
*/
lobj
=
inv_open
(
lobjO
id
,
INV_WRITE
,
fscxt
);
lobj
=
inv_open
(
o
id
,
INV_WRITE
,
fscxt
);
while
((
nbytes
=
FileRead
(
fd
,
buf
,
BUFSIZE
))
>
0
)
{
...
...
@@ -378,7 +399,7 @@ lo_import(PG_FUNCTION_ARGS)
inv_close
(
lobj
);
FileClose
(
fd
);
PG_RETURN_OID
(
lobjOid
)
;
return
oid
;
}
/*
...
...
src/include/catalog/catversion.h
View file @
325c0a39
...
...
@@ -37,7 +37,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.44
2 2008/03/10 13:53:35 mha
Exp $
* $PostgreSQL: pgsql/src/include/catalog/catversion.h,v 1.44
3 2008/03/22 01:55:14 ishii
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -53,6 +53,6 @@
*/
/* yyyymmddN */
#define CATALOG_VERSION_NO 200803
10
1
#define CATALOG_VERSION_NO 200803
22
1
#endif
src/include/catalog/pg_proc.h
View file @
325c0a39
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.48
2 2008/01/01 19:45:57 momjian
Exp $
* $PostgreSQL: pgsql/src/include/catalog/pg_proc.h,v 1.48
3 2008/03/22 01:55:14 ishii
Exp $
*
* NOTES
* The script catalog/genbki.sh reads this file and generates .bki
...
...
@@ -1027,6 +1027,8 @@ DESCR("storage manager");
DATA
(
insert
OID
=
764
(
lo_import
PGNSP
PGUID
12
1
0
f
f
t
f
v
1
26
"25"
_null_
_null_
_null_
lo_import
-
_null_
_null_
));
DESCR
(
"large object import"
);
DATA
(
insert
OID
=
767
(
lo_import
PGNSP
PGUID
12
1
0
f
f
t
f
v
2
26
"25 26"
_null_
_null_
_null_
lo_import_with_oid
-
_null_
_null_
));
DESCR
(
"large object import"
);
DATA
(
insert
OID
=
765
(
lo_export
PGNSP
PGUID
12
1
0
f
f
t
f
v
2
23
"26 25"
_null_
_null_
_null_
lo_export
-
_null_
_null_
));
DESCR
(
"large object export"
);
...
...
src/include/libpq/be-fsstubs.h
View file @
325c0a39
...
...
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/include/libpq/be-fsstubs.h,v 1.3
0 2008/01/01 19:45:58 momjian
Exp $
* $PostgreSQL: pgsql/src/include/libpq/be-fsstubs.h,v 1.3
1 2008/03/22 01:55:14 ishii
Exp $
*
*-------------------------------------------------------------------------
*/
...
...
@@ -20,6 +20,7 @@
* LO functions available via pg_proc entries
*/
extern
Datum
lo_import
(
PG_FUNCTION_ARGS
);
extern
Datum
lo_import_with_oid
(
PG_FUNCTION_ARGS
);
extern
Datum
lo_export
(
PG_FUNCTION_ARGS
);
extern
Datum
lo_creat
(
PG_FUNCTION_ARGS
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment