Обсуждение: getArray() and char[]
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
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
Вложения
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