- 0.37 | 2008-05-24
- Configuration change: search $prefix for PostgreSQL headers/libs
- Change to pg-get-connection
This proc now returns #f if its arg's connection is no longer live.
You should probably avoid it altogether; see following NEWS item.
- Planned modesty
Currently, Guile-PG exposes some accounting (implementation) details
that it shouldn't. These are the "serial number" of connection and
result objects, and the link between a result object the connection
object where it originated. These details WILL BE REMOVED after
2008-10-01; do NOT rely on them. Practically speaking, this means
`pg-get-connection' will be deleted and the external representation
for the objects will drop the "N" field:
until 2008-10-01: #<PG-CONN:N:...> and #<PG-RESULT:N:...>
after 2008-10-01: #<PG-CONN:...> and #<PG-RESULT:...>
- Tests issue SQL commands directly to CREATE and DROP the test database
Previously "make check" required the commands createdb(1) and
dropdb(1) (or destroydb(1) for older PostgreSQL versions) to be
installed on the system. Now, the test infrastructure uses Guile-PG
module (database postgres) to connect to "template1" and issues SQL
commands "CREATE DATABASE" and "DROP DATABASE" directly.
- New (database postgres-meta) proc: information-schema-names
- New (database postgres-meta) proc: information-schema-coldefs
These procs describe Guile-PG's "standard introspection" support,
as specified in the PostgreSQL 7.4.19 documentation (chapter 32,
"The Information Schema").
Additionally, loading the module defines type converters for
`cardinal_number', `character_data' and `sql_identifier'. The
`time_stamp' type converter does not seem to be used and is not
provided.
- New pgtable-manager (and -worker) command: #:finish
This closes the (internal) connection and arranges for all future
invocations of the closure to signal a "dead connection" error.
- Proc `gxrepl' closes connection when done
- New support for #:FOO-all combiners in `parse+make-SELECT-tree'
This (database postgres-qcons) proc now supports #:union-all,
#:intersect-all and #:except-all, as combiners.
- Maintenance uses autoconf 2.62, automake 1.10.1, libtool 2.2.2
- 0.35 | 2008-02-13
- Bugfix: composition INTERSECT in `parse+make-SELECT-tree'
This proc, in module (database postgres-qcons), used to
erroneously accept #:intersection and emit "INTERSECTION".
Now, it accepts #:intersect and emits "INTERSECT".
- New (database postgres) procs
- pg-escape-string-conn
- pg-escape-bytea-conn
- pg-unescape-bytea
- Tested against PostgreSQL 7.4.19
Highlights from NEWS:
- 0.34 | 2007-12-13
- License now GPLv3+ (see COPYING)
- New (database postgres) procs
- pg-finish
- pg-flush
- Tested against PostgreSQL 7.4.18
- 0.33 | 2007-05-20
- New type converters in module (database postgres-types)
int decimal numeric varchar character bytea
- New support for special constructs in (database postgres-qcons)
(in/set A B...) => A IN ( B, ... )
(between A B C) => ( A BETWEEN B AND C )
(any--OP A B) => ( A OP ANY B )
(all--OP A B) => ( A OP ALL B )
For the latter two, OP is a comparison operator, e.g `='.
Parentheses and commas are added automatically.
- 0.32 | 2007-04-11
- New command for `pgtable-manager': #:tuples-result->rows
This uses `(database postgres-resx) result->object-rows'.
For example:
(define T (pgtable-worker ...))
(define R (T #:select ...))
(equal? (T #:tuples-result->rows R)
(map (lambda (x)
(map cdr x))
(T #:tuples-result->alists R)))
=> #t
- 0.31 | 2007-04-03
- Opaque string support removed
Opaque string support in modules (database postgres-table) and
(database postgres-qcons) has been removed. This was announced
in NEWS below for Guile-PG 0.30 (2006-04-04).
- Support for `pgtable-manager' "data commands" removed
Announced in NEWS below for Guile-PG 0.30 (2006-04-04).
- 0.30 | 2006-04-04
- New stuff for `pgtable-manager' (and by extension `pgtable-worker')
- Support for NULL
You can now use the keyword #:NULL to specify NULL as the value
to insert into a table, or to update a column.
- New command: #:update-col-alist
This is like #:update-col, except that the COLS and DATA are
specified as a single alist arg, not separately.
- New (database postgres) procs
The following procs are associated with the `PQPROTOCOLVERSION'
feature in the `pg-guile-pg-loaded' return value. Note that
this is in contrast to the one-to-one correspondance between
feature and libpq function for previous Guile-PG releases.
- pg-protocol-version
- pg-transaction-status
- pg-parameter-status
- pg-set-error-verbosity
- pg-result-error-field
- pg-ftable
- pg-ftablecol
- pg-fformat
These adhere closely to the C functions in the libpq interface.
Here is a table listing the functions and their behavior for
installations prior to PostgreSQL 7.4.
libpq func behavior: do nothing and return
PQprotocolVersion 2
PQtransactionStatus #:unknown
PQparameterStatus #f
PQsetErrorVerbosity #:default
PQresultErrorField #f
PQftable #f
PQftablecol #f
PQfformat #f
- pg-put-copy-data
- pg-put-copy-end
- pg-get-copy-data
These have a simplified, "more Schemey", interface. They cannot
be used when connected to a "Protocol 2.0" (PostgreSQL 7.3.x and
prior) server.
- pg-exec-params
- pg-exec-prepared
- pg-send-query-params
- pg-send-query-prepared
These have a simplified, "more Schemey", interface, and some
serious (though provisionary) restrictions. They cannot be used
when connected to a "Protocol 2.0" (PostgreSQL 7.3.x and prior)
server. See new section "Parameters" in the manual for details.
- 0.29 | 2005-08-25
- Dropped proc: where-clausifier
- Dropped proc: tuples-result->table
- For `gxrepl', results are now printed with " | " field separator
- All (database postgres) procs now tested
- Support files guile.m4 and modsup.h synched with Guile 1.4.1.106
- 0.28 | 2005-05-09
- Bugfix: array reference handling in (database postgres-qcons)
- FSF street address updated in copyright notices
- 0.27 | 2005-03-02
- Result objects print without redundant "PGRES_" prefix
- New command for (database postgres-table) proc `pgtable-manager'
- New (database postgres-resx) proc: result->object-rows
- Changes to module (database postgres-qcons)
- 0.26 | 2005-02-24
- Expiration date set for opaque string support
- Expiration date set for two (database postegres-table) procs
- Dropped (database postgres-types) proc: dbcoltype:name
- New type converters in module (database postgres-types)
- New module: (database postgres-qcons)
- New module: (database postgres-resdisp)
- New module: (database postgres-gxrepl)
- 0.25 | 2005-01-02
- New (database postgres) proc: pg-result-error-message
- 0.24 | 2004-11-24
- New (database postgres) proc: pg-set-nonblocking!
- New (database postgres) proc: pg-is-nonblocking?
Uses guile-1.6 and postgresql-7.4.
Four years of development since the previous version: many changes.
XXX: This package includes a hack since pgsql.bl3.mk does
not provide a way to get the matching -clients package.
Unfortunately, guile{,14}/buildlink3.mk directly includes it, and I don't
know which dependencies actually need libltdl, so it was a recursive bump.
Hopefully this recursive inclusion can be ripped out of
guile{,14}/buildlink3.mk at some point and bubble down to dependencies that
actually use libltdl, avoiding this headache in the future....
in the process. (More information on tech-pkg.)
Bump PKGREVISION and BUILDLINK_DEPENDS of all packages using libtool and
installing .la files.
Bump PKGREVISION (only) of all packages depending directly on the above
via a buildlink3 include.
All library names listed by *.la files no longer need to be listed
in the PLIST, e.g., instead of:
lib/libfoo.a
lib/libfoo.la
lib/libfoo.so
lib/libfoo.so.0
lib/libfoo.so.0.1
one simply needs:
lib/libfoo.la
and bsd.pkg.mk will automatically ensure that the additional library
names are listed in the installed package +CONTENTS file.
Also make LIBTOOLIZE_PLIST default to "yes".
Guile-pg is a Guile module providing access and allowing updates to
PostgreSQL databases from Guile scripts. Guile is the GNU interpreter
for the Scheme language and PostgreSQL is a free relational database
management system.