mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-04 00:02:52 -05:00 
			
		
		
		
	Add --with-threads configure option to control threaded libpq.
This commit is contained in:
		
							parent
							
								
									26188e8c17
								
							
						
					
					
						commit
						02d847fe9f
					
				
							
								
								
									
										76
									
								
								configure
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										76
									
								
								configure
									
									
									
									
										vendored
									
									
								
							@ -855,6 +855,7 @@ Optional Packages:
 | 
				
			|||||||
  --with-libraries=DIRS   look for additional libraries in DIRS
 | 
					  --with-libraries=DIRS   look for additional libraries in DIRS
 | 
				
			||||||
  --with-libs=DIRS        alternative spelling of --with-libraries
 | 
					  --with-libs=DIRS        alternative spelling of --with-libraries
 | 
				
			||||||
  --with-pgport=PORTNUM   change default port number 5432
 | 
					  --with-pgport=PORTNUM   change default port number 5432
 | 
				
			||||||
 | 
					  --with-threads          allow libpq to be thread-safe
 | 
				
			||||||
  --with-tcl              build Tcl and Tk interfaces
 | 
					  --with-tcl              build Tcl and Tk interfaces
 | 
				
			||||||
  --without-tk            do not build Tk interfaces if Tcl is enabled
 | 
					  --without-tk            do not build Tk interfaces if Tcl is enabled
 | 
				
			||||||
  --with-tclconfig=DIR    tclConfig.sh and tkConfig.sh are in DIR
 | 
					  --with-tclconfig=DIR    tclConfig.sh and tkConfig.sh are in DIR
 | 
				
			||||||
@ -2809,6 +2810,41 @@ echo "$as_me: WARNING: *** Library directory $dir does not exist." >&2;}
 | 
				
			|||||||
done
 | 
					done
 | 
				
			||||||
IFS=$ac_save_IFS
 | 
					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
 | 
					# Tcl/Tk
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@ -3550,7 +3586,7 @@ rm -f conftest*
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# Pthreads
 | 
					# Pthreads
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					if test "$with_threads" = yes; then
 | 
				
			||||||
echo "$as_me:$LINENO: checking for ANSI C header files" >&5
 | 
					echo "$as_me:$LINENO: checking for ANSI C header files" >&5
 | 
				
			||||||
echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
 | 
					echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
 | 
				
			||||||
if test "${ac_cv_header_stdc+set}" = set; then
 | 
					if test "${ac_cv_header_stdc+set}" = set; then
 | 
				
			||||||
@ -3850,25 +3886,38 @@ echo "${ECHO_T}$ac_cv_header_pthread_h" >&6
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
if test $ac_cv_header_pthread_h = yes; then
 | 
					if test $ac_cv_header_pthread_h = yes; then
 | 
				
			||||||
 | 
					  :
 | 
				
			||||||
cat >>confdefs.h <<\_ACEOF
 | 
					else
 | 
				
			||||||
#define HAVE_THREADS 1
 | 
					  { { echo "$as_me:$LINENO: error: pthread.h not found, required for --with-threads" >&5
 | 
				
			||||||
_ACEOF
 | 
					echo "$as_me: error: pthread.h not found, required for --with-threads" >&2;}
 | 
				
			||||||
 | 
					   { (exit 1); exit 1; }; }
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if test ! -z "$HAVE_THREADS"
 | 
					case $host_os in
 | 
				
			||||||
then
 | 
							netbsd*|bsdi*)
 | 
				
			||||||
	case $host_os in
 | 
								# these require no special flags or libraries
 | 
				
			||||||
		# BSD/OS and NetBSD require no special libraries or flags
 | 
								;;
 | 
				
			||||||
		netbsd*|bsdi*) ;;
 | 
					 | 
				
			||||||
		freebsd2*|freebsd3*|freebsd4*) THREAD_CFLAGS="-pthread" ;;
 | 
							freebsd2*|freebsd3*|freebsd4*) THREAD_CFLAGS="-pthread" ;;
 | 
				
			||||||
		freebsd*) THREAD_LIBS="-lc_r" ;;
 | 
							freebsd*) THREAD_LIBS="-lc_r" ;;
 | 
				
			||||||
		linux*) THREAD_LIBS="-lpthread"
 | 
							linux*) THREAD_LIBS="-lpthread"
 | 
				
			||||||
			THREAD_CFLAGS="-D_REENTRANT" ;;
 | 
								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
 | 
						esac
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -17540,6 +17589,7 @@ s,@CPP@,$CPP,;t t
 | 
				
			|||||||
