PostgreSQL Source Code git master
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
compat_informix-describe.c File Reference
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
#include <ecpg_informix.h>
#include <stdlib.h>
#include <string.h>
#include "sqlda-native.h"
Include dependency graph for compat_informix-describe.c:

Go to the source code of this file.

Macros

#define ECPGdebug(X, Y)   ECPGdebug((X)+100,(Y))
 
#define ECPG_SQLDA_H
 

Typedefs

typedef struct sqlvar_struct sqlvar_t
 
typedef struct sqlda_struct sqlda_t
 

Functions

int main (void)
 

Variables

sqlda_tsqlda1
 
sqlda_tsqlda2
 
sqlda_tsqlda3
 

Macro Definition Documentation

◆ ECPG_SQLDA_H

#define ECPG_SQLDA_H

Definition at line 28 of file compat_informix-describe.c.

◆ ECPGdebug

#define ECPGdebug (   X,
 
)    ECPGdebug((X)+100,(Y))

Definition at line 9 of file compat_informix-describe.c.

Typedef Documentation

◆ sqlda_t

typedef struct sqlda_struct sqlda_t

Definition at line 40 of file compat_informix-describe.c.

◆ sqlvar_t

typedef struct sqlvar_struct sqlvar_t

Definition at line 39 of file compat_informix-describe.c.

Function Documentation

◆ main()

int main ( void  )

Definition at line 56 of file compat_informix-describe.c.

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

References ECPGallocate_desc(), ECPGconnect(), ECPGd_EODT, ECPGd_name, ECPGdeallocate(), ECPGdeallocate_desc(), ECPGdebug, ECPGdescribe(), ECPGdisconnect(), ECPGdo(), ECPGget_desc(), ECPGget_desc_header(), ECPGprepare(), ECPGst_normal, ECPGt_char, ECPGt_descriptor, ECPGt_EOIT, ECPGt_EORT, ECPGt_NO_INDICATOR, ECPGt_sqlda, ECPGtrans(), exit(), free, i, printf, sqlca, sqlda_struct::sqld, sqlda1, sqlda2, sqlda3, sqlvar_struct::sqlname, and sqlda_struct::sqlvar.

Variable Documentation

◆ sqlda1

sqlda_t* sqlda1

Definition at line 53 of file compat_informix-describe.c.

Referenced by main().

◆ sqlda2

sqlda_t * sqlda2

Definition at line 53 of file compat_informix-describe.c.

Referenced by main().

◆ sqlda3

sqlda_t * sqlda3

Definition at line 53 of file compat_informix-describe.c.

Referenced by main().