PostgreSQL Source Code  git master
sql-desc.c File Reference
#include <ecpglib.h>
#include <ecpgerrno.h>
#include <sqlca.h>
Include dependency graph for sql-desc.c:

Go to the source code of this file.

Macros

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

Functions

int main (void)
 

Macro Definition Documentation

◆ ECPGdebug

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

Definition at line 7 of file sql-desc.c.

Function Documentation

◆ main()

int main ( void  )

Definition at line 25 of file sql-desc.c.

26 {
27  /* exec sql begin declare section */
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 #line 8 "desc.pgc"
40  char * stmt1 = "INSERT INTO test1 VALUES ($1, $2)" ;
41 
42 #line 9 "desc.pgc"
43  char * stmt2 = "SELECT * from test1 where a = $1 and b = $2" ;
44 
45 #line 10 "desc.pgc"
46  char * stmt3 = "SELECT * from test1 where :var = a" ;
47 
48 #line 12 "desc.pgc"
49  int val1 = 1 ;
50 
51 #line 13 "desc.pgc"
52  char val2 [ 4 ] = "one" , val2output [] = "AAA" ;
53 
54 #line 14 "desc.pgc"
55  int val1output = 2 , val2i = 0 ;
56 
57 #line 15 "desc.pgc"
58  int val2null = - 1 ;
59 
60 #line 16 "desc.pgc"
61  int ind1 , ind2 ;
62 
63 #line 17 "desc.pgc"
64  char desc1 [ 8 ] = "outdesc" ;
65 /* exec sql end declare section */
66 #line 18 "desc.pgc"
67 
68 
69  ECPGdebug(1, stderr);
70 
71  ECPGallocate_desc(__LINE__, "indesc");
72 #line 22 "desc.pgc"
73 
74 if (sqlca.sqlcode < 0) sqlprint();
75 #line 22 "desc.pgc"
76 
77  ECPGallocate_desc(__LINE__, (desc1));
78 #line 23 "desc.pgc"
79 
80 if (sqlca.sqlcode < 0) sqlprint();
81 #line 23 "desc.pgc"
82 
83 
84  { ECPGset_desc(__LINE__, "indesc", 1,ECPGd_data,
85  ECPGt_int,&(val1),(long)1,(long)1,sizeof(int), ECPGd_EODT);
86 
87 #line 25 "desc.pgc"
88 
89 if (sqlca.sqlcode < 0) sqlprint();}
90 #line 25 "desc.pgc"
91 
92  { ECPGset_desc(__LINE__, "indesc", 2,ECPGd_data,
93  ECPGt_char,(val2),(long)4,(long)1,(4)*sizeof(char), ECPGd_indicator,
94  ECPGt_int,&(val2i),(long)1,(long)1,sizeof(int), ECPGd_EODT);
95 
96 #line 26 "desc.pgc"
97 
98 if (sqlca.sqlcode < 0) sqlprint();}
99 #line 26 "desc.pgc"
100 
101 
102  { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0);
103 #line 28 "desc.pgc"
104 
105 if (sqlca.sqlcode < 0) sqlprint();}
106 #line 28 "desc.pgc"
107 
108 
109  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table test1 ( a int , b text )", ECPGt_EOIT, ECPGt_EORT);
110 #line 30 "desc.pgc"
111 
112 if (sqlca.sqlcode < 0) sqlprint();}
113 #line 30 "desc.pgc"
114 
115  { ECPGprepare(__LINE__, NULL, 0, "foo1", stmt1);
116 #line 31 "desc.pgc"
117 
118 if (sqlca.sqlcode < 0) sqlprint();}
119 #line 31 "desc.pgc"
120 
121  { ECPGprepare(__LINE__, NULL, 0, "Foo-1", stmt1);
122 #line 32 "desc.pgc"
123 
124 if (sqlca.sqlcode < 0) sqlprint();}
125 #line 32 "desc.pgc"
126 
127  { ECPGprepare(__LINE__, NULL, 0, "foo2", stmt2);
128 #line 33 "desc.pgc"
129 
130 if (sqlca.sqlcode < 0) sqlprint();}
131 #line 33 "desc.pgc"
132 
133  { ECPGprepare(__LINE__, NULL, 0, "foo3", stmt3);
134 #line 34 "desc.pgc"
135 
136 if (sqlca.sqlcode < 0) sqlprint();}
137 #line 34 "desc.pgc"
138 
139 
140  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "foo1",
141  ECPGt_descriptor, "indesc", 1L, 1L, 1L,
142  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
143 #line 36 "desc.pgc"
144 
145 if (sqlca.sqlcode < 0) sqlprint();}
146 #line 36 "desc.pgc"
147 
148 
149  { ECPGset_desc(__LINE__, "indesc", 1,ECPGd_data,
150  ECPGt_const,"2",(long)1,(long)1,strlen("2"), ECPGd_EODT);
151 
152 #line 38 "desc.pgc"
153 
154 if (sqlca.sqlcode < 0) sqlprint();}
155 #line 38 "desc.pgc"
156 
157  { ECPGset_desc(__LINE__, "indesc", 2,ECPGd_data,
158  ECPGt_char,(val2),(long)4,(long)1,(4)*sizeof(char), ECPGd_indicator,
159  ECPGt_int,&(val2null),(long)1,(long)1,sizeof(int), ECPGd_EODT);
160 
161 #line 39 "desc.pgc"
162 
163 if (sqlca.sqlcode < 0) sqlprint();}
164 #line 39 "desc.pgc"
165 
166 
167  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "foo1",
168  ECPGt_descriptor, "indesc", 1L, 1L, 1L,
169  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
170 #line 41 "desc.pgc"
171 
172 if (sqlca.sqlcode < 0) sqlprint();}
173 #line 41 "desc.pgc"
174 
175 
176  { ECPGset_desc(__LINE__, "indesc", 1,ECPGd_data,
177  ECPGt_const,"3",(long)1,(long)1,strlen("3"), ECPGd_EODT);
178 
179 #line 43 "desc.pgc"
180 
181 if (sqlca.sqlcode < 0) sqlprint();}
182 #line 43 "desc.pgc"
183 
184  { ECPGset_desc(__LINE__, "indesc", 2,ECPGd_data,
185  ECPGt_const,"this is a long test",(long)19,(long)1,strlen("this is a long test"), ECPGd_indicator,
186  ECPGt_int,&(val1),(long)1,(long)1,sizeof(int), ECPGd_EODT);
187 
188 #line 44 "desc.pgc"
189 
190 if (sqlca.sqlcode < 0) sqlprint();}
191 #line 44 "desc.pgc"
192 
193 
194  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "Foo-1",
195  ECPGt_descriptor, "indesc", 1L, 1L, 1L,
196  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
197 #line 46 "desc.pgc"
198 
199 if (sqlca.sqlcode < 0) sqlprint();}
200 #line 46 "desc.pgc"
201 
202 
203  { ECPGdeallocate(__LINE__, 0, NULL, "Foo-1");
204 #line 48 "desc.pgc"
205 
206 if (sqlca.sqlcode < 0) sqlprint();}
207 #line 48 "desc.pgc"
208 
209 
210  { ECPGset_desc(__LINE__, "indesc", 1,ECPGd_data,
211  ECPGt_int,&(val1),(long)1,(long)1,sizeof(int), ECPGd_EODT);
212 
213 #line 50 "desc.pgc"
214 
215 if (sqlca.sqlcode < 0) sqlprint();}
216 #line 50 "desc.pgc"
217 
218  { ECPGset_desc(__LINE__, "indesc", 2,ECPGd_data,
219  ECPGt_char,(val2),(long)4,(long)1,(4)*sizeof(char), ECPGd_indicator,
220  ECPGt_int,&(val2i),(long)1,(long)1,sizeof(int), ECPGd_EODT);
221 
222 #line 51 "desc.pgc"
223 
224 if (sqlca.sqlcode < 0) sqlprint();}
225 #line 51 "desc.pgc"
226 
227 
228  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "foo2",
229  ECPGt_descriptor, "indesc", 1L, 1L, 1L,
230  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT,
231  ECPGt_descriptor, (desc1), 1L, 1L, 1L,
232  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
233 #line 53 "desc.pgc"
234 
235 if (sqlca.sqlcode < 0) sqlprint();}
236 #line 53 "desc.pgc"
237 
238 
239  { ECPGget_desc(__LINE__, (desc1), 1,ECPGd_data,
240  ECPGt_char,(val2output),(long)sizeof("AAA"),(long)1,(sizeof("AAA"))*sizeof(char), ECPGd_EODT);
241 
242 #line 55 "desc.pgc"
243 
244 if (sqlca.sqlcode < 0) sqlprint();}
245 #line 55 "desc.pgc"
246 
247  printf("output = %s\n", val2output);
248 
249  /* declare c1 cursor for $1 */
250 #line 58 "desc.pgc"
251 
252  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare c1 cursor for $1",
253  ECPGt_char_variable,(ECPGprepared_statement(NULL, "foo2", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
254  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
255  ECPGt_descriptor, "indesc", 1L, 1L, 1L,
256  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
257 #line 59 "desc.pgc"
258 
259 if (sqlca.sqlcode < 0) sqlprint();}
260 #line 59 "desc.pgc"
261 
262 
263  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch next from c1", ECPGt_EOIT,
264  ECPGt_int,&(val1output),(long)1,(long)1,sizeof(int),
265  ECPGt_int,&(ind1),(long)1,(long)1,sizeof(int),
266  ECPGt_char,(val2output),(long)sizeof("AAA"),(long)1,(sizeof("AAA"))*sizeof(char),
267  ECPGt_int,&(ind2),(long)1,(long)1,sizeof(int), ECPGt_EORT);
268 #line 61 "desc.pgc"
269 
270 if (sqlca.sqlcode < 0) sqlprint();}
271 #line 61 "desc.pgc"
272 
273  printf("val1=%d (ind1: %d) val2=%s (ind2: %d)\n",
274  val1output, ind1, val2output, ind2);
275 
276  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close c1", ECPGt_EOIT, ECPGt_EORT);
277 #line 65 "desc.pgc"
278 
279 if (sqlca.sqlcode < 0) sqlprint();}
280 #line 65 "desc.pgc"
281 
282 
283  { ECPGset_desc_header(__LINE__, "indesc", (int)(1));
284 
285 #line 67 "desc.pgc"
286 
287 if (sqlca.sqlcode < 0) sqlprint();}
288 #line 67 "desc.pgc"
289 
290  { ECPGset_desc(__LINE__, "indesc", 1,ECPGd_data,
291  ECPGt_const,"2",(long)1,(long)1,strlen("2"), ECPGd_EODT);
292 
293 #line 68 "desc.pgc"
294 
295 if (sqlca.sqlcode < 0) sqlprint();}
296 #line 68 "desc.pgc"
297 
298 
299  /* declare c2 cursor for $1 */
300 #line 70 "desc.pgc"
301 
302  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare c2 cursor for $1",
303  ECPGt_char_variable,(ECPGprepared_statement(NULL, "foo3", __LINE__)),(long)1,(long)1,(1)*sizeof(char),
304  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
305  ECPGt_descriptor, "indesc", 1L, 1L, 1L,
306  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
307 #line 71 "desc.pgc"
308 
309 if (sqlca.sqlcode < 0) sqlprint();}
310 #line 71 "desc.pgc"
311 
312 
313  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch next from c2", ECPGt_EOIT,
314  ECPGt_int,&(val1output),(long)1,(long)1,sizeof(int),
315  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
316  ECPGt_char,(val2output),(long)sizeof("AAA"),(long)1,(sizeof("AAA"))*sizeof(char),
317  ECPGt_int,&(val2i),(long)1,(long)1,sizeof(int), ECPGt_EORT);
318 #line 73 "desc.pgc"
319 
320 if (sqlca.sqlcode < 0) sqlprint();}
321 #line 73 "desc.pgc"
322 
323  printf("val1=%d val2=%s\n", val1output, val2i ? "null" : val2output);
324 
325  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close c2", ECPGt_EOIT, ECPGt_EORT);
326 #line 76 "desc.pgc"
327 
328 if (sqlca.sqlcode < 0) sqlprint();}
329 #line 76 "desc.pgc"
330 
331 
332  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select * from test1 where a = 3", ECPGt_EOIT,
333  ECPGt_int,&(val1output),(long)1,(long)1,sizeof(int),
334  ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
335  ECPGt_char,(val2output),(long)sizeof("AAA"),(long)1,(sizeof("AAA"))*sizeof(char),
336  ECPGt_int,&(val2i),(long)1,(long)1,sizeof(int), ECPGt_EORT);
337 #line 78 "desc.pgc"
338 
339 if (sqlca.sqlcode < 0) sqlprint();}
340 #line 78 "desc.pgc"
341 
342  printf("val1=%d val2=%c%c%c%c warn=%c truncate=%d\n", val1output, val2output[0], val2output[1], val2output[2], val2output[3], sqlca.sqlwarn[0], val2i);
343 
344  { ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table test1", ECPGt_EOIT, ECPGt_EORT);
345 #line 81 "desc.pgc"
346 
347 if (sqlca.sqlcode < 0) sqlprint();}
348 #line 81 "desc.pgc"
349 
350  { ECPGdeallocate_all(__LINE__, 0, NULL);
351 #line 82 "desc.pgc"
352 
353 if (sqlca.sqlcode < 0) sqlprint();}
354 #line 82 "desc.pgc"
355 
356  { ECPGdisconnect(__LINE__, "CURRENT");
357 #line 83 "desc.pgc"
358 
359 if (sqlca.sqlcode < 0) sqlprint();}
360 #line 83 "desc.pgc"
361 
362 
363  ECPGdeallocate_desc(__LINE__, "indesc");
364 #line 85 "desc.pgc"
365 
366 if (sqlca.sqlcode < 0) sqlprint();
367 #line 85 "desc.pgc"
368 
369  ECPGdeallocate_desc(__LINE__, (desc1));
370 #line 86 "desc.pgc"
371 
372 if (sqlca.sqlcode < 0) sqlprint();
373 #line 86 "desc.pgc"
374 
375 
376  return 0;
377 }
bool ECPGdisconnect(int lineno, const char *connection_name)
Definition: connect.c:673
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 ECPGset_desc_header(int lineno, const char *desc_name, int count)
Definition: descriptor.c:573
bool ECPGset_desc(int lineno, const char *desc_name, int index,...)
Definition: descriptor.c:605
@ ECPGst_normal
Definition: ecpgtype.h:97
@ ECPGst_execute
Definition: ecpgtype.h:98
@ ECPGt_EOIT
Definition: ecpgtype.h:62
@ ECPGt_char_variable
Definition: ecpgtype.h:60
@ ECPGt_int
Definition: ecpgtype.h:44
@ ECPGt_NO_INDICATOR
Definition: ecpgtype.h:64
@ ECPGt_EORT
Definition: ecpgtype.h:63
@ ECPGt_const
Definition: ecpgtype.h:61
@ ECPGt_descriptor
Definition: ecpgtype.h:59
@ ECPGt_char
Definition: ecpgtype.h:43
@ ECPGd_indicator
Definition: ecpgtype.h:77
@ ECPGd_EODT
Definition: ecpgtype.h:88
@ ECPGd_data
Definition: ecpgtype.h:74
void sqlprint(void)
Definition: error.c:334
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
bool ECPGdeallocate_all(int lineno, int compat, const char *connection_name)
Definition: prepare.c:350
bool ECPGprepare(int lineno, const char *connection_name, const bool questionmarks, const char *name, const char *variable)
Definition: prepare.c:217
char * ECPGprepared_statement(const char *connection_name, const char *name, int lineno)
Definition: prepare.c:368
bool ECPGdeallocate(int lineno, int c, const char *connection_name, const char *name)
Definition: prepare.c:315
#define printf(...)
Definition: port.h:244
#define ECPGdebug(X, Y)
Definition: sql-desc.c:7
#define sqlca
Definition: sqlca.h:59

References ECPGallocate_desc(), ECPGconnect(), ECPGd_data, ECPGd_EODT, ECPGd_indicator, ECPGdeallocate(), ECPGdeallocate_all(), ECPGdeallocate_desc(), ECPGdebug, ECPGdisconnect(), ECPGdo(), ECPGget_desc(), ECPGprepare(), ECPGprepared_statement(), ECPGset_desc(), ECPGset_desc_header(), ECPGst_execute, ECPGst_normal, ECPGt_char, ECPGt_char_variable, ECPGt_const, ECPGt_descriptor, ECPGt_EOIT, ECPGt_EORT, ECPGt_int, ECPGt_NO_INDICATOR, printf, sqlca, and sqlprint().