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
8c1c2e38
Commit
8c1c2e38
authored
Dec 02, 2009
by
Bruce Momjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
thread-safety
Apply full patch to enable thread-safety by default, e.g. doc changes.
parent
aebc4e67
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
48 additions
and
137 deletions
+48
-137
configure
configure
+16
-77
configure.in
configure.in
+10
-32
doc/src/sgml/ecpg.sgml
doc/src/sgml/ecpg.sgml
+4
-5
doc/src/sgml/installation.sgml
doc/src/sgml/installation.sgml
+7
-10
doc/src/sgml/libpq.sgml
doc/src/sgml/libpq.sgml
+3
-6
src/test/thread/README
src/test/thread/README
+8
-7
No files found.
configure
View file @
8c1c2e38
...
...
@@ -823,7 +823,6 @@ with_CC
enable_depend
enable_cassert
enable_thread_safety
enable_thread_safety_force
with_tcl
with_tclconfig
with_perl
...
...
@@ -1497,9 +1496,7 @@ Optional Features:
--enable-dtrace build with DTrace support
--enable-depend turn on automatic dependency tracking
--enable-cassert enable assertion checks (for debugging)
--disable-thread-safety make client libraries thread-safe
--enable-thread-safety-force
force thread-safety despite thread test failure
--disable-thread-safety disable thread-safety in client libraries
--disable-float4-byval disable float4 passed by value
--disable-float8-byval disable float8 passed by value
--disable-largefile omit support for large files
...
...
@@ -4884,41 +4881,6 @@ else
fi
# Check whether --enable-thread-safety-force was given.
if
test
"
${
enable_thread_safety_force
+set
}
"
=
set
;
then
enableval
=
$enable_thread_safety_force
;
case
$enableval
in
yes
)
:
;;
no
)
:
;;
*
)
{
{
$as_echo
"
$as_me
:
$LINENO
: error: no argument expected for --enable-thread-safety-force option"
>
&5
$as_echo
"
$as_me
: error: no argument expected for --enable-thread-safety-force option"
>
&2
;
}
{
(
exit
1
)
;
exit
1
;
}
;
}
;;
esac
else
enable_thread_safety_force
=
no
fi
if
test
"
$enable_thread_safety
"
=
yes
-o
\
"
$enable_thread_safety_force
"
=
yes
;
then
enable_thread_safety
=
"yes"
# for 'force'
cat
>>
confdefs.h
<<
\
_ACEOF
#define ENABLE_THREAD_SAFETY 1
_ACEOF
fi
{
$as_echo
"
$as_me
:
$LINENO
: result:
$enable_thread_safety
"
>
&5
$as_echo
"
$enable_thread_safety
"
>
&6
;
}
...
...
@@ -21287,10 +21249,10 @@ PTHREAD_CFLAGS="$PTHREAD_CFLAGS -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEM
if
test
"
$PTHREAD_CC
"
!=
"
$CC
"
;
then
{
{
$as_echo
"
$as_me
:
$LINENO
: error:
PostgreSQL does not support platforms that require a special compiler
for thread safety."
>
&5
for thread safety
; use --disable-thread-safety to disable thread safety
."
>
&5
$as_echo
"
$as_me
: error:
PostgreSQL does not support platforms that require a special compiler
for thread safety."
>
&2
;
}
for thread safety
; use --disable-thread-safety to disable thread safety
."
>
&2
;
}
{
(
exit
1
)
;
exit
1
;
}
;
}
fi
...
...
@@ -21436,8 +21398,10 @@ fi
if
test
"x
$ac_cv_header_pthread_h
"
=
x
""
yes
;
then
:
else
{
{
$as_echo
"
$as_me
:
$LINENO
: error: pthread.h not found, required for --enable-thread-safety"
>
&5
$as_echo
"
$as_me
: error: pthread.h not found, required for --enable-thread-safety"
>
&2
;
}
{
{
$as_echo
"
$as_me
:
$LINENO
: error:
pthread.h not found; use --disable-thread-safety to disable thread safety"
>
&5
$as_echo
"
$as_me
: error:
pthread.h not found; use --disable-thread-safety to disable thread safety"
>
&2
;
}
{
(
exit
1
)
;
exit
1
;
}
;
}
fi
...
...
@@ -26349,10 +26313,10 @@ HAVE_POSIX_SIGNALS=$pgac_cv_func_posix_signals
if
test
"
$pgac_cv_func_posix_signals
"
!=
yes
-a
"
$enable_thread_safety
"
=
yes
;
then
{
{
$as_echo
"
$as_me
:
$LINENO
: error:
Thread-safety requires POSIX signals, which are not supported by this
operating system."
>
&5
operating system
; use --disable-thread-safety to disable thread safety
."
>
&5
$as_echo
"
$as_me
: error:
Thread-safety requires POSIX signals, which are not supported by this
operating system."
>
&2
;
}
operating system
; use --disable-thread-safety to disable thread safety
."
>
&2
;
}
{
(
exit
1
)
;
exit
1
;
}
;
}
fi
fi
...
...
@@ -28202,24 +28166,7 @@ done
# We have to run the thread test near the end so we have all our symbols
# defined. Cross compiling throws a warning.
#
if
test
"
$enable_thread_safety_force
"
=
yes
;
then
if
test
"
$PORTNAME
"
!=
"win32"
then
{
$as_echo
"
$as_me
:
$LINENO
: WARNING:
*** Skipping thread test program. --enable-thread-safety-force was used.
*** Run the program in src/test/thread on the your machine and add proper
*** locking function calls to your applications to guarantee thread safety.
"
>
&5
$as_echo
"
$as_me
: WARNING:
*** Skipping thread test program. --enable-thread-safety-force was used.
*** Run the program in src/test/thread on the your machine and add proper
*** locking function calls to your applications to guarantee thread safety.
"
>
&2
;
}
else
{
$as_echo
"
$as_me
:
$LINENO
: WARNING: *** skipping thread test on Win32"
>
&5
$as_echo
"
$as_me
: WARNING: *** skipping thread test on Win32"
>
&2
;
}
fi
elif
test
"
$enable_thread_safety
"
=
yes
;
then
if
test
"
$enable_thread_safety
"
=
yes
;
then
if
test
"
$PORTNAME
"
!=
"win32"
then
{
$as_echo
"
$as_me
:
$LINENO
: checking thread safety of required library functions"
>
&5
...
...
@@ -28282,21 +28229,13 @@ sed 's/^/| /' conftest.$ac_ext >&5
{
$as_echo
"
$as_me
:
$LINENO
: result: no"
>
&5
$as_echo
"no"
>
&6
;
}
{
{
$as_echo
"
$as_me
:
$LINENO
: error: thread test program failed
This platform is not thread-safe. Check the file 'config.log' for the
exact reason.
You can use the configure option --enable-thread-safety-force to force
threads to be enabled. But you must then run the program in
src/test/thread and add locking function calls to your applications to
guarantee thread safety."
>
&5
This platform is not thread-safe. Check the file 'config.log' or compile
and run src/test/thread/thread_test for the exact reason.
Use --disable-thread-safety to disable thread safety."
>
&5
$as_echo
"
$as_me
: error: thread test program failed
This platform is not thread-safe. Check the file 'config.log' for the
exact reason.
You can use the configure option --enable-thread-safety-force to force
threads to be enabled. But you must then run the program in
src/test/thread and add locking function calls to your applications to
guarantee thread safety."
>
&2
;
}
This platform is not thread-safe. Check the file 'config.log' or compile
and run src/test/thread/thread_test for the exact reason.
Use --disable-thread-safety to disable thread safety."
>
&2
;
}
{
(
exit
1
)
;
exit
1
;
}
;
}
fi
rm
-rf
conftest.dSYM
...
...
configure.in
View file @
8c1c2e38
dnl Process this file with autoconf to produce a configure script.
dnl $PostgreSQL: pgsql/configure.in,v 1.61
4 2009/12/01 23:02:44
momjian Exp $
dnl $PostgreSQL: pgsql/configure.in,v 1.61
5 2009/12/02 14:07:25
momjian Exp $
dnl
dnl Developers, please strive to achieve this order:
dnl
...
...
@@ -558,15 +558,7 @@ IFS=$ac_save_IFS
# Enable thread-safe client libraries
#
AC_MSG_CHECKING([allow thread-safe client libraries])
PGAC_ARG_BOOL(enable, thread-safety, yes, [make client libraries thread-safe])
PGAC_ARG_BOOL(enable, thread-safety-force, no, [force thread-safety despite thread test failure])
if test "$enable_thread_safety" = yes -o \
"$enable_thread_safety_force" = yes; then
enable_thread_safety="yes" # for 'force'
AC_DEFINE([ENABLE_THREAD_SAFETY], 1,
[Define to 1 to build client libraries as thread-safe code. (--enable-thread-safety)])
fi
PGAC_ARG_BOOL(enable, thread-safety, yes, [disable thread-safety in client libraries])
AC_MSG_RESULT([$enable_thread_safety])
AC_SUBST(enable_thread_safety)
...
...
@@ -1399,7 +1391,7 @@ PTHREAD_CFLAGS="$PTHREAD_CFLAGS -D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEM
if test "$PTHREAD_CC" != "$CC"; then
AC_MSG_ERROR([
PostgreSQL does not support platforms that require a special compiler
for thread safety.])
for thread safety
; use --disable-thread-safety to disable thread safety
.])
fi
# Check for *_r functions
...
...
@@ -1409,7 +1401,8 @@ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$LIBS $PTHREAD_LIBS"
if test "$PORTNAME" != "win32"; then
AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([pthread.h not found, required for --enable-thread-safety])])
AC_CHECK_HEADER(pthread.h, [], [AC_MSG_ERROR([
pthread.h not found; use --disable-thread-safety to disable thread safety])])
fi
AC_CHECK_FUNCS([strerror_r getpwuid_r gethostbyname_r])
...
...
@@ -1655,7 +1648,7 @@ PGAC_FUNC_POSIX_SIGNALS
if test "$pgac_cv_func_posix_signals" != yes -a "$enable_thread_safety" = yes; then
AC_MSG_ERROR([
Thread-safety requires POSIX signals, which are not supported by this
operating system.])
operating system
; use --disable-thread-safety to disable thread safety
.])
fi
fi
...
...
@@ -1744,18 +1737,7 @@ AC_CHECK_PROGS(OSX, [osx sgml2xml sx])
# We have to run the thread test near the end so we have all our symbols
# defined. Cross compiling throws a warning.
#
if test "$enable_thread_safety_force" = yes; then
if test "$PORTNAME" != "win32"
then
AC_MSG_WARN([
*** Skipping thread test program. --enable-thread-safety-force was used.
*** Run the program in src/test/thread on the your machine and add proper
*** locking function calls to your applications to guarantee thread safety.
])
else
AC_MSG_WARN([*** skipping thread test on Win32])
fi
elif test "$enable_thread_safety" = yes; then
if test "$enable_thread_safety" = yes; then
if test "$PORTNAME" != "win32"
then
AC_MSG_CHECKING([thread safety of required library functions])
...
...
@@ -1768,13 +1750,9 @@ AC_TRY_RUN([#include "$srcdir/src/test/thread/thread_test.c"],
[AC_MSG_RESULT(yes)],
[AC_MSG_RESULT(no)
AC_MSG_ERROR([thread test program failed
This platform is not thread-safe. Check the file 'config.log' for the
exact reason.
You can use the configure option --enable-thread-safety-force to force
threads to be enabled. But you must then run the program in
src/test/thread and add locking function calls to your applications to
guarantee thread safety.])],
This platform is not thread-safe. Check the file 'config.log' or compile
and run src/test/thread/thread_test for the exact reason.
Use --disable-thread-safety to disable thread safety.])],
[AC_MSG_RESULT(maybe)
AC_MSG_WARN([
*** Skipping thread test program because of cross-compile build.
...
...
doc/src/sgml/ecpg.sgml
View file @
8c1c2e38
<!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.9
2 2009/11/30 14:47:37
momjian Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/ecpg.sgml,v 1.9
3 2009/12/02 14:07:25
momjian Exp $ -->
<chapter id="ecpg">
<title><application>ECPG</application> - Embedded <acronym>SQL</acronym> in C</title>
...
...
@@ -4709,10 +4709,9 @@ ECPG = ecpg
</para>
<para>
The <application>ecpg</application> library is thread-safe if it is built
using the <option>--enable-thread-safety</> command-line option to
<filename>configure</filename>. (You might need to use other threading
command-line options to compile your client code.)
The <application>ecpg</application> library is thread-safe by
default. However, you might need to use some threading
command-line options to compile your client code.
</para>
</sect1>
...
...
doc/src/sgml/installation.sgml
View file @
8c1c2e38
<
!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.32
7 2009/08/12 16:32:35 petere
Exp $ -->
<
!-- $PostgreSQL: pgsql/doc/src/sgml/installation.sgml,v 1.32
8 2009/12/02 14:07:25 momjian
Exp $ -->
<
chapter
id
=
"installation"
>
<
title
><
![%standalone-include[<productname>PostgreSQL</>]]>
...
...
@@ -1164,14 +1164,13 @@ su - postgres
</
varlistentry
>
<
varlistentry
>
<
term
><
option
>--
en
able
-
thread
-
safety
</
option
></
term
>
<
term
><
option
>--
dis
able
-
thread
-
safety
</
option
></
term
>
<
listitem
>
<
para
>
Make
the
client
libraries
thread
-
safe
.
This
allow
s
Disable
the
thread
-
safety
of
client
libraries
.
This
prevent
s
concurrent
threads
in
<
application
>
libpq
</
application
>
and
<
application
>
ECPG
</
application
>
programs
to
safely
control
their
private
connection
handles
.
This
option
requires
adequate
threading
support
in
your
operating
system
.
<
application
>
ECPG
</
application
>
programs
from
safely
controlling
their
private
connection
handles
.
</
para
>
</
listitem
>
</
varlistentry
>
...
...
@@ -2835,12 +2834,10 @@ MANPATH=/usr/lib/scohelp/%L/man:/usr/dt/man:/usr/man:/usr/share/man:scohelp:/usr
</
sect3
>
<
sect3
>
<
title
>
<
option
>--
enable
-
thread
-
safety
</
option
>
and
UnixWare
</
title
>
<
title
>
Threading
on
UnixWare
</
title
>
<
para
>
If
you
use
the
<
command
>
configure
</
command
>
option
<
option
>--
enable
-
thread
-
safety
</
option
>,
you
<
emphasis
>
must
</
emphasis
>
use
<
option
>-
Kpthread
</
option
>
For
threading
,
you
<
emphasis
>
must
</
emphasis
>
use
<
option
>-
Kpthread
</
option
>
on
<
emphasis
>
all
</
emphasis
>
libpq
-
using
programs
.
libpq
uses
<
function
>
pthread_
*</
function
>
calls
,
which
are
only
available
with
the
...
...
doc/src/sgml/libpq.sgml
View file @
8c1c2e38
<!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.29
1 2009/12/02 04:54:10 tgl
Exp $ -->
<!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.29
2 2009/12/02 14:07:25 momjian
Exp $ -->
<chapter id="libpq">
<title><application>libpq</application> - C Library</title>
...
...
@@ -6579,11 +6579,8 @@ myEventProc(PGEventId evtId, void *evtInfo, void *passThrough)
</indexterm>
<para>
<application>libpq</application> is reentrant and thread-safe if the
<filename>configure</filename> command-line option
<literal>--enable-thread-safety</> was used when the
<productname>PostgreSQL</productname> distribution was built. In
addition, you might need to use additional compiler command-line
<application>libpq</application> is reentrant and thread-safe by default.
You might need to use special compiler command-line
options when you compile your application code. Refer to your
system's documentation for information about how to build
thread-enabled applications, or look in
...
...
src/test/thread/README
View file @
8c1c2e38
$PostgreSQL: pgsql/src/test/thread/README,v 1.
2 2008/03/21 13:23:29
momjian Exp $
$PostgreSQL: pgsql/src/test/thread/README,v 1.
3 2009/12/02 14:07:26
momjian Exp $
Threading
=========
This program
should be run by developers wishing to enable threading on
new platforms
.
This program
is run by configure to determine if threading is
properly supported on the platform
.
Run thread_test program to determine if your native libc functions are
thread-safe, or if we should use *_r functions or thread locking.
You can run the program manually to see details, which shows if your
native libc functions are thread-safe, or if we use *_r functions or
thread locking.
To use this program, you must:
To use this program
manually
, you must:
o run "configure
--enable-thread-safety
"
o run "configure"
o compile the main source tree
o compile and run this program
...
...
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