[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
  This is alpha code (pre 1.0 release).  It has bugs, and the
  interfaces may change from version to version.

cvs tag:


tarball, anoncvs instructions, and other files in dir:

NEWS excerpt below.

tested w/ guile 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 "fcompat" stuff, and also: <>.


 - 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]

reply via email to

[Prev in Thread] Current Thread [Next in Thread]