]> granicus.if.org Git - postgresql/blob - src/interfaces/ecpg/test/expected/compat_informix-sqlda.c
a013be99aa24bc24ec9163fa0167ef7bc6e07a57
[postgresql] / src / interfaces / ecpg / test / expected / compat_informix-sqlda.c
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 /* Needed for informix compatibility */
7 #include <ecpg_informix.h>
8 /* End of automatic include section */
9 #define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
10
11 #line 1 "sqlda.pgc"
12 #include <stdlib.h>
13 #include <string.h>
14 #include <limits.h>
15
16
17 #line 1 "regression.h"
18
19
20
21
22
23
24 #line 5 "sqlda.pgc"
25
26
27
28 #line 1 "sqlda.h"
29 #ifndef ECPG_SQLDA_H
30 #define ECPG_SQLDA_H
31
32 #ifdef _ECPG_INFORMIX_H
33
34 #include "sqlda-compat.h"
35 typedef struct sqlvar_compat    sqlvar_t;
36 typedef struct sqlda_compat     sqlda_t;
37
38 #else
39
40 #include "sqlda-native.h"
41 typedef struct sqlvar_struct    sqlvar_t;
42 typedef struct sqlda_struct     sqlda_t;
43
44 #endif
45
46 #endif /* ECPG_SQLDA_H */
47
48 #line 7 "sqlda.pgc"
49
50
51 #line 1 "sqltypes.h"
52 #ifndef ECPG_SQLTYPES_H
53 #define ECPG_SQLTYPES_H
54
55 #include <limits.h>
56
57 #define CCHARTYPE       ECPGt_char
58 #define CSHORTTYPE      ECPGt_short
59 #define CINTTYPE        ECPGt_int
60 #define CLONGTYPE       ECPGt_long
61 #define CFLOATTYPE      ECPGt_float
62 #define CDOUBLETYPE ECPGt_double
63 #define CDECIMALTYPE    ECPGt_decimal
64 #define CFIXCHARTYPE    108
65 #define CSTRINGTYPE ECPGt_char
66 #define CDATETYPE       ECPGt_date
67 #define CMONEYTYPE      111
68 #define CDTIMETYPE      ECPGt_timestamp
69 #define CLOCATORTYPE    113
70 #define CVCHARTYPE      ECPGt_varchar
71 #define CINVTYPE        115
72 #define CFILETYPE       116
73 #define CINT8TYPE       ECPGt_long_long
74 #define CCOLLTYPE               118
75 #define CLVCHARTYPE             119
76 #define CFIXBINTYPE             120
77 #define CVARBINTYPE             121
78 #define CBOOLTYPE               ECPGt_bool
79 #define CROWTYPE                123
80 #define CLVCHARPTRTYPE  124
81 #define CTYPEMAX        25
82
83 /*
84  * Values used in sqlda->sqlvar[i]->sqltype
85  */
86 #define SQLCHAR         ECPGt_char
87 #define SQLSMINT        ECPGt_short
88 #define SQLINT          ECPGt_int
89 #define SQLFLOAT        ECPGt_double
90 #define SQLSMFLOAT      ECPGt_float
91 #define SQLDECIMAL      ECPGt_decimal
92 #define SQLSERIAL       ECPGt_int
93 #define SQLDATE         ECPGt_date
94 #define SQLDTIME        ECPGt_timestamp
95 #define SQLTEXT         ECPGt_char
96 #define SQLVCHAR        ECPGt_char
97 #define SQLINTERVAL     ECPGt_interval
98 #define SQLNCHAR        ECPGt_char
99 #define SQLNVCHAR       ECPGt_char
100 #ifdef HAVE_LONG_LONG_INT_64
101 #define SQLINT8         ECPGt_long_long
102 #define SQLSERIAL8      ECPGt_long_long
103 #else
104 #define SQLINT8         ECPGt_long
105 #define SQLSERIAL8      ECPGt_long
106 #endif
107
108 #endif   /* ndef ECPG_SQLTYPES_H */
109
110 #line 8 "sqlda.pgc"
111
112
113 /* exec sql whenever sqlerror  stop ; */
114 #line 10 "sqlda.pgc"
115
116
117 /* These shouldn't be under DECLARE SECTION */
118 sqlda_t *inp_sqlda, *outp_sqlda;
119
120 static void
121 dump_sqlda(sqlda_t *sqlda)
122 {
123         int     i;
124
125         if (sqlda == NULL)
126         {
127                 printf("dump_sqlda called with NULL sqlda\n");
128                 return;
129         }
130
131         for (i = 0; i < sqlda->sqld; i++)
132         {
133                 if (sqlda->sqlvar[i].sqlind && *(sqlda->sqlvar[i].sqlind) == -1)
134                         printf("name sqlda descriptor: '%s' value NULL'\n", sqlda->sqlvar[i].sqlname);
135                 else
136                 switch (sqlda->sqlvar[i].sqltype)
137                 {
138                 case SQLCHAR:
139                         printf("name sqlda descriptor: '%s' value '%s'\n", sqlda->sqlvar[i].sqlname, sqlda->sqlvar[i].sqldata);
140                         break;
141                 case SQLINT:
142                         printf("name sqlda descriptor: '%s' value %d\n", sqlda->sqlvar[i].sqlname, *(int *)sqlda->sqlvar[i].sqldata);
143                         break;
144                 case SQLFLOAT:
145                         printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata);
146                         break;
147                 case SQLDECIMAL:
148                         {
149                                 char    val[64];
150                                 dectoasc((decimal *)sqlda->sqlvar[i].sqldata, val, 64, -1);
151                                 printf("name sqlda descriptor: '%s' value DECIMAL '%s'\n", sqlda->sqlvar[i].sqlname, val);
152                                 break;
153                         }
154                 }
155         }
156 }
157
158 int
159 main (void)
160 {
161 /* exec sql begin declare section */
162                   
163                   
164                 
165                 
166
167 #line 57 "sqlda.pgc"
168  char * stmt1 = "SELECT * FROM t1" ;
169  
170 #line 58 "sqlda.pgc"
171  char * stmt2 = "SELECT * FROM t1 WHERE id = ?" ;
172  
173 #line 59 "sqlda.pgc"
174  int rec ;
175  
176 #line 60 "sqlda.pgc"
177  int id ;
178 /* exec sql end declare section */
179 #line 61 "sqlda.pgc"
180
181
182         char msg[128];
183
184         ECPGdebug(1, stderr);
185
186         strcpy(msg, "connect");
187         { ECPGconnect(__LINE__, 1, "regress1" , NULL, NULL , "regress1", 0); 
188 #line 68 "sqlda.pgc"
189
190 if (sqlca.sqlcode < 0) exit (1);}
191 #line 68 "sqlda.pgc"
192
193
194         strcpy(msg, "set");
195         { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "set datestyle to iso", ECPGt_EOIT, ECPGt_EORT);
196 #line 71 "sqlda.pgc"
197
198 if (sqlca.sqlcode < 0) exit (1);}
199 #line 71 "sqlda.pgc"
200
201
202         strcpy(msg, "create");
203         { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "create table t1 ( id integer , t text , d1 numeric , d2 float8 , c char ( 10 ) )", ECPGt_EOIT, ECPGt_EORT);
204 #line 79 "sqlda.pgc"
205
206 if (sqlca.sqlcode < 0) exit (1);}
207 #line 79 "sqlda.pgc"
208
209
210         strcpy(msg, "insert");
211         { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "insert into t1 values ( 1 , 'a' , 1.0 , 1 , 'a' ) , ( 2 , null , null , null , null ) , ( 4 , 'd' , 4.0 , 4 , 'd' )", ECPGt_EOIT, ECPGt_EORT);
212 #line 85 "sqlda.pgc"
213
214 if (sqlca.sqlcode < 0) exit (1);}
215 #line 85 "sqlda.pgc"
216
217
218         strcpy(msg, "commit");
219         { ECPGtrans(__LINE__, NULL, "commit");
220 #line 88 "sqlda.pgc"
221
222 if (sqlca.sqlcode < 0) exit (1);}
223 #line 88 "sqlda.pgc"
224
225
226         /* SQLDA test for getting all records from a table */
227
228         outp_sqlda = NULL;
229
230         strcpy(msg, "prepare");
231         { ECPGprepare(__LINE__, NULL, 0, "st_id1", stmt1);
232 #line 95 "sqlda.pgc"
233
234 if (sqlca.sqlcode < 0) exit (1);}
235 #line 95 "sqlda.pgc"
236
237
238         strcpy(msg, "declare");
239         ECPG_informix_reset_sqlca(); /* declare mycur1 cursor for $1 */
240 #line 98 "sqlda.pgc"
241
242
243         strcpy(msg, "open");
244         { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "declare mycur1 cursor for $1", 
245         ECPGt_char_variable,(ECPGprepared_statement(NULL, "st_id1", __LINE__)),(long)1,(long)1,(1)*sizeof(char), 
246         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
247 #line 101 "sqlda.pgc"
248
249 if (sqlca.sqlcode < 0) exit (1);}
250 #line 101 "sqlda.pgc"
251
252
253         /* exec sql whenever not found  break ; */
254 #line 103 "sqlda.pgc"
255
256
257         rec = 0;
258         while (1)
259         {
260                 strcpy(msg, "fetch");
261                 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "fetch 1 from mycur1", ECPGt_EOIT, 
262         ECPGt_sqlda, &outp_sqlda, 0L, 0L, 0L, 
263         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
264 #line 109 "sqlda.pgc"
265
266 if (sqlca.sqlcode == ECPG_NOT_FOUND) break;
267 #line 109 "sqlda.pgc"
268
269 if (sqlca.sqlcode < 0) exit (1);}
270 #line 109 "sqlda.pgc"
271
272
273                 printf("FETCH RECORD %d\n", ++rec);
274                 dump_sqlda(outp_sqlda);
275         }
276
277         /* exec sql whenever not found  continue ; */
278 #line 115 "sqlda.pgc"
279
280
281         strcpy(msg, "close");
282         { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "close mycur1", ECPGt_EOIT, ECPGt_EORT);
283 #line 118 "sqlda.pgc"
284
285 if (sqlca.sqlcode < 0) exit (1);}
286 #line 118 "sqlda.pgc"
287
288
289         strcpy(msg, "deallocate");
290         { ECPGdeallocate(__LINE__, 1, NULL, "st_id1");
291 #line 121 "sqlda.pgc"
292
293 if (sqlca.sqlcode < 0) exit (1);}
294 #line 121 "sqlda.pgc"
295
296
297         free(outp_sqlda);
298
299         /* SQLDA test for getting all records from a table
300            using the Informix-specific FETCH ... USING DESCRIPTOR
301          */
302
303         outp_sqlda = NULL;
304
305         strcpy(msg, "prepare");
306         { ECPGprepare(__LINE__, NULL, 0, "st_id2", stmt1);
307 #line 132 "sqlda.pgc"
308
309 if (sqlca.sqlcode < 0) exit (1);}
310 #line 132 "sqlda.pgc"
311
312
313         strcpy(msg, "declare");
314         ECPG_informix_reset_sqlca(); /* declare mycur2 cursor for $1 */
315 #line 135 "sqlda.pgc"
316
317
318         strcpy(msg, "open");
319         { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "declare mycur2 cursor for $1", 
320         ECPGt_char_variable,(ECPGprepared_statement(NULL, "st_id2", __LINE__)),(long)1,(long)1,(1)*sizeof(char), 
321         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
322 #line 138 "sqlda.pgc"
323
324 if (sqlca.sqlcode < 0) exit (1);}
325 #line 138 "sqlda.pgc"
326
327
328         /* exec sql whenever not found  break ; */
329 #line 140 "sqlda.pgc"
330
331
332         rec = 0;
333         while (1)
334         {
335                 strcpy(msg, "fetch");
336                 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "fetch from mycur2", ECPGt_EOIT, 
337         ECPGt_sqlda, &outp_sqlda, 0L, 0L, 0L, 
338         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
339 #line 146 "sqlda.pgc"
340
341 if (sqlca.sqlcode == ECPG_NOT_FOUND) break;
342 #line 146 "sqlda.pgc"
343
344 if (sqlca.sqlcode < 0) exit (1);}
345 #line 146 "sqlda.pgc"
346
347
348                 printf("FETCH RECORD %d\n", ++rec);
349                 dump_sqlda(outp_sqlda);
350         }
351
352         /* exec sql whenever not found  continue ; */
353 #line 152 "sqlda.pgc"
354
355
356         strcpy(msg, "close");
357         { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "close mycur2", ECPGt_EOIT, ECPGt_EORT);
358 #line 155 "sqlda.pgc"
359
360 if (sqlca.sqlcode < 0) exit (1);}
361 #line 155 "sqlda.pgc"
362
363
364         strcpy(msg, "deallocate");
365         { ECPGdeallocate(__LINE__, 1, NULL, "st_id2");
366 #line 158 "sqlda.pgc"
367
368 if (sqlca.sqlcode < 0) exit (1);}
369 #line 158 "sqlda.pgc"
370
371
372         free(outp_sqlda);
373
374         /* SQLDA test for getting one record using an input descriptor */
375
376         /* Input sqlda has to be built manually */
377         inp_sqlda = (sqlda_t *)malloc(sizeof(sqlda_t));
378         memset(inp_sqlda, 0, sizeof(sqlda_t));
379         inp_sqlda->sqld = 1;
380         inp_sqlda->sqlvar = malloc(sizeof(sqlvar_t));
381         memset(inp_sqlda->sqlvar, 0, sizeof(sqlvar_t));
382
383         inp_sqlda->sqlvar[0].sqltype = SQLINT;
384         inp_sqlda->sqlvar[0].sqldata = (char *)&id;
385
386         printf("EXECUTE RECORD 4\n");
387
388         id = 4;
389
390         outp_sqlda = NULL;
391
392         strcpy(msg, "prepare");
393         { ECPGprepare(__LINE__, NULL, 0, "st_id3", stmt2);
394 #line 181 "sqlda.pgc"
395
396 if (sqlca.sqlcode < 0) exit (1);}
397 #line 181 "sqlda.pgc"
398
399
400         strcpy(msg, "execute");
401         { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_execute, "st_id3", 
402         ECPGt_sqlda, &inp_sqlda, 0L, 0L, 0L, 
403         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, 
404         ECPGt_sqlda, &outp_sqlda, 0L, 0L, 0L, 
405         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
406 #line 184 "sqlda.pgc"
407
408 if (sqlca.sqlcode < 0) exit (1);}
409 #line 184 "sqlda.pgc"
410
411
412         dump_sqlda(outp_sqlda);
413
414         strcpy(msg, "deallocate");
415         { ECPGdeallocate(__LINE__, 1, NULL, "st_id3");
416 #line 189 "sqlda.pgc"
417
418 if (sqlca.sqlcode < 0) exit (1);}
419 #line 189 "sqlda.pgc"
420
421
422         free(inp_sqlda->sqlvar);
423         free(inp_sqlda);
424         free(outp_sqlda);
425
426         /* SQLDA test for getting one record using an input descriptor
427          * on a named connection
428          */
429
430         { ECPGconnect(__LINE__, 1, "regress1" , NULL, NULL , "con2", 0); 
431 #line 199 "sqlda.pgc"
432
433 if (sqlca.sqlcode < 0) exit (1);}
434 #line 199 "sqlda.pgc"
435
436
437         /* Input sqlda has to be built manually */
438         inp_sqlda = (sqlda_t *)malloc(sizeof(sqlda_t));
439         memset(inp_sqlda, 0, sizeof(sqlda_t));
440         inp_sqlda->sqld = 1;
441         inp_sqlda->sqlvar = malloc(sizeof(sqlvar_t));
442         memset(inp_sqlda->sqlvar, 0, sizeof(sqlvar_t));
443
444         inp_sqlda->sqlvar[0].sqltype = SQLINT;
445         inp_sqlda->sqlvar[0].sqldata = (char *)&id;
446
447         printf("EXECUTE RECORD 4\n");
448
449         id = 4;
450
451         outp_sqlda = NULL;
452
453         strcpy(msg, "prepare");
454         { ECPGprepare(__LINE__, "con2", 0, "st_id4", stmt2);
455 #line 218 "sqlda.pgc"
456
457 if (sqlca.sqlcode < 0) exit (1);}
458 #line 218 "sqlda.pgc"
459
460
461         strcpy(msg, "execute");
462         { ECPGdo(__LINE__, 1, 1, "con2", 0, ECPGst_execute, "st_id4", 
463         ECPGt_sqlda, &inp_sqlda, 0L, 0L, 0L, 
464         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, 
465         ECPGt_sqlda, &outp_sqlda, 0L, 0L, 0L, 
466         ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
467 #line 221 "sqlda.pgc"
468
469 if (sqlca.sqlcode < 0) exit (1);}
470 #line 221 "sqlda.pgc"
471
472
473         dump_sqlda(outp_sqlda);
474
475         strcpy(msg, "commit");
476         { ECPGtrans(__LINE__, "con2", "commit");
477 #line 226 "sqlda.pgc"
478
479 if (sqlca.sqlcode < 0) exit (1);}
480 #line 226 "sqlda.pgc"
481
482
483         strcpy(msg, "deallocate");
484         { ECPGdeallocate(__LINE__, 1, NULL, "st_id4");
485 #line 229 "sqlda.pgc"
486
487 if (sqlca.sqlcode < 0) exit (1);}
488 #line 229 "sqlda.pgc"
489
490
491         free(inp_sqlda->sqlvar);
492         free(inp_sqlda);
493         free(outp_sqlda);
494
495         strcpy(msg, "disconnect");
496         { ECPGdisconnect(__LINE__, "con2");
497 #line 236 "sqlda.pgc"
498
499 if (sqlca.sqlcode < 0) exit (1);}
500 #line 236 "sqlda.pgc"
501
502
503         /* End test */
504
505         strcpy(msg, "drop");
506         { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "drop table t1", ECPGt_EOIT, ECPGt_EORT);
507 #line 241 "sqlda.pgc"
508
509 if (sqlca.sqlcode < 0) exit (1);}
510 #line 241 "sqlda.pgc"
511
512
513         strcpy(msg, "commit");
514         { ECPGtrans(__LINE__, NULL, "commit");
515 #line 244 "sqlda.pgc"
516
517 if (sqlca.sqlcode < 0) exit (1);}
518 #line 244 "sqlda.pgc"
519
520
521         strcpy(msg, "disconnect");
522         { ECPGdisconnect(__LINE__, "CURRENT");
523 #line 247 "sqlda.pgc"
524
525 if (sqlca.sqlcode < 0) exit (1);}
526 #line 247 "sqlda.pgc"
527
528
529         return (0);
530 }