aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/test/expected/thread-thread.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/interfaces/ecpg/test/expected/thread-thread.c')
-rw-r--r--src/interfaces/ecpg/test/expected/thread-thread.c72
1 files changed, 44 insertions, 28 deletions
diff --git a/src/interfaces/ecpg/test/expected/thread-thread.c b/src/interfaces/ecpg/test/expected/thread-thread.c
index 5011640b327..9555a79bfa5 100644
--- a/src/interfaces/ecpg/test/expected/thread-thread.c
+++ b/src/interfaces/ecpg/test/expected/thread-thread.c
@@ -23,7 +23,11 @@ main(void)
return 0;
}
#else
+#ifndef WIN32
#include <pthread.h>
+#else
+#include <windows.h>
+#endif
#line 1 "regression.h"
@@ -33,7 +37,7 @@ main(void)
-#line 18 "thread.pgc"
+#line 22 "thread.pgc"
void *test_thread(void *arg);
@@ -43,15 +47,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 30 "thread.pgc"
+#line 38 "thread.pgc"
int l_rows ;
/* exec sql end declare section */
-#line 31 "thread.pgc"
+#line 39 "thread.pgc"
/* Do not switch on debug output for regression tests. The threads get executed in
@@ -60,26 +68,26 @@ int main(int argc, char *argv[])
/* setup test_thread table */
{ ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , NULL, 0); }
-#line 38 "thread.pgc"
+#line 46 "thread.pgc"
{ ECPGdo(__LINE__, 0, 1, NULL, "drop table test_thread ", ECPGt_EOIT, ECPGt_EORT);}
-#line 39 "thread.pgc"
+#line 47 "thread.pgc"
/* DROP might fail */
{ ECPGtrans(__LINE__, NULL, "commit");}
-#line 40 "thread.pgc"
+#line 48 "thread.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 45 "thread.pgc"
+#line 53 "thread.pgc"
{ ECPGtrans(__LINE__, NULL, "commit");}
-#line 46 "thread.pgc"
+#line 54 "thread.pgc"
{ ECPGdisconnect(__LINE__, "CURRENT");}
-#line 47 "thread.pgc"
+#line 55 "thread.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");
@@ -87,30 +95,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 69 "thread.pgc"
+#line 85 "thread.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 70 "thread.pgc"
+#line 86 "thread.pgc"
{ ECPGtrans(__LINE__, NULL, "commit");}
-#line 71 "thread.pgc"
+#line 87 "thread.pgc"
{ ECPGdisconnect(__LINE__, "CURRENT");}
-#line 72 "thread.pgc"
+#line 88 "thread.pgc"
if( l_rows == (nthreads * iterations) )
printf("Success.\n");
@@ -127,25 +143,25 @@ void *test_thread(void *arg)
-#line 85 "thread.pgc"
+#line 101 "thread.pgc"
int l_i ;
-#line 86 "thread.pgc"
+#line 102 "thread.pgc"
char l_connection [ 128 ] ;
/* exec sql end declare section */
-#line 87 "thread.pgc"
+#line 103 "thread.pgc"
/* build up connection name, and connect to database */
snprintf(l_connection, sizeof(l_connection), "thread_%03ld", threadnum);
/* exec sql whenever sqlerror sqlprint ; */
-#line 91 "thread.pgc"
+#line 107 "thread.pgc"
{ ECPGconnect(__LINE__, 0, "regress1" , NULL, NULL , l_connection, 0);
-#line 92 "thread.pgc"
+#line 108 "thread.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 92 "thread.pgc"
+#line 108 "thread.pgc"
if( sqlca.sqlcode != 0 )
{
@@ -153,10 +169,10 @@ if (sqlca.sqlcode < 0) sqlprint();}
return( NULL );
}
{ ECPGtrans(__LINE__, l_connection, "begin transaction ");
-#line 98 "thread.pgc"
+#line 114 "thread.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 98 "thread.pgc"
+#line 114 "thread.pgc"
/* insert into test_thread table */
@@ -167,10 +183,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 103 "thread.pgc"
+#line 119 "thread.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 103 "thread.pgc"
+#line 119 "thread.pgc"
if( sqlca.sqlcode != 0 )
printf("%s: ERROR: insert failed!\n", l_connection);
@@ -178,16 +194,16 @@ if (sqlca.sqlcode < 0) sqlprint();}
/* all done */
{ ECPGtrans(__LINE__, l_connection, "commit");
-#line 109 "thread.pgc"
+#line 125 "thread.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 109 "thread.pgc"
+#line 125 "thread.pgc"
{ ECPGdisconnect(__LINE__, l_connection);
-#line 110 "thread.pgc"
+#line 126 "thread.pgc"
if (sqlca.sqlcode < 0) sqlprint();}
-#line 110 "thread.pgc"
+#line 126 "thread.pgc"
return( NULL );
}