Thread: Problem with SQLGetTypeInfo
There's a missmatch in the following functions:
Int4
PGtype_precision(StatementClass *stmt, Int4 type, int col, int handle_unknown_size_as)
{
switch (type)
{
case PG_TYPE_CHAR:
return 1;
...
}
char *
pgtype_create_params(StatementClass *stmt, Int4 type)
{
switch (type)
{
case PG_TYPE_CHAR:
case PG_TYPE_VARCHAR:return "max. length";
default:
return NULL;
}
}
"case PG_TYPE_CHAR" should be changed to "case PG_TYPE_BPCHAR", or there will be a error when use SQLGetTypeInfo. Because the precision of PG_TYPE_CHAR is 1, it should return NULL in function "pgtype_create_params" instead of "max. length"!!!
What do you think?
> Zhou Han wrote: > > There's a missmatch in the following functions: > > Int4 > PGtype_precision(StatementClass *stmt, Int4 type, int col, int > handle_unknown_size_as) > { > > switch (type) > { > > case PG_TYPE_CHAR: > return 1; > ... > > } > > char * > pgtype_create_params(StatementClass *stmt, Int4 type) > { > switch (type) > { > case PG_TYPE_CHAR: > case PG_TYPE_VARCHAR:return "max. length"; > default: > return NULL; > } > } > > "case PG_TYPE_CHAR" should be changed to "case PG_TYPE_BPCHAR", or > there will be a error when use SQLGetTypeInfo. Because the precision > of PG_TYPE_CHAR is 1, it should return NULL in function > "pgtype_create_params" instead of "max. length"!!! > > What do you think? You seem to be right. I would change PG_TYPE_CHAR to PG_TYPE_BPCHAR. Thanks for your report. Hiroshi Inoue http://w2422.nsk.ne.jp/~inoue/