Well, we are in our final week before feature freeze for the 7.4
release. There certainly has been a lot of activity lately, and I
suspect that will continue right up until the deadline.
We might as well dive into the list of miscellaneous updates, as things
are coming from far and wide. Thread checking code was moved farther
down in the configure process, we now set conn->raddr.salen, fixing
problems in CANCEL (and probably other stuff), remove crypt.h from
fe-connect.c (which was not needed and caused problems on Solaris with
Open SSL version 0.9.7b), no longer include pwd.h and netdb.h in MS
CC/Borland builds, pqInternalNotice was changed to accept a format
string and args instead of just a preformatted message, add mention that
the grep's have to be adjusted in pgtest, remove references to
sa_family_t, except when SOCKADDR_STORAGE requires it, and handle
__ss_family as a synonym for ss_family. Two fixes for cygwin included
setting typedef sa_family_t and adding -L../ecpglib -lecpg for compile.
Alvo Herrea also supplied a patch to restructure the deferred trigger
queue, putting all static variables holding the deferred triggers into a
single structure. One other mention, we now have x86_64 support for
spinlocks, thanks to Jeffrey W. Baker for that one.
Enhancements revolving around the protocol revision and libpq changes
continue to be seen. One such item was a fix for the extended-query
protocol that, in the event of error, the backend used to issue a
ReadyForQuery (Z message) immediately and then another one after the
sync message arrived. We now suppress the first one to make it work per
spec. Further updates have been done to make new features of the FE/BE
protocol available to client applications and the libpq example programs
where all updated.
The hash join and hash aggregation code was revised to use the same
datatype-specific hash functions used by hash indexes, rather than the
old not-datatype-aware ComputeHashFunc routine. This makes it safe to
do hash joining on several datatypes that previously couldn't use
hashing. The sets of datatypes that are hash indexable and hash joinable
are now exactly the same, whereas before each had some that weren't in
Another long desired, if not major, change was to disallow the dollar
sign ($) in operator names and instead allow it as a non-first character
in identifiers. The first change eliminates the current need to put
spaces around parameter references (as in "x<=$2"). The second change
improves compatibility with Oracle and some other RDBMS's. This was
discussed and agreed to back in January, but had not actually been
implemented until now.
Michael Graff gets special kudos this week for his patch that adds
INET/CIDR capabilities to IPv6 support, which was an official TODO item.
His patch included specific regression tests and new documentation. Some
of the work involved changing IPv4 from being treated as an "unsigned
int" to an array of characters, the way IPv6 is handled. This allows for
many of the functions such as bitncmp() and adressOK() to "just work" on
both address families. He also add a family() function which will return
a 4 or 6 for IPv4 and IPv6 respectively, and has taken care to allow
machines without IPv6 support to still be able to parse IPv6 data.
Rod Taylor also gets a nod for his recent change that allows "UPDATE
... SET <col> = DEFAULT", another TODO item. This was just one of
several things Rod has recently submitted; other items include fixing
"JOIN .. USING" with domains, adding LIKE <subtable> [ INCLUDING
DEFAULTS | EXCLUDING DEFAULTS ], some cleanup of analyze.c function
prototypes, new non-reserved keywords (INCLUDING, EXCLUDING, DEFAULTS)
for SQL 200X, and updating the synopsis areas for DROP commands touse
"name" as the identifier in conversion_name and index_name, updating
pg_get_constraintdef() to use conbin, and updating pg_dump to use
pg_get_constraintdef() for >= 70400 among other changes.
Ecpg continues to move ahead at a good clip. This weeks updates include
a fix for fetching into char *, add missing terminating '\0' char for
data put into char *, allow constants in using clauses, and removal of
postgres_fe.h includes where they were not needed. There were also a
couple of Informix compatibility changes; implementing Informix's
special way to treat NULLs, handling the use of "free" for cursors after
closing them, and adding a missing prototype for an Informix function.
Several of the contrib modules have been updated. A bug in the
metaphone algorithm was fixed, along with the removal of an unneeded
palloc. References of 'third' were changed to 'fourth' where needed in
the tablefunc module. We also saw the addition of named persistent
connections to dblink thanks to Shridhar Daithanka.
The call for help for folks using python seems to have given fruit.
Chih-Hao Huang fixed a bug in the python interface module; the _quote()
function used to fail due to integer overflow if input d was larger than
max integer (which was likely in BIGINT columns). Kevin Jacobs updated
plpython to remove the RExec code, which should make it compatible with
future versions of python. Expect plpython to treated as an untrusted
language in the future.
The docs continue to see solid contributions. Changes that went in this
week include a re-ordering of the run time information, updates to
information dependent on the run time information, and resolving some
incompatibilities between the run time and performance information. A
link entry to the foreign key information in the system catalog chapter
was created and some chapter reordering for the Internals part was done.
We also now have some documentation about using CIDR address in
pg_hba.conf and an example of CIDR address use in pg_hba.conf.sample. I
also should mention that there has been some pruning going on of
obsolete material that really no longer applies. If you would like a
sneak peek you can always find a link to the cvs docs from the
developers website (http://developer.postgresql.org/), just remember
that those docs aren't official!
While I am really excited about the upcoming release, it's important to
let folks know that PostgreSQL will not be resting on it's laurels. Just
this week over a dozen new items were added to the TODO list; if you
have been looking for a project to hack on this may well be a good
opportunity. Some of the new additions include:
* Have initdb set DateStyle based on locale
* Allow the identifier length to be increased via a configure option
* Create improved PostgreSQL introductory documentation for the PHP
* Change CVS $Id$ to $PostgreSQL$
* Allow SSL-enabled clients to turn off SSL transfers
* Exit postmaster if postgresql.conf can not be opened
* Allow columns to be reordered via ALTER command; have SELECT/INSERT
honor such ordering
* Allow UPDATE, DELETE to handle table aliases for self-joins [delete]
* Allow ALTER TABLE to modify column lengths and change to binary
* Allow creation of a libpq-only tarball
Thats it for this week, next week we should be in feature freeze and I
will hopefully have some information on how you can get involved in beta