[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Guile-PG 0.43 available

From: Thien-Thi Nguyen
Subject: Guile-PG 0.43 available
Date: Fri, 20 Apr 2012 11:14:33 +0200

release notes:

  Guile-PG ventures out of the 7-bit ghetto!
  (But venerates geezers PostgreSQL 7.4 and 8.0,
  fending off punkish Guile \x indignities, pfui!)

  Note that section 9.6 in the manual sez "[Guile] 2.0 doesn't have
  this problem", but that is not yet fully confirmed.  See the thread
  referenced in the footnote for the ongoing data-collection effort.


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), tested with various, but
  not all, versions of Guile and PostgreSQL.  It may have bugs,
  and the interfaces may change from version to version.

NEWS excerpt:

  - 0.43 | 2012-02-06

        [PBI] means "WARNING: potentially backward-incompatible".

    - bugfix: ‘sql-quote’ translates backslash (#\\) to ‘\134’

        Previously, backslash characters were passed through
        unmodified.  Now, they are translated to the string "\134"
        (i.e., the four characters ‘#\\’, ‘#\1’, ‘#\3’, ‘#\4’).

    - [PBI] ‘bytea’ stringifier outputs only one backslash

        If the ‘bytea’ stringifier from ‘(database postgres-types)’ is
        used standalone, this represents a BACKWARD INCOMPATIBLE change.
        In the normal case, however, where the stringifier is used in
        conjunction with ‘sql-quote’, this change is transparent.

    - new (database postgres-qcons) proc: string-xrep

        Some versions of Guile emit ‘\xXX’ to represent the octet with
        hex value XX when constructing the external representation of a
        string, for certain octets.  Furthermore, some versions of
        PostgreSQL cannot grok such escape sequences anyway.  The new
        procedure ‘string-xrep’ is like ‘object->string’ (for a string
        arg) except that it explicitly emits the octet itself, except
        for ‘#\\’ and and ‘#\"’, which are backslash-escaped as normal.

    - ‘(database postgres-qcons) idquote’ no longer emits ‘\xXX’

        Before, ‘idquote’ used ‘object->string’ internally, and thus
        suffered from the problems described in the preceding NEWS
        entry.  Now, it uses ‘string-xrep’.

    - ‘(database postgres-col-defs) validate-def’ more permissive

        A column name may now be any symbol that does not contain
        whitespace.  Previously it was restricted to a symbol whose
        constituent characters were alphanumeric or underscore.

        This change makes Guile-PG less strict (in some sense) than
        PostgreSQL, which imposes other rules.  Overarching is the
        recommendation from PostgreSQL to consistently use a "delimited
        identifier" (aka "quoted identifier") rather than a naked name.
        That's what ‘idquote’ and ‘string-xrep’, both used extensively
        in Guile-PG, do.  See section "Identifiers and Key Words" in
        chapter "SQL Syntax" in the PostgreSQL documentation, for more

    - ‘pgtable-manager’ and ‘pgtable-worker’ likewise relaxed

        These use ‘(database postgres-col-defs)’ procs and new proc
        ‘string-xrep’ internally, and thus benefit from the changes
        mentioned in the preceding NEWS entries.  Notably, table and
        column names are less constrained.  For example, see file
        test/types-table.scm, proc ‘test-m2’.

        [Probably "relaxed" is not as good as "strictness relaxed and
        multi-byte-fu enhanced", but that does not fit on one line.]

    - fake cluster created on-demand for "make check"

        In addition to a fake installation, "make check" now also
        creates a cluster under test/fake-cluster/ configured for
        Unix-domain connections, and kicks/kills the daemon around the
        actual ‘runtest TEST’ invocations.  This means it is no longer
        necessary to set env var ‘PGDATABASE’.  In fact, that and env
        var ‘PGHOST’ are now silently ignored, since ‘runtest’ clobbers
        them internally.

        If you previously tested Guile-PG against different PostgreSQL
        versions by varying ‘PGDATABASE’, you now need to vary env var
        ‘INITDB’ instead, and zonk the cluster before the "make check"
        invocation.  Something like:

          $(MAKE) delete-cluster
          $(MAKE) check DEBUG=1 INITDB=/a/particular/initdb

        in directory test/ would be fine.  See README section "Testing".

tarball and its detached signature in dir:


reply via email to

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