~ubuntu-branches/ubuntu/natty/postgresql-8.4/natty-security

« back to all changes in this revision

Viewing changes to src/backend/executor/nodeAgg.c

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2009-07-01 17:41:41 UTC
  • mfrom: (1.1.4 upstream)
  • mto: This revision was merged to the branch mainline in revision 6.
  • Revision ID: james.westby@ubuntu.com-20090701174141-jfmn9tt8e69m950x
Tags: 8.4.0-1
* Final 8.4.0 release. Major enhancements:
  - Windowing Functions
  - Common Table Expressions and Recursive Queries
  - Default and variadic parameters for functions
  - Parallel Restore
  - Column Permissions
  - Per-database locale settings
  - Improved hash indexes
  - Improved join performance for EXISTS and NOT EXISTS queries
  - Easier-to-use Warm Standby
  - Automatic sizing of the Free Space Map
  - Visibility Map (greatly reduces vacuum overhead for slowly-changing
    tables)
  - Version-aware psql (backslash commands work against older servers)
  - Support SSL certificates for user authentication
  - Per-function runtime statistics
  - Easy editing of functions in psql
  - New contrib modules: pg_stat_statements, auto_explain, citext,
    btree_gin 
  Upload to unstable, 8.4 is the new default. 
* debian/control: Build the versionless metapackages and have them point to
  8.4.

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
 * Portions Copyright (c) 1994, Regents of the University of California
62
62
 *
63
63
 * IDENTIFICATION
64
 
 *        $PostgreSQL: pgsql/src/backend/executor/nodeAgg.c,v 1.166 2009/04/02 20:59:10 momjian Exp $
 
64
 *        $PostgreSQL: pgsql/src/backend/executor/nodeAgg.c,v 1.167 2009/06/17 16:05:34 tgl Exp $
65
65
 *
66
66
 *-------------------------------------------------------------------------
67
67
 */
811
811
TupleTableSlot *
812
812
ExecAgg(AggState *node)
813
813
{
814
 
        if (node->agg_done)
815
 
                return NULL;
816
 
 
817
814
        /*
818
815
         * Check to see if we're still projecting out tuples from a previous agg
819
816
         * tuple (because there is a function-returning-set in the projection
831
828
                node->ss.ps.ps_TupFromTlist = false;
832
829
        }
833
830
 
 
831
        /*
 
832
         * Exit if nothing left to do.  (We must do the ps_TupFromTlist check
 
833
         * first, because in some cases agg_done gets set before we emit the
 
834
         * final aggregate tuple, and we have to finish running SRFs for it.)
 
835
         */
 
836
        if (node->agg_done)
 
837
                return NULL;
 
838
 
 
839
        /* Dispatch based on strategy */
834
840
        if (((Agg *) node->ss.ps.plan)->aggstrategy == AGG_HASHED)
835
841
        {
836
842
                if (!node->table_filled)