Peter Eisentraut <pete...@gmx.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
>>> Friday'ish.
>> 
>> 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
        event.
        
        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
        future.
        
        Joachim Wieland, reviewed by Jeff Davis; also hacked on by me.

2010-02-16 17:19  adunstan

        * Add
        query text to auto_explain output.
        
        Still to be done: fix docs and fix regression failures under
        auto_explain.

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

        * Have
        SELECT and CREATE TABLE AS queries return a row count.  While this
        is invisible in psql, other interfaces, like libpq, make this value
        visible.
        
        Boszormenyi Zoltan

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
        that's all.)
        
        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
        interlocks.
        
        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
        Hot Standby.
        
        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
        Hot Standby).
        
        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
        REINDEX command.
        
        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
        catalogs.
        
        * 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
        database.
        
        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
        regression tests.

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
        alternative.
        
        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,
        etc.
        
        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 ...
        RENAME.
        
        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,
        unrelated parent.
        
        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
        me.

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
        in future.
        
        Patch from Tim Bunce.

2010-01-29 12:44  rhaas

        * Allow
        psql variables to be interpolated with literal or identifier
        escaping.
        
        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
        ECPG.

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
        Conway.

2010-01-27 10:27  heikki

        * Make
        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
        whistles.

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.  
           http://rt.perl.org/rt3/Ticket/Display.html?id=72068
        
        - 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
        <z...@cybertec.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

        * Add
        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
        mechanism.
        
        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
        relcache.
        
        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.
        
        Hannu Valtonen

2010-01-22 09:13  meskes

        * Applied patch by Boszormenyi Zoltan <z...@cybertec.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

        * Add
        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.
        
        Greg Smith

2010-01-19 00:50  tgl

        * Add pg_table_size() and
        pg_indexes_size() to provide more user-friendly wrappers around the
        pg_relation_size() function.
        
        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

        * Improve
        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
        lubaczewski.
        
        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
        
            plpy.SPIError
        
        instead of
        
            <class 'plpy.SPIError'>
        
        and for built-in exceptions merely
        
            UnicodeEncodeError
        
        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
        <z...@cybertec.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
        walsender/walreceivxer.
        
        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

        * Add
        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
        ECPGt_char type.

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.:
        
                $PGDATA/pg_tblspc/20981/PG_8.5_201001061/719849/83292814

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
        pg_stat_statements.
        
        This uses the same infrastructure with EXPLAIN BUFFERS to support
        {shared|local}_blks_{hit|read|written} andtemp_blks_{read|written}
        columns in the pg_stat_statements view. The dumped file format also
        updated.
        
        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
        works.
        
        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
        pgbench.
        
        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
        now.
        
        Thanks to Tom Lane for design help and Alvaro Herrera for the
        review.

2010-01-05 11:38  meskes

        * Applied patch by Boszormenyi Zoltan
        <z...@cybertec.at> to add sqlda support to ecpg in both native and
        compatiblity mode.

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/.
        
        Mark Cave-Ayland

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
        by me.

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
        Josh Berkus.
        
        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.
        
        Tsutomu Yamada

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
        index.

2010-01-01 12:34  mha

        * Detect a
        64-bit build environment on Windows, and generate the appropriate
        project files.
        
        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
        same time.
        
        Per report from Hiroshi Inoue

2009-12-31 14:41  tgl

        * Redefine Datum as uintptr_t, instead of
        unsigned long.
        
        This is more in keeping with modern practice, and is a first step
        towards porting to Win64 (which has sizeof(pointer) >
        sizeof(long)).
        
        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
        (sub)transaction.
        
        Also, simplify the logic around pgstat vacuum and analyze reporting
        messages by not trying to fold VACUUM ANALYZE into a single pgstat
        message.
        
        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
        without that.

2009-12-26 11:55  momjian

        * Zero-label enums:
        
        Allow enums to be created with zero labels, for use during binary
        upgrade.

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
        discussion.
        
        In consequence, remove now-dead code for copying such comments in
        CREATE TABLE LIKE.

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to