55
66
77#include <pthread.h>
8+ #include <stdlib.h>
89
910voidins1(void);
1011voidins2(void);
1112
1213EXEC SQL BEGIN DECLARE SECTION;
1314char *dbname;
15+ int iterations = 10;
1416EXEC SQL END DECLARE SECTION;
1517
1618int
@@ -22,13 +24,21 @@ EXEC SQL BEGIN DECLARE SECTION;
2224introws;
2325EXEC SQL END DECLARE SECTION;
2426
25- if (argc!= 2 )
27+ if (argc< 2 || argc > 3 )
2628{
27- fprintf(stderr, "Usage: %s dbname\n", argv[0]);
29+ fprintf(stderr, "Usage: %s dbname [iterations] \n", argv[0]);
2830return 1;
2931}
3032dbname = argv[1];
3133
34+ if (argc == 3)
35+ iterations = atoi(argv[2]);
36+ if (iterations % 2 != 0)
37+ {
38+ fprintf(stderr, "iterations must be an even number\n");
39+ return 1;
40+ }
41+
3242EXEC SQL CONNECT TO:dbname AS test0;
3343
3444/* DROP might fail */
@@ -47,7 +57,7 @@ EXEC SQL END DECLARE SECTION;
4757EXEC SQL AT test3 COMMIT WORK;
4858EXEC SQL DISCONNECT test3;
4959
50- if (rows ==10 )
60+ if (rows ==iterations )
5161printf("Success.\n");
5262else
5363printf("Failure.\n");
@@ -61,7 +71,7 @@ ins1(void)
6171EXEC SQL WHENEVER sqlerror sqlprint;
6272EXEC SQL CONNECT TO:dbname AS test1;
6373
64- for (i = 0; i <5 ; i++)
74+ for (i = 0; i <iterations / 2 ; i++)
6575{
6676printf("thread 1 : inserting\n");
6777EXEC SQL AT test1 INSERT INTO test_thread VALUES('thread1');
@@ -82,7 +92,7 @@ ins2(void)
8292EXEC SQL WHENEVER sqlerror sqlprint;
8393EXEC SQL CONNECT TO:dbname AS test2;
8494
85- for (i = 0; i <5 ; i++)
95+ for (i = 0; i <iterations / 2 ; i++)
8696{
8797printf("thread 2: inserting\n");
8898EXEC SQL AT test2 INSERT INTO test_thread VALUES('thread2');