aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/src/sgml/ref/psql-ref.sgml13
-rw-r--r--src/bin/psql/large_obj.c42
2 files changed, 45 insertions, 10 deletions
diff --git a/doc/src/sgml/ref/psql-ref.sgml b/doc/src/sgml/ref/psql-ref.sgml
index cd92a217294..3a6af2b537f 100644
--- a/doc/src/sgml/ref/psql-ref.sgml
+++ b/doc/src/sgml/ref/psql-ref.sgml
@@ -1,5 +1,5 @@
<!--
-$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.179 2006/12/19 01:53:36 adunstan Exp $
+$PostgreSQL: pgsql/doc/src/sgml/ref/psql-ref.sgml,v 1.180 2007/01/20 16:57:31 neilc Exp $
PostgreSQL documentation
-->
@@ -1329,11 +1329,12 @@ Tue Oct 26 21:40:57 CEST 1999
foo=&gt; <userinput>\lo_import '/home/peter/pictures/photo.xcf' 'a picture of me'</userinput>
lo_import 152801
</programlisting>
- The response indicates that the large object received object ID
- 152801 which one ought to remember if one wants to access the
- object ever again. For that reason it is recommended to always
- associate a human-readable comment with every object. Those can
- then be seen with the <command>\lo_list</command> command.
+ The response indicates that the large object received object
+ ID 152801, which can be used to access the newly-created large
+ object in the future. For the sake of readability, it is
+ recommended to always associate a human-readable comment with
+ every object. Both OIDs and comments can be viewed with the
+ <command>\lo_list</command> command.
</para>
<para>
diff --git a/src/bin/psql/large_obj.c b/src/bin/psql/large_obj.c
index a55b3af4b11..87918a8850f 100644
--- a/src/bin/psql/large_obj.c
+++ b/src/bin/psql/large_obj.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2007, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/large_obj.c,v 1.47 2007/01/05 22:19:49 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/large_obj.c,v 1.48 2007/01/20 16:57:31 neilc Exp $
*/
#include "postgres_fe.h"
#include "large_obj.h"
@@ -12,6 +12,39 @@
#include "settings.h"
#include "common.h"
+static void
+print_lo_result(const char *fmt,...)
+__attribute__((format(printf, 1, 2)));
+
+static void
+print_lo_result(const char *fmt,...)
+{
+ va_list ap;
+
+ if (!pset.quiet)
+ {
+ if (pset.popt.topt.format == PRINT_HTML)
+ fputs("<p>", pset.queryFout);
+
+ va_start(ap, fmt);
+ vfprintf(pset.queryFout, fmt, ap);
+ va_end(ap);
+
+ if (pset.popt.topt.format == PRINT_HTML)
+ fputs("</p>\n", pset.queryFout);
+ else
+ fputs("\n", pset.queryFout);
+ }
+
+ if (pset.logfile)
+ {
+ va_start(ap, fmt);
+ vfprintf(pset.logfile, fmt, ap);
+ va_end(ap);
+ fputs("\n", pset.logfile);
+ }
+}
+
/*
* Prepare to do a large-object operation. We *must* be inside a transaction
@@ -129,7 +162,7 @@ do_lo_export(const char *loid_arg, const char *filename_arg)
if (!finish_lo_xact("\\lo_export", own_transaction))
return false;
- fprintf(pset.queryFout, "lo_export\n");
+ print_lo_result("lo_export");
return true;
}
@@ -189,7 +222,8 @@ do_lo_import(const char *filename_arg, const char *comment_arg)
if (!finish_lo_xact("\\lo_import", own_transaction))
return false;
- fprintf(pset.queryFout, "lo_import %u\n", loid);
+ print_lo_result("lo_import %u", loid);
+
sprintf(oidbuf, "%u", loid);
SetVariable(pset.vars, "LASTOID", oidbuf);
@@ -225,7 +259,7 @@ do_lo_unlink(const char *loid_arg)
if (!finish_lo_xact("\\lo_unlink", own_transaction))
return false;
- fprintf(pset.queryFout, "lo_unlink %u\n", loid);
+ print_lo_result("lo_unlink %u", loid);
return true;
}