Re: Anoter JDBC Error

Lists: pgsql-jdbcPostg토토 사이트SQL
From: Aaron Mulder <ammulder(at)alumni(dot)princeton(dot)edu>
To: PostgreSQL JDBC <pgsql-jdbc(at)postgresql(dot)org>
Subject: Anoter JDBC Error
Date: 2002-10-09 15:09:03
Message-ID: Pine.LNX.4.44.0210091105210.24599-100000@www.princetongames.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: Postg스포츠 토토 베트맨SQL : Postg스포츠 토토 베트맨SQL 메일 링리스트 : 2002-10-09 이후 PGSQL-JDBC 15:09 pgsql-patches

Haven't had a chance to look into this one yet -- came up in
DBVis, while looking for the columns for a new table, so it's probably
another DBMD query. Something assuming a String won't be empty?

java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:460)
at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getFixedString(AbstractJdbc1ResultSet.java:650)
at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:144)

BTW, thanks for the ' fix.

Aaron


From: Kris Jurka <books(at)ejurka(dot)com>
To: Aaron Mulder <ammulder(at)alumni(dot)princeton(dot)edu>
Cc: PostgreSQL JDBC <pgsql-jdbc(at)postgresql(dot)org>, <pgsql-patches(at)postgresql(dot)org>
Subject: Re: Anoter JDBC Error
Date: 2002-10-11 23:11:17
Message-ID: Pine.LNX.4.33.0210111908300.2952-200000@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc Postg토토 사이트SQL


This is doing a getInt on a field with a value of the empty string. The
application will still get an error after this patch, but it will be more
obvious where the error is coming from.

This patch also fixes a problem when retrieving negative monetary values.

On Wed, 9 Oct 2002, Aaron Mulder wrote:

> Haven't had a chance to look into this one yet -- came up in
> DBVis, while looking for the columns for a new table, so it's probably
> another DBMD query. Something assuming a String won't be empty?
>
> java.lang.StringIndexOutOfBoundsException: String index out of range: 0
> at java.lang.String.charAt(String.java:460)
> at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getFixedString(AbstractJdbc1ResultSet.java:650)
> at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:144)
>
> BTW, thanks for the ' fix.
>
> Aaron
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
> message can get through to the mailing list cleanly
>

Attachment Content-Type Size
getFixedString.patch text/plain 1.0 KB

From: Barry Lind <barry(at)xythos(dot)com>
To: Kris Jurka <books(at)ejurka(dot)com>
Cc: Aaron Mulder <ammulder(at)alumni(dot)princeton(dot)edu>, PostgreSQL JDBC <pgsql-jdbc(at)postgresql(dot)org>, pgsql-patches(at)postgresql(dot)org
Subject: Re: [PATCHES] Anoter JDBC Error
Date: 2002-10-19 22:13:52
Message-ID: 3DB1D920.2040801@xythos.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc pgsql-patches

Patch applied.

--Barry

Kris Jurka wrote:
> This is doing a getInt on a field with a value of the empty string. The
> application will still get an error after this patch, but it will be more
> obvious where the error is coming from.
>
> This patch also fixes a problem when retrieving negative monetary values.
>
> On Wed, 9 Oct 2002, Aaron Mulder wrote:
>
>
>> Haven't had a chance to look into this one yet -- came up in
>>DBVis, while looking for the columns for a new table, so it's probably
>>another DBMD query. Something assuming a String won't be empty?
>>
>>java.lang.StringIndexOutOfBoundsException: String index out of range: 0
>> at java.lang.String.charAt(String.java:460)
>> at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getFixedString(AbstractJdbc1ResultSet.java:650)
>> at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:144)
>>
>> BTW, thanks for the ' fix.
>>
>>Aaron
>>
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 3: if posting/reading through Usenet, please send an appropriate
>>subscribe-nomail command to majordomo(at)postgresql(dot)org so that your
>>message can get through to the mailing list cleanly
>>
>>
>>
>>------------------------------------------------------------------------
>>
>>Index: src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java
>>===================================================================
>>RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java,v
>>retrieving revision 1.6
>>diff -c -r1.6 AbstractJdbc1ResultSet.java
>>*** src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java 2002/09/06 21:23:06 1.6
>>--- src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1ResultSet.java 2002/10/11 23:02:46
>>***************
>>*** 646,651 ****
>>--- 646,655 ----
>> if (wasNullFlag)
>> return null;
>>
>>+ // if we don't have at least 2 characters it can't be money.
>>+ if (s.length() < 2)
>>+ return s;
>>+
>> // Handle Money
>> if (s.charAt(0) == '(')
>> {
>>***************
>>*** 654,659 ****
>>--- 658,667 ----
>> if (s.charAt(0) == '$')
>> {
>> s = s.substring(1);
>>+ }
>>+ else if (s.charAt(0) == '-' && s.charAt(1) == '$')
>>+ {
>>+ s = "-" + s.substring(2);
>> }
>>
>> return s;
>>
>>
>>------------------------------------------------------------------------
>>
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 2: you can get off all lists at once with the unregister command
>> (send "unregister YourEmailAddressHere" to majordomo(at)postgresql(dot)org)
>


From: Aaron Mulder <ammulder(at)alumni(dot)princeton(dot)edu>
To: Barry Lind <barry(at)xythos(dot)com>
Cc: Kris Jurka <books(at)ejurka(dot)com>, PostgreSQL JDBC <pgsql-jdbc(at)postgresql(dot)org>, <pgsql-patches(at)postgresql(dot)org>
Subject: Re: [PATCHES] Anoter JDBC Error
Date: 2002-10-19 22:28:48
Message-ID: Pine.LNX.4.44.0210191826260.29694-100000@www.princetongames.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc pgsql-patches

I rebuilt the JDBC3 driver after getting your message (cvs up
-dP;make clean;make), and I'm still getting:

java.lang.StringIndexOutOfBoundsException: String index out of range: 0
at java.lang.String.charAt(String.java:460)
at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getFixedString(AbstractJdbc1ResultSet.java:650)
at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:144)

I guess I'll have to decompile DBVis to see what it's doing here.
I'll follow up if I can find out more.

Aaron

On Sat, 19 Oct 2002, Barry Lind wrote:
> Patch applied.
...
> >>java.lang.StringIndexOutOfBoundsException: String index out of range: 0
> >> at java.lang.String.charAt(String.java:460)
> >> at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getFixedString(AbstractJdbc1ResultSet.java:650)
> >> at org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:144)


From: Aaron Mulder <ammulder(at)alumni(dot)princeton(dot)edu>
To: PostgreSQL JDBC <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: [PATCHES] Anoter JDBC Error
Date: 2002-10-19 23:36:57
Message-ID: Pine.LNX.4.44.0210191924190.29694-100000@www.princetongames.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc pgsql-patches

Ahh, never mind. I tried again a few minutes later, and got the
new behavior, which is to say a SQLException. But I don't
understand why this is happening. Here's what I'm doing:

I create the database "test" (in my PG 7.2.2 DB) with a table with
3 columns, all integers. I connect using the JDBC3 driver, get a
connection, get the databasemetadata, call

dbmd.getColumns("test",null,"tablename","%");

I get back a ResultSet. Column 9 is an integer column,
DECIMAL_DIGITS. If I call getObject, it tries to get an Integer object,
so even the ResultSet thinks it's an integer column. However, the result
of getString/getFixedString used for new Integer(getFixedString()) is
apparently an empty String, causing the SQLException due to a badly
formatted Integer value.

So now I'm confused. What's an empty String doing in an integer
column when (if you believe the logic in getFixedString) the value was not
null? Is this broken null handling? Test program and results attached...

Aaron

import java.sql.*;

