mirror of
https://github.com/postgres/postgres.git
synced 2025-12-13 14:22:43 +03:00
Fix up references to "PostgreSQL" rather than "Postgres". Was roughly evenly split between the two before. ref/ files not yet done.
1974 lines
46 KiB
Plaintext
1974 lines
46 KiB
Plaintext
<chapter id="pgtcl">
|
|
<title><application>pgtcl</application> - Tcl Binding Library</title>
|
|
|
|
<indexterm zone="pgtcl">
|
|
<primary>libpgtcl</primary>
|
|
</indexterm>
|
|
|
|
<indexterm zone="pgtcl">
|
|
<primary>Tcl</primary>
|
|
</indexterm>
|
|
|
|
<Para>
|
|
<literal>pgtcl</literal> is a Tcl package for front-end programs
|
|
to interface with <ProductName>PostgreSQL</ProductName>
|
|
backends. It makes most of the functionality of <literal>libpq</literal> available to
|
|
Tcl scripts.
|
|
</Para>
|
|
|
|
<Para>
|
|
This package was originally written by Jolly Chen.
|
|
</Para>
|
|
|
|
<Sect1 id="libpgtcl-commands">
|
|
<Title>Commands</Title>
|
|
|
|
<Para>
|
|
<TABLE TOCENTRY="1">
|
|
<TITLE><literal>pgtcl</literal> Commands</TITLE>
|
|
<TGROUP COLS="2">
|
|
<THEAD>
|
|
<ROW>
|
|
<ENTRY>Command</ENTRY>
|
|
<ENTRY>Description</ENTRY>
|
|
</ROW>
|
|
</THEAD>
|
|
<TBODY>
|
|
<ROW>
|
|
<ENTRY><function>pg_connect</function></ENTRY>
|
|
<ENTRY>opens a connection to the backend server</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_disconnect</function></ENTRY>
|
|
<ENTRY>closes a connection</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_conndefaults</function></ENTRY>
|
|
<ENTRY>get connection options and their defaults</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_exec</function></ENTRY>
|
|
<ENTRY>send a query to the backend</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_result</function></ENTRY>
|
|
<ENTRY>manipulate the results of a query</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_select</function></ENTRY>
|
|
<ENTRY>loop over the result of a SELECT statement</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_listen</function></ENTRY>
|
|
<ENTRY>establish a callback for NOTIFY messages</ENTRY>
|
|
</ROW>
|
|
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_creat</function></ENTRY>
|
|
<ENTRY>create a large object</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_open</function></ENTRY>
|
|
<ENTRY>open a large object</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_close</function></ENTRY>
|
|
<ENTRY>close a large object</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_read</function></ENTRY>
|
|
<ENTRY>read a large object</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_write</function></ENTRY>
|
|
<ENTRY>write a large object</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_lseek</function></ENTRY>
|
|
<ENTRY>seek to a position in a large object</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_tell</function></ENTRY>
|
|
<ENTRY>return the current seek position of a large object</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_unlink</function></ENTRY>
|
|
<ENTRY>delete a large object</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_import</function></ENTRY>
|
|
<ENTRY>import a Unix file into a large object</ENTRY>
|
|
</ROW>
|
|
<ROW>
|
|
<ENTRY><function>pg_lo_export</function></ENTRY>
|
|
<ENTRY>export a large object into a Unix file</ENTRY>
|
|
</ROW>
|
|
</TBODY>
|
|
</TGROUP>
|
|
</TABLE>
|
|
</Para>
|
|
|
|
<Para>
|
|
These commands are described further on subsequent pages.
|
|
</Para>
|
|
|
|
<Para>
|
|
The pg_lo* routines are interfaces to the Large Object features of
|
|
<ProductName>PostgreSQL</ProductName>.
|
|
The functions are designed to mimic the analogous file system functions in
|
|
the standard Unix file system interface.
|
|
The pg_lo* routines should be used within a BEGIN/END transaction
|
|
block because the file descriptor returned by pg_lo_open is only valid for
|
|
the current transaction. pg_lo_import and pg_lo_export MUST be used
|
|
in a BEGIN/END transaction block.
|
|
</Para>
|
|
|
|
</Sect1>
|
|
|
|
<Sect1 id="libpgtcl-examples">
|
|
<Title>Examples</Title>
|
|
|
|
<example>
|
|
<title><application>pgtcl</application> Example Program</title>
|
|
|
|
<para>
|
|
Here's a small example of how to use the routines:
|
|
|
|
<programlisting>
|
|
# getDBs :
|
|
# get the names of all the databases at a given host and port number
|
|
# with the defaults being the localhost and port 5432
|
|
# return them in alphabetical order
|
|
proc getDBs { {host "localhost"} {port "5432"} } {
|
|
# datnames is the list to be result
|
|
set conn [pg_connect template1 -host $host -port $port]
|
|
set res [pg_exec $conn "SELECT datname FROM pg_database ORDER BY datname"]
|
|
set ntups [pg_result $res -numTuples]
|
|
for {set i 0} {$i < $ntups} {incr i} {
|
|
lappend datnames [pg_result $res -getTuple $i]
|
|
}
|
|
pg_result $res -clear
|
|
pg_disconnect $conn
|
|
return $datnames
|
|
}
|
|
</ProgramListing>
|
|
</para>
|
|
</example>
|
|
</Sect1>
|
|
|
|
<Sect1 id="libpgtcl-ref">
|
|
<Title><application>pgtcl</application> Command Reference Information</Title>
|
|
|
|
<REFENTRY ID="PGTCL-PGCONNECT">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_connect</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Connection Management</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_connect
|
|
</REFNAME>
|
|
<REFPURPOSE>opens a connection to the backend server
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGCONNECT-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>connecting</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGCONNECT-2"><PRIMARY>pg_connect</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_connect -conninfo <REPLACEABLE CLASS="PARAMETER">connectOptions</REPLACEABLE>
|
|
pg_connect <REPLACEABLE CLASS="PARAMETER">dbName</REPLACEABLE> <OPTIONAL>-host <REPLACEABLE CLASS="PARAMETER">hostName</REPLACEABLE></OPTIONAL>
|
|
<OPTIONAL>-port <REPLACEABLE
|
|
CLASS="PARAMETER">portNumber</REPLACEABLE></OPTIONAL> <OPTIONAL>-tty <REPLACEABLE
|
|
CLASS="PARAMETER">pqtty</REPLACEABLE></OPTIONAL>
|
|
<OPTIONAL>-options <REPLACEABLE
|
|
CLASS="PARAMETER">optionalBackendArgs</REPLACEABLE></OPTIONAL>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGCONNECT-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1998-10-07</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs (new style)
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">connectOptions</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>A string of connection options, each written in the form keyword = value.
|
|
A list of valid options can be found in <filename>libpq</>'s
|
|
<function>PQconnectdb()</> manual entry.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGCONNECT-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs (old style)
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">dbName</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database name.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<OPTIONAL>-host <REPLACEABLE CLASS="PARAMETER">hostName</REPLACEABLE></OPTIONAL>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies the domain name of the backend server for <REPLACEABLE CLASS="PARAMETER">dbName</REPLACEABLE>.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<OPTIONAL>-port <REPLACEABLE CLASS="PARAMETER">portNumber</REPLACEABLE></OPTIONAL>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies the IP port number of the backend server for <REPLACEABLE CLASS="PARAMETER">dbName</REPLACEABLE>.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<OPTIONAL>-tty <REPLACEABLE CLASS="PARAMETER">pqtty</REPLACEABLE></OPTIONAL>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies file or <acronym>tty</acronym> for optional debug output from backend.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<OPTIONAL>-options <REPLACEABLE CLASS="PARAMETER">optionalBackendArgs</REPLACEABLE></OPTIONAL>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies options for the backend server for <REPLACEABLE CLASS="PARAMETER">dbName</REPLACEABLE>.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGCONNECT-3">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">dbHandle</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
If successful, a handle for a database connection is returned.
|
|
Handles start with the prefix <literal>pgsql</literal>.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGCONNECT-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_connect</FUNCTION> opens a connection to the
|
|
<ProductName>PostgreSQL</ProductName> backend.
|
|
</Para>
|
|
|
|
<para>
|
|
Two syntaxes are available. In the older one, each possible option
|
|
has a separate option switch in the pg_connect statement. In the
|
|
newer form, a single option string is supplied that can contain
|
|
multiple option values. See <FUNCTION>pg_conndefaults</FUNCTION>
|
|
for info about the available options in the newer syntax.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGCONNECT-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<comment>
|
|
XXX thomas 1997-12-24
|
|
</comment>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<REFENTRY ID="PGTCL-PGDISCONNECT">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_disconnect</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Connection Management</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_disconnect
|
|
</REFNAME>
|
|
<REFPURPOSE>closes a connection to the backend server
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGDISCONNECT-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>connecting</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGDISCONNECT-2"><PRIMARY>pg_connect</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_disconnect <REPLACEABLE CLASS="PARAMETER">dbHandle</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGDISCONNECT-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">dbHandle</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database handle.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGDISCONNECT-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
None
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGDISCONNECT-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_disconnect</FUNCTION> closes a connection to the <ProductName>PostgreSQL</ProductName> backend.
|
|
</PARA>
|
|
</REFSECT1>
|
|
|
|
</REFENTRY>
|
|
|
|
|
|
|
|
|
|
<REFENTRY ID="PGTCL-PGCONNDEFAULTS">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_conndefaults</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Connection Management</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_conndefaults
|
|
</REFNAME>
|
|
<REFPURPOSE>obtain information about default connection parameters
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGCONNDEFAULTS-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>connecting</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGCONNDEFAULTS-2"><PRIMARY>pg_conndefaults</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1998-10-07</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_conndefaults
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGCONNDEFAULTS-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1998-10-07</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<PARA>
|
|
None.
|
|
</PARA>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGCONNDEFAULTS-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1998-10-07</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">option list</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
The result is a list describing the possible connection options and their
|
|
current default values.
|
|
Each entry in the list is a sublist of the format:
|
|
</Para>
|
|
<screen>
|
|
{optname label dispchar dispsize value}
|
|
</screen>
|
|
<Para>
|
|
where the <replaceable>optname</> is usable as an option in
|
|
<FUNCTION>pg_connect -conninfo</FUNCTION>.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGCONNDEFAULTS-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1998-10-07</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
|
|
<para>
|
|
<FUNCTION>pg_conndefaults</FUNCTION> returns info about the connection
|
|
options available in <FUNCTION>pg_connect -conninfo</FUNCTION> and the
|
|
current default value for each option.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGCONNDEFAULTS-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA><literal>pg_conndefaults</>
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<REFENTRY ID="PGTCL-PGEXEC">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_exec</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Query Processing</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_exec
|
|
</REFNAME>
|
|
<REFPURPOSE>
|
|
send a query string to the backend
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGEXEC-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>connecting</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGEXEC-2"><PRIMARY>pg_connect</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_exec <REPLACEABLE CLASS="PARAMETER">dbHandle</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">queryString</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGEXEC-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">dbHandle</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database handle.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">queryString</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid SQL query.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGEXEC-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">resultHandle</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
A Tcl error will be returned if <application>pgtcl</application> was unable to obtain a backend
|
|
response. Otherwise, a query result object is created and a handle for
|
|
it is returned. This handle can be passed to <FUNCTION>pg_result</FUNCTION>
|
|
to obtain the results of the query.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2></REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGEXEC-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA>
|
|
<FUNCTION>pg_exec</FUNCTION> submits a query to the <ProductName>PostgreSQL</ProductName> backend and returns a result.
|
|
|
|
Query result handles start with the connection handle and add a period
|
|
and a result number.
|
|
</Para>
|
|
|
|
<PARA>
|
|
Note that lack of a Tcl error is not proof that the query succeeded!
|
|
An error message returned by the backend will be processed
|
|
as a query result with failure status, not by generating a Tcl error
|
|
in pg_exec.
|
|
</PARA>
|
|
</REFSECT1>
|
|
</refentry>
|
|
|
|
<REFENTRY ID="PGTCL-PGRESULT">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_result</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Query Processing</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_result
|
|
</REFNAME>
|
|
<REFPURPOSE>
|
|
get information about a query result
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGRESULT-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>connecting</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGRESULT-2"><PRIMARY>pg_connect</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_result <REPLACEABLE CLASS="PARAMETER">resultHandle</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">resultOption</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
<REFSECT2 ID="R2-PGTCL-PGRESULT-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">resultHandle</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
The handle for a query result.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">resultOption</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
Specifies one of several possible options.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
|
|
<REFSECT3>
|
|
<TITLE>Options</TITLE>
|
|
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-status</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
the status of the result.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-error</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
the error message, if the status indicates error; otherwise an empty string.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-conn</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
the connection that produced the result.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-oid</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
if the command was an INSERT, the OID of the
|
|
inserted tuple; otherwise an empty string.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-numTuples</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
the number of tuples returned by the query.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-numAttrs</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
the number of attributes in each tuple.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-assign arrayName</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
assign the results to an array, using subscripts of the form
|
|
<literal>(tupno,attributeName)</literal>.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-assignbyidx arrayName ?appendstr?</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
assign the results to an array using the first attribute's value and
|
|
the remaining attributes' names as keys. If <parameter>appendstr</> is given then
|
|
it is appended to each key. In short, all but the first field of each
|
|
tuple are stored into the array, using subscripts of the form
|
|
<literal>(firstFieldValue,fieldNameAppendStr)</literal>.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-getTuple tupleNumber</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
returns the fields of the indicated tuple in a list. Tuple numbers
|
|
start at zero.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-tupleArray tupleNumber arrayName</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
stores the fields of the tuple in array <parameter>arrayName</parameter>, indexed by field names.
|
|
Tuple numbers start at zero.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-attributes</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
returns a list of the names of the tuple attributes.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-lAttributes</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
returns a list of sublists, <literal>{name ftype fsize}</literal> for each tuple attribute.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<option>-clear</option>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
clear the result query object.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT3>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGRESULT-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<PARA>
|
|
The result depends on the selected option, as described above.
|
|
</PARA>
|
|
</REFSECT2></REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGRESULT-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA>
|
|
<FUNCTION>pg_result</FUNCTION> returns information about a query result
|
|
created by a prior <FUNCTION>pg_exec</FUNCTION>.
|
|
</Para>
|
|
|
|
<para>
|
|
You can keep a query result around for as long as you need it, but when
|
|
you are done with it, be sure to free it by
|
|
executing <FUNCTION>pg_result -clear</FUNCTION>. Otherwise, you have
|
|
a memory leak, and <application>Pgtcl</> will eventually start complaining that you've
|
|
created too many query result objects.
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGSELECT">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_select</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Query Processing</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_select
|
|
</REFNAME>
|
|
<REFPURPOSE>
|
|
loop over the result of a SELECT statement
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGSELECT-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>connecting</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGSELECT-2"><PRIMARY>pg_connect</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_select <REPLACEABLE CLASS="PARAMETER">dbHandle</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">queryString</REPLACEABLE>
|
|
<REPLACEABLE CLASS="PARAMETER">arrayVar</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">queryProcedure</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGSELECT-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">dbHandle</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database handle.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">queryString</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid SQL select query.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">arrayVar</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Array variable for tuples returned.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">queryProcedure</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Procedure run on each tuple found.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGSELECT-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">resultHandle</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
the return result is either an error message or a handle for a query result.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2></REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGSELECT-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA>
|
|
<FUNCTION>pg_select</FUNCTION> submits a SELECT query to the
|
|
<ProductName>PostgreSQL</ProductName> backend, and executes a
|
|
given chunk of code for each tuple in the result.
|
|
The <REPLACEABLE CLASS="PARAMETER">queryString</REPLACEABLE>
|
|
must be a SELECT statement. Anything else returns an error.
|
|
The <REPLACEABLE CLASS="PARAMETER">arrayVar</REPLACEABLE>
|
|
variable is an array name used in the loop. For each tuple,
|
|
<REPLACEABLE CLASS="PARAMETER">arrayVar</REPLACEABLE> is filled in
|
|
with the tuple field values, using the field names as the array
|
|
indexes. Then the
|
|
<REPLACEABLE CLASS="PARAMETER">queryProcedure</REPLACEABLE>
|
|
is executed.
|
|
</PARA>
|
|
</REFSECT1>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGSELECT-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
This would work if table <classname>table</> has fields <structfield>control</> and <structfield>name</>
|
|
(and, perhaps, other fields):
|
|
<ProgramListing>
|
|
pg_select $pgconn "SELECT * FROM table" array {
|
|
puts [format "%5d %s" array(control) array(name)]
|
|
}
|
|
</ProgramListing>
|
|
</PARA>
|
|
</REFSECT1>
|
|
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLISTEN">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_listen</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Asynchronous Notify</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_listen
|
|
</REFNAME>
|
|
<REFPURPOSE>sets or changes a callback for asynchronous NOTIFY messages
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLISTEN-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>notify</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLISTEN-2"><PRIMARY>notify</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1998-5-22</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_listen <REPLACEABLE CLASS="PARAMETER">dbHandle</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">notifyName</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">callbackCommand</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLISTEN-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1998-5-22</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">dbHandle</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database handle.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">notifyName</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies the notify condition name to start or stop listening to.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">callbackCommand</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>If present and not empty, provides the command string to execute
|
|
when a matching notification arrives.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLISTEN-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1998-5-22</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
None
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLISTEN-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1998-5-22</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_listen</FUNCTION> creates, changes, or cancels a request
|
|
to listen for asynchronous NOTIFY messages from the
|
|
<ProductName>PostgreSQL</ProductName> backend. With a <parameter>callbackCommand</>
|
|
parameter, the request is established, or the command string of an already
|
|
existing request is replaced. With no <parameter>callbackCommand</> parameter, a prior
|
|
request is canceled.
|
|
</PARA>
|
|
|
|
<para>
|
|
After a <FUNCTION>pg_listen</FUNCTION> request is established,
|
|
the specified command string is executed whenever a NOTIFY message bearing
|
|
the given name arrives from the backend. This occurs when any
|
|
<ProductName>PostgreSQL</ProductName> client application issues a NOTIFY command
|
|
referencing that name. (Note that the name can be, but does not have to be,
|
|
that of an existing relation in the database.)
|
|
The command string is executed from the Tcl idle loop. That is the normal
|
|
idle state of an application written with Tk. In non-Tk Tcl shells, you can
|
|
execute <FUNCTION>update</FUNCTION> or <FUNCTION>vwait</FUNCTION> to cause
|
|
the idle loop to be entered.
|
|
</Para>
|
|
|
|
<para>
|
|
You should not invoke the SQL statements <command>LISTEN</command> or <command>UNLISTEN</command> directly when
|
|
using <FUNCTION>pg_listen</FUNCTION>. <application>Pgtcl</application> takes care of issuing those
|
|
statements for you. But if you want to send a NOTIFY message yourself,
|
|
invoke the SQL NOTIFY statement using <FUNCTION>pg_exec</FUNCTION>.
|
|
</PARA>
|
|
</REFSECT1>
|
|
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOCREAT">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_creat</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_creat
|
|
</REFNAME>
|
|
<REFPURPOSE>create a large object
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOCREAT-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>creating</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOCREAT-2"><PRIMARY>pg_lo_creat</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_creat <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">mode</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOCREAT-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">mode</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies the access mode for the large object</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOCREAT-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">objOid</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
The oid of the large object created.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOCREAT-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_creat</FUNCTION> creates an Inversion Large Object.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOCREAT-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
mode can be any OR'ing together of INV_READ and INV_WRITE.
|
|
The OR delimiter character is <literal>|</literal>.
|
|
<ProgramListing>
|
|
[pg_lo_creat $conn "INV_READ|INV_WRITE"]
|
|
</ProgramListing>
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOOPEN">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_open</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_open
|
|
</REFNAME>
|
|
<REFPURPOSE>open a large object
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOOPEN-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>opening</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOOPEN-2"><PRIMARY>pg_lo_open</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_open <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">objOid</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">mode</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOOPEN-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">objOid</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid large object oid.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">mode</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies the access mode for the large object</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOOPEN-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
A file descriptor for use in later pg_lo* routines.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOOPEN-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_open</FUNCTION> open an Inversion Large Object.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOOPEN-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
Mode can be either <literal>r</>, <literal>w</>, or <literal>rw</>.
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOCLOSE">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_close</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_close
|
|
</REFNAME>
|
|
<REFPURPOSE>close a large object
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOCLOSE-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>closing</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOCLOSE-2"><PRIMARY>pg_lo_close</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_close <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOCLOSE-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
A file descriptor for use in later pg_lo* routines.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOCLOSE-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<PARA>None</PARA>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOCLOSE-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_close</FUNCTION> closes an Inversion Large Object.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOCLOSE-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOREAD">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_read</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_read
|
|
</REFNAME>
|
|
<REFPURPOSE>read a large object
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOREAD-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>reading</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOREAD-2"><PRIMARY>pg_lo_read</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_read <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">bufVar</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">len</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOREAD-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
File descriptor for the large object from pg_lo_open.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">bufVar</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid buffer variable to contain the large object segment.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">len</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies the maximum allowable size of the large object segment.</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOREAD-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<PARA>None</PARA>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOREAD-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_read</FUNCTION> reads
|
|
at most <REPLACEABLE CLASS="PARAMETER">len</REPLACEABLE> bytes from a large object into a variable
|
|
named <REPLACEABLE CLASS="PARAMETER">bufVar</REPLACEABLE>.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOREAD-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
<REPLACEABLE CLASS="PARAMETER">bufVar</REPLACEABLE> must be a valid variable name.
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOWRITE">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_write</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_write
|
|
</REFNAME>
|
|
<REFPURPOSE>write a large object
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOWRITE-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>writing</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOWRITE-2"><PRIMARY>pg_lo_write</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_write <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">buf</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">len</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOWRITE-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
File descriptor for the large object from pg_lo_open.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">buf</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid string variable to write to the large object.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">len</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies the maximum size of the string to write.</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOWRITE-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<PARA>None</PARA>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOWRITE-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_write</FUNCTION> writes
|
|
at most <REPLACEABLE CLASS="PARAMETER">len</REPLACEABLE> bytes to a large object from a variable
|
|
<REPLACEABLE CLASS="PARAMETER">buf</REPLACEABLE>.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOWRITE-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
<REPLACEABLE CLASS="PARAMETER">buf</REPLACEABLE> must be
|
|
the actual string to write, not a variable name.
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOLSEEK">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_lseek</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_lseek
|
|
</REFNAME>
|
|
<REFPURPOSE>seek to a position in a large object
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOLSEEK-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>positioning</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOLSEEK-2"><PRIMARY>pg_lo_lseek</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_lseek <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">offset</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">whence</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOLSEEK-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
File descriptor for the large object from pg_lo_open.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">offset</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a zero-based offset in bytes.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">whence</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA> whence can be <literal>SEEK_CUR</>, <literal>SEEK_END</>, or <literal>SEEK_SET</> </PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOLSEEK-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<PARA>None</PARA>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOLSEEK-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_lseek</FUNCTION> positions
|
|
to <REPLACEABLE CLASS="PARAMETER">offset</REPLACEABLE> bytes from the beginning of the large object.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOLSEEK-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
<REPLACEABLE CLASS="PARAMETER">whence</REPLACEABLE>
|
|
can be <literal>SEEK_CUR</literal>, <literal>SEEK_END</>, or <literal>SEEK_SET</literal>.
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOTELL">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_tell</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_tell
|
|
</REFNAME>
|
|
<REFPURPOSE>return the current seek position of a large object
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOTELL-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>positioning</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOTELL-2"><PRIMARY>pg_lo_tell</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_tell <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOTELL-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">fd</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
File descriptor for the large object from pg_lo_open.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOTELL-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">offset</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>A zero-based offset in bytes suitable for input to <Function>pg_lo_lseek</Function>.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOTELL-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_tell</FUNCTION> returns the current
|
|
to <REPLACEABLE CLASS="PARAMETER">offset</REPLACEABLE> in bytes from the beginning of the large object.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOTELL-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOUNLINK">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_unlink</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_unlink
|
|
</REFNAME>
|
|
<REFPURPOSE>delete a large object
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOUNLINK-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>delete</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOUNLINK-2"><PRIMARY>pg_lo_unlink</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_unlink <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">lobjId</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOUNLINK-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">lobjId</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
Identifier for a large object.
|
|
<comment>
|
|
XXX Is this the same as <parameter>objOid</parameter> in other calls?? - thomas 1998-01-11
|
|
</comment>
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOUNLINK-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<PARA>
|
|
None
|
|
</PARA>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOUNLINK-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_unlink</FUNCTION> deletes the specified large object.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOUNLINK-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOIMPORT">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_import</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_import
|
|
</REFNAME>
|
|
<REFPURPOSE>import a large object from a Unix file
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOIMPORT-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>import</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOIMPORT-2"><PRIMARY>pg_lo_import</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_import <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">filename</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOIMPORT-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">filename</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
Unix file name.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOIMPORT-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<PARA>
|
|
None
|
|
<comment>
|
|
XXX Does this return a lobjId? Is that the same as the objOid in other calls? thomas - 1998-01-11
|
|
</comment>
|
|
</PARA>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOIMPORT-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_import</FUNCTION> reads the specified file and places the contents into a large object.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOIMPORT-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
<Function>pg_lo_import</Function> must be called within a BEGIN/END transaction block.
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
<!-- ********************************************************** -->
|
|
|
|
<REFENTRY ID="PGTCL-PGLOEXPORT">
|
|
<REFMETA>
|
|
<REFENTRYTITLE>pg_lo_export</REFENTRYTITLE>
|
|
<REFMISCINFO>PGTCL - Large Objects</REFMISCINFO>
|
|
</REFMETA>
|
|
<REFNAMEDIV>
|
|
<REFNAME>pg_lo_export
|
|
</REFNAME>
|
|
<REFPURPOSE>export a large object to a Unix file
|
|
</REFPURPOSE>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOEXPORT-1"><PRIMARY>pgtcl</PRIMARY><SECONDARY>export</SECONDARY></INDEXTERM>
|
|
<INDEXTERM ID="IX-PGTCL-PGLOEXPORT-2"><PRIMARY>pg_lo_export</PRIMARY></INDEXTERM>
|
|
</REFNAMEDIV>
|
|
<REFSYNOPSISDIV>
|
|
<REFSYNOPSISDIVINFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSYNOPSISDIVINFO>
|
|
<SYNOPSIS>
|
|
pg_lo_export <REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">lobjId</REPLACEABLE> <REPLACEABLE CLASS="PARAMETER">filename</REPLACEABLE>
|
|
</SYNOPSIS>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOEXPORT-1">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Inputs
|
|
</TITLE>
|
|
<VARIABLELIST>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">conn</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>Specifies a valid database connection.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">lobjId</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
Large object identifier.
|
|
<comment>
|
|
XXX Is this the same as the objOid in other calls?? thomas - 1998-01-11
|
|
</comment>
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
<VARLISTENTRY>
|
|
<TERM>
|
|
<REPLACEABLE CLASS="PARAMETER">filename</REPLACEABLE>
|
|
</TERM>
|
|
<LISTITEM>
|
|
<PARA>
|
|
Unix file name.
|
|
</PARA>
|
|
</LISTITEM>
|
|
</VARLISTENTRY>
|
|
</VARIABLELIST>
|
|
</REFSECT2>
|
|
|
|
<REFSECT2 ID="R2-PGTCL-PGLOEXPORT-2">
|
|
<REFSECT2INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT2INFO>
|
|
<TITLE>Outputs
|
|
</TITLE>
|
|
<PARA>
|
|
None
|
|
<comment>
|
|
XXX Does this return a lobjId? Is that the same as the objOid in other calls? thomas - 1998-01-11
|
|
</comment>
|
|
</PARA>
|
|
</REFSECT2>
|
|
</REFSYNOPSISDIV>
|
|
|
|
<REFSECT1 ID="R1-PGTCL-PGLOEXPORT-1">
|
|
<REFSECT1INFO>
|
|
<DATE>1997-12-24</DATE>
|
|
</REFSECT1INFO>
|
|
<TITLE>Description
|
|
</TITLE>
|
|
<PARA><FUNCTION>pg_lo_export</FUNCTION> writes the specified large object into a Unix file.
|
|
</PARA>
|
|
</REFSECT1>
|
|
<REFSECT1 ID="R1-PGTCL-PGLOEXPORT-2">
|
|
<TITLE>Usage
|
|
</TITLE>
|
|
<PARA>
|
|
<Function>pg_lo_export</Function> must be called within a BEGIN/END transaction block.
|
|
</PARA>
|
|
</REFSECT1>
|
|
</REFENTRY>
|
|
|
|
</Sect1>
|
|
</Chapter>
|