1. 03 Sep, 2009 7 commits
  2. 02 Sep, 2009 3 commits
    • Magnus Hagander's avatar
    • Tom Lane's avatar
      Fix subquery pullup to wrap a PlaceHolderVar around the entire RowExpr · 57c9dff9
      Tom Lane authored
      that's generated for a whole-row Var referencing the subquery, when the
      subquery is in the nullable side of an outer join.  The previous coding
      instead put PlaceHolderVars around the elements of the RowExpr.  The effect
      was that when the outer join made the subquery outputs go to null, the
      whole-row Var produced ROW(NULL,NULL,...) rather than just NULL.  There
      are arguments afoot about whether those things ought to be semantically
      indistinguishable, but for the moment they are not entirely so, and the
      planner needs to take care that its machinations preserve the difference.
      Per bug #5025.
      
      Making this feasible required refactoring ResolveNew() to allow more caller
      control over what is substituted for a Var.  I chose to make ResolveNew()
      a wrapper around a new general-purpose function replace_rte_variables().
      I also fixed the ancient bogosity that ResolveNew might fail to set
      a query's hasSubLinks field after inserting a SubLink in it.  Although
      all current callers make sure that happens anyway, we've had bugs of that
      sort before, and it seemed like a good time to install a proper solution.
      
      Back-patch to 8.4.  The problem can be demonstrated clear back to 8.0,
      but the fix would be too invasive in earlier branches; not to mention
      that people may be depending on the subtly-incorrect behavior.  The
      8.4 series is new enough that fixing this probably won't cause complaints,
      but it might in older branches.  Also, 8.4 shows the incorrect behavior
      in more cases than older branches do, because it is able to flatten
      subqueries in more cases.
      57c9dff9
    • Tom Lane's avatar
      Fix pg_ctl's readfile() to not go into infinite loop on an empty file · 040f28b4
      Tom Lane authored
      (could happen if either postgresql.conf or postmaster.opts is empty).
      It's been broken since the C version was written for 8.0, so patch
      all the way back.
      
      initdb's copy of the function is broken in the same way, but it's
      less important there since the input files should never be empty.
      Patch that in HEAD only, and also fix some cosmetic differences that
      crept into that copy of the function.
      
      Per report from Corry Haines and Jeff Davis.
      040f28b4
  3. 01 Sep, 2009 5 commits
  4. 31 Aug, 2009 2 commits
    • Tom Lane's avatar
      Change the autovacuum launcher to read pg_database directly, rather than · 00e6a16d
      Tom Lane authored
      via the "flat files" facility.  This requires making it enough like a backend
      to be able to run transactions; it's no longer an "auxiliary process" but
      more like the autovacuum worker processes.  Also, its signal handling has
      to be brought into line with backends/workers.  In particular, since it
      now has to handle procsignal.c processing, the special autovac-launcher-only
      signal conditions are moved to SIGUSR2.
      
      Alvaro, with some cleanup from Tom
      00e6a16d
    • Tom Lane's avatar
      Track the current XID wrap limit (or more accurately, the oldest unfrozen · 25ec228e
      Tom Lane authored
      XID) in checkpoint records.  This eliminates the need to recompute the value
      from scratch during database startup, which is one of the two remaining
      reasons for the flatfile code to exist.  It should also simplify life for
      hot-standby operation.
      
      To avoid bloating the checkpoint records unreasonably, I switched from
      tracking the oldest database by name to tracking it by OID.  This turns
      out to save cycles in general (everywhere but the warning-generating
      paths, which we hardly care about) and also helps us deal with the case
      that the oldest database got dropped instead of being vacuumed.  The prior
      coding might go for a long time without updating the wrap limit in that case,
      which is bad because it might result in a lot of useless autovacuum activity.
      25ec228e
  5. 30 Aug, 2009 2 commits
  6. 29 Aug, 2009 2 commits
    • Tom Lane's avatar
      Remove the use of the pg_auth flat file for client authentication. · e710b65c
      Tom Lane authored
      (That flat file is now completely useless, but removal will come later.)
      
      To do this, postpone client authentication into the startup transaction
      that's run by InitPostgres.  We still collect the startup packet and do
      SSL initialization (if needed) at the same time we did before.  The
      AuthenticationTimeout is applied separately to startup packet collection
      and the actual authentication cycle.  (This is a bit annoying, since it
      means a couple extra syscalls; but the signal handling requirements inside
      and outside a transaction are sufficiently different that it seems best
      to treat the timeouts as completely independent.)
      
      A small security disadvantage is that if the given database name is invalid,
      this will be reported to the client before any authentication happens.
      We could work around that by connecting to database "postgres" instead,
      but consensus seems to be that it's not worth introducing such surprising
      behavior.
      
      Processing of all command-line switches and GUC options received from the
      client is now postponed until after authentication.  This means that
      PostAuthDelay is much less useful than it used to be --- if you need to
      investigate problems during InitPostgres you'll have to set PreAuthDelay
      instead.  However, allowing an unauthenticated user to set any GUC options
      whatever seems a bit too risky, so we'll live with that.
      e710b65c
    • Bruce Momjian's avatar
  7. 28 Aug, 2009 3 commits
  8. 27 Aug, 2009 9 commits
    • Tom Lane's avatar
      Modify the definition of window-function PARTITION BY and ORDER BY clauses · bb16dc49
      Tom Lane authored
      so that their elements are always taken as simple expressions over the
      query's input columns.  It originally seemed like a good idea to make them
      act exactly like GROUP BY and ORDER BY, right down to the SQL92-era behavior
      of accepting output column names or numbers.  However, that was not such a
      great idea, for two reasons:
      
      1. It permits circular references, as exhibited in bug #5018: the output
      column could be the one containing the window function itself.  (We actually
      had a regression test case illustrating this, but nobody thought twice about
      how confusing that would be.)
      
      2. It doesn't seem like a good idea for, eg, "lead(foo) OVER (ORDER BY foo)"
      to potentially use two completely different meanings for "foo".
      
      Accordingly, narrow down the behavior of window clauses to use only the
      SQL99-compliant interpretation that the expressions are simple expressions.
      bb16dc49
    • Alvaro Herrera's avatar
      Fix broken markup · f065b17d
      Alvaro Herrera authored
      Jan Urbański
      f065b17d
    • Tom Lane's avatar
      Make the .DEF file generation rules safe against tabs in exports.txt. · 3d167209
      Tom Lane authored
      Per bug #5016, although I think the MSVC build scripts may need a similar fix.
      3d167209
    • Alvaro Herrera's avatar
      Fix handling of autovacuum reloptions. · 53af86c5
      Alvaro Herrera authored
      In the original coding, setting a single reloption would cause default
      values to be used for all the other reloptions.  This is a problem
      particularly for autovacuum reloptions.
      
      Itagaki Takahiro
      53af86c5
    • Tom Lane's avatar
      Make it reasonably safe to use pg_ctl to start the postmaster from a boot-time · 8f5500e6
      Tom Lane authored
      script.
      
      To do this, have pg_ctl pass down its parent shell's PID in an environment
      variable PG_GRANDPARENT_PID, and teach CreateLockFile() to disregard that PID
      as a false match if it finds it in postmaster.pid.  This allows us to cope
      with one level of postgres-owned shell process even with pg_ctl in the way,
      so it's just as safe as starting the postmaster directly.  You still have to
      be careful about how you write the initscript though.
      
      Adjust the comments in contrib/start-scripts/ to not deprecate use of
      pg_ctl.  Also, fix the ROTATELOGS option in the OSX script, which was
      indulging in exactly the sort of unsafe coding that renders this fix
      pointless :-(.  A pipe inside the "sudo" will probably result in more
      than one postgres-owned process hanging around.
      8f5500e6
    • Magnus Hagander's avatar
      0e3f0cbd
    • Tom Lane's avatar
      Remove some unnecessary variable assignments, per results of "clang" · aaa9f7d4
      Tom Lane authored
      static checker.  Paul Matthews
      aaa9f7d4
    • Heikki Linnakangas's avatar
      In the checkpoint written at the end of archive recovery, the WAL page header · 9cd6685f
      Heikki Linnakangas authored
      was incorrectly initialized with timeline ID 0. That rendered the WAL page
      unrecoverable, making a subsequent archive recovery stop at that point.
      ThisTimeLineID needs to be initialized before calling AdvanceXLInsertBuffer().
      
      This fixes bug #5011 reported by James Bardin. Backpatch to 8.4, as the bug
      was introduced by the changes to use of bgwriter for writing the
      end-of-archive-recovery checkpoint. Patch by Tom Lane.
      9cd6685f
    • Bruce Momjian's avatar
  9. 26 Aug, 2009 4 commits
  10. 25 Aug, 2009 2 commits
  11. 24 Aug, 2009 1 commit
    • Peter Eisentraut's avatar
      Make PL/Python tests more compatible with Python 3 · 5dff9363
      Peter Eisentraut authored
      This changes a bunch of incidentially used constructs in the PL/Python
      regression tests to equivalent constructs in cases where Python 3 no longer
      supports the old syntax.  Support for older Python versions is unchanged.
      5dff9363