1. 15 Feb, 2017 13 commits
    • Tom Lane's avatar
      Fix tab completion for "ALTER SYSTEM SET variable ...". · a5d4e3ff
      Tom Lane authored
      It wouldn't complete "TO" after the variable name, which is certainly
      minor enough.  But since we do complete "TO" after "SET variable ...",
      and since this case used to work pre-9.6, I think this is a bug.
      
      Also, fix the query used to collect the variable names; whoever last
      touched it evidently didn't understand how the pieces are supposed
      to fit together.  It accidentally worked anyway, because readline
      ignores irrelevant completions, but it was randomly unlike the ones
      around it, and could be a source of actual bugs if someone copied
      it as a prototype for another query.
      a5d4e3ff
    • Tom Lane's avatar
      Fix YA unwanted behavioral difference with operator_precedence_warning. · 01e0cbc4
      Tom Lane authored
      Jeff Janes noted that the error cursor position shown for some errors
      would vary when operator_precedence_warning is turned on.  We'd prefer
      that option to have no undocumented effects, so this isn't desirable.
      To fix, make sure that an AEXPR_PAREN node has the same exprLocation
      as its child node.
      
      (Note: it would be a little cheaper to use @2 here instead of an
      exprLocation call, but there are cases where that wouldn't produce
      the identical answer, so don't do it like that.)
      
      Back-patch to 9.5 where this feature was introduced.
      
      Discussion: https://postgr.es/m/CAMkU=1ykK+VhhcQ4Ky8KBo9FoaUJH3f3rDQB8TkTXi-ZsBRUkQ@mail.gmail.com
      01e0cbc4
    • Robert Haas's avatar
      Add optimizer and executor support for parallel index scans. · 5262f7a4
      Robert Haas authored
      In combination with 569174f1, which
      taught the btree AM how to perform parallel index scans, this allows
      parallel index scan plans on btree indexes.  This infrastructure
      should be general enough to support parallel index scans for other
      index AMs as well, if someone updates them to support parallel
      scans.
      
      Amit Kapila, reviewed and tested by Anastasia Lubennikova, Tushar
      Ahuja, and Haribabu Kommi, and me.
      5262f7a4
    • Robert Haas's avatar
      Replace min_parallel_relation_size with two new GUCs. · 51ee6f31
      Robert Haas authored
      When min_parallel_relation_size was added, the only supported type
      of parallel scan was a parallel sequential scan, but there are
      pending patches for parallel index scan, parallel index-only scan,
      and parallel bitmap heap scan.  Those patches introduce two new
      types of complications: first, what's relevant is not really the
      total size of the relation but the portion of it that we will scan;
      and second, index pages and heap pages shouldn't necessarily be
      treated in exactly the same way.  Typically, the number of index
      pages will be quite small, but that doesn't necessarily mean that
      a parallel index scan can't pay off.
      
      Therefore, we introduce min_parallel_table_scan_size, which works
      out a degree of parallelism for scans based on the number of table
      pages that will be scanned (and which is therefore equivalent to
      min_parallel_relation_size for parallel sequential scans) and also
      min_parallel_index_scan_size which can be used to work out a degree
      of parallelism based on the number of index pages that will be
      scanned.
      
      Amit Kapila and Robert Haas
      
      Discussion: http://postgr.es/m/CAA4eK1KowGSYYVpd2qPpaPPA5R90r++QwDFbrRECTE9H_HvpOg@mail.gmail.com
      Discussion: http://postgr.es/m/CAA4eK1+TnM4pXQbvn7OXqam+k_HZqb0ROZUMxOiL6DWJYCyYow@mail.gmail.com
      51ee6f31
    • Robert Haas's avatar
      Fix wrong articles in pg_proc descriptions. · 5d402869
      Robert Haas authored
      This technically should involve a catversion bump, but that seems
      pedantic, so I skipped it.
      
      Report and patch by David Christensen.
      5d402869
    • Robert Haas's avatar
      Document new libpq connection statuses for target_session_attrs. · 1330a7d7
      Robert Haas authored
      I didn't realize these would ever be visible to clients, but Michael
      figured out that it can happen when using asynchronous interfaces
      such as PQconnectPoll.
      
      Michael Paquier
      1330a7d7
    • Robert Haas's avatar
      libpq: Make target_session_attrs=read-write consume empty result. · 1de0a4e0
      Robert Haas authored
      Otherwise, the leftover empty result can cause problems in some
      situations.
      
      Michael Paquier and Ashutosh Bapat, per a report from Higuchi Daisuke
      1de0a4e0
    • Peter Eisentraut's avatar
      fbe7a3fa
    • Robert Haas's avatar
      pg_upgrade: Fix problems caused by renaming pg_resetxlog. · b8777611
      Robert Haas authored
      Commit 85c11324 renamed pg_resetxlog
      to pg_resetwal, but didn't make pg_upgrade smart enough to cope with
      the situation.
      
      Michael Paquier, per a complaint from Jeff Janes
      b8777611
    • Peter Eisentraut's avatar
      Add CREATE COLLATION IF NOT EXISTS clause · 6d16ecc6
      Peter Eisentraut authored
      The core of the functionality was already implemented when
      pg_import_system_collations was added.  This just exposes it as an
      option in the SQL command.
      6d16ecc6
    • Robert Haas's avatar
      Fix some nonstandard capitalization. · e403732e
      Robert Haas authored
      Ashutosh Bapat
      e403732e
    • Robert Haas's avatar
      btree: Support parallel index scans. · 569174f1
      Robert Haas authored
      This isn't exposed to the optimizer or the executor yet; we'll add
      support for those things in a separate patch.  But this puts the
      basic mechanism in place: several processes can attach to a parallel
      btree index scan, and each one will get a subset of the tuples that
      would have been produced by a non-parallel scan.  Each index page
      becomes the responsibility of a single worker, which then returns
      all of the TIDs on that page.
      
      Rahila Syed, Amit Kapila, Robert Haas, reviewed and tested by
      Anastasia Lubennikova, Tushar Ahuja, and Haribabu Kommi.
      569174f1
    • Robert Haas's avatar
      Fix typo in comment. · 8569955e
      Robert Haas authored
      Higuchi Daisuke
      8569955e
  2. 14 Feb, 2017 7 commits
  3. 13 Feb, 2017 3 commits
  4. 12 Feb, 2017 1 commit
    • Noah Misch's avatar
      Ignore tablespace ACLs when ignoring schema ACLs. · f30f34e5
      Noah Misch authored
      The ALTER TABLE ALTER TYPE implementation can issue DROP INDEX and
      CREATE INDEX to refit existing indexes for the new column type.  Since
      this CREATE INDEX is an implementation detail of an index alteration,
      the ensuing DefineIndex() should skip ACL checks specific to index
      creation.  It already skips the namespace ACL check.  Make it skip the
      tablespace ACL check, too.  Back-patch to 9.2 (all supported versions).
      
      Reviewed by Tom Lane.
      f30f34e5
  5. 10 Feb, 2017 4 commits
    • Peter Eisentraut's avatar
      Add CREATE SEQUENCE AS <data type> clause · 2ea5b06c
      Peter Eisentraut authored
      This stores a data type, required to be an integer type, with the
      sequence.  The sequences min and max values default to the range
      supported by the type, and they cannot be set to values exceeding that
      range.  The internal implementation of the sequence is not affected.
      
      Change the serial types to create sequences of the appropriate type.
      This makes sure that the min and max values of the sequence for a serial
      column match the range of values supported by the table column.  So the
      sequence can no longer overflow the table column.
      
      This also makes monitoring for sequence exhaustion/wraparound easier,
      which currently requires various contortions to cross-reference the
      sequences with the table columns they are used with.
      
      This commit also effectively reverts the pg_sequence column reordering
      in f3b421da, because the new seqtypid
      column allows us to fill the hole in the struct and create a more
      natural overall column ordering.
      Reviewed-by: default avatarSteve Singer <steve@ssinger.info>
      Reviewed-by: default avatarMichael Paquier <michael.paquier@gmail.com>
      2ea5b06c
    • Simon Riggs's avatar
      Update ddl.sgml for declarative partitioning syntax · 9401883a
      Simon Riggs authored
      Add a section titled "Partitioned Tables" to describe what are
      partitioned tables, partition, their similarities with inheritance.
      The existing section on inheritance is retained for clarity.
      
      Then add examples to the partitioning chapter that show syntax for
      partitioned tables.  In fact they implement the same partitioning
      scheme that is currently shown using inheritance.
      
      Amit Langote, with additional details and explanatory text by me
      9401883a
    • Simon Riggs's avatar
      Add keywords for partitioning · 61c9a9da
      Simon Riggs authored
      Amit Langote
      61c9a9da
    • Simon Riggs's avatar
      Improve CREATE TABLE documentation of partitioning · c1369fe2
      Simon Riggs authored
      Amit Langote, with corrections by me
      c1369fe2
  6. 09 Feb, 2017 10 commits
    • Robert Haas's avatar
      Rename command line options for ongoing xlog -> wal conversion. · 62e8b387
      Robert Haas authored
      initdb and pg_basebackup now have a --waldir option rather --xlogdir,
      and pg_basebackup now has --wal-method rather than --xlog-method.
      62e8b387
    • Robert Haas's avatar
      Rename dtrace probes for ongoing xlog -> wal conversion. · 3f01fd4c
      Robert Haas authored
      xlog-switch becomes wal-switch, and xlog-insert becomes wal-insert.
      3f01fd4c
    • Robert Haas's avatar
      Rename user-facing tools with "xlog" in the name to say "wal". · 85c11324
      Robert Haas authored
      This means pg_receivexlog because pg_receivewal, pg_resetxlog
      becomes pg_resetwal, and pg_xlogdump becomes pg_waldump.
      85c11324
    • Tom Lane's avatar
      Blind try to fix portability issue in commit 8f93bd85 et al. · 5d2adf0f
      Tom Lane authored
      The S/390 members of the buildfarm are showing failures indicating
      that they're having trouble with the rint() calls I added yesterday.
      There's no good reason for that, and I wonder if it is a compiler bug
      similar to the one we worked around in d9476b83.  Try to fix it using
      the same method as before, namely to store the result of rint() back
      into a "double" variable rather than immediately converting to int64.
      (This isn't entirely waving a dead chicken, since on machines with
      wider-than-double float registers, the extra store forces a width
      conversion.  I don't know if S/390 is like that, but it seems worth
      trying.)
      
      In passing, merge duplicate ereport() calls in float8_timestamptz().
      
      Per buildfarm.
      5d2adf0f
    • Robert Haas's avatar
      Remove all references to "xlog" from SQL-callable functions in pg_proc. · 806091c9
      Robert Haas authored
      Commit f82ec32a renamed the pg_xlog
      directory to pg_wal.  To make things consistent, and because "xlog" is
      terrible terminology for either "transaction log" or "write-ahead log"
      rename all SQL-callable functions that contain "xlog" in the name to
      instead contain "wal".  (Note that this may pose an upgrade hazard for
      some users.)
      
      Similarly, rename the xlog_position argument of the functions that
      create slots to be called wal_position.
      
      Discussion: https://www.postgresql.org/message-id/CA+Tgmob=YmA=H3DbW1YuOXnFVgBheRmyDkWcD9M8f=5bGWYEoQ@mail.gmail.com
      806091c9
    • Robert Haas's avatar
      simplehash: Additional tweaks to make specifying an allocator work. · 72257f95
      Robert Haas authored
      Even if we don't emit definitions for SH_ALLOCATE and SH_FREE, we
      still need prototypes.  The user can't define them before including
      simplehash.h because SH_TYPE isn't available yet.
      
      For the allocator to be able to access private_data, it needs to
      become an argument to SH_CREATE.  Previously we relied on callers
      to set that after returning from SH_CREATE, but SH_CREATE calls
      SH_ALLOCATE before returning.
      
      Dilip Kumar, reviewed by me.
      72257f95
    • Robert Haas's avatar
      Fix race condition in ConditionVariablePrepareToSleep. · 3f3d60d3
      Robert Haas authored
      Thomas Munro
      3f3d60d3
    • Robert Haas's avatar
      pageinspect: Fix hash_bitmap_info not to read the underlying page. · fc8219dc
      Robert Haas authored
      It did that to verify that the page was an overflow page rather than
      anything else, but that means that checking the status of all the
      overflow bits requires reading the entire index.  So don't do that.
      The new code validates that the page is not a primary bucket page
      or bitmap page by looking at the metapage, so that using this on
      large numbers of pages can be reasonably efficient.
      
      Ashutosh Sharma, per a complaint from me, and with further
      modifications by me.
      fc8219dc
    • Tom Lane's avatar
      Allow index AMs to cache data across aminsert calls within a SQL command. · 86d911ec
      Tom Lane authored
      It's always been possible for index AMs to cache data across successive
      amgettuple calls within a single SQL command: the IndexScanDesc.opaque
      field is meant for precisely that.  However, no comparable facility
      exists for amortizing setup work across successive aminsert calls.
      This patch adds such a feature and teaches GIN, GIST, and BRIN to use it
      to amortize catalog lookups they'd previously been doing on every call.
      (The other standard index AMs keep everything they need in the relcache,
      so there's little to improve there.)
      
      For GIN, the overall improvement in a statement that inserts many rows
      can be as much as 10%, though it seems a bit less for the other two.
      In addition, this makes a really significant difference in runtime
      for CLOBBER_CACHE_ALWAYS tests, since in those builds the repeated
      catalog lookups are vastly more expensive.
      
      The reason this has been hard up to now is that the aminsert function is
      not passed any useful place to cache per-statement data.  What I chose to
      do is to add suitable fields to struct IndexInfo and pass that to aminsert.
      That's not widening the index AM API very much because IndexInfo is already
      within the ken of ambuild; in fact, by passing the same info to aminsert
      as to ambuild, this is really removing an inconsistency in the AM API.
      
      Discussion: https://postgr.es/m/27568.1486508680@sss.pgh.pa.us
      86d911ec
    • Andres Freund's avatar
      Add explicit ORDER BY to a few tests that exercise hash-join code. · 7c5d8c16
      Andres Freund authored
      A proposed patch, also by Thomas and in the same thread, would change
      the output order of these.  Independent of the follow-up patches
      getting committed, nailing down the order in these specific tests at
      worst seems harmless.
      
      Author: Thomas Munro
      Discussion: https://postgr.es/m/CAEepm=1D4-tP7j7UAgT_j4ZX2j4Ehe1qgZQWFKBMb8F76UW5Rg@mail.gmail.com
      7c5d8c16
  7. 08 Feb, 2017 2 commits
    • Tom Lane's avatar
      Fix roundoff problems in float8_timestamptz() and make_interval(). · 8f93bd85
      Tom Lane authored
      When converting a float value to integer microseconds, we should be careful
      to round the value to the nearest integer, typically with rint(); simply
      assigning to an int64 variable will truncate, causing apparently off-by-one
      values in cases that should work.  Most places in the datetime code got
      this right, but not these two.
      
      float8_timestamptz() is new as of commit e511d878 (9.6).  Previous
      versions effectively depended on interval_mul() to do roundoff correctly,
      which it does, so this fixes an accuracy regression in 9.6.
      
      The problem in make_interval() dates to its introduction in 9.4.  Aside
      from being careful to round not truncate, let's incorporate the hours and
      minutes inputs into the result with exact integer arithmetic, rather than
      risk introducing roundoff error where there need not have been any.
      
      float8_timestamptz() problem reported by Erik Nordström, though this is
      not his proposed patch.  make_interval() problem found by me.
      
      Discussion: https://postgr.es/m/CAHuQZDS76jTYk3LydPbKpNfw9KbACmD=49dC4BrzHcfPv6yA1A@mail.gmail.com
      8f93bd85
    • Robert Haas's avatar
      Add WAL consistency checking facility. · a507b869
      Robert Haas authored
      When the new GUC wal_consistency_checking is set to a non-empty value,
      it triggers recording of additional full-page images, which are
      compared on the standby against the results of applying the WAL record
      (without regard to those full-page images).  Allowable differences
      such as hints are masked out, and the resulting pages are compared;
      any difference results in a FATAL error on the standby.
      
      Kuntal Ghosh, based on earlier patches by Michael Paquier and Heikki
      Linnakangas.  Extensively reviewed and revised by Michael Paquier and
      by me, with additional reviews and comments from Amit Kapila, Álvaro
      Herrera, Simon Riggs, and Peter Eisentraut.
      a507b869