byte tuple[][] = new byte[8][];
Object[] tuple = new Object[8];
	public java.sql.ResultSet getVersionColumns(String catalog, String schema,		String table) throws SQLException	{		ResultSetField f[] = new ResultSetField[8];		ArrayList v = new ArrayList(); // The new ResultSet tuple stuff		f[0] = new ResultSetField("SCOPE", TypeOid.INT2, 2);		f[1] = new ResultSetField("COLUMN_NAME", TypeOid.VARCHAR,			getMaxNameLength());		f[2] = new ResultSetField("DATA_TYPE", TypeOid.INT2, 2);		f[3] = new ResultSetField("TYPE_NAME", TypeOid.VARCHAR,			getMaxNameLength());		f[4] = new ResultSetField("COLUMN_SIZE", TypeOid.INT4, 4);		f[5] = new ResultSetField("BUFFER_LENGTH", TypeOid.INT4, 4);		f[6] = new ResultSetField("DECIMAL_DIGITS", TypeOid.INT2, 2);		f[7] = new ResultSetField("PSEUDO_COLUMN", TypeOid.INT2, 2);		byte tuple[][] = new byte[8][];		/*		 * Postgresql does not have any column types that are automatically		 * updated like some databases' timestamp type. We can't tell what rules		 * or triggers might be doing, so we are left with the system columns		 * that change on an update. An update may change all of the following		 * system columns: ctid, xmax, xmin, cmax, and cmin. Depending on if we		 * are in a transaction and wether we roll it back or not the only		 * guaranteed change is to ctid. -KJ		 */		tuple[0] = null;		tuple[1] = encodeString("ctid");		tuple[2] = encodeString(Integer.toString(m_connection.getSQLType("tid")));		tuple[3] = encodeString("tid");		tuple[4] = null;		tuple[5] = null;		tuple[6] = null;		tuple[7] = encodeString(Integer			.toString(java.sql.DatabaseMetaData.versionColumnPseudo));		v.add(tuple);		/*		 * Perhaps we should check that the given catalog.schema.table actually		 * exists. -KJ		 */		return createSyntheticResultSet(f, v);	}