1. 17 Apr, 2017 10 commits
  2. 16 Apr, 2017 2 commits
    • Peter Eisentraut's avatar
      Fix typo in comment · c7d225e2
      Peter Eisentraut authored
      Author: Masahiko Sawada <sawada.mshk@gmail.com>
      c7d225e2
    • Tom Lane's avatar
      Sync addRangeTableEntryForENR() with its peer functions. · a1888b59
      Tom Lane authored
      addRangeTableEntryForENR had a check for pstate != NULL, which Coverity
      pointed out was rather useless since it'd already dereferenced pstate
      before that.  More to the point, we'd established policy in commit
      bc93ac12 that we'd require non-NULL pstate for all addRangeTableEntryFor*
      functions; this test was evidently copied-and-pasted from some older
      version of one of those functions.  Make it look more like the others.
      
      In passing, make an elog message look more like the rest of the code,
      too.
      
      Michael Paquier
      a1888b59
  3. 15 Apr, 2017 6 commits
    • Andrew Dunstan's avatar
      Make sure to run one initdb TAP test with no TZ set · 033b969e
      Andrew Dunstan authored
      That way we make sure that initdb's time zone setting code is exercised.
      This doesn't add an extra test, it just alters an existing test.
      
      Discussion: <https://postgr.es/m/5807.1492229253@sss.pgh.pa.us>
      033b969e
    • Tom Lane's avatar
      Provide a way to control SysV shmem attach address in EXEC_BACKEND builds. · a74740fb
      Tom Lane authored
      In standard non-Windows builds, there's no particular reason to care what
      address the kernel chooses to map the shared memory segment at.  However,
      when building with EXEC_BACKEND, there's a risk that the chosen address
      won't be available in all child processes.  Linux with ASLR enabled (which
      it is by default) seems particularly at risk because it puts shmem segments
      into the same area where it maps shared libraries.  We can work around
      that by specifying a mapping address that's outside the range where
      shared libraries could get mapped.  On x86_64 Linux, 0x7e0000000000
      seems to work well.
      
      This is only meant for testing/debugging purposes, so it doesn't seem
      necessary to go as far as providing a GUC (or any user-visible
      documentation, though we might change that later).  Instead, it's just
      controlled by setting an environment variable PG_SHMEM_ADDR to the
      desired attach address.
      
      Back-patch to all supported branches, since the point here is to
      remove intermittent buildfarm failures on EXEC_BACKEND animals.
      Owners of affected animals will need to add a suitable setting of
      PG_SHMEM_ADDR to their build_env configuration.
      
      Discussion: https://postgr.es/m/7036.1492231361@sss.pgh.pa.us
      a74740fb
    • Tom Lane's avatar
      Fix erroneous cross-reference in comment. · bfba563b
      Tom Lane authored
      Seems to have been introduced in commit c219d9b0.  I think there indeed
      was a "tupbasics.h" in some early drafts of that refactoring, but it
      didn't survive into the committed version.
      
      Amit Kapila
      bfba563b
    • Tom Lane's avatar
      More cleanup of manipulations of hash indexes' hasho_flag field. · 083dc95a
      Tom Lane authored
      Not much point in defining test macros for the flag bits if we
      don't use 'em.
      
      Amit Kapila
      083dc95a
    • Andrew Dunstan's avatar
      Downcase "Wincrypt.h" · 0eba6be1
      Andrew Dunstan authored
      This is consistent with how we refer to other Windows include files, and
      prevents a failure when cross-compiling on a system with case sensitive
      file names.
      0eba6be1
    • Tom Lane's avatar
      Avoid passing function pointers across process boundaries. · 32470825
      Tom Lane authored
      We'd already recognized that we can't pass function pointers across process
      boundaries for functions in loadable modules, since a shared library could
      get loaded at different addresses in different processes.  But actually the
      practice doesn't work for functions in the core backend either, if we're
      using EXEC_BACKEND.  This is the cause of recent failures on buildfarm
      member culicidae.  Switch to passing a string function name in all cases.
      
      Something like this needs to be back-patched into 9.6, but let's see
      if the buildfarm likes it first.
      
      Petr Jelinek, with a bunch of basically-cosmetic adjustments by me
      
      Discussion: https://postgr.es/m/548f9c1d-eafa-e3fa-9da8-f0cc2f654e60@2ndquadrant.com
      32470825
  4. 14 Apr, 2017 14 commits
    • Peter Eisentraut's avatar
      doc: Fix typo · 5a617ab3
      Peter Eisentraut authored
      5a617ab3
    • Tom Lane's avatar
      Use one transaction while reading postgres.bki, not one per line. · 85a07813
      Tom Lane authored
      AFAICT, the only actual benefit of closing a bootstrap transaction
      is to reclaim transient memory.  We can do that a lot more cheaply
      by just doing a MemoryContextReset on a suitable context.  This
      gets the runtime of the "bootstrap" phase of initdb down to the
      point where, at least by eyeball, it's quite negligible compared
      to the rest of the phases.  Per discussion with Andres Freund.
      
      Discussion: https://postgr.es/m/9244.1492106743@sss.pgh.pa.us
      85a07813
    • Tom Lane's avatar
      Clean up manipulations of hash indexes' hasho_flag field. · 2040bb4a
      Tom Lane authored
      Standardize on testing a hash index page's type by doing
      	(opaque->hasho_flag & LH_PAGE_TYPE) == LH_xxx_PAGE
      Various places were taking shortcuts like
      	opaque->hasho_flag & LH_BUCKET_PAGE
      which while not actually wrong, is still bad practice because
      it encourages use of
      	opaque->hasho_flag & LH_UNUSED_PAGE
      which *is* wrong (LH_UNUSED_PAGE == 0, so the above is constant false).
      hash_xlog.c's hash_mask() contained such an incorrect test.
      
      This also ensures that we mask out the additional flag bits that
      hasho_flag has accreted since 9.6.  pgstattuple's pgstat_hash_page(),
      for one, was failing to do that and was thus actively broken.
      
      Also fix assorted comments that hadn't been updated to reflect the
      extended usage of hasho_flag, and fix some macros that were testing
      just "(hasho_flag & bit)" to use the less dangerous, project-approved
      form "((hasho_flag & bit) != 0)".
      
      Coverity found the bug in hash_mask(); I noted the one in
      pgstat_hash_page() through code reading.
      2040bb4a
    • Tom Lane's avatar
      Further fix pg_trgm's extraction of trigrams from regular expressions. · 1dffabed
      Tom Lane authored
      Commit 9e43e871 turns out to have been insufficient: not only is it
      necessary to track tentative parent links while considering a set of
      arc removals, but it's necessary to track tentative flag additions
      as well.  This is because we always merge arc target states into
      arc source states; therefore, when considering a merge of the final
      state with some other, it is the other state that will acquire a new
      TSTATE_FIN bit.  If there's another arc for the same color trigram
      that would cause merging of that state with the initial state, we
      failed to recognize the problem.  The test cases for the prior commit
      evidently only exercised situations where a tentative merge with the
      initial state occurs before one with the final state.  If it goes the
      other way around, we'll happily merge the initial and final states,
      either producing a broken final graph that would never match anything,
      or triggering the Assert added by the prior commit.
      
      It's tempting to consider switching the merge direction when the merge
      involves the final state, but I lack the time to analyze that idea in
      detail.  Instead just keep track of the flag changes that would result
      from proposed merges, in the same way that the prior commit tracked
      proposed parent links.
      
      Along the way, add some more debugging support, because I'm not entirely
      confident that this is the last bug here.  And tweak matters so that
      the transformed.dot file uses small integers rather than pointer values
      to identify states; that makes it more readable if you're just eyeballing
      it rather than fooling with Graphviz.  And rename a couple of identically
      named struct fields to reduce confusion.
      
      Per report from Corey Csuhta.  Add a test case based on his example.
      (Note: this case does not trigger the bug under 9.3, apparently because
      its different measurement of costs causes it to stop merging states before
      it hits the failure.  I spent some time trying to find a variant that would
      fail in 9.3, without success; but I'm sure such cases exist.)
      
      Like the previous patch, back-patch to 9.3 where this code was added.
      
      Report: https://postgr.es/m/E2B01A4B-4530-406B-8D17-2F67CF9A16BA@csuhta.com
      1dffabed
    • Peter Eisentraut's avatar
      Report statistics in logical replication workers · 139eb967
      Peter Eisentraut authored
      Author: Stas Kelvich <s.kelvich@postgrespro.ru>
      Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
      Reported-by: default avatarFujii Masao <masao.fujii@gmail.com>
      139eb967
    • Peter Eisentraut's avatar
      Catversion bump · 67c2def1
      Peter Eisentraut authored
      for commit 887227a1
      67c2def1
    • Peter Eisentraut's avatar
      Fix typo in comment · 6e5f9a6d
      Peter Eisentraut authored
      6e5f9a6d
    • Peter Eisentraut's avatar
      Add option to modify sync commit per subscription · 887227a1
      Peter Eisentraut authored
      This also changes default behaviour of subscription workers to
      synchronous_commit = off.
      
      Author: Petr Jelinek <petr.jelinek@2ndquadrant.com>
      887227a1
    • Peter Eisentraut's avatar
      Remove pstrdup of TextDatumGetCString · 25371a72
      Peter Eisentraut authored
      The result of TextDatumGetCString is already palloc'ed.
      25371a72
    • Peter Eisentraut's avatar
      Remove useless trailing spaces in queries in C strings · 0c22327f
      Peter Eisentraut authored
      Author: Alexander Law <exclusion@gmail.com>
      0c22327f
    • Peter Eisentraut's avatar
      Remove trailing spaces in some output · 674677c7
      Peter Eisentraut authored
      Author: Alexander Law <exclusion@gmail.com>
      674677c7
    • Peter Eisentraut's avatar
    • Peter Eisentraut's avatar
      Make header self-contained · d04eac11
      Peter Eisentraut authored
      Add necessary include files for things used in the header.  (signal.h
      needed for sig_atomic_t.)
      d04eac11
    • Peter Eisentraut's avatar
      pg_dumpall: Allow --no-role-passwords and --binary-upgrade together · ff46f2a0
      Peter Eisentraut authored
      This was introduced as part of the patch to add --no-role-passwords, but
      while it's an unusual combination, there is no actual reason to prevent
      it.
      ff46f2a0
  5. 13 Apr, 2017 8 commits
    • Tom Lane's avatar
      Fix regexport.c to behave sanely with lookaround constraints. · 6cfaffc0
      Tom Lane authored
      regexport.c thought it could just ignore LACON arcs, but the correct
      behavior is to treat them as satisfiable while consuming zero input
      (rather reminiscently of commit 9f1e642d).  Otherwise, the emitted
      simplified-NFA representation may contain no paths leading from initial
      to final state, which unsurprisingly confuses pg_trgm, as seen in
      bug #14623 from Jeff Janes.
      
      Since regexport's output representation has no concept of an arc that
      consumes zero input, recurse internally to find the next normal arc(s)
      after any LACON transitions.  We'd be forced into changing that
      representation if a LACON could be the last arc reaching the final
      state, but fortunately the regex library never builds NFAs with such
      a configuration, so there always is a next normal arc.
      
      Back-patch to 9.3 where this logic was introduced.
      
      Discussion: https://postgr.es/m/20170413180503.25948.94871@wrigleys.postgresql.org
      6cfaffc0
    • Bruce Momjian's avatar
      doc: add missing sect1 close tag · 885fea5a
      Bruce Momjian authored
      Fixes commit 4f3b87ab
      885fea5a
    • Heikki Linnakangas's avatar
      Improve the SASL authentication protocol. · 4f3b87ab
      Heikki Linnakangas authored
      This contains some protocol changes to SASL authentiation (which is new
      in v10):
      
      * For future-proofing, in the AuthenticationSASL message that begins SASL
        authentication, provide a list of SASL mechanisms that the server
        supports, for the client to choose from. Currently, it's always just
        SCRAM-SHA-256.
      
      * Add a separate authentication message type for the final server->client
        SASL message, which the client doesn't need to respond to. This makes
        it unambiguous whether the client is supposed to send a response or not.
        The SASL mechanism should know that anyway, but better to be explicit.
      
      Also, in the server, support clients that don't send an Initial Client
      response in the first SASLInitialResponse message. The server is supposed
      to first send an empty request in that case, to which the client will
      respond with the data that usually comes in the Initial Client Response.
      libpq uses the Initial Client Response field and doesn't need this, and I
      would assume any other sensible implementation to use Initial Client
      Response, too, but let's follow the SASL spec.
      
      Improve the documentation on SASL authentication in protocol. Add a
      section describing the SASL message flow, and some details on our
      SCRAM-SHA-256 implementation.
      
      Document the different kinds of PasswordMessages that the frontend sends
      in different phases of SASL authentication, as well as GSS/SSPI
      authentication as separate message formats. Even though they're all 'p'
      messages, and the exact format depends on the context, describing them as
      separate message formats makes the documentation more clear.
      
      Reviewed by Michael Paquier and Álvaro Hernández Tortosa.
      
      Discussion: https://www.postgresql.org/message-id/CAB7nPqS-aFg0iM3AQOJwKDv_0WkAedRjs1W2X8EixSz+sKBXCQ@mail.gmail.com
      4f3b87ab
    • Heikki Linnakangas's avatar
      Refactor libpq authentication request processing. · 61bf96ca
      Heikki Linnakangas authored
      Move the responsibility of reading the data from the authentication request
      message from PQconnectPoll() to pg_fe_sendauth(). This way, PQconnectPoll()
      doesn't need to know about all the different authentication request types,
      and we don't need the extra fields in the pg_conn struct to pass the data
      from PQconnectPoll() to pg_fe_sendauth() anymore.
      
      Reviewed by Michael Paquier.
      
      Discussion: https://www.postgresql.org/message-id/6490b975-5ee1-6280-ac1d-af975b19fb9a%40iki.fi
      61bf96ca
    • Tom Lane's avatar
      Move bootstrap-time lookup of regproc OIDs into genbki.pl. · 5e39f06c
      Tom Lane authored
      Formerly, the bootstrap backend looked up the OIDs corresponding to
      names in regproc catalog entries using brute-force searches of pg_proc.
      It was somewhat remarkable that that worked at all, since it was used
      while populating other pretty-fundamental catalogs like pg_operator.
      And it was also quite slow, and getting slower as pg_proc gets bigger.
      
      This patch moves the lookup work into genbki.pl, so that the values in
      postgres.bki for regproc columns are always numeric OIDs, an option
      that regprocin() already supported.  Perl isn't the world's speediest
      language, so this about doubles the time needed to run genbki.pl (from
      0.3 to 0.6 sec on my machine).  But we only do that at most once per
      build.  The time needed to run initdb drops significantly --- on my
      machine, initdb --no-sync goes from 1.8 to 1.3 seconds.  So this is
      a small net win even for just one initdb per build, and it becomes
      quite a nice win for test sequences requiring many initdb runs.
      
      Strip out the now-dead code for brute-force catalog searching in
      regprocin.  We'd also cargo-culted similar logic into regoperin
      and some (not all) of the other reg*in functions.  That is all
      dead code too since we currently have no need to load such values
      during bootstrap.  I removed it all, reasoning that if we ever
      need such functionality it'd be much better to do it in a similar
      way to this patch.
      
      There might be some simplifications possible in the backend now that
      regprocin doesn't require doing catalog reads so early in bootstrap.
      I've not looked into that, though.
      
      Andreas Karlsson, with some small adjustments by me
      
      Discussion: https://postgr.es/m/30896.1492006367@sss.pgh.pa.us
      5e39f06c
    • Peter Eisentraut's avatar
      pg_dump: Always dump subscriptions NOCONNECT · a9254e67
      Peter Eisentraut authored
      This removes the pg_dump option --no-subscription-connect and makes it
      the default.  Dumping a subscription so that it activates right away
      when restored is not very useful, because the state of the publication
      server is unclear.
      
      Discussion: https://www.postgresql.org/message-id/e4fbfad5-c6ac-fd50-6777-18c84b34eb2f@2ndquadrant.com
      a9254e67
    • Peter Eisentraut's avatar
      pg_dump: Dump subscriptions by default · c31671f9
      Peter Eisentraut authored
      Dump subscriptions if the current user is a superuser, otherwise write a
      warning and skip them.  Remove the pg_dump option
      --include-subscriptions.
      
      Discussion: https://www.postgresql.org/message-id/e4fbfad5-c6ac-fd50-6777-18c84b34eb2f@2ndquadrant.com
      c31671f9
    • Alvaro Herrera's avatar
      Fix XMLTABLE synopsis, add XMLNAMESPACES example · 73c1748d
      Alvaro Herrera authored
      Add a missing comma in the synopsis after the XMLNAMESPACES clause.
      Also, add an example illustrating the use of that clause.
      
      Author: Arjen Nienhuis and Pavel Stěhule
      73c1748d