aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/test/expected/thread-thread_implicit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/ecpg/test/expected/thread-thread_implicit.c')
-rw-r--r--src/interfaces/ecpg/test/expected/thread-thread_implicit.c72
1 files changed, 44 insertions, 28 deletions
diff --git a/src/interfaces/ecpg/test/expected/thread-thread_implicit.c b/src/interfaces/ecpg/test/expected/thread-thread_implicit.c
index 1fd3faa48d5..f48db90559a 100644
--- a/src/interfaces/ecpg/test/expected/thread-thread_implicit.c
+++ b/src/interfaces/ecpg/test/expected/thread-thread_implicit.c
@@ -24,7 +24,11 @@ main(void)
return 0;
}
#else
+#ifndef WIN32
#include <pthread.h>
+#else
+#include <windows.h>
+#endif
#line 1 "regression.h"
@@ -34,7 +38,7 @@ main(void)
-#line 19 "thread_implicit.pgc"
+#line 23 "thread_implicit.pgc"
void *test_thread(void *arg);
@@ -44,15 +48,19 @@ int iterations = 20;
int main(int argc, char *argv[])
{
+#ifndef WIN32
pthread_t *threads;
+#else
+ HANDLE *threads;
+#endif
int n;
/* exec sql begin declare section */
-#line 31 "thread_implicit.pgc"
+#line 39 "thread_implicit.pgc"
int l_rows ;
/* exec sql end declare section */
-#line 32 "thread_implicit.pgc"
+#line 40 "thread_implicit.pgc"
/* Do not switch on debug output for regression tests. The threads get executed in
@@ -61,26 +69,26 @@ int main(int argc, char *argv[])
/* setup test_thread table */
{ ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0); }
-#line 39 "thread_implicit.pgc"
+#line 47 "thread_implicit.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "drop table test_thread ", ECPGt_EOIT, ECPGt_EORT);}
-#line 40 "thread_implicit.pgc"
+#line 48 "thread_implicit.pgc"
/* DROP might fail */
{ ECPGtrans(__LINE__, NULL, "commit");}
-#line 41 "thread_implicit.pgc"
+#line 49 "thread_implicit.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "create table test_thread ( tstamp timestamp not null default cast( timeofday () as timestamp ) , thread TEXT not null , iteration integer not null , primary key( thread , iteration ) ) ", ECPGt_EOIT, ECPGt_EORT);}
-#line 46 "thread_implicit.pgc"
+#line 54 "thread_implicit.pgc"
{ ECPGtrans(__LINE__, NULL, "commit");}
-#line 47 "thread_implicit.pgc"
+#line 55 "thread_implicit.pgc"
{ ECPGdisconnect(__LINE__, "CURRENT");}
-#line 48 "thread_implicit.pgc"
+#line 56 "thread_implicit.pgc"
/* create, and start, threads */
- threads = calloc(nthreads, sizeof(pthread_t));
+ threads = calloc(nthreads, sizeof(threads[0]));
if( threads == NULL )
{
fprintf(stderr, "Cannot alloc memory\n");
@@ -88,30 +96,38 @@ int main(int argc, char *argv[])
}
for( n = 0; n < nthreads; n++ )
{
+#ifndef WIN32
pthread_create(&threads[n], NULL, test_thread, (void *) (n + 1));
+#else
+ threads[n] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) test_thread, (void *) (n+1), 0, NULL);
+#endif
}
/* wait for thread completion */
+#ifndef WIN32
for( n = 0; n < nthreads; n++ )
{
pthread_join(threads[n], NULL);
}
+#else
+ WaitForMultipleObjects(nthreads, threads, TRUE, INFINITE);
+#endif
free(threads);
/* and check results */
{ ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0); }
-#line 70 "thread_implicit.pgc"
+#line 86 "thread_implicit.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "select count (*) from test_thread ", ECPGt_EOIT,
ECPGt_int,&(l_rows),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
-#line 71 "thread_implicit.pgc"
+#line 87 "thread_implicit.pgc"
{ ECPGtrans(__LINE__, NULL, "commit");}
-#line 72 "thread_implicit.pgc"
+#line 88 "thread_implicit.pgc"
{ ECPGdisconnect(__LINE__, "CURRENT");}
-#line 73 "thread_implicit.pgc"
+#line 89 "thread_implicit.pgc"
if( l_rows == (nthreads * iterations) )
printf("Success.\n");
@@ -128,25 +144,25 @@ void *test_thread(void *arg)
-#line 86 "thread_implicit.pgc"
+#line 102 "thread_implicit.pgc"
int l_i ;
-#line 87 "thread_implicit.pgc"
+#line 103 "thread_implicit.pgc"
char l_connection [ 128 ] ;
/* exec sql end declare section */
-#line 88 "thread_implicit.pgc"
+#line 104 "thread_implicit.pgc"
/* build up connection name, and connect to database */
snprintf(l_connection, sizeof(l_connection), "thread_%03ld", threadnum);
/* exec sql whenever sqlerror sqlprint ; */
-#line 92 "thread_implicit.pgc"
+#line 108 "thread_implicit.pgc"
{ ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , l_connection, 0);
-#line 93 "thread_implicit.pgc"
+#line 109 "thread_implicit.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 93 "thread_implicit.pgc"
+#line 109 "thread_implicit.pgc"
if( sqlca.sqlcode != 0 )
{
@@ -154,10 +170,10 @@ if (sqlca.sqlcode < 0) sqlprint();}
return( NULL );
}
{ ECPGtrans(__LINE__, NULL, "begin transaction ");
-#line 99 "thread_implicit.pgc"
+#line 115 "thread_implicit.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 99 "thread_implicit.pgc"
+#line 115 "thread_implicit.pgc"
/* insert into test_thread table */
@@ -168,10 +184,10 @@ if (sqlca.sqlcode < 0) sqlprint();}
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
ECPGt_int,&(l_i),(long)1,(long)1,sizeof(int),
ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
-#line 104 "thread_implicit.pgc"
+#line 120 "thread_implicit.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 104 "thread_implicit.pgc"
+#line 120 "thread_implicit.pgc"
if( sqlca.sqlcode != 0 )
printf("%s: ERROR: insert failed!\n", l_connection);
@@ -179,16 +195,16 @@ if (sqlca.sqlcode < 0) sqlprint();}
/* all done */
{ ECPGtrans(__LINE__, NULL, "commit");
-#line 110 "thread_implicit.pgc"
+#line 126 "thread_implicit.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 110 "thread_implicit.pgc"
+#line 126 "thread_implicit.pgc"
{ ECPGdisconnect(__LINE__, l_connection);
-#line 111 "thread_implicit.pgc"
+#line 127 "thread_implicit.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 111 "thread_implicit.pgc"
+#line 127 "thread_implicit.pgc"
return( NULL );
}