Peter Eisentraut <peter_e(at)gmx(dot)net> writes:
> On ons, 2010-02-17 at 14:58 -0800, Josh Berkus wrote:
>> On 2/17/10 2:08 PM, Peter Eisentraut wrote:
>>> FYI: 9.0alpha4 will be wrapped tomorrow (Thursday) and released
>> Can you get me release notes RSN so that I can edit them?
> I don't have any release notes yet. Feel free to pitch in ...
FWIW, I dug through the CVS logs and picked out all the commit messages
that seem worth including since alpha3. Too tired to do more than that ...
regards, tom lane
2010-02-16 17:34 tgl
* Replace the pg_listener-based
LISTEN/NOTIFY mechanism with an in-memory queue. In addition, add
support for a "payload" string to be passed along with each notify
This implementation should be significantly more efficient than the
old one, and is also more compatible with Hot Standby usage. There
is not yet any facility for HS slaves to receive notifications
generated on the master, although such a thing is possible in
Joachim Wieland, reviewed by Jeff Davis; also hacked on by me.
2010-02-16 17:19 adunstan
query text to auto_explain output.
Still to be done: fix docs and fix regression failures under
2010-02-16 16:39 adunstan
* Clean up package namespace
use and use of Safe in plperl. Prevent use of another buggy
version of Safe.pm. Only register the exit handler if we have
successfully created an interpreter. Change log level of perl
warnings from NOTICE to WARNING.
The infrastructure is there if in future we decide to allow DBAs to
specify extra modules that will be allowed in trusted code.
However, for now the relevant variables are declared as lexicals
rather than as package variables, so that they are not (or should
not be) accessible.
Mostly code from Tim Bunce, reviewed by Alex Hunsaker, with some
tweaks by me.
2010-02-16 16:18 momjian
* Honor to_char() "FM"
specification in YYY, YY, and Y; it was already honored by YYYY.
Also document Oracle "toggle" FM behavior.
Per report from Guy Rouillier
2010-02-16 15:58 momjian
SELECT and CREATE TABLE AS queries return a row count. While this
is invisible in psql, other interfaces, like libpq, make this value
2010-02-12 14:35 adunstan
* Add plperl.on_plperl_init and plperl.on_plperlu_init settings for
language-specific startup. Rename recently added
plperl.on_perl_init to plperl.on_init. Also, code cleanup for utf8
hack. Patch from Tim Bunce, reviewed by Alex Hunsaker.
2010-02-12 12:33 tgl
* Extend the set of frame options
supported for window functions.
This patch allows the frame to start from CURRENT ROW (in either
RANGE or ROWS mode), and it also adds support for ROWS n PRECEDING
and ROWS n FOLLOWING start and end points. (RANGE value
PRECEDING/FOLLOWING isn't there yet --- the grammar works, but
Hitoshi Harada, reviewed by Pavel Stehule
2010-02-11 09:29 teodor
* Generic implementation of red-black binary
tree. It's planned to use in several places, but for now only GIN
uses it during index creation. Using self-balanced tree greatly
speeds up index creation in corner cases with preordered data.
2010-02-09 16:43 tgl
* Fix up rickety handling of relation-truncation
Move rd_targblock, rd_fsm_nblocks, and rd_vm_nblocks from relcache
to the smgr relation entries, so that they will get reset to
InvalidBlockNumber whenever an smgr-level flush happens. Because
we now send smgr invalidation messages immediately (not at end of
transaction) when a relation truncation occurs, this ensures that
other backends will reset their values before they next access the
relation. We no longer need the unreliable assumption that a
VACUUM that's doing a truncation will hold its AccessExclusive lock
until commit --- in fact, we can intentionally release that lock as
soon as we've completed the truncation. This patch therefore
reverts (most of) Alvaro's patch of 2009-11-10, as well as my
marginal hacking on it yesterday. We can also get rid of assorted
no-longer-needed relcache flushes, which are far more expensive
than an smgr flush because they kill a lot more state.
In passing this patch fixes smgr_redo's failure to perform
visibility-map truncation, and cleans up some rather dubious
assumptions in freespace.c and visibilitymap.c about when
rd_fsm_nblocks and rd_vm_nblocks can be out of date.
2010-02-07 23:33 tgl
* Remove old-style VACUUM FULL
(which was known for a little while as VACUUM FULL INPLACE), along
with a boatload of subsidiary code and complexity. Per discussion,
the use case for this method of vacuuming is no longer large enough
to justify maintaining it; not to mention that we don't wish to
invest the work that would be needed to make it play nicely with
Aside from the code directly related to old-style VACUUM FULL, this
commit removes support for certain WAL record types that could only
be generated within VACUUM FULL, redirect-pointer removal in
heap_page_prune, and nontransactional generation of cache
invalidation sinval messages (the last being the sticking point for
We still have to retain all code that copes with finding
HEAP_MOVED_OFF and HEAP_MOVED_IN flag bits on existing tuples.
This can't be removed as long as we want to support in-place update
from pre-9.0 databases.
2010-02-07 17:40 tgl
* Work around deadlock problems with
VACUUM FULL/CLUSTER on system catalogs, as per my recent proposal.
First, teach IndexBuildHeapScan to not wait for INSERT_IN_PROGRESS
or DELETE_IN_PROGRESS tuples to commit unless the index build is
checking uniqueness/exclusion constraints. If it isn't, there's no
harm in just indexing the in-doubt tuple.
Second, modify VACUUM FULL/CLUSTER to suppress reverifying
uniqueness/exclusion constraint properties while rebuilding indexes
of the target relation. This is reasonable because these commands
aren't meant to deal with corrupted-data situations. Constraint
properties will still be rechecked when an index is rebuilt by a
This gets us out of the problem that new-style VACUUM FULL would
often wait for other transactions while holding exclusive lock on a
system catalog, leading to probable deadlock because those other
transactions need to look at the catalogs too. Although the real
ultimate cause of the problem is a debatable choice to release
locks early after modifying system catalogs, changing that choice
would require pretty serious analysis and is not something to be
undertaken lightly or on a tight schedule. The present patch fixes
the problem in a fairly reasonable way and should also improve the
speed of VACUUM FULL/CLUSTER a little bit.
2010-02-07 15:48 tgl
* Create a "relation mapping"
infrastructure to support changing the relfilenodes of shared or
nailed system catalogs. This has two key benefits:
* The new CLUSTER-based VACUUM FULL can be applied safely to all
* We no longer have to use an unsafe reindex-in-place approach for
reindexing shared catalogs.
CLUSTER on nailed catalogs now works too, although I left it
disabled on shared catalogs because the resulting
pg_index.indisclustered update would only be visible in one
Since reindexing shared system catalogs is now fully transactional
and crash-safe, the former special cases in REINDEX behavior have
been removed; shared catalogs are treated the same as non-shared.
This commit does not do anything about the recently-discussed
problem of deadlocks between VACUUM FULL/CLUSTER on a system
catalog and other concurrent queries; will address that in a
separate patch. As a stopgap, parallel_schedule has been tweaked
to run vacuum.sql by itself, to avoid such failures during the
2010-02-04 22:09 joe
* Modify recently added PQconnectdbParams() with new argument,
expand_dbname. If expand_dbname is non-zero and dbname contains an
= sign, it is taken as a conninfo string in exactly the same way as
if it had been passed to PQconnectdb. This is equivalent to the way
PQsetdbLogin() works, allowing PQconnectdbParams() to be a complete
Also improve the way the new function is called from psql and
replace a previously missed call to PQsetdbLogin() in psql.
Additionally use PQconnectdbParams() for pg_dump and friends, and
the bin/scripts command line utilities such as vacuumdb, createdb,
Finally, update the documentation for the new parameter, as well as
the nuances of precedence in cases where key words are repeated or
duplicated in the conninfo string.
2010-02-01 14:28 rhaas
* Tighten integrity checks on ALTER TABLE ... ALTER COLUMN ...
When a column is renamed, we recursively rename the same column in
all descendent tables. But if one of those tables also inherits
that column from a table outside the inheritance hierarchy rooted
at the named table, we must throw an error. The previous coding
correctly prohibited the rename when the parent had inherited the
column from elsewhere, but overlooked the case where the parent was
OK but a child table also inherited the same column from a second,
For now, not backpatched due to lack of complaints from the field.
KaiGai Kohei, with further changes by me. Reviewed by Bernd Helme
and Tom Lane.
2010-02-01 10:43 rhaas
* Augment EXPLAIN output with more
details on Hash nodes.
We show the number of buckets, the number of batches (and also the
original number if it has changed), and the peak space used by the
hash table. Minor executor changes to track peak space used.
2010-01-31 22:14 itagaki
* Add string_agg aggregate
functions. The one argument version concatenates the input values
into a string. The two argument version also does the same thing,
but inserts delimiters between elements.
Original patch by Pavel Stehule, reviewed by David E. Wheeler and
2010-01-29 20:46 adunstan
* Add plperl.on_perl_init
setting to provide for initializing the perl library on load. Also,
handle END blocks in plperl. Database access is disallowed during
both these operations, although it might be allowed in END blocks
Patch from Tim Bunce.
2010-01-29 12:44 rhaas
psql variables to be interpolated with literal or identifier
Loosely based on a patch by Pavel Stehule.
2010-01-28 18:59 adunstan
* Add new make targets "world",
"install-world" and "installcheck-world" to build, install and
check just about everything. In addition to everything built
installed and tested by all, install and installcheck targets,
these build HTML Docs, build and test contrib, and test PLs and
2010-01-28 18:21 petere
* Type table feature
This adds the CREATE TABLE name OF type command, per SQL standard.
2010-01-28 09:25 mha
* Add functions to reset the statistics counter for a single
table/index or a single function.
2010-01-28 01:28 joe
* Introduce two new libpq connection functions, PQconnectdbParams and
PQconnectStartParams. These are analogous to PQconnectdb and
PQconnectStart respectively. They differ from the legacy functions
in that they accept two NULL-terminated arrays, keywords and
values, rather than conninfo strings. This avoids the need to build
the conninfo string in cases where it might be inconvenient to do
so. Includes documentation.
Also modify psql to utilize PQconnectdbParams rather than
PQsetdbLogin. This allows the new config parameter
application_name to be set, which in turn is displayed in the
pg_stat_activity view and included in CSV log entries. This will
also ensure both new functions get regularly exercised.
Patch by Guillaume Lelarge with review and minor adjustments by Joe
2010-01-27 10:27 heikki
standby server continuously retry restoring the next WAL segment
with restore_command, if the connection to the primary server is
lost. This ensures that the standby can recover automatically, if
the connection is lost for a long time and standby falls behind so
much that the required WAL segments have been archived and deleted
in the master.
This also makes standby_mode useful without streaming replication;
the server will keep retrying restore_command every few seconds
until the trigger file is found. That's the same basic
functionality pg_standby offers, but without the bells and
2010-01-27 07:11 mha
* Add support for RADIUS authentication.
2010-01-26 18:11 adunstan
* Various small improvements and cleanups for PL/Perl.
- Allow (ineffective) use of 'require' in plperl If the
required module is not already loaded then it dies. So "use
strict;" now works in plperl.
- Pre-load the feature module if perl >= 5.10. So "use feature
:5.10;" now works in plperl.
- Stored procedure subs are now given names. The names are not
visible in ordinary use, but they make tools like
Devel::NYTProf and Devel::Cover much more useful.
- Simplified and generalized the subroutine creation code. Now
one code path for generating sub source code, not four. Can
generate multiple 'use' statements with specific imports
(which handles plperl.use_strict currently and can easily be
extended to handle a plperl.use_feature=':5.12' in future).
- Disallows use of Safe version 2.20 which is broken for PL/Perl.
- Assorted minor optimizations by pre-growing data structures.
Patch from Tim Bunce, reviewed by Alex Hunsaker.
2010-01-26 11:33 tgl
* Remove the default_do_language
parameter, instead making DO use a hardwired default of "plpgsql".
This is more reasonable than it was when the DO patch was written,
because we have since decided that plpgsql should be installed by
default. Per discussion, having a parameter for this doesn't seem
useful enough to justify the risk of application breakage if the
value is changed unexpectedly.
2010-01-26 04:07 meskes
* Applied patch by Boszormenyi Zoltan
<zb(at)cybertec(dot)at> to add out-of-scope cursor support to native mode.
2010-01-25 19:07 sriggs
* Fix longstanding gripe that we
check for 0000000001.history at start of archive recovery, even
when we know it is never present.
2010-01-25 15:55 tgl
get_bit/set_bit functions for bit strings, paralleling those for
bytea, and implement OVERLAY() for bit strings and bytea.
In passing also convert text OVERLAY() to a true built-in, instead
of relying on a SQL function.
Leonardo F, reviewed by Kevin Grittner
2010-01-22 11:40 rhaas
* Replace ALTER TABLE ... SET STATISTICS DISTINCT with a more general
Attributes can now have options, just as relations and tablespaces
do, and the reloptions code is used to parse, validate, and store
them. For simplicity and because these options are not performance
critical, we store them in a separate cache rather than the main
Thanks to Alex Hunsaker for the review.
2010-01-22 10:45 petere
* PL/Python DO handler
Also cleaned up some redundancies between the primary error
messages and the error context in PL/Python.
2010-01-22 09:13 meskes
* Applied patch by Boszormenyi Zoltan <zb(at)cybertec(dot)at> to fix problem
in auto-prepare mode if the connection is closed and re-opened and
the previously prepared query is issued again.
2010-01-21 09:58 rhaas
* Add new escaping functions PQescapeLiteral and PQescapeIdentifier.
PQescapeLiteral is similar to PQescapeStringConn, but it relieves
the caller of the need to know how large the output buffer should
be, and it provides the appropriate quoting (in addition to
escaping special characers within the string). PQescapeIdentifier
provides similar functionality for escaping identifiers.
Per recent discussion with Tom Lane.
2010-01-20 16:15 petere
user-specific .pg_service.conf file
This extends the existing pg_service.conf facility to first look
for a service definition file in the user's home directory.
2010-01-20 14:43 heikki
* Write a WAL
record whenever we perform an operation without WAL-logging that
would've been WAL-logged if archiving was enabled. If we encounter
such records in archive recovery anyway, we know that some data is
missing from the log. A WARNING is emitted in that case.
Original patch by Fujii Masao, with changes by me.
2010-01-19 20:08 adunstan
* Add utility functions to PLPerl:
quote_literal, quote_nullable, quote_ident, encode_bytea,
decode_bytea, looks_like_number, encode_array_literal,
encode_array_constructor. Split SPI.xs into two - SPI.xs now
contains only SPI functions. Remainder are in new Util.xs. Some
more code and documentation cleanup along the way, as well as
adding some CVS markers to files missing them.
Original patch from Tim Bunce, with a little editing from me.
2010-01-19 09:11 mha
* Add pg_stat_reset_shared('bgwriter') to reset the cluster-wide
shared statistics of the bgwriter.
2010-01-19 00:50 tgl
* Add pg_table_size() and
pg_indexes_size() to provide more user-friendly wrappers around the
Bernd Helmle, reviewed by Greg Smith
2010-01-18 20:35 tgl
* Add "USING expressions" option to
plpgsql's OPEN cursor FOR EXECUTE.
This is the last EXECUTE-like plpgsql statement that was missing
the capability of inserting parameter values via USING.
Pavel Stehule, reviewed by Itagaki Takahiro
2010-01-17 17:56 tgl
the handling of SET CONSTRAINTS commands by having them search
pg_constraint before searching pg_trigger. This allows saner
handling of corner cases; in particular we now say "constraint is
not deferrable" rather than "constraint does not exist" when the
command is applied to a constraint that's inherently
non-deferrable. Per a gripe several months ago from hubert depesz
To make this work without breaking user-defined constraint
triggers, we have to add entries for them to pg_constraint.
However, in return we can remove the pgconstrname column from
pg_constraint, which represents a fairly sizable space savings. I
also replaced the tgisconstraint column with tgisinternal; the old
meaning of tgisconstraint can now be had by testing for nonzero
tgconstraint, while there is no other way to get the old meaning of
nonzero tgconstraint, namely that the trigger was internally
generated rather than being user-created.
In passing, fix an old misstatement in the docs and comments,
namely that pg_trigger.tgdeferrable is exactly redundant with
pg_constraint.condeferrable. Actually, we mark RI action triggers
as nondeferrable even when they belong to a nominally deferrable FK
constraint. The SET CONSTRAINTS code now relies on that instead of
hard-coding a list of exception OIDs.
2010-01-16 06:03 petere
* Improved printing of Python
exceptions in PL/Python
Mimic the Python interpreter's own logic for printing exceptions
instead of just using the straight str() call, so that you get
and for built-in exceptions merely
Besides looking better this cuts down on the endless version
differences in the regression test expected files.
2010-01-15 05:44 meskes
* Applied patch by Boszormenyi Zoltan
<zb(at)cybertec(dot)at> to add DESCRIBE [OUTPUT] statement to ecpg.
2010-01-15 04:18 heikki
* Introduce Streaming Replication.
This includes two new kinds of postmaster processes, walsenders and
walreceiver. Walreceiver is responsible for connecting to the
primary server and streaming WAL to disk, while walsender runs in
the primary server and streams WAL from disk to the client.
Documentation still needs work, but the basics are there. We will
probably pull the replication section to a new chapter later on, as
well as the sections describing file-based replication. But let's
do that as a separate patch, so that it's easier to see what has
been added/changed. This patch also adds a new section to the
chapter about FE/BE protocol, documenting the protocol used by
Bump catalog version because of two new functions,
pg_last_xlog_receive_location() and pg_last_xlog_replay_location(),
for monitoring the progress of replication.
Fujii Masao, with additional hacking by me
2010-01-14 11:31 teodor
point_ops opclass for GiST.
2010-01-13 04:06 meskes
* Applied Zoltan's patch to
make char the default sqlda type.
Given that undefined types are handled as character strings anyway
the type translation function can simply return the correcponding
2010-01-13 03:41 meskes
* Fix SQL3
type return value.
For non-SQL3 types ecpg used to return -Oid. This will break if
there are enough Oids to fill the namespace. Therefore we play it
safe and return 0 if there is no Oid->SQL3 tyoe mapping available.
2010-01-11 21:42 momjian
* Please tablespace
directories in their own subdirectory so pg_migrator can upgrade
clusters without renaming the tablespace directories. New
directory structure format is, e.g.:
2010-01-11 13:39 tgl
* Add some simple support and
documentation for using process-specific oom_adj settings to
prevent the postmaster from being OOM-killed on Linux systems.
Alex Hunsaker and Tom Lane
2010-01-08 21:40 adunstan
* Tidy up
and refactor plperl.c.
- Changed MULTIPLICITY check from runtime to compiletime. No
loads the large Config module. - Changed plperl_init_interp() to
return new interp and not alter the global interp_state - Moved
plperl_safe_init() call into check_interp(). - Removed
plperl_safe_init_done state variable as interp_state now covers
that role. - Changed plperl_create_sub() to take a
plperl_proc_desc argument. - Simplified return value handling in
plperl_create_sub. - Changed perl.com link in the docs to perl.org
and tweaked wording to clarify that require, not use, is what's
blocked. - Moved perl code in large multi-line C string literal
macros out to plc_*.pl files. - Added a test2macro.pl utility
to convert the plc_*.pl files to macros in a perlchunks.h file
which is #included - Simplifed plperl_safe_init() slightly -
Optimized pg_verifymbstr calls to avoid unneeded strlen()s.
Patch from Tim Bunce, with minor editing from me.
2010-01-07 19:38 itagaki
* Add buffer access counters to
This uses the same infrastructure with EXPLAIN BUFFERS to support
columns in the pg_stat_statements view. The dumped file format also
Thanks to Robert Haas for the review.
2010-01-07 15:17 tgl
* Fix 3-parameter
form of bit substring() to throw error for negative length, as
required by SQL standard.
2010-01-06 23:53 tgl
* Remove all the
special-case code for INT64_IS_BUSTED, per decision that we're not
going to support that anymore.
I did keep the 64-bit-CRC-with-32-bit-arithmetic code, since it has
a performance excuse to live. It's a bit moot since that's all
ifdef'd out, of course.
2010-01-06 20:41 tgl
* Make configure check the version of
Perl we're building with, and reject versions < 5.8. Also, if
there's no Perl, emit a warning informing the user that he won't be
able to build from a CVS pull. This is exactly the same treatment
we give Bison and Perl, and for the same reasons.
2010-01-06 19:25 tgl
* Alter the configure script to fail
immediately if the C compiler does not provide a working 64-bit
integer datatype. As recently noted, we've been broken on such
platforms since early in the 8.4 development cycle. Since it took
nearly two years for anyone to even notice, it seems that the
rationale for continuing to support such platforms has reached the
point of non-existence. Rather than thrashing around to try to
make it work again, we'll just admit up front that this no longer
Back-patch to 8.4 since that branch is also broken.
We should go around to remove INT64_IS_BUSTED support, but just in
HEAD, so that seems like material for a separate commit.
2010-01-06 00:31 itagaki
* Support rewritten-based full
vacuum as VACUUM FULL. Traditional VACUUM FULL was renamed to
VACUUM FULL INPLACE. Also added a new option -i, --inplace for
vacuumdb to perform FULL INPLACE vacuuming.
Since the new VACUUM FULL uses CLUSTER infrastructure, we cannot
use it for system tables. VACUUM FULL for system tables always fall
back into VACUUM FULL INPLACE silently.
Itagaki Takahiro, reviewed by Jeff Davis and Simon Riggs.
2010-01-05 20:12 itagaki
* Add verification of variable names in
Variables must consist of only alphabets, numerals and underscores.
We had allowed to set variables with invalid names, but could not
refer them in queries.
Thanks to Robert Haas for the review.
2010-01-05 16:53 rhaas
* Support ALTER TABLESPACE
name SET/RESET ( tablespace_options ).
This patch only supports seq_page_cost and random_page_cost as
parameters, but it provides the infrastructure to scalably support
many more. In particular, we may want to add support for
effective_io_concurrency, but I'm leaving that as future work for
Thanks to Tom Lane for design help and Alvaro Herrera for the
2010-01-05 11:38 meskes
* Applied patch by Boszormenyi Zoltan
<zb(at)cybertec(dot)at> to add sqlda support to ecpg in both native and
2010-01-05 08:31 mha
* Move the default configuration for
the MSVC build system to config_default.pl, and allow using
config.pl to override the defaults. config.pl is removed from the
repository, so changes there will no longer show up when doing
diff, and will not prevent switching branches and such things.
config.pl would normally be used to override single values, but if
an old-style config.pl is read, it will override the entire default
configuration, making it backwards compatible.
2010-01-04 20:06 tgl
* Get rid of
the need for manual maintenance of the initial contents of
pg_attribute, by having genbki.pl derive the information from the
various catalog header files. This greatly simplifies modification
of the "bootstrapped" catalogs.
This patch finally kills genbki.sh and Gen_fmgrtab.sh; we now rely
entirely on Perl scripts for those build steps. To avoid creating
a Perl build dependency where there was not one before, the output
files generated by these scripts are now treated as distprep
targets, ie, they will be built and shipped in tarballs. But you
will need a reasonably modern Perl (probably at least 5.6) if you
want to build from a CVS pull.
The changes to the MSVC build process are untested, and may well
break --- we'll soon find out from the buildfarm.
John Naylor, based on ideas from Robert Haas and others
2010-01-04 15:29 adunstan
* Check values passed back from PLPerl to
the database, via function return, trigger tuple modification or
SPI call, to ensure they are valid in the server encoding. Along
the way, replace uses of SvPV(foo, PL_na) with SvPV_nolen(foo) as
recommended in the perl docs. Bug report from Hannu Krosing.
2010-01-04 11:34 tgl
* Improve PGXS
makefile system to allow the module's makefile to specify where to
install DATA and DOCS files. This is mainly intended to allow
versioned installation, eg, install into contrib/fooM.N/ rather
than directly into contrib/.
2010-01-04 07:50 heikki
* Write an end-of-backup WAL record at
pg_stop_backup(), and wait for it at recovery instead of reading
the backup history file. This is more robust, as it stops you from
prematurely starting up an inconsisten cluster if the backup
history file is lost for some reason, or if the base backup was
never finished with pg_stop_backup().
This also paves the way for a simpler streaming replication patch,
which doesn't need to care about backup history files anymore.
The backup history file is still created and archived as before,
but it's not used by the system anymore. It's just for
informational purposes now.
Bump PG_CONTROL_VERSION as the location of the backup startpoint is
now written to a new field in pg_control, and catversion because
initdb is required
Original patch by Fujii Masao per Simon's idea, with further fixes
2010-01-03 21:44 tgl
* When estimating the selectivity of an
inequality "column > constant" or "column < constant", and the
comparison value is in the first or last histogram bin or outside
the histogram entirely, try to fetch the actual column min or max
value using an index scan (if there is an index on the column). If
successful, replace the lower or upper histogram bound with that
value before carrying on with the estimate. This limits the
estimation error caused by moving min/max values when the
comparison value is close to the min or max. Per a complaint from
It is tempting to consider using this mechanism for
mergejoinscansel as well, but that would inject index fetches into
main-line join estimation not just endpoint cases. I'm refraining
from that until we can get a better handle on the costs of doing
this type of lookup.
2010-01-02 15:59 tgl
* Fix similar_escape() to convert
parentheses to non-capturing style. This is needed to avoid
unwanted interference with SUBSTRING behavior, as per bug #5257
from Roman Kononov. Also, add some basic intelligence about
character classes (bracket expressions) since we now have several
behaviors that aren't appropriate inside a character class.
As with the previous patch in this area, I'm reluctant to
back-patch since it might affect applications that are relying on
the prior behavior.
2010-01-02 07:18 mha
* Support 64-bit shared memory when building on 64-bit Windows.
2010-01-01 16:53 tgl
* Support "x IS NOT NULL"
clauses as indexscan conditions. This turns out to be just a minor
extension of the previous patch that made "x IS NULL" indexable,
because we can treat the IS NOT NULL condition as if it were "x <
NULL" or "x > NULL" (depending on the index's NULLS FIRST/LAST
option), just like IS NULL is treated like "x = NULL". Aside from
any possible usefulness in its own right, this is an important
improvement for index-optimized MAX/MIN aggregates: it is now
reliably possible to get a column's min or max value cheaply, even
when there are a lot of nulls cluttering the interesting end of the
2010-01-01 12:34 mha
* Detect a
64-bit build environment on Windows, and generate the appropriate
Based on the work of Tsutomu Yamada, but much refactored.
2010-01-01 09:57 mha
* Make the win32
putenv() override update *all* present versions of the MSVCRxx
runtime, not just the current + Visual Studio 6 (MSVCRT). Clearly
there can be an almost unlimited number of runtimes loaded at the
Per report from Hiroshi Inoue
2009-12-31 14:41 tgl
* Redefine Datum as uintptr_t, instead of
This is more in keeping with modern practice, and is a first step
towards porting to Win64 (which has sizeof(pointer) >
Tsutomu Yamada, Magnus Hagander, Tom Lane
2009-12-30 15:32 tgl
* Revise pgstat's
tracking of tuple changes to improve the reliability of decisions
about when to auto-analyze.
The previous code depended on n_live_tuples + n_dead_tuples -
last_anl_tuples, where all three of these numbers could be bad
estimates from ANALYZE itself. Even worse, in the presence of a
steady flow of HOT updates and matching HOT-tuple reclamations,
auto-analyze might never trigger at all, even if all three numbers
are exactly right, because n_dead_tuples could hold steady.
To fix, replace last_anl_tuples with an accurately tracked count of
the total number of committed tuple inserts + updates + deletes
since the last ANALYZE on the table. This can still be compared to
the same threshold as before, but it's much more trustworthy than
the old computation. Tracking this requires one more
intra-transaction counter per modified table within backends, but
no additional memory space in the stats collector. There probably
isn't any measurable speed difference; if anything it might be a
bit faster than before, since I was able to eliminate some
per-tuple arithmetic operations in favor of adding sums once per
Also, simplify the logic around pgstat vacuum and analyze reporting
messages by not trying to fold VACUUM ANALYZE into a single pgstat
The original thought behind this patch was to allow scheduling of
analyzes on parent tables by artificially inflating their
changes_since_analyze count. I've left that for a separate patch
since this change seems to stand on its own merit.
2009-12-29 15:11 tgl
* Add the ability to store inheritance-tree statistics in
pg_statistic, and teach ANALYZE to compute such stats for tables
that have subclasses. Per my proposal of yesterday.
autovacuum still needs to be taught about running ANALYZE on parent
tables when their subclasses change, but the feature is useful even
2009-12-26 11:55 momjian
* Zero-label enums:
Allow enums to be created with zero labels, for use during binary
2009-12-23 12:41 tgl
* Allow the index name to be
omitted in CREATE INDEX, causing the system to choose an index name
the same as it would do for an unnamed index constraint. (My
recent changes to the index naming logic have helped to ensure that
this will be a reasonable choice.) Per a suggestion from Peter.
A necessary side-effect is to promote CONCURRENTLY to
type_func_name_keyword status, ie, it can't be a table/column/index
name anymore unless quoted. This is not all bad, since we have
heard more than once of people typing CREATE INDEX CONCURRENTLY ON
foo (...) and getting a normal index build of an index named
"concurrently", which was not what they wanted. Now this syntax
will result in a concurrent build of an index with system-chosen
name; which they can rename afterwards if they want something else.
2009-12-23 11:43 tgl
* Remove code that attempted to
rename index columns to keep them in sync with their underlying
table columns. That code was not bright enough to cope with
collision situations (ie, new name conflicts with some other column
of the index). Since there is no functional reason to do this at
all, trying to upgrade the logic to be bulletproof doesn't seem
worth the trouble.
This change means that both the index name and the column names of
an index are set when it's created, and won't be automatically
changed when the underlying table columns are renamed. Neatnik
DBAs are still free to rename them manually, of course.
2009-12-23 08:27 mha
* Add basic build support
for Visual Studio 2008, without resorting to generating the build
files for 2005 and then converting them.
2009-12-22 21:35 tgl
* Adjust naming of indexes
and their columns per recent discussion.
Index expression columns are now named after the FigureColname
result for their expressions, rather than always being
"pg_expression_N". Digits are appended to this name if needed to
make the column name unique within the index. (That happens for
regular columns too, thus fixing the old problem that CREATE INDEX
fooi ON foo (f1, f1) fails. Before exclusion indexes there was no
real reason to do such a thing, but now maybe there is.)
Default names for indexes and associated constraints now include
the column names of all their columns, not only the first one as in
previous practice. (Of course, this will be truncated as needed to
fit in NAMEDATALEN. Also, pkey indexes retain the historical
behavior of not naming specific columns at all.)
An example of the results:
regression=# create table foo (f1 int, f2 text, regression(#
exclude (f1 with =, lower(f2) with =)); NOTICE: CREATE TABLE /
EXCLUDE will create implicit index "foo_f1_lower_exclusion" for
table "foo" CREATE TABLE regression=# \d foo_f1_lower_exclusion
Index "public.foo_f1_lower_exclusion" Column | Type |
Definition --------+---------+------------ f1 | integer | f1
lower | text | lower(f2) btree, for table "public.foo"
2009-12-22 18:54 tgl
* Disallow comments on columns of relation types other than tables,
views, and composite types, which are the only relkinds for which
pg_dump support exists for dumping column comments. There is no
obvious usefulness for comments on columns of sequences or toast
tables; and while comments on index columns might have some value,
it's not worth the risk of compatibility problems due to possible
changes in the algorithm for assigning names to index columns. Per
In consequence, remove now-dead code for copying such comments in
CREATE TABLE LIKE.
In response to
pgsql-hackers by date
|Next:||From: Heikki Linnakangas||Date: 2010-02-18 07:38:15|
|Subject: Re: Streaming replication on win32, still broken|
|Previous:||From: Fujii Masao||Date: 2010-02-18 06:23:26|
|Subject: Re: Streaming replication, and walsender during recovery|