== Postgres Weekly News - March 30 2008 == - Mailing list pgsql-announce
From | David Fetter |
---|---|
Subject | == Postgres Weekly News - March 30 2008 == |
Date | |
Msg-id | 20080331054405.GA5577@fetter.org Whole thread Raw |
List | pgsql-announce |
== Postgres Weekly News - March 30 2008 == Summer of Code closes for applications Really Soon(TM). Get your application in ASAP! http://code.google.com/soc The first commit fest is ending soon, and lots of new features have come in. Kudos to all on the hard work. PostgreSQL Conference East is over. Kudos to all the organizers, presenters and participants. == Postgres Product News == check_postgres 1.3.1 released. http://bucardo.org/nagios/ PostgreSQL Maestro 8.3 released. http://www.sqlmaestro.com/products/postgresql/maestro/ PL/Lua 0.3 released. http://pgfoundry.org/projects/pllua/ pg_snapclone 1.0 Beta released. http://pgfoundry.org/projects/snapclone/ == Postgres Jobs for March == http://archives.postgresql.org/pgsql-jobs/2008-03/threads.php == Postgres Local == PG UK day will be April 2 in Birmingham. http://www.postgresql.org.uk/ FISL 9.0 will be April 17-19 at PUCRS in Porto Alegre, RS, Brazil. https://fisl.softwarelivre.org/9.0/ PGCon 2008 will be May 20-23 in Ottawa. http://www.pgcon.org/2008/ Utah Open Source Conference 2008's CfP is open through June 1. This 2nd annual conference is August 28-30, 2008 in Salt Lake City, UT http://2008.utosc.com/ == Postgres in the News == Planet PostgreSQL: http://www.planetpostgresql.org/ General Bits, Archives and occasional new articles: http://www.varlena.com/GeneralBits/ Postgres Weekly News is brought to you this week by David Fetter Selena Deckelmann and Josh Berkus. Submit news and announcements by Sunday at 3:00pm Pacific time. Please send English language ones to david@fetter.org, German language to pwn@pgug.de, Italian language to pwn@itpug.org. == Applied Patches == Bruce Momjian committed: - Update TODO wording to read: "Allow pre/data/post files when schema and data are dumped separately, for performance reasons." - Add to TODO: "Improve reporting of UNION type mismatches." - Add URL for TODO: "Allow statistics last vacuum/analyze execution times to be displayed without requiring stats_row_level to be enabled." - Add to TODO: "SMP scalability improvements." - Add URL for TODO: "SMP scalability improvements." - Add to TODO: "Research reducing deTOASTing in more places." - Add to TODO: "Allow xml arrays to be cast to other data types." - Add to TODO: "Fix regular expression bug when using complex back-references." - Add to TODO: "Create three versions of libpgport to simplify client code." - Add to TODO: "Remove old-style routines for manipulating tuples." - Add to TODO: "Have /contrib/dblink reuse unnamed connections." - Add to TODO: "Prevent concurrent CREATE TABLE table1 from sometimes returning a cryptic error message." - Add to TODO: "Be more aggressive about creating WAL files." - Add to TODO: "Have resource managers report the duration of their status changes." - Add to TODO: "Move pgfoundry's xlogdump to /contrib and have it rely more closely on the WAL backend code." - Add to TODO: "Improve detection of shared memory segments being used by other FreeBSD jails." - Add to TODO: "Consider sorting entries before inserting into btree index." - Add to TODO: "Fix port/rint.c to be spec-compliant." - Add to psql TODO: "Improve display if enums." - Add to TODO: "Detect deadlocks involving LockBufferForCleanup()." - Add to TODO: "Add more cross-data-type operators." - Add to pl/pgsql TODO: "Consider invalidating the cache or keeping separate cached copies when search_path changes." - Add to TODO: "Add SQL-standard array_agg() and unnest() array functions." - Update TODO wording to read: "Simplify integer cross-data-type operators." - Mark TODO as DONE: "Avoid tuple some tuple copying in sort routines." - Added to TODO: "Consider transaction start/end performance improvements." - Update TODO to read: "Consider keeping separate cached copies when search_path changes." - Strengthen warnings about using pg_dump's -i option. - In pgsql/doc/src/sgml/array.sgml, improve documentation for odd array slice behavior. - Remove ipcclean utility command --- didn't work on all Unixes and on Windows. Users should use their operating system tools instead. - Add URL for TODO: "Consider allowing control of upper/lower case folding of unquoted identifiers." - Add to TODO: "Consider being smarter about memory and external files used during sorts." - Add to TODO: "Allow one transaction to see tuples using the snapshot of another transaction." - Add to PL/PgSQL TODO: "Add CASE capability to language (already in SQL)." - Mark TODO as done: "Add ability to trigger on TRUNCATE." Tom Lane committed: - Add a new ereport auxiliary function errdetail_log(), which works the same as errdetail except the string goes only to the server log, replacing the normal errdetail there. This provides a reasonably clean way of dealing with error details that are too security-sensitive or too bulky to send to the client. This commit just adds the infrastructure --- actual uses to follow. - Adjust the recent patch for reporting of deadlocked queries so that we report query texts only to the server log. This eliminates the issue of possible leaking of security-sensitive data in other sessions' queries. Since the log is presumed secure, we can now log the queries of all sessions involved in the deadlock, whether or not they belong to the same user as the one reporting the failure. - Fix various infelicities that have snuck into usage of errdetail() and friends. Avoid double translation of some messages, ensure other messages are exposed for translation (and make them follow the style guidelines), avoid unsafe passing of an unpredictable message text as a format string. - Use new errdetail_log() mechanism to provide a less klugy way of reporting large numbers of dependencies on a role that couldn't be dropped. Per a comment from Alvaro Herrera. - When a relation has been proven empty by constraint exclusion, propagate that knowledge up through any joins it participates in. We were doing that already in some special cases but not in the general case. Also, defend against zero row estimates for the input relations in cost_mergejoin --- this fix may have eliminated the only scenario in which that can happen, but be safe. Per report from Alex Solovey. - Adjust DatumGetBool macro so that it isn't fooled by garbage in the Datum to the left of the actual bool value. While in most cases there won't be any, our support for old-style user-defined functions violates the C spec to the extent of calling functions that might return char or short through a function pointer declared to return "char *", which we then coerce to Datum. It is not surprising that the result might contain garbage high-order bits ... what is surprising is that we didn't see such cases long ago. Per report from Magnus. This is a back-patch of a change that was made in HEAD almost exactly a year ago. I had refrained from back-patching at the time, but now we find that this is *necessary* for contrib to work with gcc 4.3. - Simplify and standardize conversions between TEXT datums and ordinary C strings. This patch introduces four support functions cstring_to_text, cstring_to_text_with_len, text_to_cstring, and text_to_cstring_buffer, and two macros CStringGetTextDatum and TextDatumGetCString. A number of existing macros that provided variants on these themes were removed. Most of the places that need to make such conversions now require just one function or macro call, in place of the multiple notational layers that used to be needed. There are no longer any direct calls of textout or textin, and we got most of the places that were using handmade conversions via memcpy (there may be a few still lurking, though). This commit doesn't make any serious effort to eliminate transient memory leaks caused by detoasting toasted text objects before they reach text_to_cstring. We changed PG_GETARG_TEXT_P to PG_GETARG_TEXT_PP in a few places where it was easy, but much more could be done. Brendan Jurd and Tom Lane - Fix core dump in contrib/xml2's xpath_table() when the input query returns a NULL value. Per bug #4058. - Fix bad spelling and worse grammar in recent doc commits. Propagate pg_dump --ignore-version comments into pg_dumpall and pg_restore pages. - Reduce the need for frontend programs to include "postgres.h" by refactoring inclusions in src/include/catalog/*.h files. The main idea here is to push function declarations for src/backend/catalog/*.c files into separate headers, rather than sticking them into the corresponding catalog definition file as has been done in the past. This commit only carries out that idea fully for pg_proc, pg_type and pg_conversion, but that's enough for the moment --- if pg_list.h ever becomes unsafe for frontend code to include, we'll need to work a bit more. Zdenek Kotala - In pgsql/src/backend/optimizer/plan/planner.c, when we have successfully optimized a MIN or MAX aggregate into an indexscan, the query result must be exactly one row (since we don't do this when there's any GROUP BY). Therefore any ORDER BY or DISTINCT attached to the query is useless and can be dropped. Aside from saving useless cycles, this protects us against problems with matching the hacked-up tlist entries to sort clauses, as seen in a bug report from Taiki Yamaguchi. We might need to work harder if we ever try to optimize grouped queries with this approach, but this solution will do for now. - Support statement-level ON TRUNCATE triggers. Simon Riggs. - In pgsql/src/backend/optimizer/plan/planner.c, department of second thoughts: the rule that ORDER BY and DISTINCT are useless for an ungrouped-aggregate query holds regardless of whether optimize_minmax_aggregates succeeds. So we might as well apply the optimization in any case. I'll leave 8.3 as it was, since this version is a tad more invasive than my earlier patch. - In pgsql/src/backend/optimizer/plan/planner.c, revert my erroneous fix for Taiki Yamaguchi's DISTINCT MAX() bug. Whatever we do about that, this isn't the path to the solution. - In pgsql/src/bin/psql/tab-complete.c, improve psql's tab completion to handle completing attribute names in cases where the relation name was schema-qualified, for example UPDATE foo.bar SET <tab>. Also support cases where the relation name was quoted unnecessarily, for example UPDATE "foo" SET <tab> Greg Sabino Mullane, slightly simplified by myself. - In pgsql/src/bin/psql/help.c, improve description of \du and \dg, per suggestion from Harald Armin Massa. - In pgsql/src/bin/psql/describe.c, display incoming as well as outgoing foreign-key constraints in psql's \d output for a table. Kenneth D'Souza, some changes by myself. - Show database access privileges in psql's \l command. For \l+, also show database size, when available to the current user. Andrew Gilligan - Fix a number of places that were making file-type tests infelicitously. The places that did, eg, (statbuf.st_mode & S_IFMT) == S_IFDIR were correct, but there is no good reason not to use S_ISDIR() instead, especially when that's what the other 90% of our code does. The places that did, eg, (statbuf.st_mode & S_IFDIR) were flat out *wrong* and would fail in various platform-specific ways, eg a symlink could be mistaken for a regular file on most Unixen. The actual impact of this is probably small, since the problem cases seem to always involve symlinks or sockets, which are unlikely to be found in the directories that PG code might be scanning. But it's clearly trouble waiting to happen, so patch all the way back anyway. (There seem to be no occurrences of the mistake in 7.4.) - Use error message wordings for permissions checks on .pgpass and SSL private key files that are similar to the one for the postmaster's data directory permissions check. (I chose to standardize on that one since it's the most heavily used and presumably best-wordsmithed by now.) Also eliminate explicit tests on file ownership in these places, since the ensuing read attempt must fail anyway if it's wrong, and there seems no value in issuing the same error message for distinct problems. (But I left in the explicit ownership test in postmaster.c, since it had its own error message anyway.) Also be more specific in the documentation's descriptions of these checks. Per a gripe from Kevin Hunter. - In pgsql/src/backend/commands/tablecmds.c, fix my brain fade in TRUNCATE triggers patch: can't release relcache refcounts while EState still contains pointers to those relations. Exposed by the CLOBBER_CACHE_ALWAYS tests that buildfarm member jaguar is running (I knew those cycles would pay off...) Michael Meskes committed: - In ecpg, added ECPGget_PGconn to exports.txt - Moved from PQsetdbLogin to PQconnectDB. Correctly parse connect options. Changed regression tests accordingly. - Sorry, copied wrong files. Alvaro Herrera committed: - Add URLs to TODO: "Be more aggressive about creating WAL files" per Simon Riggs. - Update TODO item to read: "Find a correct rint() substitute on Windows." - Separate snapshot management code from tuple visibility code, create a snapmgmt.c file for the former. The header files have also been reorganized in three parts: the most basic snapshot definitions are now in a new file snapshot.h, and the also new snapmgmt.h keeps the definitions for snapmgmt.c. tqual.h has been reduced to the bare minimum. This patch is just a first step towards managing live snapshots within a transaction; there is no functionality change. Per my proposal to pgsql-patches on 20080318191940.GB27458@alvh.no-ip.org and subsequent discussion. - Rename snapmgmt.c/h to snapmgr.c/h, for consistency with other files. Per complaint from Tom Lane. - Move the HTSU_Result enum definition into snapshot.h, to avoid including tqual.h into heapam.h. This makes all inclusion of tqual.h explicit. I also sorted alphabetically the includes on some source files. Neil Conway committed: - Add a new tuplestore API function, tuplestore_putvalues(). This is identical to tuplestore_puttuple(), except it operates on arrays of Datums + nulls rather than a fully-formed HeapTuple. In several places that use the tuplestore API, this means we can avoid creating a HeapTuple altogether, saving a copy. - Update documentation for recent DTrace changes. Patch from Robert Lor. - Enable 64-bit integer datetimes by default, per previous discussion. This requires a working 64-bit integer type. If such a type cannot be found, "--disable-integer-datetimes" can be used to switch back to the previous floating point-based datetime implementation. Magnus Hagander committed: - In pgsql/src/bin/psql/help.c, include \password in the psql help. While at it, change the order of the documented options to be alphabetically again. Heikki Linnakangas committed: - In pgsql/doc/src/sgml/backup.sgml, clarify documentation on PITR and warm standby on the fact that the standby restore_command should report failure on non-existent .backup and .history files. Tidy up some related text along the way. Patch by Markus Bertheau, with some editing by Simon Riggs and myself. == Rejected Patches (for now) == No one was disappointed this week :-) == Pending Patches == Pavel Stehule sent in a patch which adds a generate_subscripts() function. Pavel Stehule sent in a patch which implements EXECUTE ... USING in PL/PgSQL. Zoltan Boszormenyi sent in several more revisions of his patch which allows 64-bit ints and floats to be passed by value on 64-bit platforms. Yoshiyuki Asaba sent in an update to Greg Stark and Neil Conway's patch to implement non-recursive WITH. Martin Pihlak sent in another revision of his patch to put stored procedure statistics in the stats collector. Bruce Momjian sent in two versions of a patch which removes the non-universal ipcclean. Merlin Moncure sent in another revision of his libpq type system patch. Alex Hunsaker sent in two revisions of a patch to aAdd logic to disallow ADD CONSTRAINT ONLY to parent of an inheritance hierarchy and add logic to mark inherited constraints in the children: This can be achieved by introducing a new bool "coninherited" attribute in pg_constraint. Alvaro Herrera sent in a WIP patch to keep track of the live snapshots within a transaction. Andreas Scherbaum sent in a patch which adds "CREATE IF NOT EXISTS [language]" as an option for creating PLs. Pierre Caillaud sent in three revisions of a patch which implements globally prepared statements.
pgsql-announce by date: