NULL values in arrays - Mailing list pgsql-jdbc
From | Christian Schröder |
---|---|
Subject | NULL values in arrays |
Date | |
Msg-id | 47432E13.4080707@deriva.de Whole thread Raw |
Responses |
Re: NULL values in arrays
|
List | pgsql-jdbc |
Hi list, since PostgreSQL version 8.2 arrays can contain null values. This doesn't seem to be correctly handled by the driver. (I had a look at the latest CVS version.) I have found in the archive a mail from Marek Lewczuk (sent on 2007-10-11) who adressed this issue, but the thread seems to be dead. Moreover, he did not supply a patch, so I tried to do it myself. Could you please have a look at the attached file and decide if it should be applied to the sources? Thanks a lot! Christian -- Deriva GmbH Tel.: +49 551 489500-42 Financial IT and Consulting Fax: +49 551 489500-91 Hans-Böckler-Straße 2 http://www.deriva.de D-37079 Göttingen Deriva CA Certificate: http://www.deriva.de/deriva-ca.cer Index: AbstractJdbc2Array.java =================================================================== RCS file: /cvsroot/jdbc/pgjdbc/org/postgresql/jdbc2/AbstractJdbc2Array.java,v retrieving revision 1.19 diff -c -r1.19 AbstractJdbc2Array.java *** AbstractJdbc2Array.java 10 Sep 2007 08:34:31 -0000 1.19 --- AbstractJdbc2Array.java 20 Nov 2007 18:29:45 -0000 *************** *** 103,108 **** --- 103,110 ---- StringBuffer sbuf = new StringBuffer(); boolean foundOpen = false; boolean insideString = false; + boolean isQuoted = false; + boolean haveMinServerVersion82 = conn.haveMinimumServerVersion("8.2"); /** * Starting with 8.0 non-standard (beginning index *************** *** 142,147 **** --- 144,150 ---- else if (chars[i] == '"') { insideString = !insideString; + isQuoted = true; continue; } else if (!insideString && (chars[i] == ',' || chars[i] == '}') || *************** *** 149,156 **** { if ( chars[i] != '"' && chars[i] != '}' && chars[i] != ',' ) sbuf.append(chars[i]); ! array.add( sbuf.toString() ); sbuf = new StringBuffer(); continue; } sbuf.append( chars[i] ); --- 152,160 ---- { if ( chars[i] != '"' && chars[i] != '}' && chars[i] != ',' ) sbuf.append(chars[i]); ! array.add( sbuf.toString().equals("NULL") && !isQuoted && haveMinServerVersion82 ? null : sbuf.toString()); sbuf = new StringBuffer(); + isQuoted = false; continue; } sbuf.append( chars[i] );
pgsql-jdbc by date: