diff options
author | Bruce Momjian <bruce@momjian.us> | 2000-06-01 03:05:24 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2000-06-01 03:05:24 +0000 |
commit | 0cfe2374a76d9408b0271063a7fbbc1572cd3f6c (patch) | |
tree | 515d600c7907ef5ba707b80f880f9fbc570e4108 /src/interfaces/perl5/examples/example.oldstyle | |
parent | 726926a523906ab9d6a405a4239df090efd1d78c (diff) | |
download | postgresql-0cfe2374a76d9408b0271063a7fbbc1572cd3f6c.tar.gz postgresql-0cfe2374a76d9408b0271063a7fbbc1572cd3f6c.zip |
Rename perl example eg directory to examples.
Diffstat (limited to 'src/interfaces/perl5/examples/example.oldstyle')
-rw-r--r-- | src/interfaces/perl5/examples/example.oldstyle | 294 |
1 files changed, 294 insertions, 0 deletions
diff --git a/src/interfaces/perl5/examples/example.oldstyle b/src/interfaces/perl5/examples/example.oldstyle new file mode 100644 index 00000000000..5c63ef8d657 --- /dev/null +++ b/src/interfaces/perl5/examples/example.oldstyle @@ -0,0 +1,294 @@ +#!/usr/local/bin/perl + +# $Id: example.oldstyle,v 1.1 2000/06/01 03:05:24 momjian Exp $ + +######################### globals + +$| = 1; +use Pg; + +$dbmain = 'template1'; +$dbname = 'pgperltest'; +$trace = '/tmp/pgtrace.out'; +$DEBUG = 0; # set this to 1 for traces + +######################### the following functions will be tested + +# PQsetdb() +# PQdb() +# PQuser() +# PQport() +# PQstatus() +# PQfinish() +# PQerrorMessage() +# PQtrace() +# PQuntrace() +# PQexec() +# PQconsumeInput +# PQgetline() +# PQputline() +# PQendcopy() +# PQresultStatus() +# PQntuples() +# PQnfields() +# PQfname() +# PQfnumber() +# PQftype() +# PQfsize() +# PQcmdStatus() +# PQoidStatus() +# PQcmdTuples() +# PQgetvalue() +# PQclear() +# PQprint() +# PQnotifies() +# PQlo_import() +# PQlo_export() +# PQlo_unlink() + +######################### the following functions will not be tested + +# PQconnectdb() +# PQconndefaults() +# PQsetdbLogin() +# PQreset() +# PQrequestCancel() +# PQpass() +# PQhost() +# PQtty() +# PQoptions() +# PQsocket() +# PQbackendPID() +# PQsendQuery() +# PQgetResult() +# PQisBusy() +# PQgetlineAsync() +# PQputnbytes() +# PQmakeEmptyPGresult() +# PQfmod() +# PQgetlength() +# PQgetisnull() +# PQdisplayTuples() +# PQprintTuples() +# PQlo_open() +# PQlo_close() +# PQlo_read() +# PQlo_write() +# PQlo_creat() +# PQlo_lseek() +# PQlo_tell() + +######################### handles error condition + +$SIG{PIPE} = sub { print "broken pipe\n" }; + +######################### create and connect to test database + +$conn = PQsetdb('', '', '', '', $dbmain); +die PQerrorMessage($conn) unless PGRES_CONNECTION_OK eq PQstatus($conn); +print "connected to $dbmain\n"; + +# do not complain when dropping $dbname +$result = PQexec($conn, "DROP DATABASE $dbname"); +PQclear($result); + +$result = PQexec($conn, "CREATE DATABASE $dbname"); +die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); +print "created database $dbname\n"; +PQclear($result); + +PQfinish($conn); + +$conn = PQsetdb('', '', '', '', $dbname); +die PQerrorMessage($conn) unless PGRES_CONNECTION_OK eq PQstatus($conn); +print "connected to $dbname\n"; + +######################### debug, PQtrace + +if ($DEBUG) { + open(TRACE, ">$trace") || die "can not open $trace: $!"; + PQtrace($conn, TRACE); + print "enabled tracing into $trace\n"; +} + +######################### check PGconn + +$db = PQdb($conn); +print " database: $db\n"; + +$user = PQuser($conn); +print " user: $user\n"; + +$port = PQport($conn); +print " port: $port\n"; + +######################### create and insert into table + +$result = PQexec($conn, "CREATE TABLE person (id int4, name char(16))"); +die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); +print "created table, status = ", PQcmdStatus($result), "\n"; +PQclear($result); + +for ($i = 1; $i <= 5; $i++) { + $result = PQexec($conn, "INSERT INTO person VALUES ($i, 'Edmund Mergl')"); + die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); + PQclear($result); +} +print "insert into table, last oid = ", PQoidStatus($result), "\n"; + +######################### copy to stdout, PQgetline + +$result = PQexec($conn, "COPY person TO STDOUT"); +die PQerrorMessage($conn) unless PGRES_COPY_OUT eq PQresultStatus($result); +print "copy table to STDOUT:\n"; +PQclear($result); + +$ret = 0; +$i = 1; +while (-1 != $ret) { + $ret = PQgetline($conn, $string, 256); + last if $string eq "\\."; + print " ", $string, "\n"; + $i++; +} + +die PQerrorMessage($conn) unless 0 == PQendcopy($conn); + +######################### delete and copy from stdin, PQputline + +$result = PQexec($conn, "BEGIN"); +die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); +PQclear($result); + +$result = PQexec($conn, "DELETE FROM person"); +die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); +print "delete from table, command status = ", PQcmdStatus($result), ", no. of tuples = ", PQcmdTuples($result), "\n"; +PQclear($result); + +$result = PQexec($conn, "COPY person FROM STDIN"); +die PQerrorMessage($conn) unless PGRES_COPY_IN eq PQresultStatus($result); +print "copy table from STDIN:\n"; +PQclear($result); + +for ($i = 1; $i <= 5; $i++) { + # watch the tabs and do not forget the newlines + PQputline($conn, "$i Edmund Mergl\n"); +} +PQputline($conn, "\\.\n"); + +die PQerrorMessage($conn) unless 0 == PQendcopy($conn); + +$result = PQexec($conn, "END"); +die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); +PQclear($result); + +######################### select from person, PQgetvalue + +$result = PQexec($conn, "SELECT * FROM person"); +die PQerrorMessage($conn) unless PGRES_TUPLES_OK eq PQresultStatus($result); +print "select from table:\n"; + +for ($k = 0; $k < PQnfields($result); $k++) { + print " field = ", $k, "\tfname = ", PQfname($result, $k), "\tftype = ", PQftype($result, $k), "\tfsize = ", PQfsize($result, $k), "\tfnumber = ", PQfnumber($result, PQfname($result, $k)), "\n"; +} + +for ($k = 0; $k < PQntuples($result); $k++) { + for ($l = 0; $l < PQnfields($result); $l++) { + print " ", PQgetvalue($result, $k, $l); + } + print "\n"; +} + +PQclear($result); + +######################### PQnotifies + +if (! defined($pid = fork)) { + die "can not fork: $!"; +} elsif (! $pid) { + # I'm the child + sleep 2; + $conn = PQsetdb('', '', '', '', $dbname); + $result = PQexec($conn, "NOTIFY person"); + PQclear($result); + PQfinish($conn); + exit; +} + +$result = PQexec($conn, "LISTEN person"); +die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); +print "listen table: status = ", PQcmdStatus($result), "\n"; +PQclear($result); + +while (1) { + PQconsumeInput($conn); + ($table, $pid) = PQnotifies($conn); + last if $pid; +} +print "got notification: table = ", $table, " pid = ", $pid, "\n"; + +######################### PQprint + +$result = PQexec($conn, "SELECT * FROM person"); +die PQerrorMessage($conn) unless PGRES_TUPLES_OK eq PQresultStatus($result); +print "select from table and print:\n"; +PQprint(STDOUT, $result, 0, 0, 0, 0, 0, 0, " ", "", "", ""); +PQclear($result); + +######################### PQlo_import, PQlo_export, PQlo_unlink + +$lobject_in = '/tmp/gaga.in'; +$lobject_out = '/tmp/gaga.out'; + +$data = "testing large objects using lo_import and lo_export"; +open(FD, ">$lobject_in") or die "can not open $lobject_in"; +print(FD $data); +close(FD); + +$result = PQexec($conn, "BEGIN"); +die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); +PQclear($result); + +$lobjOid = PQlo_import($conn, "$lobject_in") or die PQerrorMessage($conn); +print "importing file as large object, Oid = ", $lobjOid, "\n"; + +die PQerrorMessage($conn) unless 1 == PQlo_export($conn, $lobjOid, "$lobject_out"); +print "exporting large object as temporary file\n"; + +$result = PQexec($conn, "END"); +die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); +PQclear($result); + +print "comparing imported file with exported file: "; +print "not " unless (-s "$lobject_in" == -s "$lobject_out"); +print "ok\n"; + +die PQerrorMessage($conn) if -1 == PQlo_unlink($conn, $lobjOid); +unlink $lobject_in; +unlink $lobject_out; +print "unlink large object\n"; + +######################### debug, PQuntrace + +if ($DEBUG) { + close(TRACE) || die "bad TRACE: $!"; + PQuntrace($conn); + print "tracing disabled\n"; +} + +######################### disconnect and drop test database + +PQfinish($conn); + +$conn = PQsetdb('', '', '', '', $dbmain); +die PQerrorMessage($conn) unless PGRES_CONNECTION_OK eq PQstatus($conn); +print "connected to $dbmain\n"; + +$result = PQexec($conn, "DROP DATABASE $dbname"); +die PQerrorMessage($conn) unless PGRES_COMMAND_OK eq PQresultStatus($result); +print "drop database\n"; +PQclear($result); + +PQfinish($conn); + +######################### EOF |