public class PostgresTest{
public static void main(String args[]) {
try {
Class.forName("org.postgresql.Driver");
Connection con =
DriverManager.getConnection("jdbc:postgresql://localhost/test", "test",
"password");
DatabaseMetaData dmd = con.getMetaData();
ResultSet rs = dmd.getColumns("test", null, "tablename", "%");
rs.next();
System.out.println("Col 9: "+rs.getInt(9)); // getObject(9)
rs.close();
con.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}

Bad Integer
at
org.postgresql.jdbc1.AbstractJdbc1ResultSet.toInt(AbstractJdbc1ResultSet.java:708)
at
org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:148)
at PostgresTest.main(PostgresTest.java:12)


From: Dave Cramer <Dave(at)micro-automation(dot)net>
To: Aaron Mulder <ammulder(at)alumni(dot)princeton(dot)edu>
Cc: PostgreSQL JDBC <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: [PATCHES] Anoter JDBC Error
Date: 2002-10-21 00:04:24
Message-ID: 1035158665.1868.70.camel@inspiron.cramers
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc pgsql-patches

Aaron,

To answer one question about what getFixedString is doing there,
everything from the server is a string, (except binary values) integers,
floats, longs, dates, etc.

As far as the getInteger(9) goes this is quite likely a bug.

Dave
On Sat, 2002-10-19 at 19:36, Aaron Mulder wrote:
> Ahh, never mind. I tried again a few minutes later, and got the
> new behavior, which is to say a SQLException. But I don't
> understand why this is happening. Here's what I'm doing:
>
> I create the database "test" (in my PG 7.2.2 DB) with a table with
> 3 columns, all integers. I connect using the JDBC3 driver, get a
> connection, get the databasemetadata, call
>
> dbmd.getColumns("test",null,"tablename","%");
>
> I get back a ResultSet. Column 9 is an integer column,
> DECIMAL_DIGITS. If I call getObject, it tries to get an Integer object,
> so even the ResultSet thinks it's an integer column. However, the result
> of getString/getFixedString used for new Integer(getFixedString()) is
> apparently an empty String, causing the SQLException due to a badly
> formatted Integer value.
>
> So now I'm confused. What's an empty String doing in an integer
> column when (if you believe the logic in getFixedString) the value was not
> null? Is this broken null handling? Test program and results attached...
>
> Aaron
>
> import java.sql.*;
>
> public class PostgresTest{
> public static void main(String args[]) {
> try {
> Class.forName("org.postgresql.Driver");
> Connection con =
> DriverManager.getConnection("jdbc:postgresql://localhost/test", "test",
> "password");
> DatabaseMetaData dmd = con.getMetaData();
> ResultSet rs = dmd.getColumns("test", null, "tablename", "%");
> rs.next();
> System.out.println("Col 9: "+rs.getInt(9)); // getObject(9)
> rs.close();
> con.close();
> } catch(Exception e) {
> e.printStackTrace();
> }
> }
> }
>
>
> Bad Integer
> at
> org.postgresql.jdbc1.AbstractJdbc1ResultSet.toInt(AbstractJdbc1ResultSet.java:708)
> at
> org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:148)
> at PostgresTest.main(PostgresTest.java:12)
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>
>


From: Kris Jurka <books(at)ejurka(dot)com>
To: Aaron Mulder <ammulder(at)alumni(dot)princeton(dot)edu>
Cc: PostgreSQL JDBC <pgsql-jdbc(at)postgresql(dot)org>, <pgsql-patches(at)postgresql(dot)org>
Subject: Re: [PATCHES] Anoter JDBC Error
Date: 2002-10-22 21:14:00
Message-ID: Pine.LNX.4.33.0210221513400.424-200000@leary.csoft.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc pgsql-patches


The following patch fixes this bug and the potential source of similar
bugs. When creating the ResultSets for DatabaseMetaData calls, the code
creates byte arrays for each row something like...

byte tuple[][] = new byte[18][0];

Unless a call "tuple[n] = null;" is made then it has an array of zero
length which does in fact get turned into the zero length string being
seen. I have changed these allocations to...

byte tuple[][] = new byte[18][];

