- Variables that are out of scope, were not removed all the time.
- Make a varchar NULL set everything to 0 when not using indicators.
- Synced parser.
+
+Mon Jun 28 11:08:42 CEST 2004
+
+ - Arrays can be read as arrays or as character strings now.
- Set pgtypes library version to 1.2.
- Set ecpg version to 3.2.0.
- Set compat library version to 1.2.
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.24 2004/06/27 12:28:39 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/data.c,v 1.25 2004/06/28 11:47:41 meskes Exp $ */
#define POSTGRES_ECPG_INTERNAL
#include "postgres_fe.h"
ECPGraise(lineno, ECPG_INT_FORMAT, ECPG_SQLSTATE_DATATYPE_MISMATCH, pval);
return (false);
}
+ pval = scan_length;
}
else
res = 0L;
ECPGraise(lineno, ECPG_UINT_FORMAT, ECPG_SQLSTATE_DATATYPE_MISMATCH, pval);
return (false);
}
+ pval = scan_length;
}
else
ures = 0L;
ECPGraise(lineno, ECPG_INT_FORMAT, ECPG_SQLSTATE_DATATYPE_MISMATCH, pval);
return (false);
}
+ pval = scan_length;
}
else
*((long long int *) (var + offset * act_tuple)) = (long long) 0;
ECPGraise(lineno, ECPG_UINT_FORMAT, ECPG_SQLSTATE_DATATYPE_MISMATCH, pval);
return (false);
}
+ pval = scan_length;
}
else
*((unsigned long long int *) (var + offset * act_tuple)) = (long long) 0;
ECPGraise(lineno, ECPG_FLOAT_FORMAT, ECPG_SQLSTATE_DATATYPE_MISMATCH, pval);
return (false);
}
+ pval = scan_length;
}
else
dres = 0.0;
case ECPGt_char:
case ECPGt_unsigned_char:
+ if (pval)
{
- if (varcharsize == 0)
+ if (varcharsize == 0 || varcharsize > strlen(pval))
strncpy((char *) ((long) var + offset * act_tuple), pval, strlen(pval) + 1);
else
{
sqlca->sqlwarn[0] = sqlca->sqlwarn[1] = 'W';
}
}
+ pval += strlen(pval);
}
break;
case ECPGt_varchar:
+ if (pval)
{
struct ECPGgeneric_varchar *variable =
(struct ECPGgeneric_varchar *) ((long) var + offset * act_tuple);
variable->len = varcharsize;
}
}
+ pval += strlen(pval);
}
break;
return (false);
}
}
+ pval = scan_length;
}
else
nres = PGTYPESnumeric_from_asc("0.0", &scan_length);
return (false);
}
}
+ pval = scan_length;
}
else
ires = PGTYPESinterval_from_asc("0 seconds", NULL);
}
*((date *) (var + offset * act_tuple)) = ddres;
+ pval = scan_length;
}
break;
}
*((timestamp *) (var + offset * act_tuple)) = tres;
+ pval = scan_length;
}
break;
++act_tuple;
/* set pval to the next entry */
- for (; string || (*pval != ',' && *pval != '}'); ++pval)
+ for (; string || (*pval != ',' && *pval != '}' && *pval != '\0'); ++pval)
if (*pval == '"')
string = string ? false : true;
if (*pval == ' ')
++pval;
}
- } while ((isarray == ECPG_ARRAY_ARRAY && *pval != '}') || (isarray == ECPG_ARRAY_VECTOR && *pval != '\0'));
+ } while (*pval != '\0' && ((isarray == ECPG_ARRAY_ARRAY && *pval != '}') || isarray == ECPG_ARRAY_VECTOR));
return (true);
}
int i = 1;
int *did = &i;
int a[10] = {9,8,7,6,5,4,3,2,1,0};
- char text[10] = "klmnopqrst";
+ char text[25] = "klmnopqrst";
char *t = (char *)malloc(10);
double f;
bool b = true;
printf("Found text=%10.10s\n", t);
+ EXEC SQL SELECT a
+ INTO :text
+ FROM test
+ WHERE f = :f;
+
+ printf("Found text=%s\n", text);
+
EXEC SQL DROP TABLE test;
EXEC SQL COMMIT;