1. 11 Feb, 2014 4 commits
    • Tom Lane's avatar
      Get rid of use of dlltool in Mingw builds. · 846e91e0
      Tom Lane authored
      We are almost completely out of the dlltool game, if this works.
      
      Hiroshi Inoue
      846e91e0
    • Tom Lane's avatar
      Cygwin build fixes. · cba6ffae
      Tom Lane authored
      Get rid of use of dlltool for linking the main postgres executable.
      dlltool is obsolete and we'd prefer to stop depending on it.
      
      Also, include $(LDAP_LIBS_FE) in $(libpq_pgport).  (It's not clear that
      this is really needed, or why it's not a linker bug if it is needed.
      But reports are that it's needed on current Cygwin.)
      
      We might want to back-patch this if it works, but first let's see
      what the buildfarm thinks.
      
      Marco Atzeri
      cba6ffae
    • Peter Eisentraut's avatar
      scripts: Remove newlines from end of generated SQL · d3c4c471
      Peter Eisentraut authored
      This results in spurious empty lines in the server log.  Instead, add
      the newlines only when printing out the --echo output.  In some cases,
      this was already done, leading to two newlines being printed.  Clean
      that up as well.
      
      From: Fabrízio de Royes Mello <fabriziomello@gmail.com>
      d3c4c471
    • Tom Lane's avatar
      Don't generate plain-text HISTORY and src/test/regress/README anymore. · 28954152
      Tom Lane authored
      Providing this information as plain text was doubtless worth the trouble
      ten years ago, but it seems likely that hardly anyone reads it in this
      format anymore.  And the effort required to maintain these files (in the
      form of extra-complex markup rules in the relevant parts of the SGML
      documentation) is significant.  So, let's stop doing that and rely solely
      on the other documentation formats.
      
      Per discussion, the plain-text INSTALL instructions might still be worth
      their keep, so we continue to generate that file.
      
      Rather than remove HISTORY and src/test/regress/README from distribution
      tarballs entirely, replace them with simple stub files that tell the reader
      where to find the relevant documentation.  This is mainly to avoid possibly
      breaking packaging recipes that expect these files to exist.
      
      Back-patch to all supported branches, because simplifying the markup
      requirements for release notes won't help much unless we do it in all
      branches.
      28954152
  2. 10 Feb, 2014 2 commits
  3. 09 Feb, 2014 6 commits
    • Stephen Frost's avatar
      Further pg_dump / ftello improvements · dfb1e9bd
      Stephen Frost authored
      Make ftello error-checking consistent to all calls and remove a
      bit of ftello-related code which has been #if 0'd out since 2001.
      
      Note that we are not concerned with the ftello() call under
      snprintf() failing as it is just building a string to call
      exit_horribly() with; printing -1 in such a case is fine.
      dfb1e9bd
    • Stephen Frost's avatar
      Focus on ftello result < 0 instead of errno · 5e8e794e
      Stephen Frost authored
      Rather than reset errno (or just hope that its cleared already),
      check just the result of the ftello for < 0 to determine if there
      was an issue.
      
      Oversight by me, pointed out by Tom.
      5e8e794e
    • Magnus Hagander's avatar
      Limit pg_basebackup progress output to 1/second · 8198a321
      Magnus Hagander authored
      This prevents pg_basebackup from generating excessive output when
      dumping large clusters. The status is now updated once / second,
      still making it possible to see that there is progress happening,
      but limiting the total bandwidth.
      
      Mika Eloranta, reviewed by Sawada Masahiko and Oskari Saarenmaa
      8198a321
    • Magnus Hagander's avatar
      Avoid printing uninitialized filename variable in verbose mode · 01025d80
      Magnus Hagander authored
      When using verbose mode for pg_basebackup, in tar format sent to
      stdout, we'd print an unitialized buffer as the filename.
      
      Reported by Pontus Lundkvist
      01025d80
    • Stephen Frost's avatar
      Minor pg_dump improvements · cfa1b4a7
      Stephen Frost authored
      Improve pg_dump by checking results on various fgetc() calls which
      previously were unchecked, ditto for ftello.  Also clean up a couple
      of very minor memory leaks by waiting to allocate structures until
      after the initial check(s).
      
      Issues spotted by Coverity.
      cfa1b4a7
    • Peter Eisentraut's avatar
      Mark some more variables as static or include the appropriate header · 66c04c98
      Peter Eisentraut authored
      Detected by clang's -Wmissing-variable-declarations.
      
      From: Andres Freund <andres@anarazel.de>
      66c04c98
  4. 07 Feb, 2014 4 commits
    • Heikki Linnakangas's avatar
      Initialize the entryRes array between each call to triConsistent. · 6aa2bdf6
      Heikki Linnakangas authored
      The shimTriConstistentFn, which calls the opclass's consistent function with
      all combinations of TRUE/FALSE for any MAYBE argument, modifies the entryRes
      array passed by the caller. Change startScanKey to re-initialize it between
      each call to accommodate that.
      
      It's actually a bad habit by shimTriConsistentFn to modify its argument. But
      the only caller that doesn't already re-initialize the entryRes array was
      startScanKey, and it's easy for startScanKey to do so. Add a comment to
      shimTriConsistentFn about that.
      
      Note: this does not give a free pass to opclass-provided consistent
      functions to modify the entryRes argument; shimTriConsistent assumes that
      they don't, even though it does it itself.
      
      While at it, refactor startScanKey to allocate the requiredEntries and
      additionalEntries after it knows exactly how large they need to be. Saves a
      little bit of memory, and looks nicer anyway.
      
      Per complaint by Tom Lane, buildfarm and the pg_trgm regression test.
      6aa2bdf6
    • Heikki Linnakangas's avatar
      Speed up "rare & frequent" type GIN queries. · dbc649fd
      Heikki Linnakangas authored
      If you have a GIN query like "rare & frequent", we currently fetch all the
      items that match either rare or frequent, call the consistent function for
      each item, and let the consistent function filter out items that only match
      one of the terms. However, if we can deduce that "rare" must be present for
      the overall qual to be true, we can scan all the rare items, and for each
      rare item, skip over to the next frequent item with the same or greater TID.
      That greatly speeds up "rare & frequent" type queries.
      
      To implement that, introduce the concept of a tri-state consistent function,
      where the 3rd value is MAYBE, indicating that we don't know if that term is
      present. Operator classes only provide a boolean consistent function, so we
      simulate the tri-state consistent function by calling the boolean function
      several times, with the MAYBE arguments set to all combinations of TRUE and
      FALSE. Testing all combinations is only feasible for a small number of MAYBE
      arguments, but it is envisioned that we'll provide a way for operator
      classes to provide a native tri-state consistent function, which can be much
      more efficient. But that is not included in this patch.
      
      We were already using that trick to for lossy pages, calling the consistent
      function with the lossy entry set to TRUE and FALSE. Now that we have the
      tri-state consistent function, use it for lossy pages too.
      
      Alexander Korotkov, with fair amount of refactoring by me.
      dbc649fd
    • Heikki Linnakangas's avatar
      Fix thinko in comment. · e001030c
      Heikki Linnakangas authored
      Amit Langote
      e001030c
    • Tom Lane's avatar
      In RelationClearRelation, postpone cache reload if !IsTransactionState(). · 8de3e410
      Tom Lane authored
      We may process relcache flush requests during transaction startup or
      shutdown.  In general it's not terribly safe to do catalog access at those
      times, so the code's habit of trying to immediately revalidate unflushable
      relcache entries is risky.  Although there are no field trouble reports
      that are positively traceable to this, we have been able to demonstrate
      failure of the assertions recently added in RelationIdGetRelation() and
      SearchCatCache().  On the other hand, it seems safe to just postpone
      revalidation of the cache entry until we're inside a valid transaction.
      The one case where this is questionable is where we're exiting a
      subtransaction and the outer transaction is holding the relcache entry open
      --- but if we made any significant changes to the rel inside such a
      subtransaction, we've got problems anyway.  There are mechanisms in place
      to prevent that (to wit, locks for cross-session cases and
      CheckTableNotInUse() for intra-session cases), so let's trust to those
      mechanisms to keep us out of trouble.
      8de3e410
  5. 06 Feb, 2014 4 commits
  6. 05 Feb, 2014 3 commits
    • Tom Lane's avatar
      Remove unnecessary relcache flushes after changing btree metapages. · ac8bc3b6
      Tom Lane authored
      These flushes were added in my commit d2896a9e, which added the btree
      logic that keeps a cached copy of the index metapage data in index relcache
      entries.  The idea was to ensure that other backends would promptly update
      their cached copies after a change.  However, this is not really necessary,
      since _bt_getroot() has adequate defenses against believing a stale root
      page link, and _bt_getrootheight() doesn't have to be 100% right.
      Moreover, if it were necessary, a relcache flush would be an unreliable way
      to do it, since the sinval mechanism believes that relcache flush requests
      represent transactional updates, and therefore discards them on transaction
      rollback.  Therefore, we might as well drop these flush requests and save
      the time to rebuild the whole relcache entry after a metapage change.
      
      If we ever try to support in-place truncation of btree indexes, it might
      be necessary to revisit this issue so that _bt_getroot() can't get caught
      by trying to follow a metapage link to a page that no longer exists.
      A possible solution to that is to make use of an smgr, rather than
      relcache, inval request to force other backends to discard their cached
      metapages.  But for the moment this is not worth pursuing.
      ac8bc3b6
    • Robert Haas's avatar
      Minor improvements to replication slot documentation. · 14aa601f
      Robert Haas authored
      Fix a thinko pointed out by Jeff Davis, and convert a couple of other
      references into links.
      14aa601f
    • Peter Eisentraut's avatar
      PL/Perl: Fix compiler warning · 4e182361
      Peter Eisentraut authored
      The code was assigning a (Datum) 0 to a void pointer.  That creates a
      warning from clang 3.4.  It was probably a thinko to begin with.
      4e182361
  7. 04 Feb, 2014 4 commits
    • Tom Lane's avatar
      Improve connection-failure error handling in contrib/postgres_fdw. · 00d4f2af
      Tom Lane authored
      postgres_fdw tended to say "unknown error" if it tried to execute a command
      on an already-dead connection, because some paths in libpq just return a
      null PGresult for such cases.  Out-of-memory might result in that, too.
      To fix, pass the PGconn to pgfdw_report_error, and look at its
      PQerrorMessage() string if we can't get anything out of the PGresult.
      
      Also, fix the transaction-exit logic to reliably drop a dead connection.
      It was attempting to do that already, but it assumed that only connection
      cache entries with xact_depth > 0 needed to be examined.  The folly in that
      is that if we fail while issuing START TRANSACTION, we'll not have bumped
      xact_depth.  (At least for the case I was testing, this fix masks the
      other problem; but it still seems like a good idea to have the PGconn
      fallback logic.)
      
      Per investigation of bug #9087 from Craig Lucas.  Backpatch to 9.3 where
      this code was introduced.
      00d4f2af
    • Fujii Masao's avatar
      Fix comparison of an array of characters with zero to compare with '\0' instead. · 489e6ac5
      Fujii Masao authored
      Report from Andres Freund.
      489e6ac5
    • Robert Haas's avatar
      Rephrase text to avoid links in regress.sgml · c1fe08eb
      Robert Haas authored
      Otherwise, the standalone regress_README build gets unhappy.
      c1fe08eb
    • Tom Lane's avatar
      Fix lexing of U& sequences just before EOF. · 0c2338ab
      Tom Lane authored
      Commit a5ff502f was a brick shy of a load
      in the backend lexer too, not just psql.  Per further testing of bug #9068.
      
      In passing, improve related comments.
      0c2338ab
  8. 03 Feb, 2014 5 commits
  9. 02 Feb, 2014 6 commits
  10. 01 Feb, 2014 2 commits
    • Tom Lane's avatar
      Fix some wide-character bugs in the text-search parser. · 082c0dfa
      Tom Lane authored
      In p_isdigit and other character class test functions generated by the
      p_iswhat macro, the code path for non-C locales with multibyte encodings
      contained a bogus pointer cast that would accidentally fail to malfunction
      if types wchar_t and wint_t have the same width.  Apparently that is true
      on most platforms, but not on recent Cygwin releases.  Remove the cast,
      as it seems completely unnecessary (I think it arose from a false analogy
      to the need to cast to unsigned char when dealing with the <ctype.h>
      functions).  Per bug #8970 from Marco Atzeri.
      
      In the same functions, the code path for C locale with a multibyte encoding
      simply ANDed each wide character with 0xFF before passing it to the
      corresponding <ctype.h> function.  This could result in false positive
      answers for some non-ASCII characters, so use a range test instead.
      Noted by me while investigating Marco's complaint.
      
      Also, remove some useless though not actually buggy maskings and casts
      in the hand-coded p_isalnum and p_isalpha functions, which evidently
      got tested a bit more carefully than the macro-generated functions.
      082c0dfa
    • Andrew Dunstan's avatar
      fix whitespace · c8158a2e
      Andrew Dunstan authored
      c8158a2e