Age Owner Branch data TLA Line data Source code
1 : : #include <stdio.h>
2 : : #include <stdlib.h>
3 : : #include <string.h>
4 : : #include <limits.h>
5 : :
6 : : exec sql include ../regression;
7 : :
8 : : exec sql include pgtypes_numeric.h;
9 : :
10 : : exec sql begin declare section;
11 : : exec sql include struct.h;
12 : : exec sql end declare section;
13 : :
14 : : exec sql whenever sqlerror stop;
15 : :
16 : : /* Functions for test 1 */
17 : :
18 : : static void
5192 meskes@postgresql.or 19 :CBC 1 : get_var1(MYTYPE **myvar0, MYNULLTYPE **mynullvar0)
20 : : {
21 : : exec sql begin declare section;
22 : 1 : MYTYPE *myvar = malloc(sizeof(MYTYPE));
23 : 1 : MYNULLTYPE *mynullvar = malloc(sizeof(MYNULLTYPE));
24 : : exec sql end declare section;
25 : :
26 : : /* Test DECLARE ... SELECT ... INTO with pointers */
27 : :
28 : 1 : exec sql declare mycur cursor for select * INTO :myvar :mynullvar from a1;
29 [ - + ]: 1 :
30 [ - + ]: 1 : if (sqlca.sqlcode != 0)
5192 meskes@postgresql.or 31 :UBC 0 : exit(1);
32 : :
5192 meskes@postgresql.or 33 :CBC 1 : *myvar0 = myvar;
34 : 1 : *mynullvar0 = mynullvar;
35 : 1 : }
36 : :
37 : : static void
38 : 1 : open_cur1(void)
39 : : {
40 : 1 : exec sql open mycur;
41 [ - + ]: 2 : }
42 : 1 :
43 : 1 : static void
44 : 1 : get_record1(void)
45 : 1 : {
46 : 5 : exec sql fetch mycur;
47 [ - + ]: 9 : }
48 : 5 :
49 : 5 : static void
50 : 5 : close_cur1(void)
51 : 4 : {
52 : 5 : exec sql close mycur;
53 [ - + ]: 5 : }
54 : 4 :
55 : 4 : int
56 : 4 : main (void)
57 : : {
58 : : MYTYPE *myvar;
59 : : MYNULLTYPE *mynullvar;
60 : : int loopcount;
61 : : char msg[128];
62 : :
63 : 1 : ECPGdebug(1, stderr);
64 : :
65 : 1 : strcpy(msg, "connect");
66 : 1 : exec sql connect to REGRESSDB1;
67 [ - + ]: 1 :
68 : 1 : strcpy(msg, "set");
69 : 1 : exec sql set datestyle to iso;
70 [ - + ]: 1 :
71 : 1 : strcpy(msg, "create");
72 : 1 : exec sql create table a1(id serial primary key, t text, d1 numeric, d2 float8, c character(10));
73 [ - + ]: 1 :
74 : 1 : strcpy(msg, "insert");
75 : 1 : exec sql insert into a1(id, t, d1, d2, c) values (default, 'a', 1.0, 2, 'a');
76 [ - + ]: 1 : exec sql insert into a1(id, t, d1, d2, c) values (default, null, null, null, null);
77 [ - + ]: 1 : exec sql insert into a1(id, t, d1, d2, c) values (default, 'b', 2.0, 3, 'b');
78 [ - + ]: 1 :
79 : 1 : strcpy(msg, "commit");
80 : 1 : exec sql commit;
81 [ - + ]: 1 :
82 : : /* Test out-of-scope DECLARE/OPEN/FETCH/CLOSE */
83 : :
84 : 1 : get_var1(&myvar, &mynullvar);
85 : 1 : open_cur1();
86 : :
1907 tgl@sss.pgh.pa.us 87 [ + - ]: 4 : for (loopcount = 0; loopcount < 100; loopcount++)
88 : : {
5192 meskes@postgresql.or 89 : 4 : memset(myvar, 0, sizeof(MYTYPE));
90 : 4 : get_record1();
91 [ + + ]: 4 : if (sqlca.sqlcode == ECPG_NOT_FOUND)
92 : 1 : break;
2156 tgl@sss.pgh.pa.us 93 :UBC 0 : printf("id=%d%s t='%s'%s d1=%f%s d2=%f%s c = '%s'%s\n",
5192 meskes@postgresql.or 94 :CBC 3 : myvar->id, mynullvar->id ? " (NULL)" : "",
95 [ - + ]: 3 : myvar->t, mynullvar->t ? " (NULL)" : "",
96 [ + + ]: 3 : myvar->d1, mynullvar->d1 ? " (NULL)" : "",
97 [ + + ]: 3 : myvar->d2, mynullvar->d2 ? " (NULL)" : "",
98 [ + + + + ]: 6 : myvar->c, mynullvar->c ? " (NULL)" : "");
99 : : }
100 : :
101 : 1 : close_cur1();
102 : :
3792 103 : 1 : free(myvar);
104 : 1 : free(mynullvar);
105 : :
5192 106 : 1 : strcpy(msg, "drop");
107 : 1 : exec sql drop table a1;
108 [ - + ]: 1 :
109 : 1 : strcpy(msg, "commit");
110 : 1 : exec sql commit;
111 [ - + ]: 1 :
4891 peter_e@gmx.net 112 : 1 : strcpy(msg, "disconnect");
5192 meskes@postgresql.or 113 : 1 : exec sql disconnect;
114 [ - + ]: 1 :
2432 peter_e@gmx.net 115 : 1 : return 0;
116 : : }
|