Age Owner Branch data TLA Line data Source code
1 : : #include <stdint.h>
2 : : #include <stdlib.h>
3 : : #include "ecpg_config.h"
4 : :
5 : : #ifdef WIN32
6 : : #define WIN32_LEAN_AND_MEAN
7 : : #include <windows.h>
8 : : #include <process.h>
9 : : #include <locale.h>
10 : : #else
11 : : #include <pthread.h>
12 : : #endif
13 : : #include <stdio.h>
14 : :
15 : : #define THREADS 16
16 : : #define REPEATS 50
17 : :
18 : : exec sql include sqlca;
19 : : exec sql include ../regression;
20 : :
21 : : exec sql whenever sqlerror sqlprint;
22 : : exec sql whenever not found sqlprint;
23 : :
24 : : #ifdef WIN32
25 : : static unsigned __stdcall fn(void* arg)
26 : : #else
6041 tgl@sss.pgh.pa.us 27 :CBC 16 : static void* fn(void* arg)
28 : : #endif
29 : : {
30 : : int i;
31 : :
32 : : EXEC SQL BEGIN DECLARE SECTION;
33 : : int value;
34 : : char name[100];
35 : 16 : char **r = NULL;
36 : : EXEC SQL END DECLARE SECTION;
37 : :
1514 peter@eisentraut.org 38 : 16 : value = (intptr_t) arg;
6041 tgl@sss.pgh.pa.us 39 : 16 : sprintf(name, "Connection: %d", value);
40 : :
41 : 16 : EXEC SQL CONNECT TO REGRESSDB1 AS :name;
42 [ - + ]: 16 : EXEC SQL SET AUTOCOMMIT TO ON;
43 [ - + + + ]: 816 : for (i = 1; i <= REPEATS; ++i)
44 : : {
45 : 800 : EXEC SQL SELECT relname INTO :r FROM pg_class WHERE relname = 'pg_class';
46 [ - + - + ]: 800 : free(r);
47 : 800 : r = NULL;
48 : : }
49 : 16 : EXEC SQL DISCONNECT :name;
50 [ - + ]: 16 :
51 : 16 : return 0;
52 : : }
53 : :
5443 meskes@postgresql.or 54 : 1 : int main ()
55 : : {
56 : : intptr_t i;
57 : : #ifdef WIN32
58 : : HANDLE threads[THREADS];
59 : : #else
60 : : pthread_t threads[THREADS];
61 : : #endif
62 : :
63 : : #ifdef WIN32
64 : : for (i = 0; i < THREADS; ++i)
65 : : {
66 : : unsigned id;
67 : : threads[i] = (HANDLE)_beginthreadex(NULL, 0, fn, (void*)i, 0, &id);
68 : : }
69 : :
70 : : WaitForMultipleObjects(THREADS, threads, TRUE, INFINITE);
71 : : for (i = 0; i < THREADS; ++i)
72 : : CloseHandle(threads[i]);
73 : : #else
6041 tgl@sss.pgh.pa.us 74 [ + + ]: 17 : for (i = 0; i < THREADS; ++i)
1514 peter@eisentraut.org 75 : 16 : pthread_create(&threads[i], NULL, fn, (void *) i);
6041 tgl@sss.pgh.pa.us 76 [ + + ]: 17 : for (i = 0; i < THREADS; ++i)
77 : 16 : pthread_join(threads[i], NULL);
78 : : #endif
79 : :
80 : 1 : return 0;
81 : : }
|