1. 08 May, 2020 2 commits
  2. 07 May, 2020 6 commits
    • Peter Geoghegan's avatar
      Refactor nbtree deletion INCOMPLETE_SPLIT check. · cd8c73a3
      Peter Geoghegan authored
      Factor out code common to _bt_lock_branch_parent() and _bt_pagedel()
      into a new utility function.  This new function is used to check that
      the left sibling of a deletion target page does not have the
      INCOMPLETE_SPLIT page flag set.  If it is set then deletion is unsafe;
      there won't be a usable pivot tuple (with a downlink) in the parent page
      that points to the deletion target page.  The page deletion algorithm is
      not prepared to deal with that.  Also restructure an existing, related
      utility function that checks if the right sibling of the target page has
      the ISHALFDEAD page flag set.
      
      This organization highlights the symmetry between the two cases.  The
      goal is to make the design of page deletion clearer.  Both functions
      involve a sibling page with a flag that indicates that there was an
      interrupted operation (a page split or a page deletion) that resulted in
      a page pointed to by sibling pages, but not pointed to in the parent.
      And, both functions indicate if page deletion is unsafe due to the
      absence of a particular downlink in the parent page.
      cd8c73a3
    • Tom Lane's avatar
      Fix YA text phrase search bug. · db89f0e3
      Tom Lane authored
      checkcondition_str() failed to report multiple matches for a prefix
      pattern correctly: it would dutifully merge the match positions, but
      then after exiting that loop, if the last prefix-matching word had
      had no suitable positions, it would report there were no matches.
      The upshot would be failing to recognize a match that the query
      should match.
      
      It looks like you need all of these conditions to see the bug:
      * a phrase search (else we don't ask for match position details)
      * a prefix search item (else we don't get to this code)
      * a weight restriction (else checkclass_str won't fail)
      
      Noted while investigating a problem report from Pavel Borisov,
      though this is distinct from the issue he was on about.
      
      Back-patch to 9.6 where phrase search was added.
      db89f0e3
    • Tom Lane's avatar
      Doc: update remaining tables of functions/operators for new layout. · b2fd8ebe
      Tom Lane authored
      This converts the contrib documentation to the new style, and mops up
      a couple of function tables that were outside chapter 9 in the main
      docs.
      
      A few contrib modules choose not to present their functions in the
      standard tabular format.  There might be room to rethink those decisions
      now that the standard format is more friendly to verbose descriptions.
      But I have not undertaken to do that here; I just converted existing
      tables.
      b2fd8ebe
    • Bruce Momjian's avatar
      doc: PG 13 relnotes: adjust partitioning items · c265ed9b
      Bruce Momjian authored
      Reported-by: Amit Langote
      c265ed9b
    • Bruce Momjian's avatar
      db9e99da
    • Bruce Momjian's avatar
      doc: PG 13 relnotes: adjust partition items and attributions · 545a0658
      Bruce Momjian authored
      This merges three partition publication items into two.
      545a0658
  3. 06 May, 2020 6 commits
  4. 05 May, 2020 18 commits
  5. 04 May, 2020 4 commits
    • Tom Lane's avatar
      Doc: improve PDF presentation of some tables by adjusting column widths. · 5545b69a
      Tom Lane authored
      The PDF toolchain defaults to laying out all columns of a table with
      equal widths, in contrast to the HTML rendering which automatically
      varies the column widths to fit the data.  In many places, this
      results in very badly laid-out tables, with lots of useless whitespace
      in some places and text that overruns its cell in other places.
      
      For tables that have reasonably static content, we can improve
      matters by adding <colspec> entries to hand-assign the column widths.
      This commit does that for a few of the tables that were worst off;
      it eliminates close to 200 "contents ... exceed the available area"
      warnings in an A4 PDF build.
      
      I also forced align="left" in these tables, overriding the PDF
      toolchain's default which is evidently "justify".  (The HTML toolchain
      seems to default to that already.)  Anyplace where things are tight
      enough that we need to worry about this, forced justification tends to
      look truly awful.
      5545b69a
    • Peter Geoghegan's avatar
      Add posting list tuple amcheck test case. · 20c6905d
      Peter Geoghegan authored
      Add a test case to contrib/amcheck that creates coverage of code paths
      that are used to verify posting list tuples (tuples created when
      deduplication merges together existing tuples to avoid a leaf page
      split).
      20c6905d
    • Tom Lane's avatar
      Doc: standardize markup a bit more. · 47046763
      Tom Lane authored
      We had a mishmash of <replaceable>, <replaceable class="parameter">,
      and <parameter> markup for operator/function arguments.  Use <parameter>
      consistently for things that are in fact names of parameters (including
      OUT parameters), reserving <replaceable> for things that aren't.  The
      latter class includes some made-up-by-the-docs type class names, like
      "numeric_type", as well as placeholders for arguments that don't have
      well-defined types.  Possibly we could do better with those categories
      as well, but for the moment I'm content not to have parameter names
      marked up in different ways in different places.
      
      (This commit aligns the earlier sections of chapter 9 with a policy
      that I'd arrived at while working on commit 1ad23335, which is why
      the last few sections need no changes.)
      47046763
    • Tom Lane's avatar
      Doc: update sections 9.22 - 9.30 for new function table layout. · 1ad23335
      Tom Lane authored
      With the usual quota of minor and less-minor editorial changes.
      1ad23335
  6. 03 May, 2020 2 commits
  7. 02 May, 2020 2 commits
    • Peter Geoghegan's avatar
      Refactor btvacuumpage(). · 9dc72514
      Peter Geoghegan authored
      Remove one of the arguments to btvacuumpage(), and give up on the idea
      that it's a recursive function.  We now use the term "backtracking" to
      refer to the case where an earlier block must be visited to make sure no
      tuples that need to be removed were missed.
      
      Advertising btvacuumpage() as a recursive function was unhelpful.  In
      reality the function always simulates recursion with a loop (it doesn't
      actually call itself).  This wasn't just necessary as a precaution (per
      the comments mentioning tail recursion), though.  There is no reliable
      natural limit on the number of times we can backtrack.
      
      There are important behavioral difference when "recursing"/backtracking,
      mostly related to page deletion.  We don't perform page deletion when
      backtracking due to the extra complexity.  And when we recurse, we're
      not performing a physical order scan anymore, so we expect fairly
      different conditions to hold for the page.  Structuring the code like
      this makes it clearer how _bt_pagedel() cooperates with btvacuumpage()
      and btvacuumscan() (as established in commit b0229f26 and commit
      73a076b0).
      
      Author: Peter Geoghegan
      Reviewed-By: Masahiko Sawada
      Discussion: https://postgr.es/m/CAH2-WzmRGMDWiLMcb+zagG9652PboNN4Gfcq1Gc_wJL6A716MA@mail.gmail.com
      9dc72514
    • Stephen Frost's avatar
      Fix GSS client to non-GSS server connection · b68a560f
      Stephen Frost authored
      If the client is compiled with GSSAPI support and tries to start up GSS
      with the server, but the server is not compiled with GSSAPI support, we
      would mistakenly end up falling through to call ProcessStartupPacket
      with secure_done = true, but the client might then try to perform SSL,
      which the backend wouldn't understand and we'd end up failing the
      connection with:
      
      FATAL:  unsupported frontend protocol 1234.5679: server supports 2.0 to 3.0
      
      Fix by arranging to track ssl_done independently from gss_done, instead
      of trying to use the same boolean for both.
      
      Author: Andrew Gierth
      Discussion: https://postgr.es/m/87h82kzwqn.fsf@news-spur.riddles.org.uk
      Backpatch: 12-, where GSSAPI encryption was added.
      b68a560f