--with-libraries=DIRS look for additional libraries in DIRS
--with-libs=DIRS alternative spelling of --with-libraries
--with-pgport=PORTNUM change default port number 5432
+ --with-threads allow libpq to be thread-safe
--with-tcl build Tcl and Tk interfaces
--without-tk do not build Tk interfaces if Tcl is enabled
--with-tclconfig=DIR tclConfig.sh and tkConfig.sh are in DIR
done
IFS=$ac_save_IFS
+#
+# Enable libpq to be thread-safe
+#
+echo "$as_me:$LINENO: checking allow threaded libpq" >&5
+echo $ECHO_N "checking allow threaded libpq... $ECHO_C" >&6
+
+
+
+# Check whether --with-threads or --without-threads was given.
+if test "${with_threads+set}" = set; then
+ withval="$with_threads"
+
+ case $withval in
+ yes)
+ :
+ ;;
+ no)
+ :
+ ;;
+ *)
+ { { echo "$as_me:$LINENO: error: no argument expected for --with-threads option" >&5
+echo "$as_me: error: no argument expected for --with-threads option" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+else
+ with_threads=no
+
+fi;
+
+echo "$as_me:$LINENO: result: $with_threads" >&5
+echo "${ECHO_T}$with_threads" >&6
+
+
#
# Tcl/Tk
#
#
# Pthreads
#
-
+if test "$with_threads" = yes; then
echo "$as_me:$LINENO: checking for ANSI C header files" >&5
echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
if test "${ac_cv_header_stdc+set}" = set; then
fi
if test $ac_cv_header_pthread_h = yes; then
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_THREADS 1
-_ACEOF
-
+ :
+else
+ { { echo "$as_me:$LINENO: error: pthread.h not found, required for --with-threads" >&5
+echo "$as_me: error: pthread.h not found, required for --with-threads" >&2;}
+ { (exit 1); exit 1; }; }
fi
-if test ! -z "$HAVE_THREADS"
-then
- case $host_os in
- # BSD/OS and NetBSD require no special libraries or flags
- netbsd*|bsdi*) ;;
+case $host_os in
+ netbsd*|bsdi*)
+ # these require no special flags or libraries
+ ;;
freebsd2*|freebsd3*|freebsd4*) THREAD_CFLAGS="-pthread" ;;
freebsd*) THREAD_LIBS="-lc_r" ;;
linux*) THREAD_LIBS="-lpthread"
THREAD_CFLAGS="-D_REENTRANT" ;;
- # other operating systems might fail because they have pthread.h but need
- # special libs we don't know about yet.
+ *)
+ # other operating systems might fail because they have pthread.h but need
+ # special libs we don't know about yet.
+ { { echo "$as_me:$LINENO: error:
+Cannot enable threads on your platform.
+Please report your platform threading info to the PostgreSQL mailing lists
+so it can be added to the next release. Report any compile or link flags,
+or libraries required for threading support.
+" >&5
+echo "$as_me: error:
+Cannot enable threads on your platform.
+Please report your platform threading info to the PostgreSQL mailing lists
+so it can be added to the next release. Report any compile or link flags,
+or libraries required for threading support.
+" >&2;}
+ { (exit 1); exit 1; }; }
esac
fi
s,@GCC@,$GCC,;t t
s,@autodepend@,$autodepend,;t t
s,@INCLUDES@,$INCLUDES,;t t
+s,@with_threads@,$with_threads,;t t
s,@with_tcl@,$with_tcl,;t t
s,@with_tk@,$with_tk,;t t
s,@with_perl@,$with_perl,;t t
dnl Process this file with autoconf to produce a configure script.
-dnl $Header: /cvsroot/pgsql/configure.in,v 1.260 2003/06/12 16:05:09 tgl Exp $
+dnl $Header: /cvsroot/pgsql/configure.in,v 1.261 2003/06/13 23:10:07 momjian Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
done
IFS=$ac_save_IFS
+#
+# Enable libpq to be thread-safe
+#
+AC_MSG_CHECKING([allow threaded libpq])
+PGAC_ARG_BOOL(with, threads, no, [ --with-threads allow libpq to be thread-safe])
+AC_MSG_RESULT([$with_threads])
+AC_SUBST(with_threads)
+
#
# Tcl/Tk
#
#
# Pthreads
#
-
-AC_CHECK_HEADER(pthread.h,
- [AC_DEFINE(HAVE_THREADS, 1, [Define to 1 if you have the threads interface.])])
-if test ! -z "$HAVE_THREADS"
-then
- case $host_os in
- # BSD/OS and NetBSD require no special libraries or flags
- netbsd*|bsdi*) ;;
+if test "$with_threads" = yes; then
+AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --with-threads])])
+case $host_os in
+ netbsd*|bsdi*)
+ # these require no special flags or libraries
+ ;;
freebsd2*|freebsd3*|freebsd4*) THREAD_CFLAGS="-pthread" ;;
freebsd*) THREAD_LIBS="-lc_r" ;;
linux*) THREAD_LIBS="-lpthread"
THREAD_CFLAGS="-D_REENTRANT" ;;
- # other operating systems might fail because they have pthread.h but need
- # special libs we don't know about yet.
+ *)
+ # other operating systems might fail because they have pthread.h but need
+ # special libs we don't know about yet.
+ AC_MSG_ERROR([
+Cannot enable threads on your platform.
+Please report your platform threading info to the PostgreSQL mailing lists
+so it can be added to the next release. Report any compile or link flags,
+or libraries required for threading support.
+])
esac
fi
AC_SUBST(THREAD_LIBS)
is leaked for each call to PQconndefaults.
- In
PostgreSQL versions before 7.0,
PQconndefaults returned a pointer
- to a static array, rather than a dynamically allocated array. That
- was not thread-safe, so the behavior has been changed.
-
-
libpq is thread-safe as of
-
PostgreSQL 7.0, so long as no two threads
-attempt to manipulate the same PGconn> object at the same
-time. In particular, you cannot issue concurrent commands from different
-threads through the same connection object. (If you need to run
-concurrent commands, start up multiple connections.)
+
libpq is thread-safe if the library is
+compiled using the --with-threads>
+configure command-line option. (You might need to
+use other threading command-line options to compile your client code.)
+
+
+One restriction is that no two threads attempt to manipulate the same
+PGconn> object at the same time. In particular, you cannot
+issue concurrent commands from different threads through the same
+connection object. (If you need to run concurrent commands, start up
+multiple connections.)
-PGresult> objects are read-only after creation, and so can be passed around
-freely between threads.
+PGresult> objects are read-only after creation, and so can be
+passed around freely between threads.