1. 31 12月, 2011 2 次提交
  2. 30 12月, 2011 3 次提交
  3. 29 12月, 2011 1 次提交
  4. 28 12月, 2011 5 次提交
  5. 27 12月, 2011 1 次提交
  6. 25 12月, 2011 1 次提交
    • T
      Rethink representation of index clauses' mapping to index columns. · 472d3935
      Tom Lane 提交于
      In commit e2c2c2e8 I made use of nested
      list structures to show which clauses went with which index columns, but
      on reflection that's a data structure that only an old-line Lisp hacker
      could love.  Worse, it adds unnecessary complication to the many places
      that don't much care which clauses go with which index columns.  Revert
      to the previous arrangement of flat lists of clauses, and instead add a
      parallel integer list of column numbers.  The places that care about the
      pairing can chase both lists with forboth(), while the places that don't
      care just examine one list the same as before.
      
      The only real downside to this is that there are now two more lists that
      need to be passed to amcostestimate functions in case they care about
      column matching (which btcostestimate does, so not passing the info is not
      an option).  Rather than deal with 11-argument amcostestimate functions,
      pass just the IndexPath and expect the functions to extract fields from it.
      That gets us down to 7 arguments which is better than 11, and it seems
      more future-proof against likely additions to the information we keep
      about an index path.
      472d3935
  7. 24 12月, 2011 1 次提交
    • T
      Improve planner's handling of duplicated index column expressions. · e2c2c2e8
      Tom Lane 提交于
      It's potentially useful for an index to repeat the same indexable column
      or expression in multiple index columns, if the columns have different
      opclasses.  (If they share opclasses too, the duplicate column is pretty
      useless, but nonetheless we've allowed such cases since 9.0.)  However,
      the planner failed to cope with this, because createplan.c was relying on
      simple equal() matching to figure out which index column each index qual
      is intended for.  We do have that information available upstream in
      indxpath.c, though, so the fix is to not flatten the multi-level indexquals
      list when putting it into an IndexPath.  Then we can rely on the sublist
      structure to identify target index columns in createplan.c.  There's a
      similar issue for index ORDER BYs (the KNNGIST feature), so introduce a
      multi-level-list representation for that too.  This adds a bit more
      representational overhead, but we might more or less buy that back by not
      having to search for matching index columns anymore in createplan.c;
      likewise btcostestimate saves some cycles.
      
      Per bug #6351 from Christian Rudolph.  Likely symptoms include the "btree
      index keys must be ordered by attribute" failure shown there, as well as
      "operator MMMM is not a member of opfamily NNNN".
      
      Although this is a pre-existing problem that can be demonstrated in 9.0 and
      9.1, I'm not going to back-patch it, because the API changes in the planner
      seem likely to break things such as index plugins.  The corner cases where
      this matters seem too narrow to justify possibly breaking things in a minor
      release.
      e2c2c2e8
  8. 23 12月, 2011 6 次提交
    • R
      Add bytea_agg, parallel to string_agg. · d5448c7d
      Robert Haas 提交于
      Pavel Stehule
      d5448c7d
    • R
      Typo fixes. · 0510b62d
      Robert Haas 提交于
      All noted by Jaime Casanova.
      0510b62d
    • R
      Catversion bump for commit 0e4611c0. · 99b60fc0
      Robert Haas 提交于
      It changed the format of stored rules.
      99b60fc0
    • R
      Add a security_barrier option for views. · 0e4611c0
      Robert Haas 提交于
      When a view is marked as a security barrier, it will not be pulled up
      into the containing query, and no quals will be pushed down into it,
      so that no function or operator chosen by the user can be applied to
      rows not exposed by the view.  Views not configured with this
      option cannot provide robust row-level security, but will perform far
      better.
      
      Patch by KaiGai Kohei; original problem report by Heikki Linnakangas
      (in October 2009!).  Review (in earlier versions) by Noah Misch and
      others.  Design advice by Tom Lane and myself.  Further review and
      cleanup by me.
      0e4611c0
    • P
      Add ALTER DOMAIN ... RENAME · f90dd280
      Peter Eisentraut 提交于
      You could already rename domains using ALTER TYPE, but with this new
      command it is more consistent with how other commands treat domains as
      a subcategory of types.
      f90dd280
    • R
      Don't forget to de-escape the password field in .pgpass. · 8d15e3ec
      Robert Haas 提交于
      This has been broken just about forever (or more specifically, commit
      7f4981f4) and nobody noticed until
      Richard Huxton reported it recently.  Analysis and fix by Ross
      Reedstrom, although I didn't use his patch.  This doesn't seem
      important enough to back-patch and is mildly backward incompatible, so
      I'm just doing this in master.
      8d15e3ec
  9. 22 12月, 2011 2 次提交
    • T
      Update per-column ACLs, not only per-table ACL, when changing table owner. · c31224e2
      Tom Lane 提交于
      We forgot to modify column ACLs, so privileges were still shown as having
      been granted by the old owner.  This meant that neither the new owner nor
      a superuser could revoke the now-untraceable-to-table-owner permissions.
      Per bug #6350 from Marc Balmer.
      
      This has been wrong since column ACLs were added, so back-patch to 8.4.
      c31224e2
    • R
      Improve behavior of concurrent CLUSTER. · cbe24a6d
      Robert Haas 提交于
      In the previous coding, a user could queue up for an AccessExclusiveLock
      on a table they did not have permission to cluster, thus potentially
      interfering with access by authorized users who got stuck waiting behind
      the AccessExclusiveLock.  This approach avoids that.  cluster() has the
      same permissions-checking requirements as REINDEX TABLE, so this commit
      moves the now-shared callback to tablecmds.c and renames it, per
      discussion with Noah Misch.
      cbe24a6d
  10. 21 12月, 2011 5 次提交
    • R
      Take fewer snapshots. · d573e239
      Robert Haas 提交于
      When a PORTAL_ONE_SELECT query is executed, we can opportunistically
      reuse the parse/plan shot for the execution phase.  This cuts down the
      number of snapshots per simple query from 2 to 1 for the simple
      protocol, and 3 to 2 for the extended protocol.  Since we are only
      reusing a snapshot taken early in the processing of the same protocol
      message, the change shouldn't be user-visible, except that the remote
      possibility of the planning and execution snapshots being different is
      eliminated.
      
      Note that this change does not make it safe to assume that the parse/plan
      snapshot will certainly be reused; that will currently only happen if
      PortalStart() decides to use the PORTAL_ONE_SELECT strategy.  It might
      be worth trying to provide some stronger guarantees here in the future,
      but for now we don't.
      
      Patch by me; review by Dimitri Fontaine.
      d573e239
    • R
      sepgsql: Check CREATE permissions for some object types. · e1042a34
      Robert Haas 提交于
      KaiGai Kohei, reviewed by Dimitri Fontaine and me.
      e1042a34
    • R
      Shave a few cycles in string_agg(). · 7f0e4bb8
      Robert Haas 提交于
      Pavel Stehule
      7f0e4bb8
    • T
      Fix gincostestimate to handle ScalarArrayOpExpr reasonably. · 1db5af27
      Tom Lane 提交于
      The original coding of this function overlooked the possibility that
      it could be passed anything except simple OpExpr indexquals.  But
      ScalarArrayOpExpr is possible too, and the code would probably crash
      (and surely give ridiculous answers) in such a case.  Add logic to try
      to estimate sanely for such cases.
      
      In passing, fix the treatment of inner-indexscan cost estimation: it was
      failing to scale up properly for multiple iterations of a nestloop.
      (I think somebody might've thought that index_pages_fetched() is linear,
      but of course it's not.)
      
      Report, diagnosis, and preliminary patch by Marti Raudsepp; I refactored
      it a bit and fixed the cost estimation.
      
      Back-patch into 9.1 where the bogus code was introduced.
      1db5af27
    • T
      Avoid crashing when we have problems unlinking files post-commit. · d0024cd1
      Tom Lane 提交于
      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
  11. 20 12月, 2011 5 次提交
    • P
      Add support for privileges on types · 72920557
      Peter Eisentraut 提交于
      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
    • A
      Forgot catversion bump on previous patch · 05e992e9
      Alvaro Herrera 提交于
      Per Tom
      05e992e9
    • T
      Rename updateNodeLink to spgUpdateNodeLink. · 8f57b064
      Tom Lane 提交于
      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
    • A
      Allow CHECK constraints to be declared ONLY · 61d81bd2
      Alvaro Herrera 提交于
      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
    • T
      Teach SP-GiST to do index-only scans. · 92203624
      Tom Lane 提交于
      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
  12. 19 12月, 2011 5 次提交
  13. 18 12月, 2011 3 次提交