Kris Jurka

On Sat, 19 Oct 2002, Aaron Mulder wrote:

> Ahh, never mind. I tried again a few minutes later, and got the
> new behavior, which is to say a SQLException. But I don't
> understand why this is happening. Here's what I'm doing:
>
> I create the database "test" (in my PG 7.2.2 DB) with a table with
> 3 columns, all integers. I connect using the JDBC3 driver, get a
> connection, get the databasemetadata, call
>
> dbmd.getColumns("test",null,"tablename","%");
>
> I get back a ResultSet. Column 9 is an integer column,
> DECIMAL_DIGITS. If I call getObject, it tries to get an Integer object,
> so even the ResultSet thinks it's an integer column. However, the result
> of getString/getFixedString used for new Integer(getFixedString()) is
> apparently an empty String, causing the SQLException due to a badly
> formatted Integer value.
>
> So now I'm confused. What's an empty String doing in an integer
> column when (if you believe the logic in getFixedString) the value was not
> null? Is this broken null handling? Test program and results attached...
>
> Aaron
>
> import java.sql.*;
>
> public class PostgresTest{
> public static void main(String args[]) {
> try {
> Class.forName("org.postgresql.Driver");
> Connection con =
> DriverManager.getConnection("jdbc:postgresql://localhost/test", "test",
> "password");
> DatabaseMetaData dmd = con.getMetaData();
> ResultSet rs = dmd.getColumns("test", null, "tablename", "%");
> rs.next();
> System.out.println("Col 9: "+rs.getInt(9)); // getObject(9)
> rs.close();
> con.close();
> } catch(Exception e) {
> e.printStackTrace();
> }
> }
> }
>
>
> Bad Integer
> at
> org.postgresql.jdbc1.AbstractJdbc1ResultSet.toInt(AbstractJdbc1ResultSet.java:708)
> at
> org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:148)
> at PostgresTest.main(PostgresTest.java:12)
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>

Attachment Content-Type Size
decimaldigits.patch text/plain 5.7 KB

From: Barry Lind <blind(at)xythos(dot)com>
To: Kris Jurka <books(at)ejurka(dot)com>
Cc: Aaron Mulder <ammulder(at)alumni(dot)princeton(dot)edu>, PostgreSQL JDBC <pgsql-jdbc(at)postgresql(dot)org>, pgsql-patches(at)postgresql(dot)org
Subject: Re: [PATCHES] Anoter JDBC Error
Date: 2002-10-25 02:57:45
Message-ID: 3DB8B329.7020506@xythos.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-jdbc pgsql-patches

Patch applied.

thanks,
--Barry

