Branch data Line data Source code
1 : : #include <stdlib.h>
2 : :
3 : : exec sql include ../regression;
4 : :
5 : : exec sql whenever sqlerror sqlprint;
6 : :
7 : 2 : static void print(const char *msg)
8 : : {
9 : 2 : fprintf(stderr, "Error in statement '%s':\n", msg);
10 : 2 : sqlprint();
11 : 2 : }
12 : :
13 : 2 : static void print2(void)
14 : : {
15 : 2 : fprintf(stderr, "Found another error\n");
16 : 2 : sqlprint();
17 : 2 : }
18 : :
19 : 2 : static void warn(void)
20 : : {
21 : 2 : fprintf(stderr, "Warning: At least one column was truncated\n");
22 : 2 : }
23 : :
24 : 2 : int main(void)
25 : : {
26 : : exec sql int i;
27 : : exec sql char c[6];
28 : :
29 : 2 : ECPGdebug(1, stderr);
30 : :
31 : 2 : exec sql connect to REGRESSDB1;
32 [ - + ]: 2 : exec sql create table test(i int, c char(10));
33 [ - + ]: 2 : exec sql insert into test values(1, 'abcdefghij');
34 [ - + ]: 2 :
35 : : exec sql whenever sqlwarning do warn();
36 : 2 : exec sql select * into :i, :c from test;
37 [ + - - + ]: 2 : exec sql rollback;
38 [ - + - + ]: 2 :
39 : 2 : exec sql select * into :i from nonexistent;
40 [ - + + - ]: 2 : exec sql rollback;
41 [ - + - + ]: 2 :
42 : : exec sql whenever sqlerror do print("select");
43 : 2 : exec sql select * into :i from nonexistent;
44 [ - + + - ]: 2 : exec sql rollback;
45 [ - + - + ]: 2 :
46 : : exec sql whenever sqlerror call print2();
47 : 2 : exec sql select * into :i from nonexistent;
48 [ - + + - ]: 2 : exec sql rollback;
49 [ - + - + ]: 2 :
50 : : exec sql whenever sqlerror continue;
51 : 2 : exec sql select * into :i from nonexistent;
52 [ - + ]: 2 : exec sql rollback;
53 [ - + ]: 2 :
54 : : exec sql whenever sqlerror goto error;
55 : 2 : exec sql select * into :i from nonexistent;
56 [ - + + - ]: 2 : printf("Should not be reachable\n");
57 : :
58 : 2 : error:
59 : 2 : exec sql rollback;
60 [ - + - + ]: 2 :
61 : : exec sql whenever sqlerror stop;
62 : : /* This cannot fail, thus we don't get an exit value not equal 0. */
63 : : /* However, it still test the precompiler output. */
64 : 2 : exec sql select 1 into :i;
65 [ - + - + ]: 2 : exec sql rollback;
66 [ - + - + ]: 2 : exit (0);
67 : : }
|