1. 22 6月, 2011 10 次提交
    • 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 some regression tests for serial pseudotypes. · 431ab0e8
      Robert Haas 提交于
      Josh Kupershmidt
      431ab0e8
    • 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
    • R
      Performance tuning advice for SSI. · 771a9f69
      Robert Haas 提交于
      Kevin Grittner, with additional wordsmithing by me.
      771a9f69
    • 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
    • T
      Apply upstream fix for blowfish signed-character bug (CVE-2011-2483). · ca59dfa6
      Tom Lane 提交于
      A password containing a character with the high bit set was misprocessed
      on machines where char is signed (which is most).  This could cause the
      preceding one to three characters to fail to affect the hashed result,
      thus weakening the password.  The result was also unportable, and failed
      to match some other blowfish implementations such as OpenBSD's.
      
      Since the fix changes the output for such passwords, upstream chose
      to provide a compatibility hack: password salts beginning with $2x$
      (instead of the usual $2a$ for blowfish) are intentionally processed
      "wrong" to give the same hash as before.  Stored password hashes can
      thus be modified if necessary to still match, though it'd be better
      to change any affected passwords.
      
      In passing, sync a couple other upstream changes that marginally improve
      performance and/or tighten error checking.
      
      Back-patch to all supported branches.  Since this issue is already
      public, no reason not to commit the fix ASAP.
      ca59dfa6
  2. 21 6月, 2011 5 次提交
    • H
      Adjust the alternative expected output file for prepared_xacts test case, · 38c0e721
      Heikki Linnakangas 提交于
      used when max_prepared_transactions=0, for the recent changes in the test
      case.
      38c0e721
    • 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 missed use of "cp -i" in an example, per Fujii Masao. · 31e8ab4d
      Tom Lane 提交于
      Also be more careful about markup: use & not just &.
      31e8ab4d
    • 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
  3. 20 6月, 2011 5 次提交
  4. 19 6月, 2011 3 次提交
  5. 18 6月, 2011 5 次提交
    • T
      Don't use "cp -i" in the example WAL archive_command. · a2624c68
      Tom Lane 提交于
      This is a dangerous example to provide because on machines with GNU cp,
      it will silently do the wrong thing and risk archive corruption.  Worse,
      during the 9.0 cycle somebody "improved" the discussion by removing the
      warning that used to be there about that, and instead leaving the
      impression that the command would work as desired on most Unixen.
      It doesn't.  Try to rectify the damage by providing an example that is safe
      most everywhere, and then noting that you can try cp -i if you want but
      you'd better test that.
      
      In back-patching this to all supported branches, I also added an example
      command for Windows, which wasn't provided before 9.0.
      a2624c68
    • A
      Set FLEXIBLE_ARRAY_MEMBER to empty for MSVC. · ddef31c1
      Andrew Dunstan 提交于
      Per gripe from Tom Lane. I have tested this with VC 2008, and assume
      it will work with earlier versions.
      ddef31c1
    • T
      Obtain table locks as soon as practical during pg_dump. · 68d977a7
      Tom Lane 提交于
      For some reason, when we (I) added table lock acquisition to pg_dump,
      we didn't think about making it happen as soon as possible after the
      start of the transaction.  What with subsequent additions, there was
      actually quite a lot going on before we got around to that; which sort
      of defeats the purpose.  Rearrange the order of calls in dumpSchema()
      to close the risk window as much as we easily can.  Back-patch to all
      supported branches.
      68d977a7
    • 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
  6. 17 6月, 2011 8 次提交
    • R
      Fix minor thinko in ProcGlobalShmemSize(). · c573486c
      Robert Haas 提交于
      There's no need to add space for startupBufferPinWaitBufId, because
      it's part of the PROC_HDR object for which this function already
      allocates space.
      
      This has been wrong for a while, but the only consequence is that our
      shared memory allocation is increased by 4 bytes, so no back-patch.
      c573486c
    • R
      Fix typo. · d61ec7c7
      Robert Haas 提交于
      Per Josh Kupershmidt and Tom Lane.
      d61ec7c7
    • A
      Define FLEXIBLE_ARRAY_MEMBER for MSVC. · 236a11dc
      Andrew Dunstan 提交于
      236a11dc
    • T
      Index tuple data arrays using Anum_xxx symbolic constants instead of "i++". · bfcb9328
      Tom Lane 提交于
      We had already converted most places to this style, but this patch gets the
      last few that were still doing it the old way.  The main advantage is that
      this exposes a greppable name for each target column, rather than having
      to rely on comments (which a couple of places failed to provide anyhow).
      
      Richard Hopkins, additional work by me to clean up update_attstats() too
      bfcb9328
    • P
      Avoid compiler warnings due to possibly unused variables · 7357558f
      Peter Eisentraut 提交于
      gcc 4.6 complains about these because of the new option
      -Wunused-but-set-variable which comes in with -Wall, so cast them to
      void, which avoids the warning.
      7357558f
    • P
      Start using flexible array members · dbbba527
      Peter Eisentraut 提交于
      Flexible array members are a C99 feature that avoids "cheating" in the
      declaration of variable-length arrays at the end of structs.  With
      Autoconf support, this should be transparent for older compilers.
      
      We start with one use in gist.h because gcc 4.6 started to raise a
      warning there.  Over time, it can be expanded to other places in the
      source, but they will likely need some review of sizeof and offsetof
      usage.  The current change in gist.h appears to be safe in this
      regard.
      dbbba527
    • H
      Update README-SSI. Add a section to describe the "dangerous structure" that · 78475b0e
      Heikki Linnakangas 提交于
      SSI is based on, as well as the optimizations about relative commit times
      and read-only transactions. Plus a bunch of other misc fixes and
      improvements.
      
      Dan Ports
      78475b0e
    • A
      Fix typo · f3008c31
      Alvaro Herrera 提交于
      f3008c31
  7. 16 6月, 2011 4 次提交