Обсуждение: getArray() and char[]

Поиск
Список
Период
Сортировка

getArray() and char[]

От
Jeffrey Cox
Дата:
While looking into updating getProcedureColumns, to appropriately
return COLUMN_TYPE, ran into a 'not implemented' exception. Seems
that getArray is not implemented for arrays of type char. Kinda fuzzy
on all this, but walked the code and ultimately added an entry in
TypeInfoCache for 'char' and then updated AbstractJdbc2Array to
handle 'char' as a java.lang.Character[] rather than java.lang.String[]

it seems that the issue was that char[] was being identified as
Types.OTHER in TypeInfoCache. Which fixed the unimplemented error.
However, considering char[] as a String caused getArray() to return a
string containing leading and trailing curly brackets. Hence the
change to AbstractJdbc2Array.

Am I missing something, or is there another way around this?


Jeff

Re: getArray() and char[]

От
Kris Jurka
Дата:

On Thu, 1 Feb 2007, Jeffrey Cox wrote:

> While looking into updating getProcedureColumns, to appropriately return
> COLUMN_TYPE, ran into a 'not implemented' exception. Seems that getArray
> is not implemented for arrays of type char. Kinda fuzzy on all this, but
> walked the code and ultimately added an entry in TypeInfoCache for
> 'char' and then updated AbstractJdbc2Array to handle 'char' as a
> java.lang.Character[] rather than java.lang.String[]

This is not quite right.  The pg_proc column you are looking at is an
array of "char" which is a special one byte datatype which is different
than something like char(N) which is implemented by the bpchar type on the
backend.  The new TypeInfoCache code is correct, but the
AbstractJdbc2Array must still return String[] since it must support the
char(N) version as well.

> it seems that the issue was that char[] was being identified as
> Types.OTHER in TypeInfoCache. Which fixed the unimplemented error.
> However, considering char[] as a String caused getArray() to return a
> string containing leading and trailing curly brackets. Hence the change
> to AbstractJdbc2Array.
>

I'm not sure why that would happen, perhaps it indicates another bug?
I cannot duplicate it here with the attached test case and your
TypeInfoCache changes.

Kris Jurka

Вложения

Re: getArray() and char[]

От
Kris Jurka
Дата:

On Thu, 1 Feb 2007, Jeffrey Cox wrote:

> Are you saying that the line I added in TypeInfoCache was correct with
> "java.lang.Character", but in AbstractJdbc2Array I need to do something to
> ensure the return of a string... or should the line in TypeInfoCache be a
> string?
>


I was only really thinking about the addition to TypeInfoCache mapping
"char" -> Types.CHAR, but you're right the class should be
java.lang.String.  That class must be what's returned by getObject which
is driven off the Types.CHAR value.

Kris Jurka