Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
02d847fe
Commit
02d847fe
authored
Jun 13, 2003
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add --with-threads configure option to control threaded libpq.
parent
26188e8c
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
112 additions
and
42 deletions
+112
-42
configure
configure
+63
-13
configure.in
configure.in
+24
-11
doc/src/sgml/installation.sgml
doc/src/sgml/installation.sgml
+10
-1
doc/src/sgml/libpq.sgml
doc/src/sgml/libpq.sgml
+15
-14
src/include/pg_config.h.in
src/include/pg_config.h.in
+0
-3
No files found.
configure
View file @
02d847fe
...
...
@@ -855,6 +855,7 @@ Optional Packages:
--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
...
...
@@ -2809,6 +2810,41 @@ echo "$as_me: WARNING: *** Library directory $dir does not exist." >&2;}
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
#
...
...
@@ -3550,7 +3586,7 @@ rm -f conftest*
#
# 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
...
...
@@ -3850,25 +3886,38 @@ echo "${ECHO_T}$ac_cv_header_pthread_h" >&6
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
...
...
@@ -17540,6 +17589,7 @@ s,@CPP@,$CPP,;t t
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
...
...
configure.in
View file @
02d847fe
dnl Process this file with autoconf to produce a configure script.
dnl $Header: /cvsroot/pgsql/configure.in,v 1.26
0 2003/06/12 16:05:09 tgl
Exp $
dnl $Header: /cvsroot/pgsql/configure.in,v 1.26
1 2003/06/13 23:10:07 momjian
Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
...
...
@@ -319,6 +319,14 @@ for dir in $LIBRARY_DIRS $SRCH_LIB; do
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
#
...
...
@@ -544,20 +552,25 @@ AC_SUBST(ELF_SYS)
#
# 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)
...
...
doc/src/sgml/installation.sgml
View file @
02d847fe
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.13
3 2003/06/11 06:56:06
momjian Exp $ -->
<!-- $Header: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v 1.13
4 2003/06/13 23:10:07
momjian Exp $ -->
<chapter id="installation">
<title><![%standalone-include[<productname>PostgreSQL</>]]>
...
...
@@ -914,6 +914,15 @@ JAVACMD=$JAVA_HOME/bin/java
</listitem>
</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>
<term><option>--without-zlib</option></term>
<listitem>
...
...
doc/src/sgml/libpq.sgml
View file @
02d847fe
<!--
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.12
3 2003/05/14 03:25:58 tgl
Exp $
$Header: /cvsroot/pgsql/doc/src/sgml/libpq.sgml,v 1.12
4 2003/06/13 23:10:07 momjian
Exp $
-->
<chapter id="libpq">
...
...
@@ -509,11 +509,6 @@ typedef struct
is leaked for each call to <function>PQconndefaults</function>.
</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>
</varlistentry>
...
...
@@ -2549,17 +2544,23 @@ If the permissions are less strict than this, the file will be ignored.
</indexterm>
<para>
<application>libpq</application> is thread-safe as of
<productname>PostgreSQL</productname> 7.0, so long as no two threads
attempt to manipulate the same <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.)
<application>libpq</application> is thread-safe if the library is
compiled using the <literal>--with-threads</>
<filename>configure</filename> command-line option. (You might need to
use other threading command-line options to compile your client code.)
</para>
<para>
One restriction is that no two threads attempt to manipulate the same
<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.
<structname>PGresult</> objects are read-only after creation, and so can be
passed around
freely between threads.
</para>
<para>
...
...
src/include/pg_config.h.in
View file @
02d847fe
...
...
@@ -468,9 +468,6 @@
/* Define to 1 if you have the <termios.h> header file. */
#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
`HAVE_STRUCT_TM_TM_ZONE' instead. */
#undef HAVE_TM_ZONE
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment