[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
guile-pg 0.17 available
From: |
Thien-Thi Nguyen |
Subject: |
guile-pg 0.17 available |
Date: |
Mon, 02 Feb 2004 11:44:56 +0100 |
README excerpt:
Guile-PG is a collection of modules for Guile allowing access to
the PostgreSQL RDBMS from Scheme programs.
The low-level module `(database postgres)' provides an almost
one-to-one correspondence with the PostgreSQL "libpq" C library
interface. Other higher-level modules, typically named
`(database postgres-FOO)', provide abstractions and convenience
procedures.
This is alpha code (pre 1.0 release). It has bugs, and the
interfaces may change from version to version.
cvs tag:
v-0-17
tarball, anoncvs instructions, and other files in dir:
http://www.glug.org/people/ttn/software/guile-pg/
NEWS excerpt below.
tested w/ guile 1.4.1.98 and postgresql 7.3.3. patches for other
branches of guile welcome (as long as the code targets 1.4.x API and
the patches don't break 1.4.x, generally :-). see acinclude.m4 and
configure.in "fcompat" stuff, and also: <http://www.glug.org/alt/>.
thi
_____________________________________________________________
- 0.17 | 2004-02-02
- Installation change: modules installed under site dirs
The compiled module (database postgres-sup) is now installed in
${GUILE_LIBSITE}/database, while the other non-compiled modules
are installed in ${GUILE_SITE}/database. Both site dirs are
determined by the configure script, usually something like
${libdir}/guile/site and ${datadir}/guile/site, respectively.
Additionally, if the system supports it, "make install" updates
each site dir's module catalog.
See also "Removing Misguided Prior Installations" in README.
- Distribution bugfix: .x files no longer included
The truth is out there, but you really don't want it cluttering
things, especially since it precludes build-time snarfing.
- Bugfix: incorrect objectifiers selection bug in pgtable-manager
For `tuples-result->object-alist' and `tuples-result->alists'
sub-procs, the `objectifiers' passed to `result->object-alist'
and `result->object-alists', respectively, were not qualified to
match the selected columns. Here is an example to demonstrate
the bug:
(define DEFS '((a int4) (b text)))
(define M (pgtable-manager "ttn" "t42" DEFS))
(define SHOW (M 'tuples-result->object-alist))
(define SEL (M 'select))
(SHOW (SEL '(b a) "limit 2"))
=> ((b #f #f) (a "42" "19")) ; wrong
Once corrected, we see the expected result:
(SHOW (SEL '(b a) "limit 2"))
=> ((b "nothing is real" "deadly") (a 42 19))
The implementation introduces a restriction: If you intend to
pass the result of SEL to either `tuples-result->object-alist'
or `tuples-result->alists', the first arg to SEL cannot be a
string, since there is no outspec-as-string parsing support.
To ameliorate this restriction somewhat, `compile-outspec' is
now exported (see below).
- Error output bugfix: pg-fname, pg-ftype, pg-fsize, pg-fmod
For an invalid field number argument, these procs used to
display "Invalid field number %s". They now display the
field number instead of the literal string "%s".
- Proc `pg-print' no longer limited to stdout
It used to be that `pg-print' output could only be sent to
stdout, ignoring the port returned by `current-output-port'.
Now, output is now completely controllable from Scheme code
using `with-output-to-port' (or `call-with-output-string',
`call-with-output-file', `set-current-output-port', etc).
- New (database postgres) procs
- pg-set-notice-out!
- pg-notifies
- pg-client-encoding
- pg-set-client-encoding!
These are documented in the manual under "Database Connections".
- New (database postgres-table) proc: `compile-outspec'
This is documented in the manual under "Single-Table Abstraction".
A continuation of the example above, using `compile-outspec':
(define (CSHOW spec)
(SHOW (SEL (compile-outspec spec DEFS) "limit 2")))
(CSHOW '((#f "label" "upper(b)") (int4 "bella" "11 * a")))
=> ((label "NOTHING IS REAL" "DEADLY") (bella 462 209))
(CSHOW '((int4 "label" "upper(b)") ((#t . b) "bella" "11 * a")))
=> ((label #f #f) (bella "462" "209"))
(CSHOW #t)
=> ((a 42 19) (b "nothing is real" "deadly"))
(CSHOW "*")
error--> ERROR: bad select part: "*"
ABORT: (misc-error)
- "make check" fails on test failure
A bug was fixed in the "make check" flow whereby test failures
were reported but in fact did not cause "make check" to fail.
See README for info on how to clean up the db "make check" uses
should this situation arise.
- Info page title now "The (database postgres*) Modules"
This reflects the evolution of Guile-PG beyond its single
module origins into a collection of related modules.
[excerpt ends here]
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- guile-pg 0.17 available,
Thien-Thi Nguyen <=