1- /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.11 2003/07/08 12: 11:28 meskes Exp $ */
1+ /* $Header: /cvsroot/pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.12 2003/07/17 11:27:55 meskes Exp $ */
22
33#define POSTGRES_ECPG_INTERNAL
44#include "postgres_fe.h"
@@ -124,7 +124,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
124124{
125125res = strtol (pval ,& scan_length ,10 );
126126if ((isarray && * scan_length != ',' && * scan_length != '}' )
127- || (!isarray && * scan_length != '\0' ))/* Garbage left */
127+ || (!isarray && * scan_length != '\0' && * scan_length != ' ' ))/* Garbage left */
128128{
129129ECPGraise (lineno ,ECPG_INT_FORMAT ,pval );
130130return (false);
@@ -136,15 +136,12 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
136136switch (type )
137137{
138138case ECPGt_short :
139- /*((short *) var)[act_tuple] = (short) res;*/
140139* ((short * ) (var + offset * act_tuple ))= (short )res ;
141140break ;
142141case ECPGt_int :
143- /*((int *) var)[act_tuple] = (int) res;*/
144142* ((int * ) (var + offset * act_tuple ))= (int )res ;
145143break ;
146144case ECPGt_long :
147- /*((long *) var)[act_tuple] = res;*/
148145* ((long * ) (var + offset * act_tuple ))= (long )res ;
149146break ;
150147default :
@@ -160,7 +157,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
160157{
161158ures = strtoul (pval ,& scan_length ,10 );
162159if ((isarray && * scan_length != ',' && * scan_length != '}' )
163- || (!isarray && * scan_length != '\0' ))/* Garbage left */
160+ || (!isarray && * scan_length != '\0' && * scan_length != ' ' ))/* Garbage left */
164161{
165162ECPGraise (lineno ,ECPG_UINT_FORMAT ,pval );
166163return (false);
@@ -172,15 +169,12 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
172169switch (type )
173170{
174171case ECPGt_unsigned_short :
175- /*((unsigned short *) var)[act_tuple] = (unsigned short) ures;*/
176172* ((unsigned short * ) (var + offset * act_tuple ))= (unsigned short )ures ;
177173break ;
178174case ECPGt_unsigned_int :
179- /*((unsigned int *) var)[act_tuple] = (unsigned int) ures;*/
180175* ((unsignedint * ) (var + offset * act_tuple ))= (unsignedint )ures ;
181176break ;
182177case ECPGt_unsigned_long :
183- /*((unsigned long *) var)[act_tuple] = ures;*/
184178* ((unsigned long * ) (var + offset * act_tuple ))= (unsigned long )ures ;
185179break ;
186180default :
@@ -194,17 +188,15 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
194188case ECPGt_long_long :
195189if (pval )
196190{
197- /*((long long int *) var)[act_tuple] = strtoll(pval, &scan_length, 10);*/
198191* ((long longint * ) (var + offset * act_tuple ))= strtoll (pval ,& scan_length ,10 );
199192if ((isarray && * scan_length != ',' && * scan_length != '}' )
200- || (!isarray && * scan_length != '\0' ))/* Garbage left */
193+ || (!isarray && * scan_length != '\0' && * scan_length != ' ' ))/* Garbage left */
201194{
202195ECPGraise (lineno ,ECPG_INT_FORMAT ,pval );
203196return (false);
204197}
205198}
206199else
207- /*((long long int *) var)[act_tuple] = (long long) 0;*/
208200* ((long longint * ) (var + offset * act_tuple ))= (long long )0 ;
209201
210202break ;
@@ -213,17 +205,15 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
213205case ECPGt_unsigned_long_long :
214206if (pval )
215207{
216- /*((unsigned long long int *) var)[act_tuple] = strtoull(pval, &scan_length, 10);*/
217208* ((unsigned long longint * ) (var + offset * act_tuple ))= strtoull (pval ,& scan_length ,10 );
218209if ((isarray && * scan_length != ',' && * scan_length != '}' )
219- || (!isarray && * scan_length != '\0' ))/* Garbage left */
210+ || (!isarray && * scan_length != '\0' && * scan_length != ' ' ))/* Garbage left */
220211{
221212ECPGraise (lineno ,ECPG_UINT_FORMAT ,pval );
222213return (false);
223214}
224215}
225216else
226- /*((unsigned long long int *) var)[act_tuple] = (long long) 0;*/
227217* ((unsigned long longint * ) (var + offset * act_tuple ))= (long long )0 ;
228218
229219break ;
@@ -243,7 +233,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
243233scan_length ++ ;
244234
245235if ((isarray && * scan_length != ',' && * scan_length != '}' )
246- || (!isarray && * scan_length != '\0' ))/* Garbage left */
236+ || (!isarray && * scan_length != '\0' && * scan_length != ' ' ))/* Garbage left */
247237{
248238ECPGraise (lineno ,ECPG_FLOAT_FORMAT ,pval );
249239return (false);
@@ -255,11 +245,9 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
255245switch (type )
256246{
257247case ECPGt_float :
258- /*((float *) var)[act_tuple] = dres;*/
259248* ((float * ) (var + offset * act_tuple ))= dres ;
260249break ;
261250case ECPGt_double :
262- /*((double *) var)[act_tuple] = dres;*/
263251* ((double * ) (var + offset * act_tuple ))= dres ;
264252break ;
265253default :
@@ -274,10 +262,8 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
274262if (pval [0 ]== 'f' && pval [1 ]== '\0' )
275263{
276264if (offset == sizeof (char ))
277- /*((char *) var)[act_tuple] = false;*/
278265* ((char * ) (var + offset * act_tuple ))= false;
279266else if (offset == sizeof (int ))
280- /*((int *) var)[act_tuple] = false;*/
281267* ((int * ) (var + offset * act_tuple ))= false;
282268else
283269ECPGraise (lineno ,ECPG_CONVERT_BOOL ,"different size" );
@@ -286,10 +272,8 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
286272else if (pval [0 ]== 't' && pval [1 ]== '\0' )
287273{
288274if (offset == sizeof (char ))
289- /*((char *) var)[act_tuple] = true;*/
290275* ((char * ) (var + offset * act_tuple ))= true;
291276else if (offset == sizeof (int ))
292- /*((int *) var)[act_tuple] = true;*/
293277* ((int * ) (var + offset * act_tuple ))= true;
294278else
295279ECPGraise (lineno ,ECPG_CONVERT_BOOL ,"different size" );
@@ -324,17 +308,14 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
324308{
325309case ECPGt_short :
326310case ECPGt_unsigned_short :
327- /*((short *) ind)[act_tuple] = strlen(pval);*/
328311* ((short * ) (ind + ind_offset * act_tuple ))= strlen (pval );
329312break ;
330313case ECPGt_int :
331314case ECPGt_unsigned_int :
332- /*((int *) ind)[act_tuple] = strlen(pval);*/
333315* ((int * ) (ind + ind_offset * act_tuple ))= strlen (pval );
334316break ;
335317case ECPGt_long :
336318case ECPGt_unsigned_long :
337- /*((long *) ind)[act_tuple] = strlen(pval);*/
338319* ((long * ) (ind + ind_offset * act_tuple ))= strlen (pval );
339320break ;
340321#ifdef HAVE_LONG_LONG_INT_64
@@ -416,7 +397,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
416397scan_length ++ ;
417398
418399if ((isarray && * scan_length != ',' && * scan_length != '}' )
419- || (!isarray && * scan_length != '\0' ))/* Garbage left */
400+ || (!isarray && * scan_length != '\0' && * scan_length != ' ' ))/* Garbage left */
420401{
421402ECPGraise (lineno ,ECPG_NUMERIC_FORMAT ,pval );
422403return (false);
@@ -443,7 +424,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
443424scan_length ++ ;
444425
445426if ((isarray && * scan_length != ',' && * scan_length != '}' )
446- || (!isarray && * scan_length != '\0' ))/* Garbage left */
427+ || (!isarray && * scan_length != '\0' && * scan_length != ' ' ))/* Garbage left */
447428{
448429ECPGraise (lineno ,ECPG_INTERVAL_FORMAT ,pval );
449430return (false);
@@ -466,7 +447,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
466447scan_length ++ ;
467448
468449if ((isarray && * scan_length != ',' && * scan_length != '}' )
469- || (!isarray && * scan_length != '\0' ))/* Garbage left */
450+ || (!isarray && * scan_length != '\0' && * scan_length != ' ' ))/* Garbage left */
470451{
471452ECPGraise (lineno ,ECPG_DATE_FORMAT ,pval );
472453return (false);
@@ -488,7 +469,7 @@ ECPGget_data(const PGresult *results, int act_tuple, int act_field, int lineno,
488469scan_length ++ ;
489470
490471if ((isarray && * scan_length != ',' && * scan_length != '}' )
491- || (!isarray && * scan_length != '\0' ))/* Garbage left */
472+ || (!isarray && * scan_length != '\0' && * scan_length != ' ' ))/* Garbage left */
492473{
493474ECPGraise (lineno ,ECPG_TIMESTAMP_FORMAT ,pval );
494475return (false);