1- /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/data.c,v 1.20 2001/12/05 15:32:06 meskes Exp $ */
1+ /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/lib/Attic/data.c,v 1.21 2001/12/23 12:17:41 meskes Exp $ */
22
33#include "postgres_fe.h"
44
1515ECPGget_data (const PGresult * results ,int act_tuple ,int act_field ,int lineno ,
1616enum ECPGttype type ,enum ECPGttype ind_type ,
1717void * var ,void * ind ,long varcharsize ,long offset ,
18- bool isarray )
18+ long ind_offset , bool isarray )
1919{
2020char * pval = (char * )PQgetvalue (results ,act_tuple ,act_field );
2121
22- ECPGlog ("ECPGget_data line %d: RESULT: %s\n" ,lineno ,pval ?pval :"" );
22+ ECPGlog ("ECPGget_data line %d: RESULT: %s offset: %ld \n" ,lineno ,pval ?pval :"" , offset );
2323
2424/* pval is a pointer to the value */
2525/* let's check is it really is an array if it should be one */
@@ -53,23 +53,28 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
5353{
5454case ECPGt_short :
5555case ECPGt_unsigned_short :
56- ((short * )ind )[act_tuple ]= - PQgetisnull (results ,act_tuple ,act_field );
56+ /*((short *) ind)[act_tuple] = -PQgetisnull(results, act_tuple, act_field);*/
57+ * ((short * ) (ind + ind_offset * act_tuple ))= - PQgetisnull (results ,act_tuple ,act_field );
5758break ;
5859case ECPGt_int :
5960case ECPGt_unsigned_int :
60- ((int * )ind )[act_tuple ]= - PQgetisnull (results ,act_tuple ,act_field );
61+ /*((int *) ind)[act_tuple] = -PQgetisnull(results, act_tuple, act_field);*/
62+ * ((int * ) (ind + ind_offset * act_tuple ))= - PQgetisnull (results ,act_tuple ,act_field );
6163break ;
6264case ECPGt_long :
6365case ECPGt_unsigned_long :
64- ((long * )ind )[act_tuple ]= - PQgetisnull (results ,act_tuple ,act_field );
66+ /*((long *) ind)[act_tuple] = -PQgetisnull(results, act_tuple, act_field);*/
67+ * ((long * ) (ind + ind_offset * act_tuple ))= - PQgetisnull (results ,act_tuple ,act_field );
6568break ;
6669#ifdef HAVE_LONG_LONG_INT_64
6770case ECPGt_long_long :
68- ((long longint * )ind )[act_tuple ]= - PQgetisnull (results ,act_tuple ,act_field );
69- break ;
7071case ECPGt_unsigned_long_long :
71- ((unsigned long longint * )ind )[act_tuple ]= - PQgetisnull (results ,act_tuple ,act_field );
72+ /*((long long int *) ind)[act_tuple] = -PQgetisnull(results, act_tuple, act_field);*/
73+ * ((long longint * ) (ind + ind_offset * act_tuple ))= - PQgetisnull (results ,act_tuple ,act_field );
7274break ;
75+ /*case ECPGt_unsigned_long_long:
76+ ((unsigned long long int *) ind)[act_tuple] = -PQgetisnull(results, act_tuple, act_field);
77+ break;*/
7378#endif /* HAVE_LONG_LONG_INT_64 */
7479case ECPGt_NO_INDICATOR :
7580if (PQgetisnull (results ,act_tuple ,act_field ))
@@ -112,13 +117,16 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
112117switch (type )
113118{
114119case ECPGt_short :
115- ((short * )var )[act_tuple ]= (short )res ;
120+ /*((short *) var)[act_tuple] = (short) res;*/
121+ * ((short * ) (var + offset * act_tuple ))= (short )res ;
116122break ;
117123case ECPGt_int :
118- ((int * )var )[act_tuple ]= (int )res ;
124+ /*((int *) var)[act_tuple] = (int) res;*/
125+ * ((int * ) (var + offset * act_tuple ))= (int )res ;
119126break ;
120127case ECPGt_long :
121- ((long * )var )[act_tuple ]= res ;
128+ /*((long *) var)[act_tuple] = res;*/
129+ * ((long * ) (var + offset * act_tuple ))= (long )res ;
122130break ;
123131default :
124132/* Cannot happen */
@@ -145,13 +153,16 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
145153switch (type )
146154{
147155case ECPGt_unsigned_short :
148- ((unsigned short * )var )[act_tuple ]= (unsigned short )ures ;
156+ /*((unsigned short *) var)[act_tuple] = (unsigned short) ures;*/
157+ * ((unsigned short * ) (var + offset * act_tuple ))= (unsigned short )res ;
149158break ;
150159case ECPGt_unsigned_int :
151- ((unsignedint * )var )[act_tuple ]= (unsignedint )ures ;
160+ /*((unsigned int *) var)[act_tuple] = (unsigned int) ures;*/
161+ * ((unsignedint * ) (var + offset * act_tuple ))= (unsignedint )res ;
152162break ;
153163case ECPGt_unsigned_long :
154- ((unsigned long * )var )[act_tuple ]= ures ;
164+ /*((unsigned long *) var)[act_tuple] = ures;*/
165+ * ((unsigned long * ) (var + offset * act_tuple ))= (unsigned long )res ;
155166break ;
156167default :
157168/* Cannot happen */
@@ -164,7 +175,8 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
164175case ECPGt_long_long :
165176if (pval )
166177{
167- ((long longint * )var )[act_tuple ]= strtoll (pval ,& scan_length ,10 );
178+ /*((long long int *) var)[act_tuple] = strtoll(pval, &scan_length, 10);*/
179+ * ((long longint * ) (var + offset * act_tuple ))= strtoll (pval ,& scan_length ,10 );
168180if ((isarray && * scan_length != ',' && * scan_length != '}' )
169181|| (!isarray && * scan_length != '\0' ))/* Garbage left */
170182{
@@ -173,15 +185,17 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
173185}
174186}
175187else
176- ((long longint * )var )[act_tuple ]= (long long )0 ;
188+ /*((long long int *) var)[act_tuple] = (long long) 0;*/
189+ * ((long longint * ) (var + offset * act_tuple ))= (long long )0 ;
177190
178191break ;
179192#endif /* HAVE_STRTOLL */
180193#ifdef HAVE_STRTOULL
181194case ECPGt_unsigned_long_long :
182195if (pval )
183196{
184- ((unsigned long longint * )var )[act_tuple ]= strtoull (pval ,& scan_length ,10 );
197+ /*((unsigned long long int *) var)[act_tuple] = strtoull(pval, &scan_length, 10);*/
198+ * ((unsigned long longint * ) (var + offset * act_tuple ))= strtoull (pval ,& scan_length ,10 );
185199if ((isarray && * scan_length != ',' && * scan_length != '}' )
186200|| (!isarray && * scan_length != '\0' ))/* Garbage left */
187201{
@@ -190,7 +204,8 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
190204}
191205}
192206else
193- ((unsigned long longint * )var )[act_tuple ]= (long long )0 ;
207+ /*((unsigned long long int *) var)[act_tuple] = (long long) 0;*/
208+ * ((unsigned long longint * ) (var + offset * act_tuple ))= (long long )0 ;
194209
195210break ;
196211#endif /* HAVE_STRTOULL */
@@ -221,10 +236,12 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
221236switch (type )
222237{
223238case ECPGt_float :
224- ((float * )var )[act_tuple ]= dres ;
239+ /*((float *) var)[act_tuple] = dres;*/
240+ * ((float * ) (var + offset * act_tuple ))= dres ;
225241break ;
226242case ECPGt_double :
227- ((double * )var )[act_tuple ]= dres ;
243+ /*((double *) var)[act_tuple] = dres;*/
244+ * ((double * ) (var + offset * act_tuple ))= dres ;
228245break ;
229246default :
230247/* Cannot happen */
@@ -238,19 +255,23 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
238255if (pval [0 ]== 'f' && pval [1 ]== '\0' )
239256{
240257if (offset == sizeof (char ))
241- ((char * )var )[act_tuple ]= false;
258+ /*((char *) var)[act_tuple] = false;*/
259+ * ((char * ) (var + offset * act_tuple ))= false;
242260else if (offset == sizeof (int ))
243- ((int * )var )[act_tuple ]= false;
261+ /*((int *) var)[act_tuple] = false;*/
262+ * ((int * ) (var + offset * act_tuple ))= false;
244263else
245264ECPGraise (lineno ,ECPG_CONVERT_BOOL ,"different size" );
246265break ;
247266}
248267else if (pval [0 ]== 't' && pval [1 ]== '\0' )
249268{
250269if (offset == sizeof (char ))
251- ((char * )var )[act_tuple ]= true;
270+ /*((char *) var)[act_tuple] = true;*/
271+ * ((char * ) (var + offset * act_tuple ))= true;
252272else if (offset == sizeof (int ))
253- ((int * )var )[act_tuple ]= true;
273+ /*((int *) var)[act_tuple] = true;*/
274+ * ((int * ) (var + offset * act_tuple ))= true;
254275else
255276ECPGraise (lineno ,ECPG_CONVERT_BOOL ,"different size" );
256277break ;
@@ -277,16 +298,25 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
277298{
278299case ECPGt_short :
279300case ECPGt_unsigned_short :
280- ((short * )ind )[act_tuple ]= strlen (pval );
301+ /*((short *) ind)[act_tuple] = strlen(pval);*/
302+ * ((short * ) (ind + ind_offset * act_tuple ))= strlen (pval );
281303break ;
282304case ECPGt_int :
283305case ECPGt_unsigned_int :
284- ((int * )ind )[act_tuple ]= strlen (pval );
306+ /*((int *) ind)[act_tuple] = strlen(pval);*/
307+ * ((int * ) (ind + ind_offset * act_tuple ))= strlen (pval );
285308break ;
286309case ECPGt_long :
287310case ECPGt_unsigned_long :
288- ((long * )ind )[act_tuple ]= strlen (pval );
311+ /*((long *) ind)[act_tuple] = strlen(pval);*/
312+ * ((long * ) (ind + ind_offset * act_tuple ))= strlen (pval );
313+ break ;
314+ #ifdef HAVE_LONG_LONG_INT_64
315+ case ECPGt_long_long :
316+ case ECPGt_unsigned_long_long :
317+ * ((long longint * ) (ind + ind_offset * act_tuple ))= strlen (pval );
289318break ;
319+ #endif /* HAVE_LONG_LONG_INT_64 */
290320default :
291321break ;
292322}
@@ -313,16 +343,25 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
313343{
314344case ECPGt_short :
315345case ECPGt_unsigned_short :
316- ((short * )ind )[act_tuple ]= variable -> len ;
346+ /*((short *) ind)[act_tuple] = variable->len;*/
347+ * ((short * ) (ind + offset * act_tuple ))= variable -> len ;
317348break ;
318349case ECPGt_int :
319350case ECPGt_unsigned_int :
320- ((int * )ind )[act_tuple ]= variable -> len ;
351+ /*((int *) ind)[act_tuple] = variable->len;*/
352+ * ((int * ) (ind + offset * act_tuple ))= variable -> len ;
321353break ;
322354case ECPGt_long :
323355case ECPGt_unsigned_long :
324- ((long * )ind )[act_tuple ]= variable -> len ;
356+ /*((long *) ind)[act_tuple] = variable->len;*/
357+ * ((long * ) (ind + offset * act_tuple ))= variable -> len ;
358+ break ;
359+ #ifdef HAVE_LONG_LONG_INT_64
360+ case ECPGt_long_long :
361+ case ECPGt_unsigned_long_long :
362+ * ((long longint * ) (ind + ind_offset * act_tuple ))= variable -> len ;
325363break ;
364+ #endif /* HAVE_LONG_LONG_INT_64 */
326365default :
327366break ;
328367}