1. 09 3月, 2016 3 次提交
  2. 08 3月, 2016 11 次提交
    • R
      Fix parallel query on standby servers. · dcfecaae
      Robert Haas 提交于
      Without this fix, it inevitably bombs out with "ERROR:  failed to
      initialize transaction_read_only to 0".  Repair.
      
      Ashutosh Sharma; comments adjusted by me.
      dcfecaae
    • R
      Add some functions to fd.c for the convenience of extensions. · 070140ee
      Robert Haas 提交于
      For example, if you want to perform an ioctl() on a file descriptor
      opened through the fd.c routines, there's no way to do that without
      being able to get at the underlying fd.
      
      KaiGai Kohei
      070140ee
    • R
      Department of second thoughts: remove PD_ALL_FROZEN. · 77a1d1e7
      Robert Haas 提交于
      Commit a892234f added a second bit per
      page to the visibility map, which still seems like a good idea, but it
      also added a second page-level bit alongside PD_ALL_VISIBLE to track
      whether the visibility map bit was set.  That no longer seems like a
      clever plan, because we don't really need that bit for anything.  We
      always clear both bits when the page is modified anyway.
      
      Patch by me, reviewed by Kyotaro Horiguchi and Masahiko Sawada.
      77a1d1e7
    • R
      Add pg_visibility contrib module. · ba0a198f
      Robert Haas 提交于
      This lets you examine the visibility map as well as page-level
      visibility information.  I initially wrote it as a debugging aid,
      but was encouraged to polish it for commit.
      
      Patch by me, reviewed by Masahiko Sawada.
      
      Discussion: 56D77803.6080503@BlueTreble.com
      ba0a198f
    • R
      pg_upgrade: Remove converter plugin facility. · 6f56b41a
      Robert Haas 提交于
      We've not found a use for this so far, and the current need, which
      is to convert the visibility map to a new format, does not suit the
      existing design anyway.  So just rip it out.
      
      Author: Masahiko Sawada, slightly revised by me.
      Discussion: 20160215211313.GB31273@momjian.us
      6f56b41a
    • T
      Fix minor typo in logical-decoding docs. · a93aec4e
      Tom Lane 提交于
      David Rowley
      a93aec4e
    • T
      Spell "parallel" correctly. · cf8e7b16
      Tom Lane 提交于
      Per David Rowley.
      cf8e7b16
    • P
      Fix uninstall target in tsearch Makefile · 1c2db8c3
      Peter Eisentraut 提交于
      Artur Zakirov
      1c2db8c3
    • J
      Make get_controlfile() error logging consistent with src/common · 7b077af5
      Joe Conway 提交于
      As originally committed, get_controlfile() used a non-standard approach
      to error logging. Make it consistent with the majority of error logging
      done in src/common.
      
      Applies to master only.
      7b077af5
    • A
      Further improvements to c8f621c4. · b63bea5f
      Andres Freund 提交于
      Coverity and inspection for the issue addressed in fd45d16f found some
      questionable code.
      
      Specifically coverity noticed that the wrong length was added in
      ReorderBufferSerializeChange() - without immediate negative consequences
      as the variable isn't used afterwards.  During code-review and testing I
      noticed that a bit of space was wasted when allocating tuple bufs in
      several places.  Thirdly, the debug memset()s in
      ReorderBufferGetTupleBuf() reduce the error checking valgrind can do.
      
      Backpatch: 9.4, like c8f621c4.
      b63bea5f
    • T
      Make the upper part of the planner work by generating and comparing Paths. · 3fc6e2d7
      Tom Lane 提交于
      I've been saying we needed to do this for more than five years, and here it
      finally is.  This patch removes the ever-growing tangle of spaghetti logic
      that grouping_planner() used to use to try to identify the best plan for
      post-scan/join query steps.  Now, there is (nearly) independent
      consideration of each execution step, and entirely separate construction of
      Paths to represent each of the possible ways to do that step.  We choose
      the best Path or set of Paths using the same add_path() logic that's been
      used inside query_planner() for years.
      
      In addition, this patch removes the old restriction that subquery_planner()
      could return only a single Plan.  It now returns a RelOptInfo containing a
      set of Paths, just as query_planner() does, and the parent query level can
      use each of those Paths as the basis of a SubqueryScanPath at its level.
      This allows finding some optimizations that we missed before, wherein a
      subquery was capable of returning presorted data and thereby avoiding a
      sort in the parent level, making the overall cost cheaper even though
      delivering sorted output was not the cheapest plan for the subquery in
      isolation.  (A couple of regression test outputs change in consequence of
      that.  However, there is very little change in visible planner behavior
      overall, because the point of this patch is not to get immediate planning
      benefits but to create the infrastructure for future improvements.)
      
      There is a great deal left to do here.  This patch unblocks a lot of
      planner work that was basically impractical in the old code structure,
      such as allowing FDWs to implement remote aggregation, or rewriting
      plan_set_operations() to allow consideration of multiple implementation
      orders for set operations.  (The latter will likely require a full
      rewrite of plan_set_operations(); what I've done here is only to fix it
      to return Paths not Plans.)  I have also left unfinished some localized
      refactoring in createplan.c and planner.c, because it was not necessary
      to get this patch to a working state.
      
      Thanks to Robert Haas, David Rowley, and Amit Kapila for review.
      3fc6e2d7
  3. 07 3月, 2016 6 次提交
    • T
      Fix backwards test for Windows service-ness in pg_ctl. · b642e50a
      Tom Lane 提交于
      A thinko in a9676139 caused pg_ctl to get it exactly backwards when
      deciding whether to report problems to the Windows eventlog or to stderr.
      Per bug #14001 from Manuel Mathar, who also identified the fix.
      Like the previous patch, back-patch to all supported branches.
      b642e50a
    • T
      Re-fix broken definition for function name in pgbench's exprscan.l. · 94f1adcc
      Tom Lane 提交于
      Wups, my first try wasn't quite right either.  Too focused on fixing
      the existing bug, not enough on not introducing new ones.
      94f1adcc
    • T
      Fix broken definition for function name in pgbench's exprscan.l. · 3899caf7
      Tom Lane 提交于
      As written, this would accept e.g. 123e9 as a function name.  Aside
      from being mildly astonishing, that would come back to haunt us if
      we ever try to add float constants to the expression syntax.  Insist
      that function names start with letters (or at least non-digits).
      
      In passing reset yyline as well as yycol when starting a new expression.
      This variable is useless since it's used nowhere, but if we're going
      to have it we should have it act sanely.
      3899caf7
    • A
      Fix wrong allocation size in c8f621c4. · fd45d16f
      Andres Freund 提交于
      In c8f621c4 I forgot to account for MAXALIGN when allocating a new
      tuplebuf in ReorderBufferGetTupleBuf(). That happens to currently not
      cause active problems on a number of platforms because the affected
      pointer is already aligned, but others, like ppc and hppa, trigger this
      in the regression test, due to a debug memset clearing memory.
      
      Fix that.
      
      Backpatch: 9.4, like the previous commit.
      fd45d16f
    • T
      Fix not-terribly-safe coding in NIImportOOAffixes() and NIImportAffixes(). · b3e05097
      Tom Lane 提交于
      There were two places in spell.c that supposed that they could search
      for a location in a string produced by lowerstr() and then transpose
      the offset into the original string.  But this fails completely if
      lowerstr() transforms any characters into characters of different byte
      length, as can happen in Turkish UTF8 for instance.
      
      We'd added some comments about this coding in commit 51e78ab4,
      but failed to realize that it was not merely confusing but wrong.
      
      Coverity complained about this code years ago, but in such an opaque
      fashion that nobody understood what it was on about.  I'm not entirely
      sure that this issue *is* what it's on about, actually, but perhaps
      this patch will shut it up -- and in any case the problem is clear.
      
      Back-patch to all supported branches.
      b3e05097
    • T
      Fix unportable usage of <ctype.h> functions. · cb0ca0c9
      Tom Lane 提交于
      isdigit(), isspace(), etc are likely to give surprising results if passed a
      signed char.  We should always cast the argument to unsigned char to avoid
      that.  Error in commit d78a7d9c, found by buildfarm member gaur.
      cb0ca0c9
  4. 06 3月, 2016 6 次提交
    • M
      Fix typos · 2b46259b
      Magnus Hagander 提交于
      Author: Guillaume Lelarge
      2b46259b
    • A
      logical decoding: Fix handling of large old tuples with replica identity full. · c8f621c4
      Andres Freund 提交于
      When decoding the old version of an UPDATE or DELETE change, and if that
      tuple was bigger than MaxHeapTupleSize, we either Assert'ed out, or
      failed in more subtle ways in non-assert builds.  Normally individual
      tuples aren't bigger than MaxHeapTupleSize, with big datums toasted.
      But that's not the case for the old version of a tuple for logical
      decoding; the replica identity is logged as one piece. With the default
      replica identity btree limits that to small tuples, but that's not the
      case for FULL.
      
      Change the tuple buffer infrastructure to separate allocate over-large
      tuples, instead of always going through the slab cache.
      
      This unfortunately requires changing the ReorderBufferTupleBuf
      definition, we need to store the allocated size someplace. To avoid
      requiring output plugins to recompile, don't store HeapTupleHeaderData
      directly after HeapTupleData, but point to it via t_data; that leaves
      rooms for the allocated size.  As there's no reason for an output plugin
      to look at ReorderBufferTupleBuf->t_data.header, remove the field. It
      was just a minor convenience having it directly accessible.
      
      Reported-By: Adam Dratwiński
      Discussion: CAKg6ypLd7773AOX4DiOGRwQk1TVOQKhNwjYiVjJnpq8Wo+i62Q@mail.gmail.com
      c8f621c4
    • A
      logical decoding: old/newtuple in spooled UPDATE changes was switched around. · 0bda14d5
      Andres Freund 提交于
      Somehow I managed to flip the order of restoring old & new tuples when
      de-spooling a change in a large transaction from disk. This happens to
      only take effect when a change is spooled to disk which has old/new
      versions of the tuple. That only is the case for UPDATEs where he
      primary key changed or where replica identity is changed to FULL.
      
      The tests didn't catch this because either spooled updates, or updates
      that changed primary keys, were tested; not both at the same time.
      
      Found while adding tests for the following commit.
      
      Backpatch: 9.4, where logical decoding was added
      0bda14d5
    • A
      logical decoding: Tell reorderbuffer about all xids. · d9e903f3
      Andres Freund 提交于
      Logical decoding's reorderbuffer keeps transactions in an LSN ordered
      list for efficiency. To make that's efficiently possible upper-level
      xids are forced to be logged before nested subtransaction xids.  That
      only works though if these records are all looked at: Unfortunately we
      didn't do so for e.g. row level locks, which are otherwise uninteresting
      for logical decoding.
      
      This could lead to errors like:
      "ERROR: subxact logged without previous toplevel record".
      
      It's not sufficient to just look at row locking records, the xid could
      appear first due to a lot of other types of records (which will trigger
      the transaction to be marked logged with MarkCurrentTransactionIdLoggedIfAny).
      So invent infrastructure to tell reorderbuffer about xids seen, when
      they'd otherwise not pass through reorderbuffer.c.
      
      Reported-By: Jarred Ward
      Bug: #13844
      Discussion: 20160105033249.1087.66040@wrigleys.postgresql.org
      Backpatch: 9.4, where logical decoding was added
      d9e903f3
    • J
      Expose control file data via SQL accessible functions. · dc7d70ea
      Joe Conway 提交于
      Add four new SQL accessible functions: pg_control_system(),
      pg_control_checkpoint(), pg_control_recovery(), and pg_control_init()
      which expose a subset of the control file data.
      
      Along the way move the code to read and validate the control file to
      src/common, where it can be shared by the new backend functions
      and the original pg_controldata frontend program.
      
      Patch by me, significant input, testing, and review by Michael Paquier.
      dc7d70ea
    • F
      Ignore recovery_min_apply_delay until recovery has reached consistent state · d34794f7
      Fujii Masao 提交于
      Previously recovery_min_apply_delay was applied even before recovery
      had reached consistency. This could cause us to wait a long time
      unexpectedly for read-only connections to be allowed. It's problematic
      because the standby was useless during that wait time.
      
      This patch changes recovery_min_apply_delay so that it's applied once
      the database has reached the consistent state. That is, even if the delay
      is set, the standby tries to replay WAL records as fast as possible until
      it has reached consistency.
      
      Author: Michael Paquier
      Reviewed-By: Julien Rouhaud
      Reported-By: Greg Clough
      Backpatch: 9.4, where recovery_min_apply_delay was added
      Bug: #13770
      Discussion: http://www.postgresql.org/message-id/20151111155006.2644.84564@wrigleys.postgresql.org
      d34794f7
  5. 05 3月, 2016 12 次提交
    • T
      Make stats regression test robust in the face of parallel query. · 60690a6f
      Tom Lane 提交于
      Historically, the wait_for_stats() function in this test has simply checked
      for a report of an indexscan on tenk2, corresponding to the last command
      issued before we expect stats updates to appear.  However, with parallel
      query that indexscan could be done by a parallel worker that will emit
      its stats counters to the collector before the session's main backend does
      (a full second before, in fact, thanks to the "pg_sleep(1.0)" added by
      commit 957d08c8).  That leaves a sizable window in which an
      autovacuum-triggered write of the stats files would present a state in
      which the indexscan on tenk2 appears to have been done, but none of the
      write updates performed by the test have been.  This is evidently the
      explanation for intermittent failures seen by me and on buildfarm member
      mandrill.
      
      To fix, we should check separately for both the tenk2 seqscan and indexscan
      counts, since those might be reported by different processes that could be
      delayed arbitrarily on an overloaded test machine.  And we need to check
      for at least one update-related count.  If we ever allow parallel workers
      to do writes, this will get even more complicated ... but in view of all
      the other hard problems that will entail, I don't feel a need to solve this
      one today.
      
      Per research by Rahila Syed and myself; part of this patch is Rahila's.
      60690a6f
    • R
      Fix typo in comment. · 708020eb
      Robert Haas 提交于
      Thomas Munro
      708020eb
    • R
      Minor improvements to transaction manager README. · 6fcde8a5
      Robert Haas 提交于
      A simple SELECT is handled by PortalRunSelect, not ProcessQuery.  Also,
      the previous indentation was unclear: change it so that a deeper level
      of indentation indicates that the outer function calls the inner one.
      
      Stas Kelvich
      6fcde8a5
    • R
      Fix SerializeSnapshot not to overrun the allocated space. · 17b124d3
      Robert Haas 提交于
      Rushabh Lathia
      17b124d3
    • T
      Fix Windows build broken by d78a7d9c · 0e7557dc
      Teodor Sigaev 提交于
      0e7557dc
    • R
      Minor optimizations based on ParallelContext having nworkers_launched. · df4685fb
      Robert Haas 提交于
      Originally, we didn't have nworkers_launched, so code that used parallel
      contexts had to be preprared for the possibility that not all of the
      workers requested actually got launched.  But now we can count on knowing
      the number of workers that were successfully launched, which can shave
      off a few cycles and simplify some code slightly.
      
      Amit Kapila, reviewed by Haribabu Kommi, per a suggestion from Peter
      Geoghegan.
      df4685fb
    • R
      Fix InitializeSessionUserId not to deference NULL rolename pointer. · 546cd0d7
      Robert Haas 提交于
      Dmitriy Sarafannikov, reviewed by Michael Paquier and Haribabu Kommi,
      with a minor fix by me.
      546cd0d7
    • T
      Improve support of Hunspell in ispell dictionary. · d78a7d9c
      Teodor Sigaev 提交于
      Now it's possible to load recent version of Hunspell for several languages.
      To handle these dictionaries Hunspell patch adds support for:
      * FLAG long - sets the double extended ASCII character flag type
      * FLAG num - sets the decimal number flag type (from 1 to 65535)
      * AF parameter - alias for flag's set
      
      Also it moves test dictionaries into separate directory.
      
      Author: Artur Zakirov with editorization by me
      d78a7d9c
    • R
      Fix query-based tab completion for multibyte characters. · 9445db92
      Robert Haas 提交于
      The existing code confuses the byte length of the string (which is
      relevant when passing it to pg_strncasecmp) with the character length
      of the string (which is relevant when it is used with the SQL substring
      function).  Separate those two concepts.
      
      Report and patch by Kyotaro Horiguchi, reviewed by Thomas Munro and
      reviewed and further revised by me.
      9445db92
    • R
      Fix the way GetExistingLocalJoinPath is documented. · 33b5eab7
      Robert Haas 提交于
      The old approach made it look like it was an FDW callback, which it
      is not.
      
      Per a gripe from Stephen Frost.  Patch by me, reviewed by Ashutosh
      Bapat.
      33b5eab7
    • R
      postgres_fdw: When sending ORDER BY, always include NULLS FIRST/LAST. · 3bea3f88
      Robert Haas 提交于
      Previously, we included NULLS FIRST when appropriate but relied on the
      default behavior to be NULLS LAST.  This is, however, not true for a
      sort in descending order and seems like a fragile assumption anyway.
      
      Report by Rajkumar Raghuwanshi.  Patch by Ashutosh Bapat.  Review
      comments from Michael Paquier and Tom Lane.
      3bea3f88
    • A
      Add 'tap_tests' flag in config_default.pl · 52fe6f4e
      Alvaro Herrera 提交于
      This makes the flag more visible for testers using the default file as a
      template, increasing the likelyhood that the test suite will be run.
      Also have the flag be displayed in the fake "configure" output, if set.
      
      This patch is two new lines only, but perltidy decides to shift things
      around which makes it appear a bit bigger.
      
      Author: Michaël Paquier
      Reviewed-by: Craig Ringer
      Discussion: https://www.postgresql.org/message-id/CAB7nPqRet6UAP2APhZAZw%3DVhJ6w-Q-gGLdZkrOqFgd2vc9-ZDw%40mail.gmail.com
      52fe6f4e
  6. 04 3月, 2016 2 次提交