1. 08 7月, 2011 1 次提交
  2. 07 7月, 2011 4 次提交
    • H
      Fix a bug with SSI and prepared transactions: · 928408d9
      Heikki Linnakangas 提交于
      If there's a dangerous structure T0 ---> T1 ---> T2, and T2 commits first,
      we need to abort something. If T2 commits before both conflicts appear,
      then it should be caught by OnConflict_CheckForSerializationFailure. If
      both conflicts appear before T2 commits, it should be caught by
      PreCommit_CheckForSerializationFailure. But that is actually run when
      T2 *prepares*. Fix that in OnConflict_CheckForSerializationFailure, by
      treating a prepared T2 as if it committed already.
      
      This is mostly a problem for prepared transactions, which are in prepared
      state for some time, but also for regular transactions because they also go
      through the prepared state in the SSI code for a short moment when they're
      committed.
      
      Kevin Grittner and Dan Ports
      928408d9
    • A
      Fix comments over eagerly c&p'd. · b2e3be41
      Andrew Dunstan 提交于
      b2e3be41
    • A
      Reimplement pgbison and pgflex as perl scripts instead of bat files. · c895e775
      Andrew Dunstan 提交于
      In the process, remove almost all knowledge of individual .y and .l files,
      and instead get invocation settings from the relevant make files.
      The exception is plpgsql's gram.y, which has a target with a different
      name. It is hoped that this will make the scripts more future-proof,
      so that they won't require adjustment every time we add a new .l or .y
      file.
      
      The logic is also notably less tortured than that forced on us
      by the idiosyncrasies of the Windows command processor.
      
      The .bat files are kept as thin wrappers for the perl scripts.
      c895e775
    • T
      Remove assumptions that not-equals operators cannot be in any opclass. · 14f67192
      Tom Lane 提交于
      get_op_btree_interpretation assumed this in order to save some duplication
      of code, but it's not true in general anymore because we added <> support
      to btree_gist.  (We still assume it for btree opclasses, though.)
      
      Also, essentially the same logic was baked into predtest.c.  Get rid of
      that duplication by generalizing get_op_btree_interpretation so that it
      can be used by predtest.c.
      
      Per bug report from Denis de Bernardy and investigation by Jeff Davis,
      though I didn't use Jeff's patch exactly as-is.
      
      Back-patch to 9.1; we do not support this usage before that.
      14f67192
  3. 06 7月, 2011 9 次提交
  4. 05 7月, 2011 7 次提交
  5. 04 7月, 2011 9 次提交
    • P
      9f084527
    • T
      Remove missed reference to SilentMode. · e54ae784
      Tom Lane 提交于
      e54ae784
    • H
      Remove silent_mode. You get the same functionality with "pg_ctl -l · f7ea6bea
      Heikki Linnakangas 提交于
      postmaster.log", or nohup.
      
      There was a small issue with LINUX_OOM_ADJ and silent_mode, namely that with
      silent_mode the postmaster process incorrectly used the OOM settings meant
      for backend processes. We certainly could've fixed that directly, but since
      silent_mode was redundant anyway, we might as well just remove it.
      f7ea6bea
    • S
      f563afd4
    • S
      Reset ALTER TABLE lock levels to AccessExclusiveLock in all cases. · 2c3d9db5
      Simon Riggs 提交于
      Locks on inheritance parent remain at lower level, as they were before.
      Remove entry from 9.1 release notes.
      2c3d9db5
    • T
      Fix omissions in documentation of the pg_roles view. · 4fa046a3
      Tom Lane 提交于
      Somehow, column rolconfig got removed from the documentation of the
      pg_roles view in the 9.0 cycle, although the column is actually still
      there.  In 9.1, we'd also forgotten to document the rolreplication column.
      Spotted by Sakamoto Masahiko.
      4fa046a3
    • T
      Put comments on the installable procedural languages. · 99e47ed0
      Tom Lane 提交于
      Per suggestion from Josh Kupershmidt.
      99e47ed0
    • R
      Fix bugs in relpersistence handling during table creation. · 5da79169
      Robert Haas 提交于
      Unlike the relistemp field which it replaced, relpersistence must be
      set correctly quite early during the table creation process, as we
      rely on it quite early on for a number of purposes, including security
      checks.  Normally, this is set based on whether the user enters CREATE
      TABLE, CREATE UNLOGGED TABLE, or CREATE TEMPORARY TABLE, but a
      relation may also be made implicitly temporary by creating it in
      pg_temp.  This patch fixes the handling of that case, and also
      disables creation of unlogged tables in temporary tablespace (such
      table indeed skip WAL-logging, but we reject an explicit
      specification) and creation of relations in the temporary schemas of
      other sessions (which is not very sensible, and didn't work right
      anyway).
      
      Report by Amit Khandekar.
      5da79169
    • T
      Make distprep and *clean build targets recurse into all subdirectories. · acb9198b
      Tom Lane 提交于
      Certain subdirectories do not get built if corresponding options are not
      selected at configure time.  However, "make distprep" should visit such
      directories anyway, so that constructing derived files to be included in
      the tarball happens without requiring all configure options to be given
      in the tarball build script.  Likewise, it's better if cleanup actions
      unconditionally visit all directories (for example, this ensures proper
      cleanup if someone has done a manual make in such a subdirectory).
      
      To handle this, set up a convention that subdirectories that are
      conditionally included in SUBDIRS should be added to ALWAYS_SUBDIRS
      instead when they are excluded.
      
      Back-patch to 9.1, so that plpython's spiexceptions.h will get provided
      in 9.1 tarballs.  There don't appear to be any instances where distprep
      actions got missed in previous releases, and anyway this fix requires
      gmake 3.80 so we don't want to apply it before 9.1.
      acb9198b
  6. 03 7月, 2011 2 次提交
  7. 02 7月, 2011 3 次提交
  8. 30 6月, 2011 5 次提交
    • A
      Enable CHECK constraints to be declared NOT VALID · 89779524
      Alvaro Herrera 提交于
      This means that they can initially be added to a large existing table
      without checking its initial contents, but new tuples must comply to
      them; a separate pass invoked by ALTER TABLE / VALIDATE can verify
      existing data and ensure it complies with the constraint, at which point
      it is marked validated and becomes a normal part of the table ecosystem.
      
      An non-validated CHECK constraint is ignored in the planner for
      constraint_exclusion purposes; when validated, cached plans are
      recomputed so that partitioning starts working right away.
      
      This patch also enables domains to have unvalidated CHECK constraints
      attached to them as well by way of ALTER DOMAIN / ADD CONSTRAINT / NOT
      VALID, which can later be validated with ALTER DOMAIN / VALIDATE
      CONSTRAINT.
      
      Thanks to Thom Brown, Dean Rasheed and Jaime Casanova for the various
      reviews, and Robert Hass for documentation wording improvement
      suggestions.
      
      This patch was sponsored by Enova Financial.
      89779524
    • A
      Fix outdated comment · b36927fb
      Alvaro Herrera 提交于
      Extracted from a patch by Bernd Helmle
      b36927fb
    • T
      Restore correct btree preprocessing of "indexedcol IS NULL" conditions. · a5652d3e
      Tom Lane 提交于
      Such a condition is unsatisfiable in combination with any other type of
      btree-indexable condition (since we assume btree operators are always
      strict).  8.3 and 8.4 had an explicit test for this, which I removed in
      commit 29c4ad98, mistakenly thinking that
      the case would be subsumed by the more general handling of IS (NOT) NULL
      added in that patch.  Put it back, and improve the comments about it, and
      add a regression test case.
      
      Per bug #6079 from Renat Nasyrov, and analysis by Dean Rasheed.
      a5652d3e
    • H
      Move the PredicateLockRelation() call from nodeSeqscan.c to heapam.c. It's · cd70dd6b
      Heikki Linnakangas 提交于
      more consistent that way, since all the other PredicateLock* calls are
      made in various heapam.c and index AM functions. The call in nodeSeqscan.c
      was unnecessarily aggressive anyway, there's no need to try to lock the
      relation every time a tuple is fetched, it's enough to do it once.
      
      This has the user-visible effect that if a seq scan is initialized in the
      executor, but never executed, we now acquire the predicate lock on the heap
      relation anyway. We could avoid that by taking the lock on the first
      heap_getnext() call instead, but it doesn't seem worth the trouble given
      that it feels more natural to do it in heap_beginscan().
      
      Also, remove the retail PredicateLockTuple() calls from heap_getnext(). In
      a seqscan, started with heap_begin(), we're holding a whole-relation
      predicate lock on the heap so there's no need to lock the tuples
      individually.
      
      Kevin Grittner and me
      cd70dd6b
    • H
      Grab predicate locks on matching tuples in a lossy bitmap heap scan. · d9fe63ac
      Heikki Linnakangas 提交于
      Non-lossy case was already handled correctly.
      
      Kevin Grittner
      d9fe63ac