s,@GCC@,$GCC,;t t
 | 
					s,@GCC@,$GCC,;t t
 | 
				
			||||||
s,@autodepend@,$autodepend,;t t
 | 
					s,@autodepend@,$autodepend,;t t
 | 
				
			||||||
s,@INCLUDES@,$INCLUDES,;t t
 | 
					s,@INCLUDES@,$INCLUDES,;t t
 | 
				
			||||||
 | 
					s,@with_threads@,$with_threads,;t t
 | 
				
			||||||
s,@with_tcl@,$with_tcl,;t t
 | 
					s,@with_tcl@,$with_tcl,;t t
 | 
				
			||||||
s,@with_tk@,$with_tk,;t t
 | 
					s,@with_tk@,$with_tk,;t t
 | 
				
			||||||
s,@with_perl@,$with_perl,;t t
 | 
					s,@with_perl@,$with_perl,;t t
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										35
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										35
									
								
								configure.in
									
									
									
									
									
								
							@ -1,5 +1,5 @@
 | 
				
			|||||||
dnl Process this file with autoconf to produce a configure script.
 | 
					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
 | 
				
			||||||
dnl Developers, please strive to achieve this order:
 | 
					dnl Developers, please strive to achieve this order:
 | 
				
			||||||
dnl
 | 
					dnl
 | 
				
			||||||
@ -319,6 +319,14 @@ for dir in $LIBRARY_DIRS $SRCH_LIB; do
 | 
				
			|||||||
done
 | 
					done
 | 
				
			||||||
IFS=$ac_save_IFS
 | 
					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
 | 
					# Tcl/Tk
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
@ -544,20 +552,25 @@ AC_SUBST(ELF_SYS)
 | 
				
			|||||||
#
 | 
					#
 | 
				
			||||||
# Pthreads
 | 
					# Pthreads
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					if test "$with_threads" = yes; then
 | 
				
			||||||
AC_CHECK_HEADER(pthread.h,
 | 
					AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --with-threads])])
 | 
				
			||||||
	[AC_DEFINE(HAVE_THREADS, 1, [Define to 1 if you have the threads interface.])])
 | 
					case $host_os in
 | 
				
			||||||
if test ! -z "$HAVE_THREADS"
 | 
							netbsd*|bsdi*) 
 | 
				
			||||||
then	
 | 
								# these require no special flags or libraries
 | 
				
			||||||
	case $host_os in
 | 
								;;
 | 
				
			||||||
		# BSD/OS and NetBSD require no special libraries or flags
 | 
					 | 
				
			||||||
		netbsd*|bsdi*) ;;
 | 
					 | 
				
			||||||
		freebsd2*|freebsd3*|freebsd4*) THREAD_CFLAGS="-pthread" ;;
 | 
							freebsd2*|freebsd3*|freebsd4*) THREAD_CFLAGS="-pthread" ;;
 | 
				
			||||||
		freebsd*) THREAD_LIBS="-lc_r" ;;
 | 
							freebsd*) THREAD_LIBS="-lc_r" ;;
 | 
				
			||||||
		linux*) THREAD_LIBS="-lpthread"
 | 
							linux*) THREAD_LIBS="-lpthread"
 | 
				
			||||||
			THREAD_CFLAGS="-D_REENTRANT" ;;
 | 
								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
 | 
						esac
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
AC_SUBST(THREAD_LIBS)
 | 
					AC_SUBST(THREAD_LIBS)
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +1,4 @@
 | 
				
			|||||||
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.133 2003/06/11 06:56:06 momjian Exp $ -->
 | 
					<!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.134 2003/06/13 23:10:07 momjian Exp $ -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<chapter id="installation">
 | 
					<chapter id="installation">
 | 
				
			||||||
 <title><![%standalone-include[<productname>PostgreSQL</>]]>
 | 
					 <title><![%standalone-include[<productname>PostgreSQL</>]]>
 | 
				
			||||||
