Skip to content
Snippets Groups Projects
  1. Jul 25, 2013
    • Tom Lane's avatar
      Fix configure probe for sys/ucred.h. · 1b09630f
      Tom Lane authored
      The configure script's test for <sys/ucred.h> did not work on OpenBSD,
      because on that platform <sys/param.h> has to be included first.
      As a result, socket peer authentication was disabled on that platform.
      Problem introduced in commit be4585b1.
      
      Andres Freund, slightly simplified by me.
      1b09630f
  2. Jul 05, 2013
    • Jeff Davis's avatar
      Use posix_fallocate() for new WAL files, where available. · 269e7808
      Jeff Davis authored
      This function is more efficient than actually writing out zeroes to
      the new file, per microbenchmarks by Jon Nelson. Also, it may reduce
      the likelihood of WAL file fragmentation.
      
      Jon Nelson, with review by Andres Freund, Greg Smith and me.
      269e7808
  3. Jun 15, 2013
  4. Jun 14, 2013
  5. May 06, 2013
  6. Apr 30, 2013
  7. Mar 28, 2013
    • Robert Haas's avatar
      Allow sepgsql labels to depend on object name. · 0f05840b
      Robert Haas authored
      The main change here is to call security_compute_create_name_raw()
      rather than security_compute_create_raw().  This ups the minimum
      requirement for libselinux from 2.0.99 to 2.1.10, but it looks
      like most distributions will have picked that up before 9.3 is out.
      
      KaiGai Kohei
      0f05840b
  8. Jan 14, 2013
    • Tom Lane's avatar
      Improve handling of ereport(ERROR) and elog(ERROR). · b853eb97
      Tom Lane authored
      In commit 71450d7f, we added code to inform
      suitably-intelligent compilers that ereport() doesn't return if the elevel
      is ERROR or higher.  This patch extends that to elog(), and also fixes a
      double-evaluation hazard that the previous commit created in ereport(),
      as well as reducing the emitted code size.
      
      The elog() improvement requires the compiler to support __VA_ARGS__, which
      should be available in just about anything nowadays since it's required by
      C99.  But our minimum language baseline is still C89, so add a configure
      test for that.
      
      The previous commit assumed that ereport's elevel could be evaluated twice,
      which isn't terribly safe --- there are already counterexamples in xlog.c.
      On compilers that have __builtin_constant_p, we can use that to protect the
      second test, since there's no possible optimization gain if the compiler
      doesn't know the value of elevel.  Otherwise, use a local variable inside
      the macros to prevent double evaluation.  The local-variable solution is
      inferior because (a) it leads to useless code being emitted when elevel
      isn't constant, and (b) it increases the optimization level needed for the
      compiler to recognize that subsequent code is unreachable.  But it seems
      better than not teaching non-gcc compilers about unreachability at all.
      
      Lastly, if the compiler has __builtin_unreachable(), we can use that
      instead of abort(), resulting in a noticeable code savings since no
      function call is actually emitted.  However, it seems wise to do this only
      in non-assert builds.  In an assert build, continue to use abort(), so that
      the behavior will be predictable and debuggable if the "impossible"
      happens.
      
      These changes involve making the ereport and elog macros emit do-while
      statement blocks not just expressions, which forces small changes in
      a few call sites.
      
      Andres Freund, Tom Lane, Heikki Linnakangas
      b853eb97
  9. Jan 11, 2013
    • Tom Lane's avatar
      Last-gasp attempt to save libperl.so configure probe. · e1b735ae
      Tom Lane authored
      I notice that plperl's makefile adds the -I for $perl_archlibexp/CORE
      at the end of CPPFLAGS not the beginning.  It seems somewhat unlikely
      that the include search order has anything to do with why buildfarm
      member okapi is failing, but I'm about out of other ideas.
      e1b735ae
  10. Jan 10, 2013
    • Tom Lane's avatar
      Test linking libperl.so using only Perl's required libraries. · 9d5a160c
      Tom Lane authored
      It appears that perl_embed_ldflags should already mention all the libraries
      that are required by libperl.so itself.  So let's try the test link with
      just those and not the other LIBS we've found up to now.  This should
      more nearly reproduce what will happen when plperl is linked, and perhaps
      will fix buildfarm member okapi's problem.
      9d5a160c
    • Tom Lane's avatar
      Add explicit configure-time checks for perl.h and libperl.so. · 1f3ed51f
      Tom Lane authored
      Although most platforms seem to package Perl in such a way that these files
      are present even in basic Perl installations, Debian does not.  Hence, make
      an effort to fail during configure rather than build if --with-perl was
      given and these files are lacking.  Per gripe from Josh Berkus.
      1f3ed51f
  11. Jan 01, 2013
  12. Dec 18, 2012
    • Tom Lane's avatar
      Ignore libedit/libreadline while probing for standard functions. · 2666a6d0
      Tom Lane authored
      Some versions of libedit expose bogus definitions of setproctitle(),
      optreset, and perhaps other symbols that we don't want configure to pick up
      on.  There was a previous report of similar problems with strlcpy(), which
      we addressed in commit 59cf88da, but the
      problem has evidently grown in scope since then.  In hopes of not having to
      deal with it again in future, rearrange configure's tests for supplied
      functions so that we ignore libedit/libreadline except when probing
      specifically for functions we expect them to provide.
      
      Per report from Christoph Berg, though this is slightly more aggressive
      than his proposed patch.
      2666a6d0
  13. Nov 23, 2012
  14. Nov 16, 2012
  15. Oct 08, 2012
    • Tom Lane's avatar
      Autoconfiscate selection of 64-bit int type for 64-bit large object API. · 95d035e6
      Tom Lane authored
      Get rid of the fundamentally indefensible assumption that "long long int"
      exists and is exactly 64 bits wide on every platform Postgres runs on.
      Instead let the configure script select the type to use for "pg_int64".
      
      This is a bit of a pain in the rear since we do not want to pollute client
      namespace with all the random symbols that pg_config.h defines; instead
      we have to create a separate generated header file, "pg_config_ext.h".
      But now that the infrastructure is there, we might have the ability to
      add some other stuff that's long been wanting in this area.
      95d035e6
  16. Sep 30, 2012
  17. Aug 31, 2012
    • Tom Lane's avatar
      Make configure probe for mbstowcs_l as well as wcstombs_l. · 58a031f9
      Tom Lane authored
      We previously supposed that any given platform would supply both or neither
      of these functions, so that one configure test would be sufficient.  It now
      appears that at least on AIX this is not the case ... which is likely an
      AIX bug, but nonetheless we need to cope with it.  So use separate tests.
      Per bug #6758; thanks to Andrew Hastie for doing the followup testing
      needed to confirm what was happening.
      
      Backpatch to 9.1, where we began using these functions.
      58a031f9
  18. Aug 30, 2012
  19. Aug 17, 2012
    • Tom Lane's avatar
      Check LIBXML_VERSION instead of testing in configure script. · 470d0b97
      Tom Lane authored
      We had put a test for libxml2's xmlStructuredErrorContext variable in
      configure, but of course that doesn't work on Windows builds.  The next
      best alternative seems to be to test the LIBXML_VERSION symbol provided
      by xmlversion.h.
      
      Per report from Talha Bin Rizwan, though this fixes it in a different way
      than his proposed patch.
      470d0b97
  20. Jul 13, 2012
    • Tom Lane's avatar
      Add fsync capability to initdb, and use sync_file_range() if available. · b966dd6c
      Tom Lane authored
      Historically we have not worried about fsync'ing anything during initdb
      (in fact, initdb intentionally passes -F to each backend launch to prevent
      it from fsync'ing).  But with filesystems getting more aggressive about
      caching data, that's not such a good plan anymore.  Make initdb do a pass
      over the finished data directory tree to fsync everything.  For testing
      purposes, the -N/--nosync flag can be used to restore the old behavior.
      
      Also, testing shows that on Linux, sync_file_range() is much faster than
      posix_fadvise() for hinting to the kernel that an fsync is coming,
      apparently because the latter blocks on a rather small request queue while
      the former doesn't.  So use this function if available in initdb, and also
      in the backend's pg_flush_data() (where it currently will affect only the
      speed of CREATE DATABASE's cloning step).
      
      We will later make pg_regress invoke initdb with the --nosync flag
      to avoid slowing down cases such as "make check" in contrib.  But
      let's not do so until we've shaken out any portability issues in this
      patch.
      
      Jeff Davis, reviewed by Andres Freund
      b966dd6c
  21. Jul 05, 2012
    • Tom Lane's avatar
      Remove support for using wait3() in place of waitpid(). · fc548b22
      Tom Lane authored
      All Unix-oid platforms that we currently support should have waitpid(),
      since it's in V2 of the Single Unix Spec.  Our git history shows that
      the wait3 code was added to support NextStep, which we officially dropped
      support for as of 9.2.  So get rid of the configure test, and simplify the
      macro spaghetti in reaper().  Per suggestion from Fujii Masao.
      fc548b22
  22. Jun 28, 2012
    • Peter Eisentraut's avatar
      Further fix install program detection · dcd5af6c
      Peter Eisentraut authored
      The $(or) make function was introduced in GNU make 3.81, so the
      previous coding didn't work in 3.80.  Write it differently, and
      improve the variable naming to make more sense in the new coding.
      dcd5af6c
  23. Jun 27, 2012
  24. Jun 14, 2012
  25. Jun 01, 2012
  26. May 14, 2012
  27. May 12, 2012
    • Peter Eisentraut's avatar
      Remove unused AC_SUBST variables · 7b85527e
      Peter Eisentraut authored
      These were apparently never used.  The AC_SUBST was probably just
      added in a copy-and-paste manner.  (The shell variables continue to be
      used inside configure.  The change is just that we don't need them
      outside of configure.)
      7b85527e
  28. May 11, 2012
  29. May 07, 2012
  30. May 03, 2012
  31. May 01, 2012
    • Peter Eisentraut's avatar
      Remove dead ports · f2f9439f
      Peter Eisentraut authored
      Remove the following ports:
      
      - dgux
      - nextstep
      - sunos4
      - svr4
      - ultrix4
      - univel
      
      These are obsolete and not worth rescuing.  In most cases, there is
      circumstantial evidence that they wouldn't work anymore anyway.
      f2f9439f
  32. Feb 23, 2012
  33. Feb 07, 2012
    • Robert Haas's avatar
      Support fls(). · 4f658dc8
      Robert Haas authored
      The immediate impetus for this is that Noah Misch's patch to elide
      unnecessary table and index rebuilds when changing typmod for temporal
      types uses it; and this is extracted from that patch, with some
      further commentary by me.  But it seems logically separate from the
      remainder of the patch, so I'm committing it separately; this is not
      the first time someone has wanted fls() in the backend and probably
      won't be the last.
      
      If we end up using this in more performance-critical spots it may be
      worthwhile to add some architecture-specific optimizations to our
      src/port version of fls() - e.g. any x86 platform can implement this
      using the assembly instruction BSRL.  But performance won't matter
      a bit for assessing typmod changes, so I'm not worried about that
      right now.
      4f658dc8
  34. Jan 07, 2012
    • Tom Lane's avatar
      Use __sync_lock_test_and_set() for spinlocks on ARM, if available. · 0a41e865
      Tom Lane authored
      Historically we've used the SWPB instruction for TAS() on ARM, but this
      is deprecated and not available on ARMv6 and later.  Instead, make use
      of a GCC builtin if available.  We'll still fall back to SWPB if not,
      so as not to break existing ports using older GCC versions.
      
      Eventually we might want to try using __sync_lock_test_and_set() on some
      other architectures too, but for now that seems to present only risk and
      not reward.
      
      Back-patch to all supported versions, since people might want to use any
      of them on more recent ARM chips.
      
      Martin Pitt
      0a41e865
  35. Jan 02, 2012
    • Tom Lane's avatar
      Use mutex hint bit in PPC LWARX instructions, where possible. · 5cfa8dd3
      Tom Lane authored
      The hint bit makes for a small but measurable performance improvement
      in access to contended spinlocks.
      
      On the other hand, some PPC chips give an illegal-instruction failure.
      There doesn't seem to be a completely bulletproof way to tell whether the
      hint bit will cause an illegal-instruction failure other than by trying
      it; but most if not all 64-bit PPC machines should accept it, so follow
      the Linux kernel's lead and assume it's okay to use it in 64-bit builds.
      Of course we must also check whether the assembler accepts the command,
      since even with a recent CPU the toolchain could be old.
      
      Patch by Manabu Ori, significantly modified by me.
      5cfa8dd3
    • Bruce Momjian's avatar
      Update copyright notices for year 2012. · e126958c
      Bruce Momjian authored
      e126958c
  36. Dec 27, 2011
    • Peter Eisentraut's avatar
      Remove support for on_exit() · d383c23f
      Peter Eisentraut authored
      All supported platforms support the C89 standard function atexit()
      (SunOS 4 probably being the last one not to), and supporting both
      makes the code clumsy.
      d383c23f
Loading