Skip to content
Snippets Groups Projects
  1. Jan 11, 2015
    • Tom Lane's avatar
      Remove configure test for nonstandard variants of getpwuid_r(). · 8883bae3
      Tom Lane authored
      We had code that supposed that some platforms might offer a nonstandard
      version of getpwuid_r() with only four arguments.  However, the 5-argument
      definition has been standardized at least since the Single Unix Spec v2,
      which is our normal reference for what's portable across all Unix-oid
      platforms.  (What's more, this wasn't the only pre-standardization version
      of getpwuid_r(); my old HPUX 10.20 box has still another signature.)
      So let's just get rid of the now-useless configure step.
      8883bae3
  2. Nov 23, 2014
  3. Sep 25, 2014
    • Andres Freund's avatar
      Add a basic atomic ops API abstracting away platform/architecture details. · b64d92f1
      Andres Freund authored
      Several upcoming performance/scalability improvements require atomic
      operations. This new API avoids the need to splatter compiler and
      architecture dependent code over all the locations employing atomic
      ops.
      
      For several of the potential usages it'd be problematic to maintain
      both, a atomics using implementation and one using spinlocks or
      similar. In all likelihood one of the implementations would not get
      tested regularly under concurrency. To avoid that scenario the new API
      provides a automatic fallback of atomic operations to spinlocks. All
      properties of atomic operations are maintained. This fallback -
      obviously - isn't as fast as just using atomic ops, but it's not bad
      either. For one of the future users the atomics ontop spinlocks
      implementation was actually slightly faster than the old purely
      spinlock using implementation. That's important because it reduces the
      fear of regressing older platforms when improving the scalability for
      new ones.
      
      The API, loosely modeled after the C11 atomics support, currently
      provides 'atomic flags' and 32 bit unsigned integers. If the platform
      efficiently supports atomic 64 bit unsigned integers those are also
      provided.
      
      To implement atomics support for a platform/architecture/compiler for
      a type of atomics 32bit compare and exchange needs to be
      implemented. If available and more efficient native support for flags,
      32 bit atomic addition, and corresponding 64 bit operations may also
      be provided. Additional useful atomic operations are implemented
      generically ontop of these.
      
      The implementation for various versions of gcc, msvc and sun studio have
      been tested. Additional existing stub implementations for
      * Intel icc
      * HUPX acc
      * IBM xlc
      are included but have never been tested. These will likely require
      fixes based on buildfarm and user feedback.
      
      As atomic operations also require barriers for some operations the
      existing barrier support has been moved into the atomics code.
      
      Author: Andres Freund with contributions from Oskari Saarenmaa
      Reviewed-By: Amit Kapila, Robert Haas, Heikki Linnakangas and Álvaro Herrera
      Discussion: CA+TgmoYBW+ux5-8Ja=Mcyuy8=VXAnVRHp3Kess6Pn3DMXAPAEA@mail.gmail.com,
          20131015123303.GH5300@awork2.anarazel.de,
          20131028205522.GI20248@awork2.anarazel.de
      b64d92f1
  4. Sep 18, 2014
    • Andres Freund's avatar
      Fix configure check for %z printf support after INT64_MODIFIER changes. · 7e3f7283
      Andres Freund authored
      The PGAC_FUNC_SNPRINTF_SIZE_T_SUPPORT test was broken by
      ce486056. Among others it made the UINT64_FORMAT macro to be
      defined in c.h, instead of directly being defined by configure.
      
      This lead to the replacement printf being used on all platforms for a
      while. Which seems to work, because this was only used due to
      different profiles ;)
      
      Fix by relying on INT64_MODIFIER instead.
      7e3f7283
  5. Aug 21, 2014
  6. Jul 26, 2014
  7. Jul 01, 2014
    • Tom Lane's avatar
      Remove some useless code in the configure script. · 2e8ce9ae
      Tom Lane authored
      Almost ten years ago, commit e48322a6 broke
      the logic in ACX_PTHREAD by looping through all the possible flags rather
      than stopping with the first one that would work.  This meant that
      $acx_pthread_ok was no longer meaningful after the loop; it would usually
      be "no", whether or not we'd found working thread flags.  The reason nobody
      noticed is that Postgres doesn't actually use any of the symbols set up
      by the code after the loop.  Rather than complicate things some more to
      make it work as designed, let's just remove all that dead code, and thereby
      save a few cycles in each configure run.
      2e8ce9ae
  8. Jun 04, 2014
    • Peter Eisentraut's avatar
      Silence Bison deprecation warnings · 55fb759a
      Peter Eisentraut authored
      Bison >=3.0 issues warnings about
      
          %name-prefix="base_yy"
      
      instead of the now preferred
      
          %name-prefix "base_yy"
      
      but the latter doesn't work with Bison 2.3 or less.  So for now we
      silence the deprecation warnings.
      55fb759a
  9. May 31, 2014
    • Tom Lane's avatar
      On OS X, link libpython normally, ignoring the "framework" framework. · 20561acf
      Tom Lane authored
      As of Xcode 5.0, Apple isn't including the Python framework as part of the
      SDK-level files, which means that linking to it might fail depending on
      whether Xcode thinks you've selected a specific SDK version.  According to
      their Tech Note 2328, they've basically deprecated the framework method of
      linking to libpython and are telling people to link to the shared library
      normally.  (I'm pretty sure this is in direct contradiction to the advice
      they were giving a few years ago, but whatever.)  Testing says that this
      approach works fine at least as far back as OS X 10.4.11, so let's just
      rip out the framework special case entirely.  We do still need a special
      case to decide that OS X provides a shared library at all, unfortunately
      (I wonder why the distutils check doesn't work ...).  But this is still
      less of a special case than before, so it's fine.
      
      Back-patch to all supported branches, since we'll doubtless be hearing
      about this more as more people update to recent Xcode.
      20561acf
  10. May 10, 2014
  11. May 06, 2014
    • Bruce Momjian's avatar
      pgindent run for 9.4 · 0a783200
      Bruce Momjian authored
      This includes removing tabs after periods in C comments, which was
      applied to back branches, so this change should not effect backpatching.
      0a783200
  12. May 01, 2014
    • Tom Lane's avatar
      Fix "quiet inline" configure test for newer clang compilers. · 4c8aa8b5
      Tom Lane authored
      This test used to just define an unused static inline function and check
      whether that causes a warning.  But newer clang versions warn about
      unused static inline functions when defined inside a .c file, but not
      when defined in an included header, which is the case we care about.
      Change the test to cope.
      
      Andres Freund
      4c8aa8b5
  13. Jan 23, 2014
    • Tom Lane's avatar
      Allow use of "z" flag in our printf calls, and use it where appropriate. · ac4ef637
      Tom Lane authored
      Since C99, it's been standard for printf and friends to accept a "z" size
      modifier, meaning "whatever size size_t has".  Up to now we've generally
      dealt with printing size_t values by explicitly casting them to unsigned
      long and using the "l" modifier; but this is really the wrong thing on
      platforms where pointers are wider than longs (such as Win64).  So let's
      start using "z" instead.  To ensure we can do that on all platforms, teach
      src/port/snprintf.c to understand "z", and add a configure test to force
      use of that implementation when the platform's version doesn't handle "z".
      
      Having done that, modify a bunch of places that were using the
      unsigned-long hack to use "z" instead.  This patch doesn't pretend to have
      gotten everyplace that could benefit, but it catches many of them.  I made
      an effort in particular to ensure that all uses of the same error message
      text were updated together, so as not to increase the number of
      translatable strings.
      
      It's possible that this change will result in format-string warnings from
      pre-C99 compilers.  We might have to reconsider if there are any popular
      compilers that will warn about this; but let's start by seeing what the
      buildfarm thinks.
      
      Andres Freund, with a little additional work by me
      ac4ef637
  14. Oct 11, 2013
    • Peter Eisentraut's avatar
      Remove maintainer-check target, fold into normal build · 5dd41f35
      Peter Eisentraut authored
      make maintainer-check was obscure and rarely called in practice, and
      many breakages were missed.  Fold everything that make maintainer-check
      used to do into the normal build.  Specifically:
      
      - Call duplicate_oids when genbki.pl is called.
      
      - Check for tabs in SGML files when the documentation is built.
      
      - Run msgfmt with the -c option during the regular build.  Add an
        additional configure check to see whether we are using the GNU
        version.  (make maintainer-check probably used to fail with non-GNU
        msgfmt.)
      
      Keep maintainer-check as around as phony target for the time being in
      case anyone is calling it.  But it won't do anything anymore.
      5dd41f35
  15. Jun 15, 2013
  16. Apr 30, 2013
  17. Apr 27, 2013
  18. 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
  19. Jan 09, 2013
  20. Jan 06, 2013
    • Tom Lane's avatar
      Fix plpython build on older versions of OS X. · 5aec9cca
      Tom Lane authored
      Pre-Lion versions of Apple's linker don't allow space between -F and its
      argument.  (Snow Leopard is nice enough to tell you that in so many words,
      but older versions just fail with very obscure link errors, as seen on
      buildfarm member locust for instance.)  Oversight in commit
      fc874507.
      5aec9cca
  21. Jan 05, 2013
    • Peter Eisentraut's avatar
      PL/Python: Make build on OS X more flexible · fc874507
      Peter Eisentraut authored
      The PL/Python build on OS X was previously hardcoded to use the system
      installation of Python, ignoring whatever was specified to configure.
      Except that it would use the header files from configure, which could
      lead to mismatches.  It was not possible to build against a custom
      Python installation.
      
      Now, we check in configure how the specified Python installation was
      built and use that, supporting framework and non-framework builds.
      fc874507
  22. Oct 09, 2012
    • Alvaro Herrera's avatar
      Rename USE_INLINE to PG_USE_INLINE · f46baf60
      Alvaro Herrera authored
      The former name was too likely to conflict with symbols from external
      headers; and, as seen in recent buildfarm failures in member spoonbill,
      it has now happened at least in plpython.
      f46baf60
  23. Sep 30, 2012
  24. Aug 30, 2012
    • Peter Eisentraut's avatar
      Also check for Python platform-specific include directory · 9cffb187
      Peter Eisentraut authored
      Python can be built to have two separate include directories: one for
      platform-independent files and one for platform-specific files.  So
      far, this has apparently never mattered for a PL/Python build.  But
      with the new multi-arch Python packages in Debian and Ubuntu, this is
      becoming the standard configuration on these platforms, so we must
      check these directories separately to be able to build there.
      
      Also add a bit of reporting in configure to be able to see better what
      is going on with this.
      9cffb187
  25. Aug 22, 2012
    • Peter Eisentraut's avatar
      Fix install-strip on Mac OS X · b748d8f2
      Peter Eisentraut authored
      There was a hack put into install-sh to call strip with the correct
      options on Mac OS X.  But that never worked, because configure
      disabled stripping on that platform altogether.  So remove that dead
      code, and while we're at it, update install-sh to the latest upstream
      source (from Automake).
      
      Instead, set up the right strip options in programs.m4, so this now
      actually works the way it was originally intended.
      b748d8f2
  26. May 15, 2012
    • Tom Lane's avatar
      Put back AC_REQUIRE([AC_STRUCT_TM]). · f667747b
      Tom Lane authored
      The BSD-ish members of the buildfarm all seem to think removing this
      was a bad idea.  It looks to me like it resulted in omitting the system
      header inclusion necessary to detect the fields of struct tm correctly.
      f667747b
  27. May 14, 2012
  28. May 08, 2012
  29. Mar 22, 2012
    • Tom Lane's avatar
      Fix configure's search for collateindex.pl. · f2386d71
      Tom Lane authored
      PGAC_PATH_COLLATEINDEX supposed that it could use AC_PATH_PROGS to search
      for collateindex.pl, but that macro will only accept files that are marked
      executable, and at least some DocBook installations don't mark the script
      executable (a case the docs Makefile was already prepared for).  Accept the
      script if it's present and readable in $DOCBOOKSTYLE/bin, and otherwise
      search the PATH as before.
      
      Having fixed that up, we don't need the fallback case that was in the docs
      Makefile, and instead can throw an understandable error if configure didn't
      find the script.  Per recent trouble report from John Lumby.
      f2386d71
  30. Feb 20, 2012
  31. Dec 10, 2011
  32. Nov 29, 2011
  33. Aug 18, 2011
    • Peter Eisentraut's avatar
      Improve detection of Python 3.2 installations · f8c2029e
      Peter Eisentraut authored
      Because of ABI tagging, the library version number might no longer be
      exactly the Python version number, so do extra lookups.  This affects
      installations without a shared library, such as ActiveState's
      installer.
      
      Also update the way to detect the location of the 'config' directory,
      which can also be versioned.
      
      Ashesh Vashi
      f8c2029e
  34. May 26, 2011
    • Tom Lane's avatar
      Adjust configure to use "+Olibmerrno" with HP-UX C compiler, if possible. · 44404f39
      Tom Lane authored
      This is reported to be necessary on some versions of that OS.  In service
      of this, cause PGAC_PROG_CC_CFLAGS_OPT to reject switches that result in
      compiler warnings, since on yet other versions of that OS, the switch does
      nothing except provoke a warning.
      
      Report and patch by Ibrar Ahmed, further tweaking by me.
      44404f39
  35. May 19, 2011
  36. Feb 16, 2011
  37. Feb 08, 2011
    • Peter Eisentraut's avatar
      Per-column collation support · 414c5a2e
      Peter Eisentraut authored
      This adds collation support for columns and domains, a COLLATE clause
      to override it per expression, and B-tree index support.
      
      Peter Eisentraut
      reviewed by Pavel Stehule, Itagaki Takahiro, Robert Haas, Noah Misch
      414c5a2e
  38. Jan 31, 2011
  39. Nov 23, 2010
Loading