aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java50
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java50
2 files changed, 62 insertions, 38 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java
index bbde9d5bf91..07d5a998e64 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java
@@ -391,31 +391,43 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
if (columnIndex < 1 || columnIndex > fields.length)
throw new PSQLException("postgresql.res.colrange");
- //If the data is already binary then just return it
- if (binaryCursor)
- return this_row[columnIndex - 1];
-
- if (connection.haveMinimumCompatibleVersion("7.2"))
+ wasNullFlag = (this_row[columnIndex - 1] == null);
+ if (!wasNullFlag)
{
+ if (binaryCursor)
+ {
+ //If the data is already binary then just return it
+ return this_row[columnIndex - 1];
+ }
+ else if (connection.haveMinimumCompatibleVersion("7.2"))
+ {
//Version 7.2 supports the bytea datatype for byte arrays
- return PGbytea.toBytes(getString(columnIndex));
- }
- else
- {
+ if (fields[columnIndex - 1].getPGType().equals("bytea"))
+ {
+ return PGbytea.toBytes(getString(columnIndex));
+ }
+ else
+ {
+ return this_row[columnIndex - 1];
+ }
+ }
+ else
+ {
//Version 7.1 and earlier supports LargeObjects for byte arrays
- wasNullFlag = (this_row[columnIndex - 1] == null);
// Handle OID's as BLOBS
- if (!wasNullFlag)
+ if ( fields[columnIndex - 1].getOID() == 26)
{
- if ( fields[columnIndex - 1].getOID() == 26)
- {
- LargeObjectManager lom = connection.getLargeObjectAPI();
- LargeObject lob = lom.open(getInt(columnIndex));
- byte buf[] = lob.read(lob.size());
- lob.close();
- return buf;
- }
+ LargeObjectManager lom = connection.getLargeObjectAPI();
+ LargeObject lob = lom.open(getInt(columnIndex));
+ byte buf[] = lob.read(lob.size());
+ lob.close();
+ return buf;
+ }
+ else
+ {
+ return this_row[columnIndex - 1];
}
+ }
}
return null;
}
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
index cd941d2179e..4c2c61ce043 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
@@ -318,31 +318,43 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
if (columnIndex < 1 || columnIndex > fields.length)
throw new PSQLException("postgresql.res.colrange");
- //If the data is already binary then just return it
- if (binaryCursor)
- return this_row[columnIndex - 1];
-
- if (connection.haveMinimumCompatibleVersion("7.2"))
+ wasNullFlag = (this_row[columnIndex - 1] == null);
+ if (!wasNullFlag)
{
+ if (binaryCursor)
+ {
+ //If the data is already binary then just return it
+ return this_row[columnIndex - 1];
+ }
+ else if (connection.haveMinimumCompatibleVersion("7.2"))
+ {
//Version 7.2 supports the bytea datatype for byte arrays
- return PGbytea.toBytes(getString(columnIndex));
- }
- else
- {
+ if (fields[columnIndex - 1].getPGType().equals("bytea"))
+ {
+ return PGbytea.toBytes(getString(columnIndex));
+ }
+ else
+ {
+ return this_row[columnIndex - 1];
+ }
+ }
+ else
+ {
//Version 7.1 and earlier supports LargeObjects for byte arrays
- wasNullFlag = (this_row[columnIndex - 1] == null);
// Handle OID's as BLOBS
- if (!wasNullFlag)
+ if ( fields[columnIndex - 1].getOID() == 26)
{
- if ( fields[columnIndex - 1].getOID() == 26)
- {
- LargeObjectManager lom = connection.getLargeObjectAPI();
- LargeObject lob = lom.open(getInt(columnIndex));
- byte buf[] = lob.read(lob.size());
- lob.close();
- return buf;
- }
+ LargeObjectManager lom = connection.getLargeObjectAPI();
+ LargeObject lob = lom.open(getInt(columnIndex));
+ byte buf[] = lob.read(lob.size());
+ lob.close();
+ return buf;
+ }
+ else
+ {
+ return this_row[columnIndex - 1];
}
+ }
}
return null;
}