1. 27 6月, 2011 5 次提交
    • R
      Avoid having two copies of the HOT-chain search logic. · 4da99ea4
      Robert Haas 提交于
      It's been like this since HOT was originally introduced, but the logic
      is complex enough that this is a recipe for bugs, as we've already
      found out with SSI.  So refactor heap_hot_search_buffer() so that it
      can satisfy the needs of index_getnext(), and make index_getnext() use
      that rather than duplicating the logic.
      
      This change was originally proposed by Heikki Linnakangas as part of a
      larger refactoring oriented towards allowing index-only scans.  I
      extracted and adjusted this part, since it seems to have independent
      merit.  Review by Jeff Davis.
      4da99ea4
    • P
      Add the possibility to pass --flag arguments to xgettext calls · cb5a7bc2
      Peter Eisentraut 提交于
      The --flag argument can be used to tell xgettext the arguments of
      which functions should be flagged with c-format in the PO files,
      instead of guessing based on the presence of format specifiers, which
      fails if no format specifiers are present but the translation
      accidentally introduces one.
      
      Appropriate flag settings have been added for each message catalog.
      
      based on a patch by Christoph Berg for bug #6066
      cb5a7bc2
    • P
      Refactor common gettext triggers · 7a5a843a
      Peter Eisentraut 提交于
      Put gettext trigger words that are common to the backend and backend
      modules into a makefile variable to include everywhere, to avoid
      error-prone repetitions.
      7a5a843a
    • P
      Make _ be automatically included in GETTEXT_TRIGGERS · c6ef1393
      Peter Eisentraut 提交于
      Since it's globally defined in c.h, it should be treated as a gettext
      trigger everywhere.
      c6ef1393
    • P
      Replace := by = in nls.mk files · 1b11e239
      Peter Eisentraut 提交于
      It currently doesn't make a difference, but it's inconsistent with
      most other usage, and it might interfere with a future patch, so I'll
      change it all in a separate commit.
      
      Also, replace tabs with spaces for alignment.
      1b11e239
  2. 24 6月, 2011 1 次提交
  3. 23 6月, 2011 3 次提交
  4. 22 6月, 2011 7 次提交
    • H
      Remove pointless const qualifiers from function arguments in the SSI code. · 5da417f7
      Heikki Linnakangas 提交于
      As Tom Lane pointed out, "const Relation foo" doesn't guarantee that you
      can't modify the data the "foo" pointer points to. It just means that you
      can't change the pointer to point to something else within the function,
      which is not very useful.
      5da417f7
    • R
      Make the visibility map crash-safe. · 503c7305
      Robert Haas 提交于
      This involves two main changes from the previous behavior.  First,
      when we set a bit in the visibility map, emit a new WAL record of type
      XLOG_HEAP2_VISIBLE.  Replay sets the page-level PD_ALL_VISIBLE bit and
      the visibility map bit.  Second, when inserting, updating, or deleting
      a tuple, we can no longer get away with clearing the visibility map
      bit after releasing the lock on the corresponding heap page, because
      an intervening crash might leave the visibility map bit set and the
      page-level bit clear.  Making this work requires a bit of interface
      refactoring.
      
      In passing, a few minor but related cleanups: change the test in
      visibilitymap_set and visibilitymap_clear to throw an error if the
      wrong page (or no page) is pinned, rather than silently doing nothing;
      this case should never occur.  Also, remove duplicate definitions of
      InvalidXLogRecPtr.
      
      Patch by me, review by Noah Misch.
      503c7305
    • R
      Add smallserial pseudotype. · 61307dcc
      Robert Haas 提交于
      This is just like serial and bigserial, except it generates an int2
      column rather than int4 or int8.
      
      Mike Pultz, reviewed by Brar Piening and Josh Kupershmidt
      61307dcc
    • R
      Make deadlock_timeout PGC_SUSET rather than PGC_SIGHUP. · 7095003c
      Robert Haas 提交于
      This allows deadlock_timeout to be reduced for transactions that are
      particularly likely to be involved in a deadlock, thus detecting it
      more quickly.  It is also potentially useful as a poor-man's deadlock
      priority mechanism: a transaction with a high deadlock_timeout is less
      likely to be chosen as the victim than one with a low
      deadlock_timeout.  Since that could be used to game the system, we
      make this PGC_SUSET rather than PGC_USERSET.
      
      At some point, it might be worth thinking about a more explicit
      priority mechanism, since using this is far from fool-proof.  But
      let's see whether there's enough use case to justify the additional
      work before we go down that route.
      
      Noah Misch, reviewed by Shigeru Hanada
      7095003c
    • R
      Add notion of a "transform function" that can simplify function calls. · 8f9fe6ed
      Robert Haas 提交于
      Initially, we use this only to eliminate calls to the varchar()
      function in cases where the length is not being reduced and, therefore,
      the function call is equivalent to a RelabelType operation.  The most
      significant effect of this is that we can avoid a table rewrite when
      changing a varchar(X) column to a varchar(Y) column, where Y > X.
      
      Noah Misch, reviewed by me and Alexey Klyukin
      8f9fe6ed
    • T
      Minor editing for README-SSI. · a3290f65
      Tom Lane 提交于
      Fix some grammatical issues, try to clarify a couple of proofs, make the
      terminology more consistent.
      a3290f65
    • P
      Message style and spelling improvements · e2a0cb1a
      Peter Eisentraut 提交于
      e2a0cb1a
  5. 21 6月, 2011 3 次提交
    • H
      Fix bug in PreCommit_CheckForSerializationFailure. A transaction that has · 1eea8e8a
      Heikki Linnakangas 提交于
      already been marked as PREPARED cannot be killed. Kill the current
      transaction instead.
      
      One of the prepared_xacts regression tests actually hits this bug. I
      removed the anomaly from the duplicate-gids test so that it fails in the
      intended way, and added a new test to check serialization failures with
      a prepared transaction.
      
      Dan Ports
      1eea8e8a
    • H
      Fix bug introduced by recent SSI patch to merge ROLLED_BACK and · 7cb2ff96
      Heikki Linnakangas 提交于
      MARKED_FOR_DEATH flags into one. We still need the ROLLED_BACK flag to
      mark transactions that are in the process of being rolled back. To be
      precise, ROLLED_BACK now means that a transaction has already been
      discounted from the count of transactions with the oldest xmin, but not
      yet removed from the list of active transactions.
      
      Dan Ports
      7cb2ff96
    • T
      Fix thinko in previous patch for optimizing EXISTS-within-EXISTS. · cd1f0d04
      Tom Lane 提交于
      When recursing after an optimization in pull_up_sublinks_qual_recurse, the
      available_rels value passed down must include only the relations that are
      in the righthand side of the new SEMI or ANTI join; it's incorrect to pull
      up a sub-select that refers to other relations, as seen in the added test
      case.  Per report from BangarRaju Vadapalli.
      
      While at it, rethink the idea of recursing below a NOT EXISTS.  That is
      essentially the same situation as pulling up ANY/EXISTS sub-selects that
      are in the ON clause of an outer join, and it has the same disadvantage:
      we'd force the two joins to be evaluated according to the syntactic nesting
      order, because the lower join will most likely not be able to commute with
      the ANTI join.  That could result in having to form a rather large join
      product, whereas the handling of a correlated subselect is not quite that
      dumb.  So until we can handle those cases better, #ifdef NOT_USED that
      case.  (I think it's okay to pull up in the EXISTS/ANY cases, because SEMI
      joins aren't so inflexible about ordering.)
      
      Back-patch to 8.4, same as for previous patch in this area.  Fortunately
      that patch hadn't made it into any shipped releases yet.
      cd1f0d04
  6. 20 6月, 2011 3 次提交
  7. 19 6月, 2011 2 次提交
  8. 18 6月, 2011 2 次提交
    • R
      Add overflow checks to int4 and int8 versions of generate_series(). · 062780ec
      Robert Haas 提交于
      The previous code went into an infinite loop after overflow.  In fact,
      an overflow is not really an error; it just means that the current
      value is the last one we need to return.  So, just arrange to stop
      immediately when overflow is detected.
      
      Back-patch all the way.
      062780ec
    • R
      Fix crash in CREATE UNLOGGED TABLE. · bf347c60
      Robert Haas 提交于
      The code that created the init fork neglected to make sure that the
      relation was open at the smgr level before attempting to invoke smgr.
      This didn't happen every time; only when the relcache entry was rebuilt
      along the way.
      
      Per report from Garick Hamlin.
      bf347c60
  9. 17 6月, 2011 5 次提交
  10. 16 6月, 2011 6 次提交
    • T
      307a4c2c
    • H
      cb94db91
    • S
      Respect Hot Standby controls while recycling btree index pages. · 758bd2a4
      Simon Riggs 提交于
      Btree pages were recycled after VACUUM deletes all records on a
      page and then a subsequent VACUUM occurs after the RecentXmin
      horizon is reached. Using RecentXmin meant that we did not respond
      correctly to the user controls provide to avoid Hot Standby
      conflicts and so spurious conflicts could be generated in some
      workload combinations. We now reuse pages only when we reach
      RecentGlobalXmin, which can be much later in the presence of long
      running queries and is also controlled by vacuum_defer_cleanup_age
      and hot_standby_feedback.
      
      Noah Misch and Simon Riggs
      758bd2a4
    • T
      Use single quotes in preference to double quotes for protecting pathnames. · 1568fa75
      Tom Lane 提交于
      Per recommendation from Peter.  Neither choice is bulletproof, but this
      is the existing style and it does help prevent unexpected environment
      variable substitution.
      1568fa75
    • T
      Rework parsing of ConstraintAttributeSpec to improve NOT VALID handling. · e1ccaff6
      Tom Lane 提交于
      The initial commit of the ALTER TABLE ADD FOREIGN KEY NOT VALID feature
      failed to support labeling such constraints as deferrable.  The best fix
      for this seems to be to fold NOT VALID into ConstraintAttributeSpec.
      That's a bit more general than the documented syntax, but it allows
      better-targeted syntax error messages.
      
      In addition, do some mostly-but-not-entirely-cosmetic code review for
      the whole NOT VALID patch.
      e1ccaff6
    • T
      Fix failure to account for memory used by tuplestore_putvalues(). · 10db3de6
      Tom Lane 提交于
      This oversight could result in a tuplestore using much more than the
      intended amount of memory.  It would only happen in a code path that loaded
      a tuplestore via tuplestore_putvalues(), and many of those won't emit huge
      amounts of data; but cases such as holdable cursors and plpgsql's RETURN
      NEXT command could have the problem.  The fix ensures that the tuplestore
      will switch to write-to-disk mode when it overruns work_mem.
      
      The potential overrun was finite, because we would still count the space
      used by the tuple pointer array, so the tuplestore code would eventually
      flip into write-to-disk mode anyway.  When storing wide tuples we would
      go far past the expected work_mem usage before that happened; but this
      may account for the lack of prior reports.
      
      Back-patch to 8.4, where tuplestore_putvalues was introduced.
      
      Per bug #6061 from Yann Delorme.
      10db3de6
  11. 15 6月, 2011 3 次提交