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 : }
|