diff options
Diffstat (limited to 'src/interfaces/ecpg/test/expected/thread-thread_implicit.c')
-rw-r--r-- | src/interfaces/ecpg/test/expected/thread-thread_implicit.c | 72 |
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 ); } |