Skip to content
Snippets Groups Projects
  1. Apr 21, 2011
    • Robert Haas's avatar
      Allow ALTER TYPE .. ADD ATTRIBUTE .. CASCADE to recurse to descendants. · a0e8df52
      Robert Haas authored
      Without this, adding an attribute to a typed table with an inheritance
      child fails, which is surprising.
      
      Noah Misch, with minor changes by me.
      a0e8df52
    • Robert Haas's avatar
      Fix use of incorrect constant RemoveRoleFromObjectACL. · 8ede4279
      Robert Haas authored
      This could cause failures when DROP OWNED BY attempt to remove default
      privileges on sequences.  Back-patching to 9.0.
      
      Shigeru Hanada
      8ede4279
    • Robert Haas's avatar
      Typo fix. · 0babcdf6
      Robert Haas authored
      0babcdf6
    • Robert Haas's avatar
      Allow ALTER TABLE name {OF type | NOT OF}. · 68739ba8
      Robert Haas authored
      This syntax allows a standalone table to be made into a typed table,
      or a typed table to be made standalone.  This is possibly a mildly
      useful feature in its own right, but the real motivation for this
      change is that we need it to make pg_upgrade work with typed tables.
      This doesn't actually fix that problem, but it's necessary
      infrastructure.
      
      Noah Misch
      68739ba8
    • Tom Lane's avatar
      Fix bugs in indexing of in-doubt HOT-updated tuples. · 520bcd9c
      Tom Lane authored
      If we find a DELETE_IN_PROGRESS HOT-updated tuple, it is impossible to know
      whether to index it or not except by waiting to see if the deleting
      transaction commits.  If it doesn't, the tuple might again be LIVE, meaning
      we have to index it.  So wait and recheck in that case.
      
      Also, we must not rely on ii_BrokenHotChain to decide that it's possible to
      omit tuples from the index.  That could result in omitting tuples that we
      need, particularly in view of yesterday's fixes to not necessarily set
      indcheckxmin (but it's broken even without that, as per my analysis today).
      Since this is just an extremely marginal performance optimization, dropping
      the test shouldn't hurt.
      
      These cases are only expected to happen in system catalogs (they're
      possible there due to early release of RowExclusiveLock in most
      catalog-update code paths).  Since reindexing of a system catalog isn't a
      particularly performance-critical operation anyway, there's no real need to
      be concerned about possible performance degradation from these changes.
      
      The worst aspects of this bug were introduced in 9.0 --- 8.x will always
      wait out a DELETE_IN_PROGRESS tuple.  But I think dropping index entries
      on the strength of ii_BrokenHotChain is dangerous even without that, so
      back-patch removal of that optimization to 8.3 and 8.4.
      520bcd9c
    • Tom Lane's avatar
      Set indcheckxmin true when REINDEX fixes an invalid or not-ready index. · 9ad7e155
      Tom Lane authored
      Per comment from Greg Stark, it's less clear that HOT chains don't conflict
      with the index than it would be for a valid index.  So, let's preserve the
      former behavior that indcheckxmin does get set when there are
      potentially-broken HOT chains in this case.  This change does not cause any
      pg_index update that wouldn't have happened anyway, so we're not
      re-introducing the previous bug with pg_index updates, and surely the case
      is not significant from a performance standpoint; so let's be as
      conservative as possible.
      9ad7e155
  2. Apr 20, 2011
    • Tom Lane's avatar
      Make plan_cluster_use_sort cope with no IndexOptInfo for the target index. · 5b8e4429
      Tom Lane authored
      The original coding assumed that such a case represents caller error, but
      actually get_relation_info will omit generating an IndexOptInfo for any
      index it thinks is unsafe to use.  Therefore, handle this case by returning
      "true" to indicate that a seqscan-and-sort is the preferred way to
      implement the CLUSTER operation.  New bug in 9.1, no backpatch needed.
      Per bug #5985 from Daniel Grace.
      5b8e4429
    • Peter Eisentraut's avatar
      Fix PL/Python traceback for error in separate file · 395fcac2
      Peter Eisentraut authored
      It assumed that the lineno from the traceback always refers to the
      PL/Python function.  If you created a PL/Python function that imports
      some code, runs it, and that code raises an exception, PLy_traceback
      would get utterly confused.
      
      Now we look at the file name reported with the traceback and only
      print the source line if it came from the PL/Python function.
      
      Jan Urbański
      395fcac2
    • Bruce Momjian's avatar
      Pg_upgrade C comment addition. · 0262251c
      Bruce Momjian authored
      Document why we do the missing new database check during the check
      phase.
      0262251c
    • Heikki Linnakangas's avatar
      Quotes in strings injected into bki file need to escaped. In particular, · 2b919118
      Heikki Linnakangas authored
      "People's Republic of China" locale on Windows was causing initdb to fail.
      
      This fixes bug #5818 reported by yulei. On master, this makes the mapping
      of "People's Republic of China" to just "China" obsolete. In 9.0 and 8.4,
      just fix the escaping. Earlier versions didn't have locale names in bki
      file.
      2b919118
    • Bruce Momjian's avatar
      Throw error for mismatched pg_upgrade clusters · 7228d029
      Bruce Momjian authored
      If someone removes the 'postgres' database from the old cluster and the
      new cluster has a 'postgres' database, the number of databases will not
      match.  We actually could upgrade such a setup, but it would violate the
      1-to-1 mapping of database counts, so we throw an error instead.
      
      Previously they got an error during the upgrade, and not at the check
      stage; PG 9.0.4 does the same.
      7228d029
    • Bruce Momjian's avatar
      Add C comment · 03419447
      Bruce Momjian authored
      Add C comment about why we throw an error if the pg_upgrade old/new
      database counts don't match.
      03419447
    • Tom Lane's avatar
      Avoid changing an index's indcheckxmin horizon during REINDEX. · 8c19977e
      Tom Lane authored
      There can never be a need to push the indcheckxmin horizon forward, since
      any HOT chains that are actually broken with respect to the index must
      pre-date its original creation.  So we can just avoid changing pg_index
      altogether during a REINDEX operation.
      
      This offers a cleaner solution than my previous patch for the problem
      found a few days ago that we mustn't try to update pg_index while we are
      reindexing it.  System catalog indexes will always be created with
      indcheckxmin = false during initdb, and with this modified code we should
      never try to change their pg_index entries.  This avoids special-casing
      system catalogs as the former patch did, and should provide a performance
      benefit for many cases where REINDEX formerly caused an index to be
      considered unusable for a short time.
      
      Back-patch to 8.3 to cover all versions containing HOT.  Note that this
      patch changes the API for index_build(), but I believe it is unlikely that
      any add-on code is calling that directly.
      8c19977e
  3. Apr 19, 2011
  4. Apr 18, 2011
    • Tom Lane's avatar
      Fix handling of collations in multi-row VALUES constructs. · 918854cc
      Tom Lane authored
      Per spec we ought to apply select_common_collation() across the expressions
      in each column of the VALUES table.  The original coding was just taking
      the first row and assuming it was representative.
      
      This patch adds a field to struct RangeTblEntry to carry the resolved
      collations, so initdb is forced for changes in stored rule representation.
      918854cc
    • Robert Haas's avatar
      Only allow typed tables to hang off composite types, not e.g. tables. · 04db0fdb
      Robert Haas authored
      This also ensures that we take a relation lock on the composite type when
      creating a typed table, which is necessary to prevent the composite type
      and the typed table from getting out of step in the face of concurrent
      DDL.
      
      Noah Misch, with some changes.
      04db0fdb
    • Andrew Dunstan's avatar
    • Robert Haas's avatar
      recoveryStopsHere() must check the resource manager ID. · aea1f24c
      Robert Haas authored
      Before commit c016ce72, this wasn't
      needed, but now that multiple resource manager IDs can percolate down
      through here, we have to make sure we know which one we've got.
      Otherwise, we can confuse (for example) an XLOG_XACT_COMMIT record
      with an XLOG_CHECKPOINT_SHUTDOWN record.
      
      Review by Jaime Casanova
      aea1f24c
    • Tom Lane's avatar
      Fix assorted infelicities in collation handling in psql's describe.c. · c29abc8b
      Tom Lane authored
      In \d, be more careful to print collation only if it's not the default for
      the column's data type.  Avoid assuming that the name "default" is magic.
      
      Fix \d on a composite type so that it will print per-column collations.
      It's no longer the case that a composite type cannot have modifiers.
      (In consequence, the expected outputs for composite-type regression tests
      change.)
      
      Fix \dD so that it will print collation for a domain, again only if it's
      not the same as the base type's collation.
      c29abc8b
  5. Apr 17, 2011
  6. Apr 16, 2011
    • Tom Lane's avatar
      Simplify reindex_relation's API. · 2d3320d3
      Tom Lane authored
      For what seem entirely historical reasons, a bitmask "flags" argument was
      recently added to reindex_relation without subsuming its existing boolean
      argument into that bitmask.  This seems a bit bizarre, so fold them
      together.
      2d3320d3
    • Tom Lane's avatar
      Clean up collation processing in prepunion.c. · 121f49a0
      Tom Lane authored
      This area was a few bricks shy of a load, and badly under-commented too.
      We have to ensure that the generated targetlist entries for a set-operation
      node expose the correct collation for each entry, since higher-level
      processing expects the tlist to reflect the true ordering of the plan's
      output.
      
      This hackery wouldn't be necessary if SortGroupClause carried collation
      info ... but making it do so would inject more pain in the parser than
      would be saved here.  Still, we might want to rethink that sometime.
      121f49a0
    • Peter Eisentraut's avatar
      Set client encoding explicitly in plpython_unicode test · 5809a645
      Peter Eisentraut authored
      This will (hopefully) eliminate the need for the
      plpython_unicode_0.out expected file.
      5809a645
    • Tom Lane's avatar
      Prevent incorrect updates of pg_index while reindexing pg_index itself. · 4b6106cc
      Tom Lane authored
      The places that attempt to change pg_index.indcheckxmin during a reindexing
      operation cannot be executed safely if pg_index itself is the subject of
      the operation.  This is the explanation for a couple of recent reports of
      VACUUM FULL failing with
      	ERROR:  duplicate key value violates unique constraint "pg_index_indexrelid_index"
      	DETAIL:  Key (indexrelid)=(2678) already exists.
      
      However, there isn't any real need to update indcheckxmin in such a
      situation, if we assume that pg_index can never contain a truly broken HOT
      chain.  This assumption holds if new indexes are never created on it during
      concurrent operations, which is something we don't consider safe for any
      system catalog, not just pg_index.  Accordingly, modify the code to not
      manipulate indcheckxmin when reindexing any system catalog.
      
      Back-patch to 8.3, where HOT was introduced.  The known failure scenarios
      involve 9.0-style VACUUM FULL, so there might not be any real risk before
      9.0, but let's not assume that.
      4b6106cc
    • Tom Lane's avatar
      ff5565f0
  7. Apr 15, 2011
    • Tom Lane's avatar
      Guard against incoming rowcount estimate of NaN in cost_mergejoin(). · 72826fb3
      Tom Lane authored
      Although rowcount estimates really ought not be NaN, a bug elsewhere
      could perhaps result in that, and that would cause Assert failure in
      cost_mergejoin, which I believe to be the explanation for bug #5977 from
      Anton Kuznetsov.  Seems like a good idea to expend a couple more cycles
      to prevent that, even though the real bug is elsewhere.  Not back-patching,
      though, because we don't encourage running production systems with
      Asserts on.
      72826fb3
    • Heikki Linnakangas's avatar
      setlocale() on Windows doesn't work correctly if the locale name contains · d5a7bf8c
      Heikki Linnakangas authored
      apostrophes or dots. There isn't much hope of Microsoft fixing it any time
      soon, it's been like that for ages, so we better work around it. So, map a
      few common Windows locale names known to cause problems to aliases that work.
      d5a7bf8c
Loading