@ -914,6 +914,15 @@ JAVACMD=$JAVA_HOME/bin/java
 | 
				
			|||||||
       </listitem>
 | 
					       </listitem>
 | 
				
			||||||
      </varlistentry>
 | 
					      </varlistentry>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      <varlistentry>
 | 
				
			||||||
 | 
					       <term><option>--with-threads</option></term>
 | 
				
			||||||
 | 
					       <listitem>
 | 
				
			||||||
 | 
					        <para>
 | 
				
			||||||
 | 
						 Allow separate libpq threads to safely control their private connection handles.
 | 
				
			||||||
 | 
					        </para>
 | 
				
			||||||
 | 
					       </listitem>
 | 
				
			||||||
 | 
					      </varlistentry>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      <varlistentry>
 | 
					      <varlistentry>
 | 
				
			||||||
       <term><option>--without-zlib</option></term>
 | 
					       <term><option>--without-zlib</option></term>
 | 
				
			||||||
       <listitem>
 | 
					       <listitem>
 | 
				
			||||||
 | 
				
			|||||||
@ -1,5 +1,5 @@
 | 
				
			|||||||
<!--
 | 
					<!--
 | 
				
			||||||
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.123 2003/05/14 03:25:58 tgl Exp $
 | 
					$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.124 2003/06/13 23:10:07 momjian Exp $
 | 
				
			||||||
-->
 | 
					-->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 <chapter id="libpq">
 | 
					 <chapter id="libpq">
 | 
				
			||||||
@ -509,11 +509,6 @@ typedef struct
 | 
				
			|||||||
    is leaked for each call to <function>PQconndefaults</function>.
 | 
					    is leaked for each call to <function>PQconndefaults</function>.
 | 
				
			||||||
   </para>
 | 
					   </para>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   <para>
 | 
					 | 
				
			||||||
    In <productname>PostgreSQL</productname> versions before 7.0, <function>PQconndefaults</function> returned a pointer
 | 
					 | 
				
			||||||
    to a static array, rather than a dynamically allocated array.  That
 | 
					 | 
				
			||||||
    was not thread-safe, so the behavior has been changed.
 | 
					 | 
				
			||||||
   </para>
 | 
					 | 
				
			||||||
  </listitem>
 | 
					  </listitem>
 | 
				
			||||||
 </varlistentry>
 | 
					 </varlistentry>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -2549,17 +2544,23 @@ If the permissions are less strict than this, the file will be ignored.
 | 
				
			|||||||
</indexterm>
 | 
					</indexterm>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<para>
 | 
					<para>
 | 
				
			||||||
<application>libpq</application> is thread-safe as of
 | 
					<application>libpq</application> is thread-safe if the library is
 | 
				
			||||||
<productname>PostgreSQL</productname> 7.0, so long as no two threads
 | 
					compiled using the <literal>--with-threads</>
 | 
				
			||||||
attempt to manipulate the same <structname>PGconn</> object at the same
 | 
					<filename>configure</filename> command-line option.  (You might need to
 | 
				
			||||||
time. In particular, you cannot issue concurrent commands from different
 | 
					use other threading command-line options to compile your client code.)
 | 
				
			||||||
threads through the same connection object. (If you need to run
 | 
					 | 
				
			||||||
concurrent commands, start up multiple connections.)
 | 
					 | 
				
			||||||
</para>
 | 
					</para>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<para>
 | 
					<para>
 | 
				
			||||||
<structname>PGresult</> objects are read-only after creation, and so can be passed around
 | 
					One restriction is that no two threads attempt to manipulate the same
 | 
				
			||||||
freely between threads.
 | 
					<structname>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.)
 | 
				
			||||||
 | 
					</para>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<para>
 | 
				
			||||||
 | 
					<structname>PGresult</> objects are read-only after creation, and so can be 
 | 
				
			||||||
 | 
					passed around freely between threads.
 | 
				
			||||||
</para>
 | 
					</para>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<para>
 | 
					<para>
 | 
				
			||||||
 | 
				
			|||||||
@ -468,9 +468,6 @@
 | 
				
			|||||||
/* Define to 1 if you have the <termios.h> header file. */
 | 
					/* Define to 1 if you have the <termios.h> header file. */
 | 
				
			||||||
#undef HAVE_TERMIOS_H
 | 
					#undef HAVE_TERMIOS_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Define to 1 if you have the threads interface. */
 | 
					 | 
				
			||||||
#undef HAVE_THREADS
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
 | 
					/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use
 | 
				
			||||||
   `HAVE_STRUCT_TM_TM_ZONE' instead. */
 | 
					   `HAVE_STRUCT_TM_TM_ZONE' instead. */
 | 
				
			||||||
#undef HAVE_TM_ZONE
 | 
					#undef HAVE_TM_ZONE
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user