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