1
- /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.5 2003/06/15 04:07:58 momjian Exp $ */
1
+ /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.6 2003/06/19 09:52:11 meskes Exp $ */
2
2
3
3
#define POSTGRES_ECPG_INTERNAL
4
4
#include "postgres_fe.h"
@@ -100,11 +100,11 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
100
100
switch (type )
101
101
{
102
102
long res ;
103
- unsigned long ures ;
103
+ unsigned long ures ;
104
104
double dres ;
105
- char * scan_length ;
106
- Numeric * nres ;
107
- Date ddres ;
105
+ char * scan_length ;
106
+ Numeric * nres ;
107
+ Date ddres ;
108
108
Timestamp tres ;
109
109
Interval * ires ;
110
110
@@ -300,37 +300,45 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
300
300
case ECPGt_char :
301
301
case ECPGt_unsigned_char :
302
302
{
303
- strncpy ((char * ) ((long ) var + offset * act_tuple ), pval , varcharsize );
304
- if (varcharsize && varcharsize < strlen (pval ))
303
+ if (varcharsize == 0 )
304
+ {
305
+ strncpy ((char * ) ((long ) var + offset * act_tuple ), pval , strlen (pval ));
306
+ }
307
+ else
305
308
{
306
- /* truncation */
307
- switch (ind_type )
309
+ strncpy ((char * ) ((long ) var + offset * act_tuple ), pval , varcharsize );
310
+
311
+ if (varcharsize < strlen (pval ))
308
312
{
309
- case ECPGt_short :
310
- case ECPGt_unsigned_short :
311
- /* ((short *) ind)[act_tuple] = strlen(pval);*/
312
- * ((short * ) (ind + ind_offset * act_tuple )) = strlen (pval );
313
- break ;
314
- case ECPGt_int :
315
- case ECPGt_unsigned_int :
316
- /* ((int *) ind)[act_tuple] = strlen(pval);*/
317
- * ((int * ) (ind + ind_offset * act_tuple )) = strlen (pval );
318
- break ;
319
- case ECPGt_long :
320
- case ECPGt_unsigned_long :
321
- /* ((long *) ind)[act_tuple] = strlen(pval);*/
322
- * ((long * ) (ind + ind_offset * act_tuple )) = strlen (pval );
323
- break ;
313
+ /* truncation */
314
+ switch (ind_type )
315
+ {
316
+ case ECPGt_short :
317
+ case ECPGt_unsigned_short :
318
+ /* ((short *) ind)[act_tuple] = strlen(pval);*/
319
+ * ((short * ) (ind + ind_offset * act_tuple )) = strlen (pval );
320
+ break ;
321
+ case ECPGt_int :
322
+ case ECPGt_unsigned_int :
323
+ /* ((int *) ind)[act_tuple] = strlen(pval);*/
324
+ * ((int * ) (ind + ind_offset * act_tuple )) = strlen (pval );
325
+ break ;
326
+ case ECPGt_long :
327
+ case ECPGt_unsigned_long :
328
+ /* ((long *) ind)[act_tuple] = strlen(pval);*/
329
+ * ((long * ) (ind + ind_offset * act_tuple )) = strlen (pval );
330
+ break ;
324
331
#ifdef HAVE_LONG_LONG_INT_64
325
- case ECPGt_long_long :
326
- case ECPGt_unsigned_long_long :
327
- * ((long long int * ) (ind + ind_offset * act_tuple )) = strlen (pval );
328
- break ;
332
+ case ECPGt_long_long :
333
+ case ECPGt_unsigned_long_long :
334
+ * ((long long int * ) (ind + ind_offset * act_tuple )) = strlen (pval );
335
+ break ;
329
336
#endif /* HAVE_LONG_LONG_INT_64 */
330
- default :
331
- break ;
337
+ default :
338
+ break ;
339
+ }
340
+ sqlca -> sqlwarn [0 ] = sqlca -> sqlwarn [1 ] = 'W' ;
332
341
}
333
- sqlca -> sqlwarn [0 ] = sqlca -> sqlwarn [1 ] = 'W' ;
334
342
}
335
343
}
336
344
break ;
@@ -342,42 +350,46 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
342
350
343
351
variable -> len = strlen (pval );
344
352
if (varcharsize == 0 )
353
+ {
345
354
strncpy (variable -> arr , pval , variable -> len );
355
+ }
346
356
else
357
+ {
347
358
strncpy (variable -> arr , pval , varcharsize );
348
359
349
- if (varcharsize > 0 && variable -> len > varcharsize )
350
- {
351
- /* truncation */
352
- switch (ind_type )
360
+ if (variable -> len > varcharsize )
353
361
{
354
- case ECPGt_short :
355
- case ECPGt_unsigned_short :
356
- /* ((short *) ind)[act_tuple] = variable->len;*/
357
- * ((short * ) (ind + offset * act_tuple )) = variable -> len ;
358
- break ;
359
- case ECPGt_int :
360
- case ECPGt_unsigned_int :
361
- /* ((int *) ind)[act_tuple] = variable->len;*/
362
- * ((int * ) (ind + offset * act_tuple )) = variable -> len ;
363
- break ;
364
- case ECPGt_long :
365
- case ECPGt_unsigned_long :
366
- /* ((long *) ind)[act_tuple] = variable->len;*/
367
- * ((long * ) (ind + offset * act_tuple )) = variable -> len ;
368
- break ;
362
+ /* truncation */
363
+ switch (ind_type )
364
+ {
365
+ case ECPGt_short :
366
+ case ECPGt_unsigned_short :
367
+ /* ((short *) ind)[act_tuple] = variable->len;*/
368
+ * ((short * ) (ind + offset * act_tuple )) = variable -> len ;
369
+ break ;
370
+ case ECPGt_int :
371
+ case ECPGt_unsigned_int :
372
+ /* ((int *) ind)[act_tuple] = variable->len;*/
373
+ * ((int * ) (ind + offset * act_tuple )) = variable -> len ;
374
+ break ;
375
+ case ECPGt_long :
376
+ case ECPGt_unsigned_long :
377
+ /* ((long *) ind)[act_tuple] = variable->len;*/
378
+ * ((long * ) (ind + offset * act_tuple )) = variable -> len ;
379
+ break ;
369
380
#ifdef HAVE_LONG_LONG_INT_64
370
- case ECPGt_long_long :
371
- case ECPGt_unsigned_long_long :
372
- * ((long long int * ) (ind + ind_offset * act_tuple )) = variable -> len ;
373
- break ;
381
+ case ECPGt_long_long :
382
+ case ECPGt_unsigned_long_long :
383
+ * ((long long int * ) (ind + ind_offset * act_tuple )) = variable -> len ;
384
+ break ;
374
385
#endif /* HAVE_LONG_LONG_INT_64 */
375
- default :
376
- break ;
377
- }
378
- sqlca -> sqlwarn [0 ] = sqlca -> sqlwarn [1 ] = 'W' ;
386
+ default :
387
+ break ;
388
+ }
389
+ sqlca -> sqlwarn [0 ] = sqlca -> sqlwarn [1 ] = 'W' ;
379
390
380
- variable -> len = varcharsize ;
391
+ variable -> len = varcharsize ;
392
+ }
381
393
}
382
394
}
383
395
break ;
0 commit comments