PostgreSQL Source Code  git master
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 1 of file compat_informix-describe.c.

◆ sqlvar_t

typedef struct sqlvar_struct sqlvar_t

Definition at line 1 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 
91 if (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 
99 if (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 
107 if (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 
115 if (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 
121 if (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 
127 if (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 
133 if (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 
141 if (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 
155 if (sqlca.sqlcode < 0) exit (1);
156 #line 51 "describe.pgc"
157 
158  ECPGallocate_desc(__LINE__, "desc2");
159 #line 52 "describe.pgc"
160 
161 if (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 
169 if (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 
226 if (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 
233 if (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 
268 if (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 
276 if (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,
282  sqlda1->sqlvar[i-1].sqlname,
283  sqlda2->sqlvar[i-1].sqlname,
284  sqlda3->sqlvar[i-1].sqlname);
285  }
286 
287  strcpy(msg, "deallocate");
288  ECPGdeallocate_desc(__LINE__, "desc1");
289 #line 126 "describe.pgc"
290 
291 if (sqlca.sqlcode < 0) exit (1);
292 #line 126 "describe.pgc"
293 
294  ECPGdeallocate_desc(__LINE__, "desc2");
295 #line 127 "describe.pgc"
296 
297 if (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 
307 if (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 
317 if (sqlca.sqlcode < 0) exit (1);
318 #line 137 "describe.pgc"
319 
320  ECPGallocate_desc(__LINE__, "desc2");
321 #line 138 "describe.pgc"
322 
323 if (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 
331 if (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 
373 if (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 
380 if (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 
397 if (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 
405 if (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,
411  sqlda1->sqlvar[i-1].sqlname,
412  sqlda2->sqlvar[i-1].sqlname,
413  sqlda3->sqlvar[i-1].sqlname);
414  }
415 
416  strcpy(msg, "deallocate");
417  ECPGdeallocate_desc(__LINE__, "desc1");
418 #line 179 "describe.pgc"
419 
420 if (sqlca.sqlcode < 0) exit (1);
421 #line 179 "describe.pgc"
422 
423  ECPGdeallocate_desc(__LINE__, "desc2");
424 #line 180 "describe.pgc"
425 
426 if (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 
436 if (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 
446 if (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 
454 if (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 
462 if (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:2277
#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:73
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().