== PostgreSQL Weekly News – June 26th 2003 ==
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
the other.
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 ‘