Kris Jurka wrote:
> The following patch fixes this bug and the potential source of similar
> bugs. When creating the ResultSets for DatabaseMetaData calls, the code
> creates byte arrays for each row something like...
>
> byte tuple[][] = new byte[18][0];
>
> Unless a call "tuple[n] = null;" is made then it has an array of zero
> length which does in fact get turned into the zero length string being
> seen. I have changed these allocations to...
>
> byte tuple[][] = new byte[18][];
>
> Kris Jurka
>
>
> On Sat, 19 Oct 2002, Aaron Mulder wrote:
>
>
>> Ahh, never mind. I tried again a few minutes later, and got the
>>new behavior, which is to say a SQLException. But I don't
>>understand why this is happening. Here's what I'm doing:
>>
>> I create the database "test" (in my PG 7.2.2 DB) with a table with
>>3 columns, all integers. I connect using the JDBC3 driver, get a
>>connection, get the databasemetadata, call
>>
>> dbmd.getColumns("test",null,"tablename","%");
>>
>> I get back a ResultSet. Column 9 is an integer column,
>>DECIMAL_DIGITS. If I call getObject, it tries to get an Integer object,
>>so even the ResultSet thinks it's an integer column. However, the result
>>of getString/getFixedString used for new Integer(getFixedString()) is
>>apparently an empty String, causing the SQLException due to a badly
>>formatted Integer value.
>>
>> So now I'm confused. What's an empty String doing in an integer
>>column when (if you believe the logic in getFixedString) the value was not
>>null? Is this broken null handling? Test program and results attached...
>>
>>Aaron
>>
>>import java.sql.*;
>>
>>public class PostgresTest{
>> public static void main(String args[]) {
>> try {
>> Class.forName("org.postgresql.Driver");
>> Connection con =
>>DriverManager.getConnection("jdbc:postgresql://localhost/test", "test",
>>"password");
>> DatabaseMetaData dmd = con.getMetaData();
>> ResultSet rs = dmd.getColumns("test", null, "tablename", "%");
>> rs.next();
>> System.out.println("Col 9: "+rs.getInt(9)); // getObject(9)
>> rs.close();
>> con.close();
>> } catch(Exception e) {
>> e.printStackTrace();
>> }
>> }
>>}
>>
>>
>>Bad Integer
>> at
>>org.postgresql.jdbc1.AbstractJdbc1ResultSet.toInt(AbstractJdbc1ResultSet.java:708)
>> at
>>org.postgresql.jdbc1.AbstractJdbc1ResultSet.getInt(AbstractJdbc1ResultSet.java:148)
>> at PostgresTest.main(PostgresTest.java:12)
>>
>>
>>---------------------------(end of broadcast)---------------------------
>>TIP 6: Have you searched our list archives?
>>
>>http://archives.postgresql.org
>>
>
>
>
> ------------------------------------------------------------------------
>
> Index: src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java
> ===================================================================
> RCS file: /projects/cvsroot/pgsql-server/src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java,v
> retrieving revision 1.8
> diff -c -r1.8 AbstractJdbc1DatabaseMetaData.java
> *** src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java 2002/10/08 01:47:55 1.8
> --- src/interfaces/jdbc/org/postgresql/jdbc1/AbstractJdbc1DatabaseMetaData.java 2002/10/22 21:00:52
> ***************
> *** 1854,1860 ****
>
> // decide if we are returning a single column result.
> if (!returnTypeType.equals("c")) {
> ! byte[][] tuple = new byte[13][0];
> tuple[0] = null;
> tuple[1] = schema;
> tuple[2] = procedureName;
> --- 1854,1860 ----
>
> // decide if we are returning a single column result.
> if (!returnTypeType.equals("c")) {
> ! byte[][] tuple = new byte[13][];
> tuple[0] = null;
> tuple[1] = schema;
> tuple[2] = procedureName;
> ***************
> *** 1874,1880 ****
> // Add a row for each argument.
> for (int i=0; i<argTypes.size(); i++) {
> int argOid = ((Integer)argTypes.elementAt(i)).intValue();
> ! byte[][] tuple = new byte[13][0];
> tuple[0] = null;
> tuple[1] = schema;
> tuple[2] = procedureName;
> --- 1874,1880 ----
> // Add a row for each argument.
> for (int i=0; i<argTypes.size(); i++) {
> int argOid = ((Integer)argTypes.elementAt(i)).intValue();
> ! byte[][] tuple = new byte[13][];
> tuple[0] = null;
> tuple[1] = schema;
> tuple[2] = procedureName;
> ***************
> *** 1897,1903 ****
> ResultSet columnrs = connection.createStatement().executeQuery(columnsql);
> while (columnrs.next()) {
> int columnTypeOid = columnrs.getInt("atttypid");
> ! byte[][] tuple = new byte[13][0];
> tuple[0] = null;
> tuple[1] = schema;
> tuple[2] = procedureName;
> --- 1897,1903 ----
> ResultSet columnrs = connection.createStatement().executeQuery(columnsql);
> while (columnrs.next()) {
> int columnTypeOid = columnrs.getInt("atttypid");
> ! byte[][] tuple = new byte[13][];
> tuple[0] = null;
> tuple[1] = schema;
> tuple[2] = procedureName;
> ***************
> *** 2199,2205 ****
> f[0] = new Field(connection, new String("TABLE_TYPE"), iVarcharOid, getMaxNameLength());
> for (i=0; i < types.length; i++)
> {
> ! byte[][] tuple = new byte[1][0];
> tuple[0] = types[i].getBytes();
> v.addElement(tuple);
> }
> --- 2199,2205 ----
> f[0] = new Field(connection, new String("TABLE_TYPE"), iVarcharOid, getMaxNameLength());
> for (i=0; i < types.length; i++)
> {
> ! byte[][] tuple = new byte[1][];
> tuple[0] = types[i].getBytes();
> v.addElement(tuple);
> }
> ***************
> *** 2318,2324 ****
> ResultSet rs = connection.createStatement().executeQuery(sql);
> while (rs.next())
> {
> ! byte[][] tuple = new byte[18][0];
> int typeOid = rs.getInt("atttypid");
>
> tuple[0] = null; // Catalog name, not supported
> --- 2318,2324 ----
> ResultSet rs = connection.createStatement().executeQuery(sql);
> while (rs.next())
> {
> ! byte[][] tuple = new byte[18][];
> int typeOid = rs.getInt("atttypid");
>
> tuple[0] = null; // Catalog name, not supported
> ***************
> *** 2329,2334 ****
> --- 2329,2339 ----
> String pgType = connection.getPGType(typeOid);
> tuple[5] = pgType.getBytes(); // Type name
>
> + // by default no decimal_digits
> + // if the type is numeric or decimal we will
> + // overwrite later.
> + tuple[8] = "0".getBytes();
> +
> if (pgType.equals("bpchar") || pgType.equals("varchar"))
> {
> int atttypmod = rs.getInt("atttypmod");
> ***************
> *** 2465,2471 ****
> for (int j=0; j<grantees.size(); j++) {
> String grantee = (String)grantees.elementAt(j);
> String grantable = owner.equals(grantee) ? "YES" : "NO";
> ! byte[][] tuple = new byte[8][0];
> tuple[0] = null;
> tuple[1] = schemaName;
> tuple[2] = tableName;
> --- 2470,2476 ----
> for (int j=0; j<grantees.size(); j++) {
> String grantee = (String)grantees.elementAt(j);
> String grantable = owner.equals(grantee) ? "YES" : "NO";
> ! byte[][] tuple = new byte[8][];
> tuple[0] = null;
> tuple[1] = schemaName;
> tuple[2] = tableName;
> ***************
> *** 2567,2573 ****
> for (int j=0; j<grantees.size(); j++) {
> String grantee = (String)grantees.elementAt(j);
> String grantable = owner.equals(grantee) ? "YES" : "NO";
> ! byte[][] tuple = new byte[7][0];
> tuple[0] = null;
> tuple[1] = schema;
> tuple[2] = table;
> --- 2572,2578 ----
> for (int j=0; j<grantees.size(); j++) {
> String grantee = (String)grantees.elementAt(j);
> String grantable = owner.equals(grantee) ? "YES" : "NO";
> ! byte[][] tuple = new byte[7][];
> tuple[0] = null;
> tuple[1] = schema;
> tuple[2] = table;
> ***************
> *** 2819,2825 ****
> f[6] = new Field(connection, "DECIMAL_DIGITS", iInt2Oid, 2);
> f[7] = new Field(connection, "PSEUDO_COLUMN", iInt2Oid, 2);
>
> ! byte tuple[][] = new byte[8][0];
>
> /* Postgresql does not have any column types that are
> * automatically updated like some databases' timestamp type.
> --- 2824,2830 ----
> f[6] = new Field(connection, "DECIMAL_DIGITS", iInt2Oid, 2);
> f[7] = new Field(connection, "PSEUDO_COLUMN", iInt2Oid, 2);
>
> ! byte tuple[][] = new byte[8][];
>
> /* Postgresql does not have any column types that are
> * automatically updated like some databases' timestamp type.
>
>
> ------------------------------------------------------------------------
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html