1. 20 Dec, 2011 1 commit
    • Tom Lane's avatar
      Avoid crashing when we have problems unlinking files post-commit. · d0024cd1
      Tom Lane authored
      smgrdounlink takes care to not throw an ERROR if it fails to unlink
      something, but that caution was rendered useless by commit
      33960006, which put an smgrexists call in
      front of it; smgrexists *does* throw error if anything looks funny, such
      as getting a permissions error from trying to open the file.  If that
      happens post-commit, you get a PANIC, and what's worse the same logic
      appears in the WAL replay code, so the database even fails to restart.
      
      Restore the intended behavior by removing the smgrexists call --- it isn't
      accomplishing anything that we can't do better by adjusting mdunlink's
      ideas of whether it ought to warn about ENOENT or not.
      
      Per report from Joseph Shraibman of unrecoverable crash after trying to
      drop a table whose FSM fork had somehow gotten chmod'd to 000 permissions.
      Backpatch to 8.4, where the bogus coding was introduced.
      d0024cd1
  2. 19 Dec, 2011 5 commits
    • Peter Eisentraut's avatar
      Add support for privileges on types · 72920557
      Peter Eisentraut authored
      This adds support for the more or less SQL-conforming USAGE privilege
      on types and domains.  The intent is to be able restrict which users
      can create dependencies on types, which restricts the way in which
      owners can alter types.
      
      reviewed by Yeb Havinga
      72920557
    • Alvaro Herrera's avatar
      Forgot catversion bump on previous patch · 05e992e9
      Alvaro Herrera authored
      Per Tom
      05e992e9
    • Tom Lane's avatar
      Rename updateNodeLink to spgUpdateNodeLink. · 8f57b064
      Tom Lane authored
      On reflection, the original name seems way too generic for a global
      symbol.  A quick check shows this is the only exported function name
      in SP-GiST that doesn't begin with "spg" or contain "SpGist", so the
      rest of them seem all right.
      8f57b064
    • Alvaro Herrera's avatar
      Allow CHECK constraints to be declared ONLY · 61d81bd2
      Alvaro Herrera authored
      This makes them enforceable only on the parent table, not on children
      tables.  This is useful in various situations, per discussion involving
      people bitten by the restrictive behavior introduced in 8.4.
      
      Message-Id:
      8762mp93iw.fsf@comcast.net
      CAFaPBrSMMpubkGf4zcRL_YL-AERUbYF_-ZNNYfb3CVwwEqc9TQ@mail.gmail.com
      
      Authors: Nikhil Sontakke, Alex Hunsaker
      Reviewed by Robert Haas and myself
      61d81bd2
    • Tom Lane's avatar
      Teach SP-GiST to do index-only scans. · 92203624
      Tom Lane authored
      Operator classes can specify whether or not they support this; this
      preserves the flexibility to use lossy representations within an index.
      
      In passing, move constant data about a given index into the rd_amcache
      cache area, instead of doing fresh lookups each time we start an index
      operation.  This is mainly to try to make sure that spgcanreturn() has
      insignificant cost; I still don't have any proof that it matters for
      actual index accesses.  Also, get rid of useless copying of FmgrInfo
      pointers; we can perfectly well use the relcache's versions in-place.
      92203624
  3. 18 Dec, 2011 8 commits
  4. 17 Dec, 2011 9 commits
    • Tom Lane's avatar
      Remove bogus entries in gist point_ops operator class. · 5577ca5b
      Tom Lane authored
      These entries could never be matched to an index clause because they don't
      have the index datatype on the left-hand side of the operator.  (Their
      commutators are in the opclass, which is sensible, but that doesn't mean
      these operators should be.)  Spotted by a test that I recently added to
      opr_sanity to catch exactly this type of thinko.  AFAICT there is no code
      in gistproc.c that is specifically meant to cover these cases, so nothing
      to remove at that level.
      5577ca5b
    • Tom Lane's avatar
      Fix some long-obsolete references to XLogOpenRelation. · dd45d3ad
      Tom Lane authored
      These were missed in commit a213f1ee,
      which removed that function.
      dd45d3ad
    • Tom Lane's avatar
      Fix compiler warning seen on 64-bit machine. · 85df5dbf
      Tom Lane authored
      85df5dbf
    • Tom Lane's avatar
      Add SP-GiST (space-partitioned GiST) index access method. · 8daeb5dd
      Tom Lane authored
      SP-GiST is comparable to GiST in flexibility, but supports non-balanced
      partitioned search structures rather than balanced trees.  As described at
      PGCon 2011, this new indexing structure can beat GiST in both index build
      time and query speed for search problems that it is well matched to.
      
      There are a number of areas that could still use improvement, but at this
      point the code seems committable.
      
      Teodor Sigaev and Oleg Bartunov, with considerable revisions by Tom Lane
      8daeb5dd
    • Andrew Dunstan's avatar
      Same clarification for pg_restore. · 19fc0fe3
      Andrew Dunstan authored
      19fc0fe3
    • Andrew Dunstan's avatar
      Clarify the post-data status on unvalidated check constraints. · 8900f663
      Andrew Dunstan authored
      Per gripe from Thom Brown.
      8900f663
    • Tom Lane's avatar
      Add missing 'static' qualifier. · fb4bbc81
      Tom Lane authored
      fb4bbc81
    • Robert Haas's avatar
      Various micro-optimizations for GetSnapshopData(). · 0d76b60d
      Robert Haas authored
      Heikki Linnakangas had the idea of rearranging GetSnapshotData to
      avoid checking for sub-XIDs when no top-level XID is present.  This
      patch does that plus further a bit of further, related rearrangement.
      Benchmarking show a significant improvement on unlogged tables at
      higher concurrency levels, and mostly indifferent result on permanent
      tables (which are presumably bottlenecked elsewhere).  Most of the
      benefit seems to come from using the new NormalTransactionIdPrecedes()
      macro rather than the function call TransactionIdPrecedes().
      0d76b60d
    • Andrew Dunstan's avatar
      Add --section option to pg_dump and pg_restore. · a4cd6abc
      Andrew Dunstan authored
      Valid values are --pre-data, data and post-data. The option can be
      given more than once. --schema-only is equivalent to
      --section=pre-data --section=post-data. --data-only is equivalent
      to --section=data.
      
      Andrew Dunstan, reviewed by Joachim Wieland and Josh Berkus.
      a4cd6abc
  5. 16 Dec, 2011 4 commits
    • Heikki Linnakangas's avatar
    • Andrew Dunstan's avatar
      include_if_exists facility for config file. · 6d09b210
      Andrew Dunstan authored
      This works the same as include, except that an error is not thrown
      if the file is missing. Instead the fact that it's missing is
      logged.
      
      Greg Smith, reviewed by Euler Taveira de Oliveira.
      6d09b210
    • Robert Haas's avatar
      Improve behavior of concurrent ALTER <relation> .. SET SCHEMA. · 1da5c119
      Robert Haas authored
      If the referrent of a name changes while we're waiting for the lock,
      we must recheck permissons.  We also now check the relkind before
      locking, since it's easy to do that long the way.
      
      Patch by me; review by Noah Misch.
      1da5c119
    • Robert Haas's avatar
      Improve behavior of concurrent rename statements. · 74a1d4fe
      Robert Haas authored
      Previously, renaming a table, sequence, view, index, foreign table,
      column, or trigger checked permissions before locking the object, which
      meant that if permissions were revoked during the lock wait, we would
      still allow the operation.  Similarly, if the original object is dropped
      and a new one with the same name is created, the operation will be allowed
      if we had permissions on the old object; the permissions on the new
      object don't matter.  All this is now fixed.
      
      Along the way, attempting to rename a trigger on a foreign table now gives
      the same error message as trying to create one there in the first place
      (i.e. that it's not a table or view) rather than simply stating that no
      trigger by that name exists.
      
      Patch by me; review by Noah Misch.
      74a1d4fe
  6. 15 Dec, 2011 3 commits
  7. 14 Dec, 2011 4 commits
  8. 12 Dec, 2011 2 commits
    • Tom Lane's avatar
      Move BKP_REMOVABLE bit from individual WAL records to WAL page headers. · 2dd9322b
      Tom Lane authored
      Removing this bit from xl_info allows us to restore the old limit of four
      (not three) separate pages touched by a WAL record, which is needed for the
      upcoming SP-GiST feature, and will likely be useful elsewhere in future.
      
      When we implemented XLR_BKP_REMOVABLE in 2007, we had to do it like that
      because no special WAL-visible action was taken when starting a backup.
      However, now we force a segment switch when starting a backup, so a
      compressing WAL archiver (such as pglesslog) that uses the state shown in
      the current page header will not be fooled as to removability of backup
      blocks.  The only downside is that the archiver will not return to
      compressing mode for up to one WAL page after the backup is over, which is
      a small price to pay for getting back the extra xl_info bit.  In any case
      the archiver could look for XLOG_BACKUP_END records if it thought it was
      worth the trouble to do so.
      
      Bump XLOG_PAGE_MAGIC since this is effectively a change in WAL format.
      2dd9322b
    • Heikki Linnakangas's avatar
      Revert the behavior of inet/cidr functions to not unpack the arguments. · 8409b604
      Heikki Linnakangas authored
      I forgot to change the functions to use the PG_GETARG_INET_PP() macro,
      when I changed DatumGetInetP() to unpack the datum, like Datum*P macros
      usually do. Also, I screwed up the definition of the PG_GETARG_INET_PP()
      macro, and didn't notice because it wasn't used.
      
      This fixes the memory leak when sorting inet values, as reported
      by Jochen Erwied and debugged by Andres Freund. Backpatch to 8.3, like
      the previous patch that broke it.
      8409b604
  9. 10 Dec, 2011 3 commits
  10. 09 Dec, 2011 1 commit