1 /* Processed by ecpg (regression mode) */
2 /* These include files are added by the preprocessor */
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))
17 #line 1 "regression.h"
32 #ifdef _ECPG_INFORMIX_H
34 #include "sqlda-compat.h"
35 typedef struct sqlvar_compat sqlvar_t;
36 typedef struct sqlda_compat sqlda_t;
40 #include "sqlda-native.h"
41 typedef struct sqlvar_struct sqlvar_t;
42 typedef struct sqlda_struct sqlda_t;
46 #endif /* ECPG_SQLDA_H */
52 #ifndef ECPG_SQLTYPES_H
53 #define ECPG_SQLTYPES_H
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
73 #define CINT8TYPE ECPGt_long_long
75 #define CLVCHARTYPE 119
76 #define CFIXBINTYPE 120
77 #define CVARBINTYPE 121
78 #define CBOOLTYPE ECPGt_bool
80 #define CLVCHARPTRTYPE 124
84 * Values used in sqlda->sqlvar[i]->sqltype
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
104 #define SQLINT8 ECPGt_long
105 #define SQLSERIAL8 ECPGt_long
108 #endif /* ndef ECPG_SQLTYPES_H */
113 /* exec sql whenever sqlerror stop ; */
117 /* These shouldn't be under DECLARE SECTION */
118 sqlda_t *inp_sqlda, *outp_sqlda;
121 dump_sqlda(sqlda_t *sqlda)
127 printf("dump_sqlda called with NULL sqlda\n");
131 for (i = 0; i < sqlda->sqld; i++)
133 if (sqlda->sqlvar[i].sqlind && *(sqlda->sqlvar[i].sqlind) == -1)
134 printf("name sqlda descriptor: '%s' value NULL'\n", sqlda->sqlvar[i].sqlname);
136 switch (sqlda->sqlvar[i].sqltype)
139 printf("name sqlda descriptor: '%s' value '%s'\n", sqlda->sqlvar[i].sqlname, sqlda->sqlvar[i].sqldata);
142 printf("name sqlda descriptor: '%s' value %d\n", sqlda->sqlvar[i].sqlname, *(int *)sqlda->sqlvar[i].sqldata);
145 printf("name sqlda descriptor: '%s' value %lf\n", sqlda->sqlvar[i].sqlname, *(double *)sqlda->sqlvar[i].sqldata);
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);
161 /* exec sql begin declare section */
168 char * stmt1 = "SELECT * FROM t1" ;
171 char * stmt2 = "SELECT * FROM t1 WHERE id = ?" ;
178 /* exec sql end declare section */
184 ECPGdebug(1, stderr);
186 strcpy(msg, "connect");
187 { ECPGconnect(__LINE__, 1, "regress1" , NULL, NULL , "regress1", 0);
190 if (sqlca.sqlcode < 0) exit (1);}
195 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "set datestyle to iso", ECPGt_EOIT, ECPGt_EORT);
198 if (sqlca.sqlcode < 0) exit (1);}
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);
206 if (sqlca.sqlcode < 0) exit (1);}
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);
214 if (sqlca.sqlcode < 0) exit (1);}
218 strcpy(msg, "commit");
219 { ECPGtrans(__LINE__, NULL, "commit");
222 if (sqlca.sqlcode < 0) exit (1);}
226 /* SQLDA test for getting all records from a table */
230 strcpy(msg, "prepare");
231 { ECPGprepare(__LINE__, NULL, 0, "st_id1", stmt1);
234 if (sqlca.sqlcode < 0) exit (1);}
238 strcpy(msg, "declare");
239 ECPG_informix_reset_sqlca(); /* declare mycur1 cursor for $1 */
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"
249 if (sqlca.sqlcode < 0) exit (1);}
250 #line 101 "sqlda.pgc"
253 /* exec sql whenever not found break ; */
254 #line 103 "sqlda.pgc"
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"
266 if (sqlca.sqlcode == ECPG_NOT_FOUND) break;
267 #line 109 "sqlda.pgc"
269 if (sqlca.sqlcode < 0) exit (1);}
270 #line 109 "sqlda.pgc"
273 printf("FETCH RECORD %d\n", ++rec);
274 dump_sqlda(outp_sqlda);
277 /* exec sql whenever not found continue ; */
278 #line 115 "sqlda.pgc"
281 strcpy(msg, "close");
282 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "close mycur1", ECPGt_EOIT, ECPGt_EORT);
283 #line 118 "sqlda.pgc"
285 if (sqlca.sqlcode < 0) exit (1);}
286 #line 118 "sqlda.pgc"
289 strcpy(msg, "deallocate");
290 { ECPGdeallocate(__LINE__, 1, NULL, "st_id1");
291 #line 121 "sqlda.pgc"
293 if (sqlca.sqlcode < 0) exit (1);}
294 #line 121 "sqlda.pgc"
299 /* SQLDA test for getting all records from a table
300 using the Informix-specific FETCH ... USING DESCRIPTOR
305 strcpy(msg, "prepare");
306 { ECPGprepare(__LINE__, NULL, 0, "st_id2", stmt1);
307 #line 132 "sqlda.pgc"
309 if (sqlca.sqlcode < 0) exit (1);}
310 #line 132 "sqlda.pgc"
313 strcpy(msg, "declare");
314 ECPG_informix_reset_sqlca(); /* declare mycur2 cursor for $1 */
315 #line 135 "sqlda.pgc"
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"
324 if (sqlca.sqlcode < 0) exit (1);}
325 #line 138 "sqlda.pgc"
328 /* exec sql whenever not found break ; */
329 #line 140 "sqlda.pgc"
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"
341 if (sqlca.sqlcode == ECPG_NOT_FOUND) break;
342 #line 146 "sqlda.pgc"
344 if (sqlca.sqlcode < 0) exit (1);}
345 #line 146 "sqlda.pgc"
348 printf("FETCH RECORD %d\n", ++rec);
349 dump_sqlda(outp_sqlda);
352 /* exec sql whenever not found continue ; */
353 #line 152 "sqlda.pgc"
356 strcpy(msg, "close");
357 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "close mycur2", ECPGt_EOIT, ECPGt_EORT);
358 #line 155 "sqlda.pgc"
360 if (sqlca.sqlcode < 0) exit (1);}
361 #line 155 "sqlda.pgc"
364 strcpy(msg, "deallocate");
365 { ECPGdeallocate(__LINE__, 1, NULL, "st_id2");
366 #line 158 "sqlda.pgc"
368 if (sqlca.sqlcode < 0) exit (1);}
369 #line 158 "sqlda.pgc"
374 /* SQLDA test for getting one record using an input descriptor */
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));
380 inp_sqlda->sqlvar = malloc(sizeof(sqlvar_t));
381 memset(inp_sqlda->sqlvar, 0, sizeof(sqlvar_t));
383 inp_sqlda->sqlvar[0].sqltype = SQLINT;
384 inp_sqlda->sqlvar[0].sqldata = (char *)&id;
386 printf("EXECUTE RECORD 4\n");
392 strcpy(msg, "prepare");
393 { ECPGprepare(__LINE__, NULL, 0, "st_id3", stmt2);
394 #line 181 "sqlda.pgc"
396 if (sqlca.sqlcode < 0) exit (1);}
397 #line 181 "sqlda.pgc"
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"
408 if (sqlca.sqlcode < 0) exit (1);}
409 #line 184 "sqlda.pgc"
412 dump_sqlda(outp_sqlda);
414 strcpy(msg, "deallocate");
415 { ECPGdeallocate(__LINE__, 1, NULL, "st_id3");
416 #line 189 "sqlda.pgc"
418 if (sqlca.sqlcode < 0) exit (1);}
419 #line 189 "sqlda.pgc"
422 free(inp_sqlda->sqlvar);
426 /* SQLDA test for getting one record using an input descriptor
427 * on a named connection
430 { ECPGconnect(__LINE__, 1, "regress1" , NULL, NULL , "con2", 0);
431 #line 199 "sqlda.pgc"
433 if (sqlca.sqlcode < 0) exit (1);}
434 #line 199 "sqlda.pgc"
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));
441 inp_sqlda->sqlvar = malloc(sizeof(sqlvar_t));
442 memset(inp_sqlda->sqlvar, 0, sizeof(sqlvar_t));
444 inp_sqlda->sqlvar[0].sqltype = SQLINT;
445 inp_sqlda->sqlvar[0].sqldata = (char *)&id;
447 printf("EXECUTE RECORD 4\n");
453 strcpy(msg, "prepare");
454 { ECPGprepare(__LINE__, "con2", 0, "st_id4", stmt2);
455 #line 218 "sqlda.pgc"
457 if (sqlca.sqlcode < 0) exit (1);}
458 #line 218 "sqlda.pgc"
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"
469 if (sqlca.sqlcode < 0) exit (1);}
470 #line 221 "sqlda.pgc"
473 dump_sqlda(outp_sqlda);
475 strcpy(msg, "commit");
476 { ECPGtrans(__LINE__, "con2", "commit");
477 #line 226 "sqlda.pgc"
479 if (sqlca.sqlcode < 0) exit (1);}
480 #line 226 "sqlda.pgc"
483 strcpy(msg, "deallocate");
484 { ECPGdeallocate(__LINE__, 1, NULL, "st_id4");
485 #line 229 "sqlda.pgc"
487 if (sqlca.sqlcode < 0) exit (1);}
488 #line 229 "sqlda.pgc"
491 free(inp_sqlda->sqlvar);
495 strcpy(msg, "disconnect");
496 { ECPGdisconnect(__LINE__, "con2");
497 #line 236 "sqlda.pgc"
499 if (sqlca.sqlcode < 0) exit (1);}
500 #line 236 "sqlda.pgc"
506 { ECPGdo(__LINE__, 1, 1, NULL, 0, ECPGst_normal, "drop table t1", ECPGt_EOIT, ECPGt_EORT);
507 #line 241 "sqlda.pgc"
509 if (sqlca.sqlcode < 0) exit (1);}
510 #line 241 "sqlda.pgc"
513 strcpy(msg, "commit");
514 { ECPGtrans(__LINE__, NULL, "commit");
515 #line 244 "sqlda.pgc"
517 if (sqlca.sqlcode < 0) exit (1);}
518 #line 244 "sqlda.pgc"
521 strcpy(msg, "disconnect");
522 { ECPGdisconnect(__LINE__, "CURRENT");
523 #line 247 "sqlda.pgc"
525 if (sqlca.sqlcode < 0) exit (1);}
526 #line 247 "sqlda.pgc"