From 149f01c4d463744cd2fe504f017422bbb9e5440e Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Wed, 6 Aug 2003 02:19:51 +0000 Subject: [PATCH] Add ecpg thread testing file. --- src/interfaces/ecpg/compatlib/Makefile | 6 +-- src/interfaces/ecpg/pgtypeslib/Makefile | 4 +- src/interfaces/ecpg/preproc/Makefile | 6 +-- src/interfaces/ecpg/test/Makefile | 10 ++--- src/interfaces/ecpg/test/test_thread.pgc | 70 ++++++++++++++++++++++++++++++++ 5 files changed, 83 insertions(+), 13 deletions(-) create mode 100644 src/interfaces/ecpg/test/test_thread.pgc diff --git a/src/interfaces/ecpg/compatlib/Makefile b/src/interfaces/ecpg/compatlib/Makefile index 7ec04b1e9d..73bf3389a1 100644 --- a/src/interfaces/ecpg/compatlib/Makefile +++ b/src/interfaces/ecpg/compatlib/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $Header: /cvsroot/pgsql/src/interfaces/ecpg/compatlib/Makefile,v 1.7 2003/08/01 16:18:04 petere Exp $ +# $Header: /cvsroot/pgsql/src/interfaces/ecpg/compatlib/Makefile,v 1.8 2003/08/06 02:19:48 momjian Exp $ # #------------------------------------------------------------------------- @@ -16,8 +16,8 @@ NAME= ecpg_compat SO_MAJOR_VERSION= 1 SO_MINOR_VERSION= 0 -override CPPFLAGS := -I$(top_srcdir)/src/interfaces/ecpg/include -I$(libpq_srcdir) -I$(top_srcdir)/src/include/utils $(CPPFLAGS) -SHLIB_LINK = -L../pgtypeslib -lpgtypes -L../ecpglib -lecpg +override CPPFLAGS := -I$(top_srcdir)/src/interfaces/ecpg/include -I$(libpq_srcdir) -I$(top_srcdir)/src/include/utils $(CPPFLAGS) $(THREAD_CFLAGS) +SHLIB_LINK = -L../pgtypeslib -lpgtypes -L../ecpglib -lecpg $(THREAD_LIBS) OBJS= informix.o diff --git a/src/interfaces/ecpg/pgtypeslib/Makefile b/src/interfaces/ecpg/pgtypeslib/Makefile index f7b2e78d4e..384684813e 100644 --- a/src/interfaces/ecpg/pgtypeslib/Makefile +++ b/src/interfaces/ecpg/pgtypeslib/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $Header: /cvsroot/pgsql/src/interfaces/ecpg/pgtypeslib/Makefile,v 1.9 2003/08/01 16:18:04 petere Exp $ +# $Header: /cvsroot/pgsql/src/interfaces/ecpg/pgtypeslib/Makefile,v 1.10 2003/08/06 02:19:51 momjian Exp $ # #------------------------------------------------------------------------- @@ -16,7 +16,7 @@ NAME= pgtypes SO_MAJOR_VERSION= 1 SO_MINOR_VERSION= 0 -override CPPFLAGS := -I$(top_srcdir)/src/interfaces/ecpg/include -I$(top_srcdir)/src/include/utils $(CPPFLAGS) -g +override CPPFLAGS := -I$(top_srcdir)/src/interfaces/ecpg/include -I$(top_srcdir)/src/include/utils $(CPPFLAGS) $(THREAD_CFLAGS) -g OBJS= numeric.o datetime.o common.o dt_common.o timestamp.o interval.o \ $(filter rint.o, $(LIBOBJS)) diff --git a/src/interfaces/ecpg/preproc/Makefile b/src/interfaces/ecpg/preproc/Makefile index 7dd4e9375f..9fe2552988 100644 --- a/src/interfaces/ecpg/preproc/Makefile +++ b/src/interfaces/ecpg/preproc/Makefile @@ -1,4 +1,4 @@ -# $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.92 2003/06/15 04:07:58 momjian Exp $ +# $Header: /cvsroot/pgsql/src/interfaces/ecpg/preproc/Makefile,v 1.93 2003/08/06 02:19:51 momjian Exp $ subdir = src/interfaces/ecpg/preproc top_builddir = ../../../.. @@ -8,7 +8,7 @@ MAJOR_VERSION=3 MINOR_VERSION=0 PATCHLEVEL=0 -override CPPFLAGS := -I$(srcdir)/../include -I$(srcdir) $(CPPFLAGS) \ +override CPPFLAGS := -I$(srcdir)/../include -I$(srcdir) $(CPPFLAGS) $(THREAD_CFLAGS) \ -DMAJOR_VERSION=$(MAJOR_VERSION) \ -DMINOR_VERSION=$(MINOR_VERSION) -DPATCHLEVEL=$(PATCHLEVEL) \ -DINCLUDE_PATH=\"$(includedir)\" @@ -24,7 +24,7 @@ OBJS=preproc.o type.o ecpg.o ecpg_keywords.o output.o\ all: submake-libpgport ecpg ecpg: $(OBJS) - $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LIBS) -o $@ + $(CC) $(CFLAGS) $(LDFLAGS) $^ $(LIBS) $(THREAD_LIBS) -o $@ # pgc is compiled as part of preproc preproc.o: $(srcdir)/pgc.c diff --git a/src/interfaces/ecpg/test/Makefile b/src/interfaces/ecpg/test/Makefile index 357779863d..ce87542846 100644 --- a/src/interfaces/ecpg/test/Makefile +++ b/src/interfaces/ecpg/test/Makefile @@ -1,22 +1,22 @@ -# $Header: /cvsroot/pgsql/src/interfaces/ecpg/test/Makefile,v 1.39 2003/08/01 13:53:36 petere Exp $ +# $Header: /cvsroot/pgsql/src/interfaces/ecpg/test/Makefile,v 1.40 2003/08/06 02:19:51 momjian Exp $ subdir = src/interfaces/ecpg/test top_builddir = ../../../.. include $(top_builddir)/src/Makefile.global -override CPPFLAGS := -I$(srcdir)/../include -I$(libpq_srcdir) $(CPPFLAGS) +override CPPFLAGS := -I$(srcdir)/../include -I$(libpq_srcdir) $(CPPFLAGS) $(THREAD_CFLAGS) ECPG = ../preproc/ecpg -I$(srcdir)/../include -TESTS = test1 test2 test3 test4 perftest dyntest dyntest2 test_notice test_code100 test_init testdynalloc num_test dt_test test_informix +TESTS = test1 test2 test3 test4 perftest dyntest dyntest2 test_notice test_code100 test_init testdynalloc num_test dt_test test_informix test_thread all: $(TESTS) %: %.o - $(CC) $(CFLAGS) $(LDFLAGS) -L../ecpglib -L ../pgtypeslib -L../../libpq $^ $(LIBS) -lpgtypes -lecpg -lpq -o $@ + $(CC) $(CFLAGS) $(LDFLAGS) -L../ecpglib -L ../pgtypeslib -L../../libpq $^ $(LIBS) -lpgtypes -lecpg -lpq $(THREAD_LIBS) -o $@ test_informix: test_informix.o - $(CC) $(CFLAGS) $(LDFLAGS) -L../compatlib -L../ecpglib -L ../pgtypeslib -L../../libpq $^ $(LIBS) -lpgtypes -lecpg -lecpg_compat -lpq -o $@ + $(CC) $(CFLAGS) $(LDFLAGS) -L../compatlib -L../ecpglib -L ../pgtypeslib -L../../libpq $^ $(LIBS) -lpgtypes -lecpg -lecpg_compat -lpq $(THREAD_LIBS) -o $@ %.c: %.pgc $(ECPG) $< diff --git a/src/interfaces/ecpg/test/test_thread.pgc b/src/interfaces/ecpg/test/test_thread.pgc new file mode 100644 index 0000000000..828d66c6a8 --- /dev/null +++ b/src/interfaces/ecpg/test/test_thread.pgc @@ -0,0 +1,70 @@ +/* --- + * Thread test program + * by Philip Yarra + * + * To run, create this table in the 'test' database: + * + * CREATE TABLE foo ( + * message character(40) + * ); + * --- + */ + + +#include + +int main(void); +void ins1(void); +void ins2(void); + +int main(void) +{ + pthread_t thread1, thread2; + pthread_create(&thread1, NULL, (void *) ins1, NULL); + pthread_create(&thread2, NULL, (void *) ins2, NULL); + pthread_join(thread1, NULL); + pthread_join(thread2, NULL); + printf("Program done!\n"); + return 0; +} + +void ins1(void) +{ + int i; + EXEC SQL BEGIN DECLARE SECTION; + char* cs = "test"; + char* bar = "one!"; + EXEC SQL END DECLARE SECTION; + EXEC SQL WHENEVER sqlerror sqlprint; + EXEC SQL CONNECT TO :cs AS test1; + for (i = 0; i < 5; i++) + { + printf("thread 1 : inserting\n"); + EXEC SQL AT test1 INSERT INTO foo VALUES(:bar); + printf("thread 1 : insert done\n"); + } + EXEC SQL AT test1 COMMIT WORK; + EXEC SQL DISCONNECT test1; + printf("thread 1 : done!\n"); +} + + +void ins2(void) +{ + int i; + EXEC SQL BEGIN DECLARE SECTION; + char* cs = "test"; + char* bar = "two!"; + EXEC SQL END DECLARE SECTION; + EXEC SQL WHENEVER sqlerror sqlprint; + EXEC SQL CONNECT TO :cs AS test2; + for (i = 0; i < 5; i++) + { + printf("thread 2: inserting\n"); + EXEC SQL AT test2 INSERT INTO foo VALUES(:bar); + printf("thread 2: insert done\n"); + } + EXEC SQL AT test2 COMMIT WORK; + EXEC SQL DISCONNECT test2; + printf("thread 2: done!\n"); +} -- 2.11.0