Skip to content
Snippets Groups Projects
  1. Sep 19, 2010
  2. Sep 18, 2010
    • Tom Lane's avatar
      Make sure we wait for protocol-level EOF when ending binary COPY IN. · f906e078
      Tom Lane authored
      The previous coding just terminated the COPY immediately after seeing
      the EOF marker (-1 where a row field count is expected).  The expected
      CopyDone or CopyFail message just got thrown away later, since we weren't
      in COPY mode anymore.  This behavior complicated matters for the JDBC
      driver, and arguably was the wrong thing in any case since a CopyFail
      message after the marker wouldn't be honored.
      
      Note that there is a behavioral change here: extra data after the EOF
      marker was silently ignored before, but now it will cause an error.
      Hence not back-patching, although this is arguably a bug.
      
      Per report and patch by Kris Jurka.
      f906e078
    • Tom Lane's avatar
      Give a suitable HINT when an INSERT's data source is a RowExpr containing · af0161e5
      Tom Lane authored
      the same number of columns expected by the insert.  This suggests that there
      were extra parentheses that converted the intended column list into a row
      expression.
      
      Original patch by Marko Tiikkaja, rather heavily editorialized by me.
      af0161e5
  3. Sep 17, 2010
  4. Sep 16, 2010
  5. Sep 15, 2010
    • Heikki Linnakangas's avatar
    • Heikki Linnakangas's avatar
      Use a latch to make startup process wake up and replay immediately when · 723d0184
      Heikki Linnakangas authored
      new WAL arrives via streaming replication. This reduces the latency, and
      also allows us to use a longer polling interval, which is good for energy
      efficiency.
      
      We still need to poll to check for the appearance of a trigger file, but
      the interval is now 5 seconds (instead of 100ms), like when waiting for
      a new WAL segment to appear in WAL archive.
      723d0184
    • Heikki Linnakangas's avatar
      Simplify Windows implementation of latches. There's no need to keep a · 236b6bc2
      Heikki Linnakangas authored
      dynamic pool of event handles, we can permanently assign one for each
      shared latch. Thanks to that, we no longer need a separate shared memory
      block for latches, and we don't need to know in advance how many shared
      latches there is, so you no longer need to remember to update
      NumSharedLatches when you introduce a new latch to the system.
      236b6bc2
    • Heikki Linnakangas's avatar
      Don't call OwnLatch while holding a spinlock. OwnLatch can elog() under · 1eab7a56
      Heikki Linnakangas authored
      some "can't happen" scenarios, and spinlocks should only be held for
      a few instructions anyway. As pointed out by Fujii Masao.
      1eab7a56
    • Tom Lane's avatar
      Fix join-removal logic for pseudoconstant and outerjoin-delayed quals. · 4e97631e
      Tom Lane authored
      In these cases a qual can get marked with the removable rel in its
      required_relids, but this is just to schedule its evaluation correctly, not
      because it really depends on the rel.  We were assuming that, in effect,
      we could throw away *all* quals so marked, which is nonsense.  Tighten up
      the logic to be a little more paranoid about which quals belong to the
      outer join being considered for removal, and arrange for all quals that
      don't belong to be updated so they will still get evaluated correctly.
      
      Also fix another problem that happened to be exposed by this test case,
      which was that make_join_rel() was failing to notice some cases where
      a constant-false qual could be used to prove a join relation empty.  If it's
      a pushed-down constant false, then the relation is empty even if it's an
      outer join, because the qual applies after the outer join expansion.
      
      Per report from Nathan Grange.  Back-patch into 9.0.
      4e97631e
  6. Sep 14, 2010
  7. Sep 13, 2010
  8. Sep 11, 2010
    • Joe Conway's avatar
      SERIALIZABLE transactions are actually implemented beneath the covers with · 5eb15c99
      Joe Conway authored
      transaction snapshots, i.e. a snapshot registered at the beginning of
      a transaction. Change variable naming and comments to reflect this reality
      in preparation for a future, truly serializable mode, e.g.
      Serializable Snapshot Isolation (SSI).
      
      For the moment transaction snapshots are still used to implement
      SERIALIZABLE, but hopefully not for too much longer. Patch by Kevin
      Grittner and Dan Ports with review and some minor wording changes by me.
      5eb15c99
    • Heikki Linnakangas's avatar
      Add missing #includes, needed on some platforms. This should make · 262c71ab
      Heikki Linnakangas authored
      the unixware buildfarm animals happy again.
      262c71ab
    • Heikki Linnakangas's avatar
      Introduce latches. A latch is a boolean variable, with the capability to · 2746e5f2
      Heikki Linnakangas authored
      wait until it is set. Latches can be used to reliably wait until a signal
      arrives, which is hard otherwise because signals don't interrupt select()
      on some platforms, and even when they do, there's race conditions.
      
      On Unix, latches use the so called self-pipe trick under the covers to
      implement the sleep until the latch is set, without race conditions. On
      Windows, Windows events are used.
      
      Use the new latch abstraction to sleep in walsender, so that as soon as
      a transaction finishes, walsender is woken up to immediately send the WAL
      to the standby. This reduces the latency between master and standby, which
      is good.
      
      Preliminary work by Fujii Masao. The latch implementation is by me, with
      helpful comments from many people.
      2746e5f2
  9. Sep 10, 2010
  10. Sep 07, 2010
  11. Sep 05, 2010
  12. Sep 04, 2010
  13. Sep 03, 2010
    • Tom Lane's avatar
      Install a data-type-based solution for protecting pg_get_expr(). · 303696c3
      Tom Lane authored
      Since the code underlying pg_get_expr() is not secure against malformed
      input, and can't practically be made so, we need to prevent miscreants
      from feeding arbitrary data to it.  We can do this securely by declaring
      pg_get_expr() to take a new datatype "pg_node_tree" and declaring the
      system catalog columns that hold nodeToString output to be of that type.
      There is no way at SQL level to create a non-null value of type pg_node_tree.
      Since the backend-internal operations that fill those catalog columns
      operate below the SQL level, they are oblivious to the datatype relabeling
      and don't need any changes.
    • Tom Lane's avatar
      In HEAD only, revert kluge solution for preventing misuse of pg_get_expr(). · 8ab6a6b4
      Tom Lane authored
      A data-type-based solution, which is much cleaner and more bulletproof,
      will follow shortly.  It seemed best to make this a separate commit though.
      8ab6a6b4
  14. Sep 02, 2010
    • Tom Lane's avatar
      Fix up flushing of composite-type typcache entries to be driven directly by · 9513918c
      Tom Lane authored
      SI invalidation events, rather than indirectly through the relcache.
      
      In the previous coding, we had to flush a composite-type typcache entry
      whenever we discarded the corresponding relcache entry.  This caused problems
      at least when testing with RELCACHE_FORCE_RELEASE, as shown in recent report
      from Jeff Davis, and might result in real-world problems given the kind of
      unexpected relcache flush that that test mechanism is intended to model.
      
      The new coding decouples relcache and typcache management, which is a good
      thing anyway from a structural perspective.  The cost is that we have to
      search the typcache linearly to find entries that need to be flushed.  There
      are a couple of ways we could avoid that, but at the moment it's not clear
      it's worth any extra trouble, because the typcache contains very few entries
      in typical operation.
      
      Back-patch to 8.2, the same as some other recent fixes in this general area.
      The patch could be carried back to 8.0 with some additional work, but given
      that it's only hypothetical whether we're fixing any problem observable in
      the field, it doesn't seem worth the work now.
      9513918c
    • Robert Haas's avatar
      Fix typo. Pointed out by Kevin Grittner. · f3c903f8
      Robert Haas authored
      f3c903f8
  15. Aug 30, 2010
  16. Aug 29, 2010
    • Tom Lane's avatar
      Reduce PANIC to ERROR in some occasionally-reported btree failure cases. · 8fa30f90
      Tom Lane authored
      This patch changes _bt_split() and _bt_pagedel() to throw a plain ERROR,
      rather than PANIC, for several cases that are reported from the field
      from time to time:
      * right sibling's left-link doesn't match;
      * PageAddItem failure during _bt_split();
      * parent page's next child isn't right sibling during _bt_pagedel().
      In addition the error messages for these cases have been made a bit
      more verbose, with additional values included.
      
      The original motivation for PANIC here was to capture core dumps for
      subsequent analysis.  But with so many users whose platforms don't capture
      core dumps by default, or who are unprepared to analyze them anyway, it's hard
      to justify a forced database restart when we can fairly easily detect the
      problems before we've reached the critical sections where PANIC would be
      necessary.  It is not currently known whether the reports of these messages
      indicate well-hidden bugs in Postgres, or are a result of storage-level
      malfeasance; the latter possibility suggests that we ought to try to be more
      robust even if there is a bug here that's ultimately found.
      
      Backpatch to 8.2.  The code before that is sufficiently different that
      it doesn't seem worth the trouble to back-port further.
      8fa30f90
  17. Aug 27, 2010
Loading