mirror of
https://github.com/postgres/postgres.git
synced 2025-09-03 15:22:11 +03:00
file containing the latest version of the JDBC driver, allowing it to be compiled and used under JDK 1.2 and later. NB: None (well almost none) of the new methods actually do anything. This release only handles getting it to compile and run. Now this is done, I'll start working on implementing the new stuff. Now this tar file replaces everything under src/interfaces/jdbc. I had to do it this way, rather than diffs, because most of the classes under the postgresql subdirectory have moved to a new directory under that one, to enable the support of the two JDBC standards. Here's a list of files in the tar file. Any file not listed here (in the postgresql directory) will have to be deleted, otherwise it could cause the driver to fail: Peter Mount
159 lines
4.2 KiB
Java
159 lines
4.2 KiB
Java
package postgresql;
|
|
|
|
import java.lang.*;
|
|
import java.io.*;
|
|
import java.math.*;
|
|
import java.text.*;
|
|
import java.util.*;
|
|
import java.sql.*;
|
|
import postgresql.largeobject.*;
|
|
import postgresql.util.*;
|
|
|
|
/**
|
|
* This class implements the common internal methods used by both JDBC 1 and
|
|
* JDBC 2 specifications.
|
|
*/
|
|
public abstract class ResultSet
|
|
{
|
|
protected Vector rows; // The results
|
|
protected Field fields[]; // The field descriptions
|
|
protected String status; // Status of the result
|
|
protected int updateCount; // How many rows did we get back?
|
|
protected int current_row; // Our pointer to where we are at
|
|
protected byte[][] this_row; // the current row result
|
|
protected Connection connection; // the connection which we returned from
|
|
protected SQLWarning warnings = null; // The warning chain
|
|
protected boolean wasNullFlag = false; // the flag for wasNull()
|
|
|
|
// We can chain multiple resultSets together - this points to
|
|
// next resultSet in the chain.
|
|
protected ResultSet next = null;
|
|
|
|
/**
|
|
* Create a new ResultSet - Note that we create ResultSets to
|
|
* represent the results of everything.
|
|
*
|
|
* @param fields an array of Field objects (basically, the
|
|
* ResultSet MetaData)
|
|
* @param tuples Vector of the actual data
|
|
* @param status the status string returned from the back end
|
|
* @param updateCount the number of rows affected by the operation
|
|
* @param cursor the positioned update/delete cursor name
|
|
*/
|
|
public ResultSet(Connection conn, Field[] fields, Vector tuples, String status, int updateCount)
|
|
{
|
|
this.connection = conn;
|
|
this.fields = fields;
|
|
this.rows = tuples;
|
|
this.status = status;
|
|
this.updateCount = updateCount;
|
|
this.this_row = null;
|
|
this.current_row = -1;
|
|
}
|
|
|
|
/**
|
|
* We at times need to know if the resultSet we are working
|
|
* with is the result of an UPDATE, DELETE or INSERT (in which
|
|
* case, we only have a row count), or of a SELECT operation
|
|
* (in which case, we have multiple fields) - this routine
|
|
* tells us.
|
|
*
|
|
* @return true if we have tuples available
|
|
*/
|
|
public boolean reallyResultSet()
|
|
{
|
|
return (fields != null);
|
|
}
|
|
|
|
/**
|
|
* Since ResultSets can be chained, we need some method of
|
|
* finding the next one in the chain. The method getNext()
|
|
* returns the next one in the chain.
|
|
*
|
|
* @return the next ResultSet, or null if there are none
|
|
*/
|
|
public java.sql.ResultSet getNext()
|
|
{
|
|
return (java.sql.ResultSet)next;
|
|
}
|
|
|
|
/**
|
|
* This following method allows us to add a ResultSet object
|
|
* to the end of the current chain.
|
|
*
|
|
* @param r the resultset to add to the end of the chain.
|
|
*/
|
|
public void append(ResultSet r)
|
|
{
|
|
if (next == null)
|
|
next = r;
|
|
else
|
|
next.append(r);
|
|
}
|
|
|
|
/**
|
|
* If we are just a place holder for results, we still need
|
|
* to get an updateCount. This method returns it.
|
|
*
|
|
* @return the updateCount
|
|
*/
|
|
public int getResultCount()
|
|
{
|
|
return updateCount;
|
|
}
|
|
|
|
/**
|
|
* We also need to provide a couple of auxiliary functions for
|
|
* the implementation of the ResultMetaData functions. In
|
|
* particular, we need to know the number of rows and the
|
|
* number of columns. Rows are also known as Tuples
|
|
*
|
|
* @return the number of rows
|
|
*/
|
|
public int getTupleCount()
|
|
{
|
|
return rows.size();
|
|
}
|
|
|
|
/**
|
|
* getColumnCount returns the number of columns
|
|
*
|
|
* @return the number of columns
|
|
*/
|
|
public int getColumnCount()
|
|
{
|
|
return fields.length;
|
|
}
|
|
|
|
/**
|
|
* Returns the status message from the backend.<p>
|
|
* It is used internally by the driver.
|
|
*
|
|
* @return the status string from the backend
|
|
*/
|
|
public String getStatusString()
|
|
{
|
|
return status;
|
|
}
|
|
|
|
/**
|
|
* returns the OID of a field.<p>
|
|
* It is used internally by the driver.
|
|
*
|
|
* @param field field id
|
|
* @return the oid of that field's type
|
|
*/
|
|
public int getColumnOID(int field)
|
|
{
|
|
return fields[field-1].getOID();
|
|
}
|
|
|
|
/**
|
|
* This is part of the JDBC API, but is required by postgresql.Field
|
|
*/
|
|
public abstract void close() throws SQLException;
|
|
public abstract boolean next() throws SQLException;
|
|
public abstract String getString(int i) throws SQLException;
|
|
}
|
|
|