+++ /dev/null
-
-
-
-
pgtcl - Tcl Binding Library
-
-
-
-
-
-
-
-
-
-
-
pgtcl is a Tcl package for client
- programs to interface with
PostgreSQL
- servers. It makes most of the functionality of
-
libpq available to Tcl scripts.
-
-
-
-
Overview
-
- gives an overview over the
- commands available in
pgtcl. These
- commands are described further on subsequent pages.
-
-
-
-
-
-
- |
- Command
- Description
-
-
-
-
- |
- pg_connect
- open a connection to the server
-
- |
- pg_disconnect
- close a connection to the server
-
- |
- pg_conndefaults
- get connection options and their defaults
-
- |
- pg_exec
- send a command to the server
-
- |
- pg_result
- get information about a command result
-
- |
- pg_select
- loop over the result of a query
-
- |
- pg_execute
- send a query and optionally loop over the results
-
- |
- pg_listen
- set or change a callback for asynchronous notification messages
-
- |
- pg_on_connection_loss
- set or change a callback for unexpected connection loss
-
-
- |
- pg_lo_creat
- create a large object
-
- |
- pg_lo_open
- open a large object
-
- |
- pg_lo_close
- close a large object
-
- |
- pg_lo_read
- read from a large object
-
- |
- pg_lo_write
- write to a large object
-
- |
- pg_lo_lseek
- seek to a position in a large object
-
- |
- pg_lo_tell
- return the current seek position of a large object
-
- |
- pg_lo_unlink
- delete a large object
-
- |
- pg_lo_import
- import a large object from a file
-
- |
- pg_lo_export
- export a large object to a file
-
-
-
-
-
- The pg_lo_* commands are interfaces to the
- large object features of
- object>in pgctl>> The functions are designed to mimic the analogous file
- system functions in the standard Unix file system interface. The
- pg_lo_* commands should be used within a
- BEGIN/COMMIT transaction
- block because the 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/COMMIT transaction
- block.
-
-
-
-
-
-
Loading pgtcl into an Application
-
- Before using
pgtcl commands, you must load
- the libpgtcl> library into your Tcl application. This is normally
- done with the Tcl load> command. Here is an example:
-
-load libpgtcl[info sharedlibextension]
-
-
- The use of info sharedlibextension> is recommended in
- preference to hard-wiring .so> or .sl> into
- the program.
-
-
- The load> command will fail unless the system's dynamic
- loader knows where to look for the libpgtcl> shared
- library file. You may need to work with ldconfig>, or
- set the environment variable LD_LIBRARY_PATH>, or use
- some equivalent facility for your platform to make it work. Refer
- to the
PostgreSQL> installation instructions for
- more information.
-
-
- libpgtcl> in turn depends on libpq>, so the
- dynamic loader must also be able to find the libpq> shared
- library. In practice this is seldom an issue, since both of these
- shared libraries are normally stored in the same directory, but it
- can be a stumbling block in some configurations.
-
-
- If you use a custom executable for your application, you might choose
- to statically bind libpgtcl> into the executable and thereby
- avoid the load> command and the potential problems of dynamic
- linking. See the source code for
pgtclsh> for an example.
-
-
-
-
-
-
-
-
- pg_connect
-
-
-
- pg_connect
- open a connection to the server
-
-
-
-
-pg_connect -conninfo
connectOptions
-pg_connect
dbName -host hostName -port portNumber -tty tty -options serverOptions
-
-
-
-
-
Description
-
- pg_connect opens a connection to the
-
-
- Two syntaxes are available. In the older one, each possible option
- has a separate option switch in the pg_connect
- command. In the newer form, a single option string is supplied
- that can contain multiple option values.
- pg_conndefaults can be used to retrieve
- information about the available options in the newer syntax.
-
-
-
-
-
Arguments
-
-
-
New style
-
-
-
- A string of connection options, each written in the form
- keyword = value>. A list of valid options can be
- found in the description of the
libpq> function
- PQconnectdb>.
-
-
-
-
-
-
-
Old style
-
-
-
- The name of the database to connect to.
-
-
-
-
-
-
- The host name of the database server to connect to.
-
-
-
-
-
-
- The TCP port number of the database server to connect to.
-
-
-
-
-
-
- A file or
TTY for optional debug output from
- the server.
-
-
-
-
-
-
- Additional configuration options to pass to the server.
-
-
-
-
-
-
-
-
Return Value
-
- If successful, a handle for a database connection is returned.
- Handles start with the prefix pgsql.
-
-
-
-
-
-
-
- pg_disconnect
-
-
-
- pg_disconnect
- close a connection to the server
-
-
-
-
-
-
-
-
-
Description
-
- pg_disconnect closes a connection to the
-
-
-
-
-
Arguments
-
-
-
-
- The handle of the connection to be closed.
-
-
-
-
-
-
-
-
Return Value
-
- None
-
-
-
-
-
-
-
- pg_conndefaults
-
-
-
- pg_conndefaults
- get connection options and their defaults
-
-
-
-
-pg_conndefaults
-
-
-
-
-
Description
-
- pg_conndefaults returns information about the
- connection options available in pg_connect
- -conninfo and the current default value for each option.
-
-
-
-
-
Arguments
-
- None
-
-
-
-
-
Return Value
-
- 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:
-
-{optname label dispchar dispsize value}
-
- where the optname> is usable as an option in
- pg_connect -conninfo.
-
-
-
-
-
-
-
- pg_exec
-
-
-
- pg_exec
- send a command to the server
-
-
-
-
-pg_exec
conn commandString
-
-
-
-
-
Description
-
- pg_exec submits a command to the
-
PostgreSQL server and returns a result.
- Command result handles start with the connection handle and add a
- period and a result number.
-
-
- Note that lack of a Tcl error is not proof that the command
- succeeded! An error message returned by the server will be
- processed as a command result with failure status, not by
- generating a Tcl error in pg_exec.
-
-
-
-
-
Arguments
-
-
-
-
- The handle of the connection on which to execute the command.
-
-
-
-
-
-
- The SQL command to execute.
-
-
-
-
-
-
-
-
Return Value
-
- A result handle. A Tcl error will be returned if
-
pgtcl was unable to obtain a server
- response. Otherwise, a command result object is created and a
- handle for it is returned. This handle can be passed to
- pg_result to obtain the results of the
- command.
-
-
-
-
-
-
-
- pg_result
-
-
-
- pg_result
- get information about a command result
-
-
-
-
-pg_result
resultHandle resultOption
-
-
-
-
-
Description
-
- pg_result returns information about a command
- result created by a prior pg_exec.
-
-
- You can keep a command result around for as long as you need it,
- but when you are done with it, be sure to free it by executing
- pg_result -clear. Otherwise, you have a
- memory leak, and
pgtcl> will eventually start
- complaining that you have created too many command result objects.
-
-
-
-
-
Arguments
-
-
-
-
- The handle of the command result.
-
-
-
-
-
-
- One of the following options, specifying which piece of result
- information to return:
-
-
-
-
-
- The status of the result.
-
-
-
-
-
-
-
- The error message, if the status indicates an error,
- otherwise an empty string.
-
-
-
-
-
-
-
- The connection that produced the result.
-
-
-
-
-
-
-
- If the command was an INSERT, the OID of
- the inserted row, otherwise 0.
-
-
-
-
-
-
-
- The number of rows (tuples) returned by the query.
-
-
-
-
-
-
-
- The number of rows (tuples) affected by the command.
-
-
-
-
-
-
-
- The number of columns (attributes) in each row.
-
-
-
-
-
-
- Assign the results to an array, using subscripts of the form
- (rowNumber, columnName).
-
-
-
-
-
-
-
- Assign the results to an array using the values of the
- first column and the names of the remaining column as keys.
- If
appendstr> is given then it is appended to
- each key. In short, all but the first column of each row
- are stored into the array, using subscripts of the form
- (firstColumnValue, columnNameAppendStr).
-
-
-
-
-
-
- Returns the columns of the indicated row in a list. Row
- numbers start at zero.
-
-
-
-
-
-
-
- Stores the columns of the row in array
-
arrayName, indexed by column names.
- Row numbers start at zero.
-
-
-
-
-
-
-
- Returns a list of the names of the columns in the result.
-
-
-
-
-
-
-
- Returns a list of sublists, {name typeOid
- typeSize} for each column.
-
-
-
-
-
-
-
- Clear the command result object.
-
-
-
-
-
-
-
-
-
-
-
-
Return Value
-
- The result depends on the selected option, as described above.
-
-
-
-
-
-
-
- pg_select
-
-
-
- pg_select
- loop over the result of a query
-
-
-
-
-pg_select
conn commandString arrayVar procedure
-
-
-
-
-
Description
-
- pg_select submits a query
- (SELECT statement) to the
-
PostgreSQL server and executes a given
- chunk of code for each row in the result. The
-
commandString must be a
- SELECT statement; anything else returns an
- error. The
arrayVar variable is an array
- name used in the loop. For each row,
-
arrayVar is filled in with the row values,
- using the column names as the array indices. Then the
-
-
- In addition to the column values, the following special entries are
- made in the array:
-
-
-
- .headers>
-
- A list of the column names returned by the query.
-
-
-
-
-
- .numcols>
-
- The number of columns returned by the query.
-
-
-
-
-
- .tupno>
-
- The current row number, starting at zero and incrementing for
- each iteration of the loop body.
-
-
-
-
-
-
-
-
-
Arguments
-
-
-
-
- The handle of the connection on which to execute the query.
-
-
-
-
-
-
- The SQL query to execute.
-
-
-
-
-
-
- An array variable for returned rows.
-
-
-
-
-
-
- The procedure to run for each returned row.
-
-
-
-
-
-
-
-
Return Value
- None
-
-
-
-
-
Examples
-
- This examples assumes that the table table1> has
- columns control> and name> (and
- perhaps others):
-pg_select $pgconn "SELECT * FROM table1;" array {
- puts [format "%5d %s" $array(control) $array(name)]
-}
-
-
-
-
-
-
-
-
- pg_execute
-
-
-
- pg_execute
- send a query and optionally loop over the results
-
-
-
-
-pg_execute
-array arrayVar -oid oidVar conn commandString procedure
-
-
-
-
-
Description
-
- pg_execute submits a command to the
-
-
- If the command is not a SELECT statement, the
- number of rows affected by the command is returned. If the command
- is an INSERT statement and a single row is
- inserted, the OID of the inserted row is stored in the variable
-
oidVar> if the optional -oid
- argument is supplied.
-
-
- If the command is a SELECT statement, then, for
- each row in the result, the row values are stored in the
-
arrayVar variable, if supplied, using the
- column names as the array indices, else in variables named by the
- column names, and then the optional
-
procedure is executed if supplied.
- (Omitting the
procedure probably makes sense
- only if the query will return a single row.) The number of rows
- selected is returned.
-
-
- The
procedure can use the Tcl commands
- break, continue, and
- return with the expected behavior. Note that if
- return, then pg_execute
- does not return the number of affected rows.
-
-
- pg_execute is a newer function which provides
- a superset of the features of pg_select and
- can replace pg_exec in many cases where access
- to the result handle is not needed.
-
-
- For server-handled errors, pg_execute will
- throw a Tcl error and return a two-element list. The first element
- is an error code, such as PGRES_FATAL_ERROR, and
- the second element is the server error text. For more serious
- errors, such as failure to communicate with the server,
- pg_execute will throw a Tcl error and return
- just the error message text.
-
-
-
-
-
Arguments
-
-
-
-
- Specifies the name of an array variable where result rows are
- stored, indexed by the column names. This is ignored if
-
commandString> is not a SELECT>
- statement.
-
-
-
-
-
-
- Specifies the name of a variable into which the OID from an
- INSERT statement will be stored.
-
-
-
-
-
-
- The handle of the connection on which to execute the command.
-
-
-
-
-
-
- The SQL command to execute.
-
-
-
-
-
-
- Optional procedure to execute for each result row of a
- SELECT statement.
-
-
-
-
-
-
-
-
Return Value
-
- The number of rows affected or returned by the command.
-
-
-
-
-
Examples
-
- In the following examples, error checking with
- catch has been omitted for clarity.
-
-
- Insert a row and save the OID in result_oid>:
-pg_execute -oid result_oid $pgconn "INSERT INTO mytable VALUES (1);"
-
-
-
- Print the columns item> and value> from each
- row:
-pg_execute -array d $pgconn "SELECT item, value FROM mytable;" {
- puts "Item=$d(item) Value=$d(value)"
-}
-
-
-
- Find the maximum and minimum values and store them in
- $s(max)> and $s(min)>:
-pg_execute -array s $pgconn "SELECT max(value) AS max, min(value) AS min FROM mytable;"
-
-
-
- Find the maximum and minimum values and store them in
- $max> and $min>:
-pg_execute $pgconn "SELECT max(value) AS max, min(value) AS min FROM mytable;"
-
-
-
-
-
-
-
-
- pg_listen
-
-
-
- pg_listen
- set or change a callback for asynchronous notification messages
-
-
-
-
-pg_listen
conn notifyName callbackCommand
-
-
-
-
-
Description
-
- pg_listen creates, changes, or cancels a
- request to listen for asynchronous notification messages from the
-
PostgreSQL server. With a
-
callbackCommand> parameter, the request is
- established, or the command string of an already existing request
- is replaced. With no
callbackCommand> parameter, a
- prior request is canceled.
-
-
- After a pg_listen request is established, the
- specified command string is executed whenever a notification
- message bearing the given name arrives from the server. This
- occurs when any
PostgreSQL client
- application issues a
-
NOTIFYNOTIFY>
- sortas="pgtcl">in pgtcl>> command referencing that name. 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 update or
- vwait to cause the idle loop to be entered.
-
-
- You should not invoke the SQL statements LISTEN
- or UNLISTEN directly when using
- takes care of issuing those statements for you. But if you want to
- send a notification message yourself, invoke the SQL
- NOTIFY statement using
- pg_exec.
-
-
-
-
-
Arguments
-
-
-
-
- The handle of the connection on which to listen for notifications.
-
-
-
-
-
-
- The name of the notification condition to start or stop
- listening to.
-
-
-
-
-
-
- If present, provides the command string to execute when a
- matching notification arrives.
-
-
-
-
-
-
-
-
Return Value
-
- None
-
-
-
-
-
-
-
- pg_on_connection_loss
-
-
-
- pg_on_connection_loss
- set or change a callback for unexpected connection loss
-
-
-
-
-pg_on_connection_loss
conn callbackCommand
-
-
-
-
-
Description
-
- pg_on_connection_loss creates, changes, or
- cancels a request to execute a callback command if an unexpected
- loss of connection to the database occurs. With a
-
callbackCommand> parameter, the request is
- established, or the command string of an already existing request
- is replaced. With no
callbackCommand> parameter, a
- prior request is canceled.
-
-
- The callback 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 update
- or vwait to cause the idle loop to be entered.
-
-
-
-
-
Arguments
-
-
-
-
- The handle to watch for connection losses.
-
-
-
-
-
-
- If present, provides the command string to execute when
- connection loss is detected.
-
-
-
-
-
-
-
-
Return Value
-
- None
-
-
-
-
-
-
-
- pg_lo_creat
-
-
-
- pg_lo_creat
- create a large object
-
-
-
-
-
-
-
-
-
Description
-
- pg_lo_creat creates a large object.
-
-
-
-
-
Arguments
-
-
-
-
- The handle of a connection to the database in which to create the large
- object.
-
-
-
-
-
-
- The access mode for the large object. It can be any or'ing
- together of INV_READ> and INV_WRITE>. The
- or
operator is |. For
- example:
-[pg_lo_creat $conn "INV_READ|INV_WRITE"]
-
-
-
-
-
-
-
-
-
Return Value
-
- The OID of the large object created.
-
-
-
-
-
-
-
- pg_lo_open
-
-
-
- pg_lo_open
- open a large object
-
-
-
-
-pg_lo_open
conn loid mode
-
-
-
-
-
Description
-
- pg_lo_open opens a large object.
-
-
-
-
-
Arguments
-
-
-
-
-
- The handle of a connection to the database in which the large object
- exists.
-
-
-
-
-
-
- The OID of the large object.
-
-
-
-
-
-
- Specifies the access mode for the large object. Mode can be
- either r>, w>, or rw>.
-
-
-
-
-
-
-
-
Return Value
-
- A descriptor for use in later large-object commands.
-
-
-
-
-
-
-
- pg_lo_close
-
-
-
- pg_lo_close
- close a large object
-
-
-
-
-pg_lo_close
conn descriptor
-
-
-
-
-
Description
-
- pg_lo_close closes a large object.
-
-
-
-
-
Arguments
-
-
-
-
- The handle of a connection to the database in which the large object
- exists.
-
-
-
-
-
-
- A descriptor for the large object from
- pg_lo_open.
-
-
-
-
-
-
-
-
Return Value
-
- None
-
-
-
-
-
-
-
- pg_lo_read
-
-
-
- pg_lo_read
- read from a large object
-
-
-
-
-pg_lo_read
conn descriptor bufVar len
-
-
-
-
-
Description
-
- pg_lo_read reads at most
-
len bytes from a large object into a
-
-
-
-
-
Arguments
-
-
-
-
- The handle of a connection to the database in which the large object
- exists.
-
-
-
-
-
-
- A descriptor for the large object from
- pg_lo_open.
-
-
-
-
-
-
- The name of a buffer variable to contain the large object
- segment.
-
-
-
-
-
-
- The maximum number of bytes to read.
-
-
-
-
-
-
-
-
Return Value
-
- The number of bytes actually read is returned; this could be less than
- the number requested if the end of the large object is reached first.
- In event of an error, the return value is negative.
-
-
-
-
-
-
-
- pg_lo_write
-
-
-
- pg_lo_write
- write to a large object
-
-
-
-
-pg_lo_write
conn descriptor buf len
-
-
-
-
-
Description
-
- pg_lo_write writes at most
-
len bytes from a variable
-
-
-
-
-
Arguments
-
-
-
-
- The handle of a connection to the database in which the large object
- exists.
-
-
-
-
-
-
- A descriptor for the large object from
- pg_lo_open.
-
-
-
-
-
-
- The string to write to the large object (not a variable name,
- but the value itself).
-
-
-
-
-
-
- The maximum number of bytes to write. The number written will
- be the smaller of this value and the length of the string.
-
-
-
-
-
-
-
-
Return Value
-
- The number of bytes actually written is returned; this will ordinarily
- be the same as the number requested.
- In event of an error, the return value is negative.
-
-
-
-
-
-
-
- pg_lo_lseek
-
-
-
- pg_lo_lseek
- seek to a position of a large object
-
-
-
-
-pg_lo_lseek
conn descriptor offset whence
-
-
-
-
-
Description
-
- pg_lo_lseek moves the current read/write
- position to
offset bytes from the position
-
-
-
-
-
Arguments
-
-
-
-
- The handle of a connection to the database in which the large object
- exists.
-
-
-
-
-
-
- A descriptor for the large object from
- pg_lo_open.
-
-
-
-
-
-
- The new seek position in bytes.
-
-
-
-
-
-
- Specified from where to calculate the new seek position:
- SEEK_CUR> (from current position),
- SEEK_END> (from end), or SEEK_SET> (from
- start).
-
-
-
-
-
-
-
-
Return Value
-
- None
-
-
-
-
-
-
-
- pg_lo_tell
-
-
-
- pg_lo_tell
- return the current seek position of a large object
-
-
-
-
-pg_lo_tell
conn descriptor
-
-
-
-
-
Description
-
- pg_lo_tell returns the current read/write
- position in bytes from the beginning of the large object.
-
-
-
-
-
Arguments
-
-
-
-
-
- The handle of a connection to the database in which the large object
- exists.
-
-
-
-
-
-
- A descriptor for the large object from
- pg_lo_open.
-
-
-
-
-
-
-
-
Return Value
-
- A zero-based offset in bytes suitable for input to
- pg_lo_lseek.
-
-
-
-
-
-
-
- pg_lo_unlink
-
-
-
- pg_lo_unlink
- delete a large object
-
-
-
-
-
-
-
-
-
Description
-
- pg_lo_unlink deletes the specified large
- object.
-
-
-
-
-
Arguments
-
-
-
-
- The handle of a connection to the database in which the large object
- exists.
-
-
-
-
-
-
- The OID of the large object.
-
-
-
-
-
-
-
-
Return Value
-
- None
-
-
-
-
-
-
-
- pg_lo_import
-
-
-
- pg_lo_import
- import a large object from a file
-
-
-
-
-pg_lo_import
conn filename
-
-
-
-
-
Description
-
- pg_lo_import reads the specified file and
- places the contents into a new large object.
-
-
-
-
-
Arguments
-
-
-
-
- The handle of a connection to the database in which to create the large
- object.
-
-
-
-
-
-
- Specified the file from which to import the data.
-
-
-
-
-
-
-
-
Return Value
-
- The OID of the large object created.
-
-
-
-
-
Notes
-
- pg_lo_import must be called within a
- BEGIN>/COMMIT> transaction block.
-
-
-
-
-
-
-
- pg_lo_export
-
-
-
- pg_lo_export
- export a large object to a file
-
-
-
-
-pg_lo_export
conn loid filename
-
-
-
-
-
Description
-
- pg_lo_export writes the specified large object
- into a file.
-
-
-
-
-
Arguments
-
-
-
-
- The handle of a connection to the database in which the large object
- exists.
-
-
-
-
-
-
- The OID of the large object.
-
-
-
-
-
-
- Specifies the file into which the data is to be exported.
-
-
-
-
-
-
-
-
Return Value
- None
-
-
-
-
-
Notes
-
- pg_lo_export must be called within a
- BEGIN>/COMMIT> transaction block.
-
-
-
-
-
-
-
-
-
Example Program
-
- shows a small example of how to use
-
-
-
-
-# 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
-}
-
-
-
-
-
PostgreSQL backend server and to receive the
results of these queries.
libpq is also the
underlying engine for several other
PostgreSQL
- application interfaces, including
libpq++ (C++),
-
libpgtcl (Tcl),
Perl, and
+ application interfaces, including those written for C++, TCL, Perl, Python
ECPG. So some aspects of
libpq>'s behavior will be
important to you if you use one of those packages.
&libpq;
&lobj;
- &libpgtcl;
&ecpg;
&infoschema;
+++ /dev/null
-
-
-
-
- pgtksh
- 1
- Application
-
-
-
- pgtksh
-
-
PostgreSQL Tcl/Tk shell client
-
-
-
-
-
-
-
-
- pgtksh
-
-
-
-
-
- Description
-
-
- shell interface extended with
PostgreSQL
- database access functions. (Essentially, it is
- wish with libpgtcl loaded.)
- Like with wish, the regular
-
Tcl/Tk shell, the first command line
- argument is a script file, any remaining arguments are passed to
- the script. Special options may be processed by the
-
X Window System libraries instead.
- If no script file is named, the shell is interactive.
-
-
-
PostgreSQL functions is available as
- linkend="app-pgtclsh">.
-
-
-
-
-
See Also
-
-
-
-
- (description of libpgtcl)
-
-
- tclsh 1
-
-
- wish 1
-
-
-
-
-
-
-