1. 28 Jun, 2021 3 commits
  2. 27 Jun, 2021 2 commits
    • Tom Lane's avatar
      Remove memory leaks in isolationtester. · 642c0697
      Tom Lane authored
      specscanner.l leaked a kilobyte of memory per token of the spec file.
      Apparently somebody thought that the introductory code block would be
      executed once; but it's once per yylex() call.
      
      A couple of functions in isolationtester.c leaked small amounts of
      memory due to not bothering to free one-time allocations.  Might
      as well improve these so that valgrind gives this program a clean
      bill of health.  Also get rid of an ugly static variable.
      
      Coverity complained about one of the one-time leaks, which led me
      to try valgrind'ing isolationtester, which led to discovery of the
      larger leak.
      642c0697
    • Peter Eisentraut's avatar
      Error message refactoring · c302a613
      Peter Eisentraut authored
      Take some untranslatable things out of the message and replace by
      format placeholders, to reduce translatable strings and reduce
      translation mistakes.
      c302a613
  3. 26 Jun, 2021 4 commits
    • Tom Lane's avatar
      dcffc9ba
    • Tom Lane's avatar
      Remove undesirable libpq dependency on stringinfo.c. · 8ec00dc5
      Tom Lane authored
      Commit c0cb87fb unwisely introduced a dependency on the StringInfo
      machinery in fe-connect.c.  We must not use that in libpq, because
      it will do a summary exit(1) if it hits OOM, and that is not
      appropriate behavior for a general-purpose library.  The goal of
      allowing arbitrary line lengths in service files doesn't seem like
      it's worth a lot of effort, so revert back to the previous method
      of using a stack-allocated buffer and failing on buffer overflow.
      
      This isn't an exact revert though.  I kept that patch's refactoring
      to have a single exit path, as that seems cleaner than having each
      error path know what to do to clean up.  Also, I made the fixed-size
      buffer 1024 bytes not 256, just to push off the need for an expandable
      buffer some more.
      
      There is more to do here; in particular the lack of any mechanical
      check for this type of mistake now seems pretty hazardous.  But this
      fix gets us back to the level of robustness we had in v13, anyway.
      
      Discussion: https://postgr.es/m/daeb22ec6ca8ef61e94d766a9b35fb03cabed38e.camel@vmware.com
      8ec00dc5
    • Michael Paquier's avatar
      Remove non-existing variable reference in MSVC's Solution.pm · d5a2c413
      Michael Paquier authored
      The version string is grabbed from PACKAGE_VERSION in pg_config.h in the
      MSVC build since 8f4fb4c6, but an error message referenced a variable
      that existed before that.  This had no consequences except if one messes
      up enough with the version number of the build.
      
      Author: Anton Voloshin
      Discussion: https://postgr.es/m/af79ee1b-9962-b299-98e1-f90a289e19e6@postgrespro.ru
      Backpatch-through: 13
      d5a2c413
    • Michael Paquier's avatar
      Remove some useless logs from the TAP tests of pgbench · 704e1dbd
      Michael Paquier authored
      002_pgbench_no_server was printing some array pointers instead of the
      actual contents of those arrays for the expected outputs of stdout and
      stderr for a tested command.  This does not add any new information that
      can help with debugging as the test names allow to track failure
      locations, if any.
      
      This commit simply removes those logs as the rest of the printed
      information is redundant with command_checks_all().
      
      Per discussion with Andrew Dunstan and Álvaro Herrera.
      
      Discussion: https://postgr.es/m/YNXNFaG7IgkzZanD@paquier.xyz
      Backpatch-through: 11
      704e1dbd
  4. 25 Jun, 2021 10 commits
  5. 24 Jun, 2021 8 commits
  6. 23 Jun, 2021 6 commits
    • Tom Lane's avatar
      Allow non-quoted identifiers as isolation test session/step names. · a443c1b2
      Tom Lane authored
      For no obvious reason, isolationtester has always insisted that
      session and step names be written with double quotes.  This is
      fairly tedious and does little for test readability, especially
      since the names that people actually choose almost always look
      like normal identifiers.  Hence, let's tweak the lexer to allow
      SQL-like identifiers not only double-quoted strings.
      
      (They're SQL-like, not exactly SQL, because I didn't add any
      case-folding logic.  Also there's no provision for U&"..." names,
      not that anyone's likely to care.)
      
      There is one incompatibility introduced by this change: if you write
      "foo""bar" with no space, that used to be taken as two identifiers,
      but now it's just one identifier with an embedded quote mark.
      
      I converted all the src/test/isolation/ specfiles to remove
      unnecessary double quotes, but stopped there because my
      eyes were glazing over already.
      
      Like 741d7f10, back-patch to all supported branches, so that this
      isn't a stumbling block for back-patching isolation test changes.
      
      Discussion: https://postgr.es/m/759113.1623861959@sss.pgh.pa.us
      a443c1b2
    • Tom Lane's avatar
      Doc: fix confusion about LEAKPROOF in syntax summaries. · 2031e166
      Tom Lane authored
      The syntax summaries for CREATE FUNCTION and allied commands
      made it look like LEAKPROOF is an alternative to
      IMMUTABLE/STABLE/VOLATILE, when of course it is an orthogonal
      option.  Improve that.
      
      Per gripe from aazamrafeeque0.  Thanks to David Johnston for
      suggestions.
      
      Discussion: https://postgr.es/m/162444349581.694.5818572718530259025@wrigleys.postgresql.org
      2031e166
    • Tom Lane's avatar
      Don't assume GSSAPI result strings are null-terminated. · 126cdaf4
      Tom Lane authored
      Our uses of gss_display_status() and gss_display_name() assumed
      that the gss_buffer_desc strings returned by those functions are
      null-terminated.  It appears that they generally are, given the
      lack of field complaints up to now.  However, the available
      documentation does not promise this, and some man pages
      for gss_display_status() show examples that rely on the
      gss_buffer_desc.length field instead of expecting null
      termination.  Also, we now have a report that on some
      implementations, clang's address sanitizer is of the opinion
      that the byte after the specified length is undefined.
      
      Hence, change the code to rely on the length field instead.
      
      This might well be cosmetic rather than fixing any real bug, but
      it's hard to be sure, so back-patch to all supported branches.
      While here, also back-patch the v12 changes that made pg_GSS_error
      deal honestly with multiple messages available from
      gss_display_status.
      
      Per report from Sudheer H R.
      
      Discussion: https://postgr.es/m/5372B6D4-8276-42C0-B8FB-BD0918826FC3@tekenlight.com
      126cdaf4
    • Tom Lane's avatar
      Improve display of query results in isolation tests. · 4a054069
      Tom Lane authored
      Previously, isolationtester displayed SQL query results using some
      ad-hoc code that clearly hadn't had much effort expended on it.
      Field values longer than 14 characters weren't separated from
      the next field, and usually caused misalignment of the columns
      too.  Also there was no visual separation of a query's result
      from subsequent isolationtester output.  This made test result
      files confusing and hard to read.
      
      To improve matters, let's use libpq's PQprint() function.  Although
      that's long since unused by psql, it's still plenty good enough
      for the purpose here.
      
      Like 741d7f10, back-patch to all supported branches, so that this
      isn't a stumbling block for back-patching isolation test changes.
      
      Discussion: https://postgr.es/m/582362.1623798221@sss.pgh.pa.us
      4a054069
    • Alvaro Herrera's avatar
      Add test case for obsoleting slot with active walsender, take 2 · 24043c27
      Alvaro Herrera authored
      The code to signal a running walsender when its reserved WAL size grows
      too large is completely uncovered before this commit; this adds coverage
      for that case.
      
      This test involves sending SIGSTOP to walsender and walreceiver, then
      advancing enough WAL for a checkpoint to trigger, then sending SIGCONT.
      
      There's no precedent for STOP signalling in Perl tests, and my reading
      of relevant manpages says it's likely to fail on Windows.  Because of
      this, this test is always skipped on that platform.
      
      This version fixes a couple of rarely hit race conditions in the
      previous attempt 09126984; most notably, both LOG string searches
      are loops, not just the second one; we acquire the start-of-log position
      before STOP-signalling; and reference the correct process name in the
      test description.  All per Tom Lane.
      
      Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
      Discussion: https://postgr.es/m/202106102202.mjw4huiix7lo@alvherre.pgsql
      24043c27
    • Tom Lane's avatar
      Use annotations to reduce instability of isolation-test results. · 741d7f10
      Tom Lane authored
      We've long contended with isolation test results that aren't entirely
      stable.  Some test scripts insert long delays to try to force stable
      results, which is not terribly desirable; but other erratic failure
      modes remain, causing unrepeatable buildfarm failures.  I've spent a
      fair amount of time trying to solve this by improving the server-side
      support code, without much success: that way is fundamentally unable
      to cope with diffs that stem from chance ordering of arrival of
      messages from different server processes.
      
      We can improve matters on the client side, however, by annotating
      the test scripts themselves to show the desired reporting order
      of events that might occur in different orders.  This patch adds
      three types of annotations to deal with (a) test steps that might or
      might not complete their waits before the isolationtester can see them
      waiting; (b) test steps in different sessions that can legitimately
      complete in either order; and (c) NOTIFY messages that might arrive
      before or after the completion of a step in another session.  We might
      need more annotation types later, but this seems to be enough to deal
      with the instabilities we've seen in the buildfarm.  It also lets us
      get rid of all the long delays that were previously used, cutting more
      than a minute off the runtime of the isolation tests.
      
      Back-patch to all supported branches, because the buildfarm
      instabilities affect all the branches, and because it seems desirable
      to keep isolationtester's capabilities the same across all branches
      to simplify possible future back-patching of tests.
      
      Discussion: https://postgr.es/m/327948.1623725828@sss.pgh.pa.us
      741d7f10
  7. 22 Jun, 2021 2 commits
  8. 21 Jun, 2021 5 commits