1 /* Processed by ecpg (regression mode) */
2 /* These include files are added by the preprocessor */
3 #include <ecpglib.h>
4 #include <ecpgerrno.h>
5 #include <sqlca.h>
6 /* End of automatic include section */
7 #define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
8
9 #line 1 "describe.pgc"
10 #include <stdlib.h>
11 #include <string.h>
12
13
14 #line 1 "regression.h"
15
16
17
18
19
20
21 #line 4 "describe.pgc"
22
23
24 #line 1 "sqlda.h"
25 #ifndef ECPG_SQLDA_H
26 #define ECPG_SQLDA_H
27
28 #ifdef _ECPG_INFORMIX_H
29
30 #include "sqlda-compat.h"
31 typedef struct sqlvar_compat sqlvar_t;
32 typedef struct sqlda_compat sqlda_t;
33
34 #else
35
36 #include "sqlda-native.h"
37 typedef struct sqlvar_struct sqlvar_t;
38 typedef struct sqlda_struct sqlda_t;
39
40 #endif
41
42 #endif /* ECPG_SQLDA_H */
43
44 #line 5 "describe.pgc"
45
46
47 /* exec sql whenever sqlerror stop ; */
48 #line 7 "describe.pgc"
49
50
51 sqlda_t *sqlda1, *sqlda2, *sqlda3;
52
53 int
main(void)54 main (void)
55 {
56 /* exec sql begin declare section */
57
58
59
60
61
62
63 #line 15 "describe.pgc"
64 char * stmt1 = "SELECT id, t FROM descr_t2" ;
65
66 #line 16 "describe.pgc"
67 char * stmt2 = "SELECT id, t FROM descr_t2 WHERE id = -1" ;
68
69 #line 17 "describe.pgc"
70 int i , count1 , count2 ;
71
72 #line 18 "describe.pgc"
73 char field_name1 [ 30 ] = "not set" ;
74
75 #line 19 "describe.pgc"
76 char field_name2 [ 30 ] = "not set" ;
77 /* exec sql end declare section */
78 #line 20 "describe.pgc"
79
80
81 char msg[128];
82
83 ECPGdebug(1, stderr);
84
85 strcpy(msg, "connect");
86 { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0);
87 #line 27 "describe.pgc"
88
89 if (sqlca.sqlcode < 0) exit (1);}
90 #line 27 "describe.pgc"
91
92
93 strcpy(msg, "set");
94 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "set datestyle to iso", ECPGt_EOIT, ECPGt_EORT);
95 #line 30 "describe.pgc"
96
97 if (sqlca.sqlcode < 0) exit (1);}
98 #line 30 "describe.pgc"
99
100
101 strcpy(msg, "create");
102 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table descr_t2 ( id serial primary key , t text )", ECPGt_EOIT, ECPGt_EORT);
103 #line 33 "describe.pgc"
104
105 if (sqlca.sqlcode < 0) exit (1);}
106 #line 33 "describe.pgc"
107
108
109 strcpy(msg, "insert");
110 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into descr_t2 ( id , t ) values ( default , 'a' )", ECPGt_EOIT, ECPGt_EORT);
111 #line 36 "describe.pgc"
112
113 if (sqlca.sqlcode < 0) exit (1);}
114 #line 36 "describe.pgc"
115
116 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into descr_t2 ( id , t ) values ( default , 'b' )", ECPGt_EOIT, ECPGt_EORT);
117 #line 37 "describe.pgc"
118
119 if (sqlca.sqlcode < 0) exit (1);}
120 #line 37 "describe.pgc"
121
122 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into descr_t2 ( id , t ) values ( default , 'c' )", ECPGt_EOIT, ECPGt_EORT);
123 #line 38 "describe.pgc"
124
125 if (sqlca.sqlcode < 0) exit (1);}
126 #line 38 "describe.pgc"
127
128 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into descr_t2 ( id , t ) values ( default , 'd' )", ECPGt_EOIT, ECPGt_EORT);
129 #line 39 "describe.pgc"
130
131 if (sqlca.sqlcode < 0) exit (1);}
132 #line 39 "describe.pgc"
133
134
135 strcpy(msg, "commit");
136 { ECPGtrans(__LINE__, NULL, "commit");
137 #line 42 "describe.pgc"
138
139 if (sqlca.sqlcode < 0) exit (1);}
140 #line 42 "describe.pgc"
141
142
143 /*
144 * Test DESCRIBE with a query producing tuples.
145 * DESCRIPTOR and SQL DESCRIPTOR are NOT the same in
146 * Informix-compat mode.
147 */
148
149 strcpy(msg, "allocate");
150 ECPGallocate_desc(__LINE__, "desc1");
151 #line 51 "describe.pgc"
152
153 if (sqlca.sqlcode < 0) exit (1);
154 #line 51 "describe.pgc"
155
156 ECPGallocate_desc(__LINE__, "desc2");
157 #line 52 "describe.pgc"
158
159 if (sqlca.sqlcode < 0) exit (1);
160 #line 52 "describe.pgc"
161
162
163 strcpy(msg, "prepare");
164 { ECPGprepare(__LINE__, NULL, 0, "st_id1", stmt1);
165 #line 55 "describe.pgc"
166
167 if (sqlca.sqlcode < 0) exit (1);}
168 #line 55 "describe.pgc"
169
170
171 sqlda1 = sqlda2 = sqlda3 = NULL;
172
173 strcpy(msg, "describe");
174 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id1",
175 ECPGt_descriptor, "desc1", 1L, 1L, 1L,
176 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
177 #line 60 "describe.pgc"
178
179 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id1",
180 ECPGt_descriptor, "desc2", 1L, 1L, 1L,
181 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
182 #line 61 "describe.pgc"
183
184
185 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id1",
186 ECPGt_sqlda, &sqlda1, 0L, 0L, 0L,
187 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
188 #line 63 "describe.pgc"
189
190 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id1",
191 ECPGt_sqlda, &sqlda2, 0L, 0L, 0L,
192 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
193 #line 64 "describe.pgc"
194
195 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id1",
196 ECPGt_sqlda, &sqlda3, 0L, 0L, 0L,
197 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
198 #line 65 "describe.pgc"
199
200
201 if (sqlda1 == NULL)
202 {
203 printf("sqlda1 NULL\n");
204 exit(1);
205 }
206
207 if (sqlda2 == NULL)
208 {
209 printf("sqlda2 NULL\n");
210 exit(1);
211 }
212
213 if (sqlda3 == NULL)
214 {
215 printf("sqlda3 NULL\n");
216 exit(1);
217 }
218
219 strcpy(msg, "get descriptor");
220 { ECPGget_desc_header(__LINE__, "desc1", &(count1));
221
222 #line 86 "describe.pgc"
223
224 if (sqlca.sqlcode < 0) exit (1);}
225 #line 86 "describe.pgc"
226
227 { ECPGget_desc_header(__LINE__, "desc1", &(count2));
228
229 #line 87 "describe.pgc"
230
231 if (sqlca.sqlcode < 0) exit (1);}
232 #line 87 "describe.pgc"
233
234
235 if (count1 != count2)
236 {
237 printf("count1 (%d) != count2 (%d)\n", count1, count2);
238 exit(1);
239 }
240
241 if (count1 != sqlda1->sqld)
242 {
243 printf("count1 (%d) != sqlda1->sqld (%d)\n", count1, sqlda1->sqld);
244 exit(1);
245 }
246
247 if (count1 != sqlda2->sqld)
248 {
249 printf("count1 (%d) != sqlda2->sqld (%d)\n", count1, sqlda2->sqld);
250 exit(1);
251 }
252
253 if (count1 != sqlda3->sqld)
254 {
255 printf("count1 (%d) != sqlda3->sqld (%d)\n", count1, sqlda3->sqld);
256 exit(1);
257 }
258
259 for (i = 1; i <= count1; i++)
260 {
261 { ECPGget_desc(__LINE__, "desc1", i,ECPGd_name,
262 ECPGt_char,(field_name1),(long)30,(long)1,(30)*sizeof(char), ECPGd_EODT);
263
264 #line 115 "describe.pgc"
265
266 if (sqlca.sqlcode < 0) exit (1);}
267 #line 115 "describe.pgc"
268
269 { ECPGget_desc(__LINE__, "desc2", i,ECPGd_name,
270 ECPGt_char,(field_name2),(long)30,(long)1,(30)*sizeof(char), ECPGd_EODT);
271
272 #line 116 "describe.pgc"
273
274 if (sqlca.sqlcode < 0) exit (1);}
275 #line 116 "describe.pgc"
276
277 printf("%d\n\tfield_name1 '%s'\n\tfield_name2 '%s'\n\t"
278 "sqlda1 '%s'\n\tsqlda2 '%s'\n\tsqlda3 '%s'\n",
279 i, field_name1, field_name2,
280 sqlda1->sqlvar[i-1].sqlname.data,
281 sqlda2->sqlvar[i-1].sqlname.data,
282 sqlda3->sqlvar[i-1].sqlname.data);
283 }
284
285 strcpy(msg, "deallocate");
286 ECPGdeallocate_desc(__LINE__, "desc1");
287 #line 126 "describe.pgc"
288
289 if (sqlca.sqlcode < 0) exit (1);
290 #line 126 "describe.pgc"
291
292 ECPGdeallocate_desc(__LINE__, "desc2");
293 #line 127 "describe.pgc"
294
295 if (sqlca.sqlcode < 0) exit (1);
296 #line 127 "describe.pgc"
297
298 free(sqlda1);
299 free(sqlda2);
300 free(sqlda3);
301
302 { ECPGdeallocate(__LINE__, 0, NULL, "st_id1");
303 #line 132 "describe.pgc"
304
305 if (sqlca.sqlcode < 0) exit (1);}
306 #line 132 "describe.pgc"
307
308
309 /* Test DESCRIBE with a query not producing tuples */
310
311 strcpy(msg, "allocate");
312 ECPGallocate_desc(__LINE__, "desc1");
313 #line 137 "describe.pgc"
314
315 if (sqlca.sqlcode < 0) exit (1);
316 #line 137 "describe.pgc"
317
318 ECPGallocate_desc(__LINE__, "desc2");
319 #line 138 "describe.pgc"
320
321 if (sqlca.sqlcode < 0) exit (1);
322 #line 138 "describe.pgc"
323
324
325 strcpy(msg, "prepare");
326 { ECPGprepare(__LINE__, NULL, 0, "st_id2", stmt2);
327 #line 141 "describe.pgc"
328
329 if (sqlca.sqlcode < 0) exit (1);}
330 #line 141 "describe.pgc"
331
332
333 sqlda1 = sqlda2 = sqlda3 = NULL;
334
335 strcpy(msg, "describe");
336 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id2",
337 ECPGt_descriptor, "desc1", 1L, 1L, 1L,
338 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
339 #line 146 "describe.pgc"
340
341 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id2",
342 ECPGt_descriptor, "desc2", 1L, 1L, 1L,
343 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
344 #line 147 "describe.pgc"
345
346
347 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id2",
348 ECPGt_sqlda, &sqlda1, 0L, 0L, 0L,
349 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
350 #line 149 "describe.pgc"
351
352 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id2",
353 ECPGt_sqlda, &sqlda2, 0L, 0L, 0L,
354 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
355 #line 150 "describe.pgc"
356
357 { ECPGdescribe(__LINE__, 0, 0, NULL, "st_id2",
358 ECPGt_sqlda, &sqlda3, 0L, 0L, 0L,
359 ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);}
360 #line 151 "describe.pgc"
361
362
363 if (sqlda1 == NULL || sqlda2 == NULL || sqlda3 == NULL)
364 exit(1);
365
366 strcpy(msg, "get descriptor");
367 { ECPGget_desc_header(__LINE__, "desc1", &(count1));
368
369 #line 157 "describe.pgc"
370
371 if (sqlca.sqlcode < 0) exit (1);}
372 #line 157 "describe.pgc"
373
374 { ECPGget_desc_header(__LINE__, "desc1", &(count2));
375
376 #line 158 "describe.pgc"
377
378 if (sqlca.sqlcode < 0) exit (1);}
379 #line 158 "describe.pgc"
380
381
382 if (!( count1 == count2 &&
383 count1 == sqlda1->sqld &&
384 count1 == sqlda2->sqld &&
385 count1 == sqlda3->sqld))
386 exit(1);
387
388 for (i = 1; i <= count1; i++)
389 {
390 { ECPGget_desc(__LINE__, "desc1", i,ECPGd_name,
391 ECPGt_char,(field_name1),(long)30,(long)1,(30)*sizeof(char), ECPGd_EODT);
392
393 #line 168 "describe.pgc"
394
395 if (sqlca.sqlcode < 0) exit (1);}
396 #line 168 "describe.pgc"
397
398 { ECPGget_desc(__LINE__, "desc2", i,ECPGd_name,
399 ECPGt_char,(field_name2),(long)30,(long)1,(30)*sizeof(char), ECPGd_EODT);
400
401 #line 169 "describe.pgc"
402
403 if (sqlca.sqlcode < 0) exit (1);}
404 #line 169 "describe.pgc"
405
406 printf("%d\n\tfield_name1 '%s'\n\tfield_name2 '%s'\n\t"
407 "sqlda1 '%s'\n\tsqlda2 '%s'\n\tsqlda3 '%s'\n",
408 i, field_name1, field_name2,
409 sqlda1->sqlvar[i-1].sqlname.data,
410 sqlda2->sqlvar[i-1].sqlname.data,
411 sqlda3->sqlvar[i-1].sqlname.data);
412 }
413
414 strcpy(msg, "deallocate");
415 ECPGdeallocate_desc(__LINE__, "desc1");
416 #line 179 "describe.pgc"
417
418 if (sqlca.sqlcode < 0) exit (1);
419 #line 179 "describe.pgc"
420
421 ECPGdeallocate_desc(__LINE__, "desc2");
422 #line 180 "describe.pgc"
423
424 if (sqlca.sqlcode < 0) exit (1);
425 #line 180 "describe.pgc"
426
427 free(sqlda1);
428 free(sqlda2);
429 free(sqlda3);
430
431 { ECPGdeallocate(__LINE__, 0, NULL, "st_id2");
432 #line 185 "describe.pgc"
433
434 if (sqlca.sqlcode < 0) exit (1);}
435 #line 185 "describe.pgc"
436
437
438 /* End test */
439
440 strcpy(msg, "drop");
441 { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table descr_t2", ECPGt_EOIT, ECPGt_EORT);
442 #line 190 "describe.pgc"
443
444 if (sqlca.sqlcode < 0) exit (1);}
445 #line 190 "describe.pgc"
446
447
448 strcpy(msg, "commit");
449 { ECPGtrans(__LINE__, NULL, "commit");
450 #line 193 "describe.pgc"
451
452 if (sqlca.sqlcode < 0) exit (1);}
453 #line 193 "describe.pgc"
454
455
456 strcpy(msg, "disconnect");
457 { ECPGdisconnect(__LINE__, "CURRENT");
458 #line 196 "describe.pgc"
459
460 if (sqlca.sqlcode < 0) exit (1);}
461 #line 196 "describe.pgc"
462
463
464 return (0);
465 }
466