Skip to content
Snippets Groups Projects
  1. Oct 27, 2009
    • Tom Lane's avatar
      Make FOR UPDATE/SHARE in the primary query not propagate into WITH queries; · 61e53282
      Tom Lane authored
      for example in
        WITH w AS (SELECT * FROM foo) SELECT * FROM w, bar ... FOR UPDATE
      the FOR UPDATE will now affect bar but not foo.  This is more useful and
      consistent than the original 8.4 behavior, which tried to propagate FOR UPDATE
      into the WITH query but always failed due to assorted implementation
      restrictions.  Even though we are in process of removing those restrictions,
      it seems correct on philosophical grounds to not let the outer query's
      FOR UPDATE affect the WITH query.
      
      In passing, fix isLockedRel which frequently got things wrong in
      nested-subquery cases: "FOR UPDATE OF foo" applies to an alias foo in the
      current query level, not subqueries.  This has been broken for a long time,
      but it doesn't seem worth back-patching further than 8.4 because the actual
      consequences are minimal.  At worst the parser would sometimes get
      RowShareLock on a relation when it should be AccessShareLock or vice versa.
      That would only make a difference if someone were using ExclusiveLock
      concurrently, which no standard operation does, and anyway FOR UPDATE
      doesn't result in visible changes so it's not clear that the someone would
      notice any problem.  Between that and the fact that FOR UPDATE barely works
      with subqueries at all in existing releases, I'm not excited about worrying
      about it.
      61e53282
    • Alvaro Herrera's avatar
      Fix documentation on the toast.fillfactor reloption: it doesn't exist. · b091b976
      Alvaro Herrera authored
      Per note from Zoltan Boszormenyi.
      b091b976
  2. Oct 26, 2009
    • Peter Eisentraut's avatar
      f1c52475
    • Peter Eisentraut's avatar
      Check errors in for loop · 3ceae479
      Peter Eisentraut authored
      3ceae479
    • Heikki Linnakangas's avatar
      Fix range check in date_recv that tried to limit accepted values to only · 2078e384
      Heikki Linnakangas authored
      those accepted by date_in(). I confused julian day numbers and number of
      days since the postgres epoch 2000-01-01 in the original patch.
      
      I just noticed that it's still easy to get such out-of-range values into
      the database using to_date or +- operators, but this patch doesn't do
      anything about those functions.
      
      Per report from James Pye.
      2078e384
    • Tom Lane's avatar
      Re-implement EvalPlanQual processing to improve its performance and eliminate · 9f2ee8f2
      Tom Lane authored
      a lot of strange behaviors that occurred in join cases.  We now identify the
      "current" row for every joined relation in UPDATE, DELETE, and SELECT FOR
      UPDATE/SHARE queries.  If an EvalPlanQual recheck is necessary, we jam the
      appropriate row into each scan node in the rechecking plan, forcing it to emit
      only that one row.  The former behavior could rescan the whole of each joined
      relation for each recheck, which was terrible for performance, and what's much
      worse could result in duplicated output tuples.
      
      Also, the original implementation of EvalPlanQual could not re-use the recheck
      execution tree --- it had to go through a full executor init and shutdown for
      every row to be tested.  To avoid this overhead, I've associated a special
      runtime Param with each LockRows or ModifyTable plan node, and arranged to
      make every scan node below such a node depend on that Param.  Thus, by
      signaling a change in that Param, the EPQ machinery can just rescan the
      already-built test plan.
      
      This patch also adds a prohibition on set-returning functions in the
      targetlist of SELECT FOR UPDATE/SHARE.  This is needed to avoid the
      duplicate-output-tuple problem.  It seems fairly reasonable since the
      other restrictions on SELECT FOR UPDATE are meant to ensure that there
      is a unique correspondence between source tuples and result tuples,
      which an output SRF destroys as much as anything else does.
      9f2ee8f2
  3. Oct 23, 2009
  4. Oct 21, 2009
  5. Oct 20, 2009
  6. Oct 17, 2009
  7. Oct 16, 2009
  8. Oct 15, 2009
  9. Oct 14, 2009
  10. Oct 13, 2009
  11. Oct 12, 2009
    • Tom Lane's avatar
      Support GRANT/REVOKE ON ALL TABLES/SEQUENCES/FUNCTIONS IN SCHEMA. · 11ca04b4
      Tom Lane authored
      Petr Jelinek
      11ca04b4
    • Andrew Dunstan's avatar
    • Tom Lane's avatar
      Move the handling of SELECT FOR UPDATE locking and rechecking out of · 0adaf4cb
      Tom Lane authored
      execMain.c and into a new plan node type LockRows.  Like the recent change
      to put table updating into a ModifyTable plan node, this increases planning
      flexibility by allowing the operations to occur below the top level of the
      plan tree.  It's necessary in any case to restore the previous behavior of
      having FOR UPDATE locking occur before ModifyTable does.
      
      This partially refactors EvalPlanQual to allow multiple rows-under-test
      to be inserted into the EPQ machinery before starting an EPQ test query.
      That isn't sufficient to fix EPQ's general bogosity in the face of plans
      that return multiple rows per test row, though.  Since this patch is
      mostly about getting some plan node infrastructure in place and not about
      fixing ten-year-old bugs, I will leave EPQ improvements for another day.
      
      Another behavioral change that we could now think about is doing FOR UPDATE
      before LIMIT, but that too seems like it should be treated as a followon
      patch.
      0adaf4cb
  12. Oct 10, 2009
    • Tom Lane's avatar
      Improve similar_escape() in two different ways: · 05d24971
      Tom Lane authored
      * Stop escaping ? and {.  As of SQL:2008, SIMILAR TO is defined to have
      POSIX-compatible interpretation of ? as well as {m,n} and related constructs,
      so we should allow these things through to our regex engine.
      
      * Escape ^ and $.  It appears that our regex engine will treat ^^ at the
      beginning of the string the same as ^, and similarly for $$ at the end of
      the string, which meant that SIMILAR TO was effectively ignoring ^ at the
      start of the pattern and $ at the end.  Since these are not supposed to be
      metacharacters, this is a bug.
      
      The second part of this is arguably a back-patchable bug fix, but I'm
      hesitant to do that because it might break applications that are expecting
      something like "col SIMILAR TO '^foo$'" to work like a POSIX pattern.
      Seems safer to only change it at a major version boundary.
      
      Per discussion of an example from Doug Gorley.
      05d24971
    • Tom Lane's avatar
      Split the processing of INSERT/UPDATE/DELETE operations out of execMain.c. · 8a5849b7
      Tom Lane authored
      They are now handled by a new plan node type called ModifyTable, which is
      placed at the top of the plan tree.  In itself this change doesn't do much,
      except perhaps make the handling of RETURNING lists and inherited UPDATEs a
      tad less klugy.  But it is necessary preparation for the intended extension of
      allowing RETURNING queries inside WITH.
      
      Marko Tiikkaja
      8a5849b7
  13. Oct 09, 2009
    • Peter Eisentraut's avatar
      Use pg_get_triggerdef in pg_dump · b865d275
      Peter Eisentraut authored
      Add a variant of pg_get_triggerdef with a second argument "pretty" that
      causes the output to be formatted in the way pg_dump used to do.  Use this
      variant in pg_dump with server versions >= 8.5.
      
      This insulates pg_dump from most future trigger feature additions, such as
      the upcoming column triggers patch.
      
      Author: Itagaki Takahiro <itagaki.takahiro@oss.ntt.co.jp>
      b865d275
    • Tom Lane's avatar
      Remove very ancient tuple-counting infrastructure (IncrRetrieved() and · c970292a
      Tom Lane authored
      friends).  This code has all been ifdef'd out for many years, and doesn't
      seem to have any prospect of becoming any more useful in the future.
      EXPLAIN ANALYZE is what people use in practice, and I think if we did want
      process-wide counters we'd be more likely to put in dtrace events for that
      than try to resurrect this code.  Get rid of it so as to have one less detail
      to worry about while refactoring execMain.c.
      c970292a
  14. Oct 08, 2009
Loading