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 /* End of automatic include section */
7 #define ECPGdebug(X,Y) ECPGdebug((X)+100,(Y))
8 
9 #line 1 "bytea.pgc"
10 #include <stdlib.h>
11 #include <string.h>
12 #include <stdio.h>
13 #include <time.h>
14 
15 
16 #line 1 "regression.h"
17 
18 
19 
20 
21 
22 
23 #line 6 "bytea.pgc"
24 
25 /* exec sql whenever sqlerror  sqlprint ; */
26 #line 7 "bytea.pgc"
27 
28 
29 static void
dump_binary(char * buf,int len,int ind)30 dump_binary(char *buf, int len, int ind)
31 {
32 	int i;
33 
34 	printf("len=%d, ind=%d, data=0x", len, ind);
35 	for (i = 0; i < len; ++i)
36 		printf("%02x", 0xff & buf[i]);
37 	printf("\n");
38 }
39 
40 #define DATA_SIZE 0x200
41 #define LACK_SIZE 13
42 #
43 int
main(void)44 main(void)
45 {
46 /* exec sql begin declare section */
47 
48 
49 
50 
51 
52 
53 #line 27 "bytea.pgc"
54   struct bytea_1  { int len; char arr[ 512 ]; }  send_buf [ 2 ] ;
55 
56 #line 28 "bytea.pgc"
57   struct bytea_2  { int len; char arr[ DATA_SIZE ]; }  recv_buf [ 2 ] ;
58 
59 #line 29 "bytea.pgc"
60   struct bytea_3  { int len; char arr[ DATA_SIZE ]; } * recv_vlen_buf ;
61 
62 #line 30 "bytea.pgc"
63   struct bytea_4  { int len; char arr[ DATA_SIZE - LACK_SIZE ]; }  recv_short_buf ;
64 
65 #line 31 "bytea.pgc"
66  int ind [ 2 ] ;
67 /* exec sql end declare section */
68 #line 32 "bytea.pgc"
69 
70 	int i, j, c;
71 
72 #define init() { \
73 	for (i = 0; i < 2; ++i) \
74 	{ \
75 		memset(recv_buf[i].arr, 0x0, sizeof(recv_buf[i].arr)); \
76 		recv_buf[i].len = 0; \
77 		ind[i] = 0; \
78 	} \
79 	recv_vlen_buf = NULL, \
80 	memset(recv_short_buf.arr, 0x0, sizeof(recv_short_buf.arr)); \
81 } \
82 while (0)
83 
84 	ECPGdebug(1, stderr);
85 
86 	for (i = 0; i < 2; ++i)
87 	{
88 		for (j = 0, c = 0xff; (c == -1 ? c = 0xff : 1), j < DATA_SIZE; ++j, --c)
89 			send_buf[i].arr[j] = c;
90 
91 		send_buf[i].len = DATA_SIZE;
92 	}
93 
94     { ECPGconnect(__LINE__, 0, "ecpg1_regression" , NULL, NULL , NULL, 0);
95 #line 57 "bytea.pgc"
96 
97 if (sqlca.sqlcode < 0) sqlprint();}
98 #line 57 "bytea.pgc"
99 
100 
101 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "create table if not exists test ( data1 bytea , data2 bytea )", ECPGt_EOIT, ECPGt_EORT);
102 #line 59 "bytea.pgc"
103 
104 if (sqlca.sqlcode < 0) sqlprint();}
105 #line 59 "bytea.pgc"
106 
107 
108 	{ ECPGprepare(__LINE__, NULL, 0, "ins_stmt", "insert into test values(?,?)");
109 #line 61 "bytea.pgc"
110 
111 if (sqlca.sqlcode < 0) sqlprint();}
112 #line 61 "bytea.pgc"
113 
114 	{ ECPGprepare(__LINE__, NULL, 0, "sel_stmt", "select data1,data2 from test");
115 #line 62 "bytea.pgc"
116 
117 if (sqlca.sqlcode < 0) sqlprint();}
118 #line 62 "bytea.pgc"
119 
120 	ECPGallocate_desc(__LINE__, "idesc");
121 #line 63 "bytea.pgc"
122 
123 if (sqlca.sqlcode < 0) sqlprint();
124 #line 63 "bytea.pgc"
125 
126 	ECPGallocate_desc(__LINE__, "odesc");
127 #line 64 "bytea.pgc"
128 
129 if (sqlca.sqlcode < 0) sqlprint();
130 #line 64 "bytea.pgc"
131 
132 
133 	/* Test for static sql statement with normal host variable, indicator */
134 	init();
135 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate test", ECPGt_EOIT, ECPGt_EORT);
136 #line 68 "bytea.pgc"
137 
138 if (sqlca.sqlcode < 0) sqlprint();}
139 #line 68 "bytea.pgc"
140 
141 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into test values ( $1  , $2  )",
142 	ECPGt_bytea,&(send_buf[0]),(long)512,(long)1,sizeof(struct bytea_1),
143 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
144 	ECPGt_bytea,&(send_buf[1]),(long)512,(long)1,sizeof(struct bytea_1),
145 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
146 #line 69 "bytea.pgc"
147 
148 if (sqlca.sqlcode < 0) sqlprint();}
149 #line 69 "bytea.pgc"
150 
151 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select data1 , data2 from test", ECPGt_EOIT,
152 	ECPGt_bytea,&(recv_buf[0]),(long)DATA_SIZE,(long)1,sizeof(struct bytea_2),
153 	ECPGt_int,&(ind[0]),(long)1,(long)1,sizeof(int),
154 	ECPGt_bytea,&(recv_short_buf),(long)DATA_SIZE - LACK_SIZE,(long)1,sizeof(struct bytea_4),
155 	ECPGt_int,&(ind[1]),(long)1,(long)1,sizeof(int), ECPGt_EORT);
156 #line 70 "bytea.pgc"
157 
158 if (sqlca.sqlcode < 0) sqlprint();}
159 #line 70 "bytea.pgc"
160 
161 	dump_binary(recv_buf[0].arr, recv_buf[0].len, ind[0]);
162 	dump_binary(recv_short_buf.arr, recv_short_buf.len, ind[1]);
163 
164 	/* Test for cursor */
165 	init();
166 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate test", ECPGt_EOIT, ECPGt_EORT);
167 #line 76 "bytea.pgc"
168 
169 if (sqlca.sqlcode < 0) sqlprint();}
170 #line 76 "bytea.pgc"
171 
172 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into test values ( $1  , $2  )",
173 	ECPGt_bytea,&(send_buf[0]),(long)512,(long)1,sizeof(struct bytea_1),
174 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
175 	ECPGt_bytea,&(send_buf[1]),(long)512,(long)1,sizeof(struct bytea_1),
176 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
177 #line 77 "bytea.pgc"
178 
179 if (sqlca.sqlcode < 0) sqlprint();}
180 #line 77 "bytea.pgc"
181 
182 	ECPGset_var( 0, &( send_buf[0] ), __LINE__);\
183  /* declare cursor1 cursor for select data1 from test where data1 = $1  */
184 #line 78 "bytea.pgc"
185 
186 if (sqlca.sqlcode < 0) sqlprint();
187 #line 78 "bytea.pgc"
188 
189 #line 78 "bytea.pgc"
190 
191 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "declare cursor1 cursor for select data1 from test where data1 = $1 ",
192 	ECPGt_bytea,&(send_buf[0]),(long)512,(long)1,sizeof(struct bytea_1),
193 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
194 #line 79 "bytea.pgc"
195 
196 if (sqlca.sqlcode < 0) sqlprint();}
197 #line 79 "bytea.pgc"
198 
199 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "fetch from cursor1", ECPGt_EOIT,
200 	ECPGt_bytea,&(recv_buf[0]),(long)DATA_SIZE,(long)1,sizeof(struct bytea_2),
201 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
202 #line 80 "bytea.pgc"
203 
204 if (sqlca.sqlcode < 0) sqlprint();}
205 #line 80 "bytea.pgc"
206 
207 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "close cursor1", ECPGt_EOIT, ECPGt_EORT);
208 #line 81 "bytea.pgc"
209 
210 if (sqlca.sqlcode < 0) sqlprint();}
211 #line 81 "bytea.pgc"
212 
213 	{ ECPGdeallocate(__LINE__, 0, NULL, "cursor1");
214 #line 82 "bytea.pgc"
215 
216 if (sqlca.sqlcode < 0) sqlprint();}
217 #line 82 "bytea.pgc"
218 
219 	dump_binary(recv_buf[0].arr, recv_buf[0].len, 0);
220 
221 	/* Test for variable length array */
222 	init();
223 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate test", ECPGt_EOIT, ECPGt_EORT);
224 #line 87 "bytea.pgc"
225 
226 if (sqlca.sqlcode < 0) sqlprint();}
227 #line 87 "bytea.pgc"
228 
229 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into test values ( $1  , $2  )",
230 	ECPGt_bytea,&(send_buf[0]),(long)512,(long)1,sizeof(struct bytea_1),
231 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
232 	ECPGt_bytea,&(send_buf[1]),(long)512,(long)1,sizeof(struct bytea_1),
233 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
234 #line 88 "bytea.pgc"
235 
236 if (sqlca.sqlcode < 0) sqlprint();}
237 #line 88 "bytea.pgc"
238 
239 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "insert into test values ( $1  , $2  )",
240 	ECPGt_bytea,&(send_buf[0]),(long)512,(long)1,sizeof(struct bytea_1),
241 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
242 	ECPGt_bytea,&(send_buf[1]),(long)512,(long)1,sizeof(struct bytea_1),
243 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
244 #line 89 "bytea.pgc"
245 
246 if (sqlca.sqlcode < 0) sqlprint();}
247 #line 89 "bytea.pgc"
248 
249 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "select data1 from test", ECPGt_EOIT,
250 	ECPGt_bytea,&(recv_vlen_buf),(long)DATA_SIZE,(long)0,sizeof(struct bytea_3),
251 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
252 #line 90 "bytea.pgc"
253 
254 if (sqlca.sqlcode < 0) sqlprint();}
255 #line 90 "bytea.pgc"
256 
257 	dump_binary(recv_vlen_buf[0].arr, recv_vlen_buf[0].len, 0);
258 	dump_binary(recv_vlen_buf[1].arr, recv_vlen_buf[1].len, 0);
259 	free(recv_vlen_buf);
260 
261 	/* Test for dynamic sql statement with normal host variable, indicator */
262 	init();
263 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate test", ECPGt_EOIT, ECPGt_EORT);
264 #line 97 "bytea.pgc"
265 
266 if (sqlca.sqlcode < 0) sqlprint();}
267 #line 97 "bytea.pgc"
268 
269 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "ins_stmt",
270 	ECPGt_bytea,&(send_buf[0]),(long)512,(long)1,sizeof(struct bytea_1),
271 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L,
272 	ECPGt_bytea,&(send_buf[1]),(long)512,(long)1,sizeof(struct bytea_1),
273 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
274 #line 98 "bytea.pgc"
275 
276 if (sqlca.sqlcode < 0) sqlprint();}
277 #line 98 "bytea.pgc"
278 
279 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "sel_stmt", ECPGt_EOIT,
280 	ECPGt_bytea,&(recv_buf[0]),(long)DATA_SIZE,(long)1,sizeof(struct bytea_2),
281 	ECPGt_int,&(ind[0]),(long)1,(long)1,sizeof(int),
282 	ECPGt_bytea,&(recv_short_buf),(long)DATA_SIZE - LACK_SIZE,(long)1,sizeof(struct bytea_4),
283 	ECPGt_int,&(ind[1]),(long)1,(long)1,sizeof(int), ECPGt_EORT);
284 #line 99 "bytea.pgc"
285 
286 if (sqlca.sqlcode < 0) sqlprint();}
287 #line 99 "bytea.pgc"
288 
289 	dump_binary(recv_buf[0].arr, recv_buf[0].len, ind[0]);
290 	dump_binary(recv_short_buf.arr, recv_short_buf.len, ind[1]);
291 
292 	/* Test for dynamic sql statement with sql descriptor */
293 	init();
294 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "truncate test", ECPGt_EOIT, ECPGt_EORT);
295 #line 105 "bytea.pgc"
296 
297 if (sqlca.sqlcode < 0) sqlprint();}
298 #line 105 "bytea.pgc"
299 
300 	{ ECPGset_desc(__LINE__, "idesc", 1,ECPGd_data,
301 	ECPGt_bytea,&(send_buf[0]),(long)512,(long)1,sizeof(struct bytea_1), ECPGd_EODT);
302 
303 #line 106 "bytea.pgc"
304 
305 if (sqlca.sqlcode < 0) sqlprint();}
306 #line 106 "bytea.pgc"
307 
308 	{ ECPGset_desc(__LINE__, "idesc", 2,ECPGd_data,
309 	ECPGt_bytea,&(send_buf[1]),(long)512,(long)1,sizeof(struct bytea_1), ECPGd_EODT);
310 
311 #line 107 "bytea.pgc"
312 
313 if (sqlca.sqlcode < 0) sqlprint();}
314 #line 107 "bytea.pgc"
315 
316 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "ins_stmt",
317 	ECPGt_descriptor, "idesc", 1L, 1L, 1L,
318 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EOIT, ECPGt_EORT);
319 #line 108 "bytea.pgc"
320 
321 if (sqlca.sqlcode < 0) sqlprint();}
322 #line 108 "bytea.pgc"
323 
324 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_execute, "sel_stmt", ECPGt_EOIT,
325 	ECPGt_descriptor, "odesc", 1L, 1L, 1L,
326 	ECPGt_NO_INDICATOR, NULL , 0L, 0L, 0L, ECPGt_EORT);
327 #line 109 "bytea.pgc"
328 
329 if (sqlca.sqlcode < 0) sqlprint();}
330 #line 109 "bytea.pgc"
331 
332 	{ ECPGget_desc(__LINE__, "odesc", 1,ECPGd_indicator,
333 	ECPGt_int,&(ind[0]),(long)1,(long)1,sizeof(int), ECPGd_data,
334 	ECPGt_bytea,&(recv_buf[0]),(long)DATA_SIZE,(long)1,sizeof(struct bytea_2), ECPGd_EODT);
335 
336 #line 110 "bytea.pgc"
337 
338 if (sqlca.sqlcode < 0) sqlprint();}
339 #line 110 "bytea.pgc"
340 
341 	{ ECPGget_desc(__LINE__, "odesc", 2,ECPGd_indicator,
342 	ECPGt_int,&(ind[1]),(long)1,(long)1,sizeof(int), ECPGd_data,
343 	ECPGt_bytea,&(recv_short_buf),(long)DATA_SIZE - LACK_SIZE,(long)1,sizeof(struct bytea_4), ECPGd_EODT);
344 
345 #line 111 "bytea.pgc"
346 
347 if (sqlca.sqlcode < 0) sqlprint();}
348 #line 111 "bytea.pgc"
349 
350 	dump_binary(recv_buf[0].arr, recv_buf[0].len, ind[0]);
351 	dump_binary(recv_short_buf.arr, recv_short_buf.len, ind[1]);
352 
353 	{ ECPGdo(__LINE__, 0, 1, NULL, 0, ECPGst_normal, "drop table test", ECPGt_EOIT, ECPGt_EORT);
354 #line 115 "bytea.pgc"
355 
356 if (sqlca.sqlcode < 0) sqlprint();}
357 #line 115 "bytea.pgc"
358 
359 	{ ECPGtrans(__LINE__, NULL, "commit");
360 #line 116 "bytea.pgc"
361 
362 if (sqlca.sqlcode < 0) sqlprint();}
363 #line 116 "bytea.pgc"
364 
365 	{ ECPGdisconnect(__LINE__, "CURRENT");
366 #line 117 "bytea.pgc"
367 
368 if (sqlca.sqlcode < 0) sqlprint();}
369 #line 117 "bytea.pgc"
370 
371 
372 	return 0;
373 }
374