Commit 09634eaf authored by Bruce Momjian's avatar Bruce Momjian

Indent jdbc case labels using pgjindent.

parent 6c8120d6
...@@ -291,7 +291,6 @@ public class ImageViewer implements ItemListener ...@@ -291,7 +291,6 @@ public class ImageViewer implements ItemListener
public void run() public void run()
{ {
// Now the real import stuff // Now the real import stuff
if (name != null && dir != null) if (name != null && dir != null)
{ {
......
...@@ -214,21 +214,21 @@ public class Unicode ...@@ -214,21 +214,21 @@ public class Unicode
{ {
switch (mode) switch (mode)
{ {
case CREATE: case CREATE:
log("Exception creating database", sqle); log("Exception creating database", sqle);
break; break;
case INSERT: case INSERT:
log("Exception inserting block " + blockNum, sqle); log("Exception inserting block " + blockNum, sqle);
break; break;
case SELECT: case SELECT:
log("Exception selecting block " + blockNum, sqle); log("Exception selecting block " + blockNum, sqle);
break; break;
case LIKE: case LIKE:
log("Exception doing LIKE on block " + blockNum, sqle); log("Exception doing LIKE on block " + blockNum, sqle);
break; break;
default: default:
log("Exception", sqle); log("Exception", sqle);
break; break;
} }
} }
catch (ClassNotFoundException cnfe) catch (ClassNotFoundException cnfe)
......
...@@ -6,7 +6,7 @@ import java.text.*; ...@@ -6,7 +6,7 @@ import java.text.*;
/* /*
* *
* $Id: basic.java,v 1.9 2001/11/19 22:43:13 momjian Exp $ * $Id: basic.java,v 1.10 2001/11/19 23:16:44 momjian Exp $
* *
* This example tests the basic components of the JDBC driver, and shows * This example tests the basic components of the JDBC driver, and shows
* how even the simplest of queries can be implemented. * how even the simplest of queries can be implemented.
...@@ -137,6 +137,7 @@ public class basic ...@@ -137,6 +137,7 @@ public class basic
// Now run the query again, showing a more efficient way of getting the // Now run the query again, showing a more efficient way of getting the
// result if you don't know what column number a value is in // result if you don't know what column number a value is in
System.out.println("performing another query"); System.out.println("performing another query");
rs = st.executeQuery("select * from basic where b>1"); rs = st.executeQuery("select * from basic where b>1");
if (rs != null) if (rs != null)
...@@ -163,6 +164,7 @@ public class basic ...@@ -163,6 +164,7 @@ public class basic
// Now test maxrows by setting it to 3 rows // Now test maxrows by setting it to 3 rows
st.setMaxRows(3); st.setMaxRows(3);
System.out.println("performing a query limited to " + st.getMaxRows()); System.out.println("performing a query limited to " + st.getMaxRows());
rs = st.executeQuery("select a, b from basic"); rs = st.executeQuery("select a, b from basic");
......
...@@ -61,7 +61,6 @@ public class blobtest ...@@ -61,7 +61,6 @@ public class blobtest
System.out.println("Now closing the connection"); System.out.println("Now closing the connection");
s.close(); s.close();
db.close(); db.close();
} }
/* /*
...@@ -171,7 +170,6 @@ public class blobtest ...@@ -171,7 +170,6 @@ public class blobtest
lobj.unlink(oid); lobj.unlink(oid);
} }
//=======================================================================
// This tests the Blob interface of the JDBC 2.0 specification // This tests the Blob interface of the JDBC 2.0 specification
public void jdbc2api(int oid) throws SQLException, IOException public void jdbc2api(int oid) throws SQLException, IOException
{ {
...@@ -218,8 +216,6 @@ public class blobtest ...@@ -218,8 +216,6 @@ public class blobtest
db.setAutoCommit(false); db.setAutoCommit(false);
} }
//=======================================================================
public static void instructions() public static void instructions()
{ {
System.err.println("java example.blobtest jdbc-url user password [debug]"); System.err.println("java example.blobtest jdbc-url user password [debug]");
......
...@@ -9,7 +9,7 @@ import org.omg.CosNaming.*; ...@@ -9,7 +9,7 @@ import org.omg.CosNaming.*;
* *
* It has no GUI, just a text frontend to keep it simple. * It has no GUI, just a text frontend to keep it simple.
* *
* $Id: StockClient.java,v 1.3 2001/11/19 22:43:13 momjian Exp $ * $Id: StockClient.java,v 1.4 2001/11/19 23:16:45 momjian Exp $
*/ */
public class StockClient public class StockClient
{ {
...@@ -116,29 +116,29 @@ public class StockClient ...@@ -116,29 +116,29 @@ public class StockClient
int i = getMenu("Main", 5); int i = getMenu("Main", 5);
switch (i) switch (i)
{ {
case 0: case 0:
run = false; run = false;
break; break;
case 1: case 1:
displayItem(); displayItem();
break; break;
case 2: case 2:
bookOut(); bookOut();
break; break;
case 3: case 3:
bookIn(); bookIn();
break; break;
case 4: case 4:
order(0); order(0);
break; break;
case 5: case 5:
displayAll(); displayAll();
break; break;
} }
} }
} }
......
...@@ -9,7 +9,6 @@ import java.text.*; ...@@ -9,7 +9,6 @@ import java.text.*;
* *
* To use this example, you need a database to be in existence. This example * To use this example, you need a database to be in existence. This example
* will create a table called datestyle. * will create a table called datestyle.
*
*/ */
public class datestyle public class datestyle
...@@ -105,7 +104,6 @@ public class datestyle ...@@ -105,7 +104,6 @@ public class datestyle
ps.setDate(1, standard); ps.setDate(1, standard);
ps.executeUpdate(); ps.executeUpdate();
ps.close(); ps.close();
} }
/* /*
......
...@@ -218,7 +218,6 @@ public class metadata ...@@ -218,7 +218,6 @@ public class metadata
{ {
if (line.startsWith("\\d")) if (line.startsWith("\\d"))
{ {
if (line.startsWith("\\d ")) if (line.startsWith("\\d "))
{ {
// Display details about a table // Display details about a table
......
...@@ -50,7 +50,7 @@ public class psql ...@@ -50,7 +50,7 @@ public class psql
// Now the main loop. // Now the main loop.
int tt = 0, lineno = 1; int tt = 0, lineno = 1;
while (tt != StreamTokenizer.TT_EOF && ! done) while (tt != StreamTokenizer.TT_EOF && ! done)
{ // done added by CWJ to permit \q command {
System.out.print("[" + lineno + "] "); System.out.print("[" + lineno + "] ");
System.out.flush(); System.out.flush();
...@@ -72,7 +72,6 @@ public class psql ...@@ -72,7 +72,6 @@ public class psql
System.out.println("Now closing the connection"); System.out.println("Now closing the connection");
st.close(); st.close();
db.close(); db.close();
} }
/* /*
......
...@@ -53,7 +53,6 @@ public class threadsafe ...@@ -53,7 +53,6 @@ public class threadsafe
System.out.println("Now closing the connection"); System.out.println("Now closing the connection");
st.close(); st.close();
db.close(); db.close();
} }
/* /*
...@@ -108,7 +107,6 @@ public class threadsafe ...@@ -108,7 +107,6 @@ public class threadsafe
System.out.println("Waiting for threads to run"); System.out.println("Waiting for threads to run");
while (thread1.isAlive() || thread2.isAlive() || thread3.isAlive()) while (thread1.isAlive() || thread2.isAlive() || thread3.isAlive())
thread0.yield(); thread0.yield();
} }
finally finally
{ {
......
...@@ -11,7 +11,7 @@ import org.postgresql.util.*; ...@@ -11,7 +11,7 @@ import org.postgresql.util.*;
import org.postgresql.core.*; import org.postgresql.core.*;
/* /*
* $Id: Connection.java,v 1.36 2001/11/19 22:33:37 momjian Exp $ * $Id: Connection.java,v 1.37 2001/11/19 23:16:45 momjian Exp $
* *
* This abstract class is used by org.postgresql.Driver to open either the JDBC1 or * This abstract class is used by org.postgresql.Driver to open either the JDBC1 or
* JDBC2 versions of the Connection class. * JDBC2 versions of the Connection class.
...@@ -115,7 +115,7 @@ public abstract class Connection ...@@ -115,7 +115,7 @@ public abstract class Connection
this_url = url; this_url = url;
PG_DATABASE = database; PG_DATABASE = database;
PG_USER = info.getProperty("user"); PG_USER = info.getProperty("user");
PG_PASSWORD = info.getProperty("password",""); PG_PASSWORD = info.getProperty("password", "");
PG_PORT = port; PG_PORT = port;
PG_HOST = host; PG_HOST = host;
PG_STATUS = CONNECTION_BAD; PG_STATUS = CONNECTION_BAD;
...@@ -168,88 +168,88 @@ public abstract class Connection ...@@ -168,88 +168,88 @@ public abstract class Connection
int beresp = pg_stream.ReceiveChar(); int beresp = pg_stream.ReceiveChar();
switch (beresp) switch (beresp)
{ {
case 'E': case 'E':
// An error occured, so pass the error message to the // An error occured, so pass the error message to the
// user. // user.
// //
// The most common one to be thrown here is: // The most common one to be thrown here is:
// "User authentication failed" // "User authentication failed"
// //
throw new SQLException(pg_stream.ReceiveString(encoding)); throw new SQLException(pg_stream.ReceiveString(encoding));
case 'R': case 'R':
// Get the type of request // Get the type of request
areq = pg_stream.ReceiveIntegerR(4); areq = pg_stream.ReceiveIntegerR(4);
// Get the crypt password salt if there is one // Get the crypt password salt if there is one
if (areq == AUTH_REQ_CRYPT) if (areq == AUTH_REQ_CRYPT)
{ {
byte[] rst = new byte[2]; byte[] rst = new byte[2];
rst[0] = (byte)pg_stream.ReceiveChar(); rst[0] = (byte)pg_stream.ReceiveChar();
rst[1] = (byte)pg_stream.ReceiveChar(); rst[1] = (byte)pg_stream.ReceiveChar();
salt = new String(rst, 0, 2); salt = new String(rst, 0, 2);
DriverManager.println("Crypt salt=" + salt); DriverManager.println("Crypt salt=" + salt);
} }
// Or get the md5 password salt if there is one // Or get the md5 password salt if there is one
if (areq == AUTH_REQ_MD5) if (areq == AUTH_REQ_MD5)
{ {
byte[] rst = new byte[4]; byte[] rst = new byte[4];
rst[0] = (byte)pg_stream.ReceiveChar(); rst[0] = (byte)pg_stream.ReceiveChar();
rst[1] = (byte)pg_stream.ReceiveChar(); rst[1] = (byte)pg_stream.ReceiveChar();
rst[2] = (byte)pg_stream.ReceiveChar(); rst[2] = (byte)pg_stream.ReceiveChar();
rst[3] = (byte)pg_stream.ReceiveChar(); rst[3] = (byte)pg_stream.ReceiveChar();
salt = new String(rst, 0, 4); salt = new String(rst, 0, 4);
DriverManager.println("MD5 salt=" + salt); DriverManager.println("MD5 salt=" + salt);
} }
// now send the auth packet // now send the auth packet
switch (areq) switch (areq)
{ {
case AUTH_REQ_OK: case AUTH_REQ_OK:
break; break;
case AUTH_REQ_KRB4: case AUTH_REQ_KRB4:
DriverManager.println("postgresql: KRB4"); DriverManager.println("postgresql: KRB4");
throw new PSQLException("postgresql.con.kerb4"); throw new PSQLException("postgresql.con.kerb4");
case AUTH_REQ_KRB5: case AUTH_REQ_KRB5:
DriverManager.println("postgresql: KRB5"); DriverManager.println("postgresql: KRB5");
throw new PSQLException("postgresql.con.kerb5"); throw new PSQLException("postgresql.con.kerb5");
case AUTH_REQ_PASSWORD: case AUTH_REQ_PASSWORD:
DriverManager.println("postgresql: PASSWORD"); DriverManager.println("postgresql: PASSWORD");
pg_stream.SendInteger(5 + PG_PASSWORD.length(), 4); pg_stream.SendInteger(5 + PG_PASSWORD.length(), 4);
pg_stream.Send(PG_PASSWORD.getBytes()); pg_stream.Send(PG_PASSWORD.getBytes());
pg_stream.SendInteger(0, 1); pg_stream.SendInteger(0, 1);
pg_stream.flush(); pg_stream.flush();
break; break;
case AUTH_REQ_CRYPT: case AUTH_REQ_CRYPT:
DriverManager.println("postgresql: CRYPT"); DriverManager.println("postgresql: CRYPT");
String crypted = UnixCrypt.crypt(salt, PG_PASSWORD); String crypted = UnixCrypt.crypt(salt, PG_PASSWORD);
pg_stream.SendInteger(5 + crypted.length(), 4); pg_stream.SendInteger(5 + crypted.length(), 4);
pg_stream.Send(crypted.getBytes()); pg_stream.Send(crypted.getBytes());
pg_stream.SendInteger(0, 1); pg_stream.SendInteger(0, 1);
pg_stream.flush(); pg_stream.flush();
break; break;
case AUTH_REQ_MD5: case AUTH_REQ_MD5:
DriverManager.println("postgresql: MD5"); DriverManager.println("postgresql: MD5");
byte[] digest = MD5Digest.encode(PG_USER, PG_PASSWORD, salt); byte[] digest = MD5Digest.encode(PG_USER, PG_PASSWORD, salt);
pg_stream.SendInteger(5 + digest.length, 4); pg_stream.SendInteger(5 + digest.length, 4);
pg_stream.Send(digest); pg_stream.Send(digest);
pg_stream.SendInteger(0, 1); pg_stream.SendInteger(0, 1);
pg_stream.flush(); pg_stream.flush();
break;
default:
throw new PSQLException("postgresql.con.auth", new Integer(areq));
}
break; break;
default: default:
throw new PSQLException("postgresql.con.auth", new Integer(areq)); throw new PSQLException("postgresql.con.authfail");
}
break;
default:
throw new PSQLException("postgresql.con.authfail");
} }
} }
while (areq != AUTH_REQ_OK); while (areq != AUTH_REQ_OK);
...@@ -265,28 +265,28 @@ public abstract class Connection ...@@ -265,28 +265,28 @@ public abstract class Connection
int beresp = pg_stream.ReceiveChar(); int beresp = pg_stream.ReceiveChar();
switch (beresp) switch (beresp)
{ {
case 'K': case 'K':
pid = pg_stream.ReceiveInteger(4); pid = pg_stream.ReceiveInteger(4);
ckey = pg_stream.ReceiveInteger(4); ckey = pg_stream.ReceiveInteger(4);
break; break;
case 'E': case 'E':
case 'N': case 'N':
throw new SQLException(pg_stream.ReceiveString(encoding)); throw new SQLException(pg_stream.ReceiveString(encoding));
default: default:
throw new PSQLException("postgresql.con.setup"); throw new PSQLException("postgresql.con.setup");
} }
// Expect ReadyForQuery packet // Expect ReadyForQuery packet
beresp = pg_stream.ReceiveChar(); beresp = pg_stream.ReceiveChar();
switch (beresp) switch (beresp)
{ {
case 'Z': case 'Z':
break; break;
case 'E': case 'E':
case 'N': case 'N':
throw new SQLException(pg_stream.ReceiveString(encoding)); throw new SQLException(pg_stream.ReceiveString(encoding));
default: default:
throw new PSQLException("postgresql.con.setup"); throw new PSQLException("postgresql.con.setup");
} }
firstWarning = null; firstWarning = null;
...@@ -958,15 +958,15 @@ public abstract class Connection ...@@ -958,15 +958,15 @@ public abstract class Connection
isolationLevelSQL = "SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL "; isolationLevelSQL = "SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL ";
switch (isolationLevel) switch (isolationLevel)
{ {
case java.sql.Connection.TRANSACTION_READ_COMMITTED: case java.sql.Connection.TRANSACTION_READ_COMMITTED:
isolationLevelSQL += "READ COMMITTED"; isolationLevelSQL += "READ COMMITTED";
break; break;
case java.sql.Connection.TRANSACTION_SERIALIZABLE: case java.sql.Connection.TRANSACTION_SERIALIZABLE:
isolationLevelSQL += "SERIALIZABLE"; isolationLevelSQL += "SERIALIZABLE";
break; break;
default: default:
throw new PSQLException("postgresql.con.isolevel", throw new PSQLException("postgresql.con.isolevel",
new Integer(isolationLevel)); new Integer(isolationLevel));
} }
} }
ExecSQL(isolationLevelSQL); ExecSQL(isolationLevelSQL);
...@@ -993,16 +993,16 @@ public abstract class Connection ...@@ -993,16 +993,16 @@ public abstract class Connection
switch (isolationLevel) switch (isolationLevel)
{ {
case java.sql.Connection.TRANSACTION_READ_COMMITTED: case java.sql.Connection.TRANSACTION_READ_COMMITTED:
sb.append(" READ COMMITTED"); sb.append(" READ COMMITTED");
break; break;
case java.sql.Connection.TRANSACTION_SERIALIZABLE: case java.sql.Connection.TRANSACTION_SERIALIZABLE:
sb.append(" SERIALIZABLE"); sb.append(" SERIALIZABLE");
break; break;
default: default:
throw new PSQLException("postgresql.con.isolevel", new Integer(isolationLevel)); throw new PSQLException("postgresql.con.isolevel", new Integer(isolationLevel));
} }
return sb.toString(); return sb.toString();
} }
...@@ -1166,6 +1166,5 @@ public abstract class Connection ...@@ -1166,6 +1166,5 @@ public abstract class Connection
} }
return pgType; return pgType;
} }
} }
...@@ -10,7 +10,7 @@ import org.postgresql.core.*; ...@@ -10,7 +10,7 @@ import org.postgresql.core.*;
import org.postgresql.util.*; import org.postgresql.util.*;
/* /*
* $Id: PG_Stream.java,v 1.15 2001/11/19 22:33:37 momjian Exp $ * $Id: PG_Stream.java,v 1.16 2001/11/19 23:16:45 momjian Exp $
* *
* This class is used by Connection & PGlobj for communicating with the * This class is used by Connection & PGlobj for communicating with the
* backend. * backend.
...@@ -371,5 +371,4 @@ public class PG_Stream ...@@ -371,5 +371,4 @@ public class PG_Stream
pg_input.close(); pg_input.close();
connection.close(); connection.close();
} }
} }
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
* *
* Copyright 1999 (C) Exoffice Technologies Inc. All Rights Reserved. * Copyright 1999 (C) Exoffice Technologies Inc. All Rights Reserved.
* *
* $Id: PostgresqlDataSource.java,v 1.4 2001/11/19 22:33:37 momjian Exp $ * $Id: PostgresqlDataSource.java,v 1.5 2001/11/19 23:16:45 momjian Exp $
*/ */
...@@ -133,38 +133,32 @@ public class PostgresqlDataSource ...@@ -133,38 +133,32 @@ public class PostgresqlDataSource
*/ */
private int _loginTimeout; private int _loginTimeout;
/* /*
* Holds the user's account name. * Holds the user's account name.
*/ */
private String _user; private String _user;
/* /*
* Holds the database password. * Holds the database password.
*/ */
private String _password; private String _password;
/* /*
* Holds the name of the particular database on the server. * Holds the name of the particular database on the server.
*/ */
private String _databaseName; private String _databaseName;
/* /*
* Description of this datasource. * Description of this datasource.
*/ */
private String _description = "PostgreSQL DataSource"; private String _description = "PostgreSQL DataSource";
/* /*
* Holds the database server name. If null, this is * Holds the database server name. If null, this is
* assumed to be the localhost. * assumed to be the localhost.
*/ */
private String _serverName; private String _serverName;
/* /*
* Holds the port number where a server is listening. * Holds the port number where a server is listening.
* The default value will open a connection with an * The default value will open a connection with an
...@@ -172,7 +166,6 @@ public class PostgresqlDataSource ...@@ -172,7 +166,6 @@ public class PostgresqlDataSource
*/ */
private int _portNumber = DEFAULT_PORT; private int _portNumber = DEFAULT_PORT;
/* /*
* The default port number. Since we open the connection * The default port number. Since we open the connection
* without specifying the port if it's the default one, * without specifying the port if it's the default one,
...@@ -180,7 +173,6 @@ public class PostgresqlDataSource ...@@ -180,7 +173,6 @@ public class PostgresqlDataSource
*/ */
private static final int DEFAULT_PORT = 0; private static final int DEFAULT_PORT = 0;
/* /*
* Holds the log writer to which all messages should be * Holds the log writer to which all messages should be
* printed. The default writer is obtained from the driver * printed. The default writer is obtained from the driver
...@@ -189,7 +181,6 @@ public class PostgresqlDataSource ...@@ -189,7 +181,6 @@ public class PostgresqlDataSource
*/ */
private transient PrintWriter _logWriter; private transient PrintWriter _logWriter;
/* /*
* Each datasource maintains it's own driver, in case of * Each datasource maintains it's own driver, in case of
* driver-specific setup (e.g. pools, log writer). * driver-specific setup (e.g. pools, log writer).
...@@ -197,9 +188,6 @@ public class PostgresqlDataSource ...@@ -197,9 +188,6 @@ public class PostgresqlDataSource
// FIXME // FIXME
// private transient postgresql.Driver _driver; // private transient postgresql.Driver _driver;
private transient org.postgresql.Driver _driver; private transient org.postgresql.Driver _driver;
//---------
public PostgresqlDataSource() public PostgresqlDataSource()
{ {
...@@ -233,12 +221,10 @@ public class PostgresqlDataSource ...@@ -233,12 +221,10 @@ public class PostgresqlDataSource
// FIXME // FIXME
// _driver = new postgresql.Driver(); // _driver = new postgresql.Driver();
_driver = new org.postgresql.Driver(); _driver = new org.postgresql.Driver();
//-----------
//FIXME //FIXME
// _driver.setLogWriter( _logWriter ); // _driver.setLogWriter( _logWriter );
// Method seems to be unavailable. Just commented it out. // Method seems to be unavailable. Just commented it out.
//----------
} }
catch ( SQLException except ) catch ( SQLException except )
{ {
...@@ -282,7 +268,6 @@ public class PostgresqlDataSource ...@@ -282,7 +268,6 @@ public class PostgresqlDataSource
// if ( ! ( conn instanceof postgresql.jdbc2.Connection ) ) { // if ( ! ( conn instanceof postgresql.jdbc2.Connection ) ) {
if ( ! ( conn instanceof org.postgresql.jdbc2.Connection ) ) if ( ! ( conn instanceof org.postgresql.jdbc2.Connection ) )
{ {
//--------
if ( _logWriter != null ) if ( _logWriter != null )
_logWriter.println( "DataSource: JDBC 1 connections not supported" ); _logWriter.println( "DataSource: JDBC 1 connections not supported" );
throw new PSQLException( "postgresql.ds.onlyjdbc2" ); throw new PSQLException( "postgresql.ds.onlyjdbc2" );
...@@ -317,7 +302,6 @@ public class PostgresqlDataSource ...@@ -317,7 +302,6 @@ public class PostgresqlDataSource
// FIXME // FIXME
// _driver.setLogWriter( writer ); // _driver.setLogWriter( writer );
// Method seems to be unavailable. Commented it out. // Method seems to be unavailable. Commented it out.
//----------
_logWriter = writer; _logWriter = writer;
} }
} }
...@@ -617,7 +601,5 @@ public class PostgresqlDataSource ...@@ -617,7 +601,5 @@ public class PostgresqlDataSource
else else
return null; return null;
} }
} }
...@@ -269,50 +269,50 @@ public abstract class Statement ...@@ -269,50 +269,50 @@ public abstract class Statement
char c = sql.charAt(i); char c = sql.charAt(i);
switch (state) switch (state)
{ {
case IN_SQLCODE: case IN_SQLCODE:
if (c == '\'') // start of a string? if (c == '\'') // start of a string?
state = IN_STRING; state = IN_STRING;
else if (c == '{') // start of an escape code? else if (c == '{') // start of an escape code?
if (i + 1 < len) if (i + 1 < len)
{
char next = sql.charAt(i + 1);
if (next == 'd')
{
state = ESC_TIMEDATE;
i++;
break;
}
else if (next == 't')
{ {
state = ESC_TIMEDATE; char next = sql.charAt(i + 1);
i += (i + 2 < len && sql.charAt(i + 2) == 's') ? 2 : 1; if (next == 'd')
break; {
state = ESC_TIMEDATE;
i++;
break;
}
else if (next == 't')
{
state = ESC_TIMEDATE;
i += (i + 2 < len && sql.charAt(i + 2) == 's') ? 2 : 1;
break;
}
} }
} newsql.append(c);
newsql.append(c); break;
break;
case IN_STRING:
if (c == '\'') // end of string?
state = IN_SQLCODE;
else if (c == '\\') // a backslash?
state = BACKSLASH;
newsql.append(c); case IN_STRING:
break; if (c == '\'') // end of string?
state = IN_SQLCODE;
else if (c == '\\') // a backslash?
state = BACKSLASH;
case BACKSLASH: newsql.append(c);
state = IN_STRING; break;
newsql.append(c); case BACKSLASH:
break; state = IN_STRING;
case ESC_TIMEDATE:
if (c == '}')
state = IN_SQLCODE; // end of escape code.
else
newsql.append(c); newsql.append(c);
break; break;
case ESC_TIMEDATE:
if (c == '}')
state = IN_SQLCODE; // end of escape code.
else
newsql.append(c);
break;
} // end switch } // end switch
} }
......
...@@ -6,7 +6,6 @@ package org.postgresql.core; ...@@ -6,7 +6,6 @@ package org.postgresql.core;
*/ */
public class BytePoolDim1 public class BytePoolDim1
{ {
/* /*
* The maximum size of the array we manage. * The maximum size of the array we manage.
*/ */
...@@ -47,26 +46,26 @@ public class BytePoolDim1 ...@@ -47,26 +46,26 @@ public class BytePoolDim1
// for now until the bug can be removed // for now until the bug can be removed
return new byte[size]; return new byte[size];
/* /*
// Don't pool if >maxsize // Don't pool if >maxsize
if (size > maxsize){ if (size > maxsize){
return new byte[size]; return new byte[size];
} }
ObjectPool not_usel = notusemap[size]; ObjectPool not_usel = notusemap[size];
ObjectPool in_usel = inusemap[size]; ObjectPool in_usel = inusemap[size];
byte b[] = null; byte b[] = null;
// Fetch from the unused pool if available otherwise allocate a new // Fetch from the unused pool if available otherwise allocate a new
// now array // now array
if (!not_usel.isEmpty()) { if (!not_usel.isEmpty()) {
Object o = not_usel.remove(); Object o = not_usel.remove();
b = (byte[]) o; b = (byte[]) o;
} else } else
b = new byte[size]; b = new byte[size];
in_usel.add(b); in_usel.add(b);
return b; return b;
*/ */
} }
/* /*
......
...@@ -20,22 +20,22 @@ public class BytePoolDim2 ...@@ -20,22 +20,22 @@ public class BytePoolDim2
// For now until the bug can be removed // For now until the bug can be removed
return new byte[size][0]; return new byte[size][0];
/* /*
if (size > maxsize){ if (size > maxsize){
return new byte[size][0]; return new byte[size][0];
} }
ObjectPool not_usel = notusemap[size]; ObjectPool not_usel = notusemap[size];
ObjectPool in_usel = inusemap[size]; ObjectPool in_usel = inusemap[size];
byte b[][] = null; byte b[][] = null;
if (!not_usel.isEmpty()) { if (!not_usel.isEmpty()) {
Object o = not_usel.remove(); Object o = not_usel.remove();
b = (byte[][]) o; b = (byte[][]) o;
} else } else
b = new byte[size][0]; b = new byte[size][0];
in_usel.add(b); in_usel.add(b);
return b; return b;
*/ */
} }
public void release(byte[][] b) public void release(byte[][] b)
......
...@@ -13,7 +13,7 @@ import org.postgresql.util.PSQLException; ...@@ -13,7 +13,7 @@ import org.postgresql.util.PSQLException;
* <p>The lifetime of a QueryExecutor object is from sending the query * <p>The lifetime of a QueryExecutor object is from sending the query
* until the response has been received from the backend. * until the response has been received from the backend.
* *
* $Id: QueryExecutor.java,v 1.4 2001/11/19 22:33:37 momjian Exp $ * $Id: QueryExecutor.java,v 1.5 2001/11/19 23:16:45 momjian Exp $
*/ */
public class QueryExecutor public class QueryExecutor
...@@ -69,53 +69,53 @@ public class QueryExecutor ...@@ -69,53 +69,53 @@ public class QueryExecutor
switch (c) switch (c)
{ {
case 'A': // Asynchronous Notify case 'A': // Asynchronous Notify
int pid = pg_stream.ReceiveInteger(4); int pid = pg_stream.ReceiveInteger(4);
String msg = pg_stream.ReceiveString(connection.getEncoding()); String msg = pg_stream.ReceiveString(connection.getEncoding());
break; break;
case 'B': // Binary Data Transfer case 'B': // Binary Data Transfer
receiveTuple(true); receiveTuple(true);
break; break;
case 'C': // Command Status case 'C': // Command Status
receiveCommandStatus(); receiveCommandStatus();
if (fields != null) if (fields != null)
hfr = true; hfr = true;
else else
{ {
sendQuery(" "); sendQuery(" ");
fqp++; fqp++;
} }
break; break;
case 'D': // Text Data Transfer case 'D': // Text Data Transfer
receiveTuple(false); receiveTuple(false);
break; break;
case 'E': // Error Message case 'E': // Error Message
throw new SQLException(pg_stream.ReceiveString(connection.getEncoding())); throw new SQLException(pg_stream.ReceiveString(connection.getEncoding()));
case 'I': // Empty Query case 'I': // Empty Query
int t = pg_stream.ReceiveChar(); int t = pg_stream.ReceiveChar();
if (t != 0) if (t != 0)
throw new PSQLException("postgresql.con.garbled"); throw new PSQLException("postgresql.con.garbled");
if (fqp > 0) if (fqp > 0)
fqp--; fqp--;
if (fqp == 0) if (fqp == 0)
hfr = true; hfr = true;
break; break;
case 'N': // Error Notification case 'N': // Error Notification
connection.addWarning(pg_stream.ReceiveString(connection.getEncoding())); connection.addWarning(pg_stream.ReceiveString(connection.getEncoding()));
break; break;
case 'P': // Portal Name case 'P': // Portal Name
String pname = pg_stream.ReceiveString(connection.getEncoding()); String pname = pg_stream.ReceiveString(connection.getEncoding());
break; break;
case 'T': // MetaData Field Description case 'T': // MetaData Field Description
receiveFields(); receiveFields();
break; break;
case 'Z': // backend ready for query, ignore for now :-) case 'Z': // backend ready for query, ignore for now :-)
break; break;
default: default:
throw new PSQLException("postgresql.con.type", throw new PSQLException("postgresql.con.type",
new Character((char) c)); new Character((char) c));
} }
} }
return connection.getResultSet(connection, statement, fields, tuples, status, update_count, insert_oid, binaryCursor); return connection.getResultSet(connection, statement, fields, tuples, status, update_count, insert_oid, binaryCursor);
...@@ -162,7 +162,6 @@ public class QueryExecutor ...@@ -162,7 +162,6 @@ public class QueryExecutor
*/ */
private void receiveCommandStatus() throws SQLException private void receiveCommandStatus() throws SQLException
{ {
status = pg_stream.ReceiveString(connection.getEncoding()); status = pg_stream.ReceiveString(connection.getEncoding());
try try
......
...@@ -61,7 +61,6 @@ public class Fastpath ...@@ -61,7 +61,6 @@ public class Fastpath
// added Oct 7 1998 to give us thread safety // added Oct 7 1998 to give us thread safety
synchronized (stream) synchronized (stream)
{ {
// send the function call // send the function call
try try
{ {
...@@ -105,52 +104,52 @@ public class Fastpath ...@@ -105,52 +104,52 @@ public class Fastpath
//DriverManager.println("ReceiveChar() = "+in+" '"+((char)in)+"'"); //DriverManager.println("ReceiveChar() = "+in+" '"+((char)in)+"'");
switch (in) switch (in)
{ {
case 'V': case 'V':
break; break;
//------------------------------ //------------------------------
// Function returned properly // Function returned properly
// //
case 'G': case 'G':
int sz = stream.ReceiveIntegerR(4); int sz = stream.ReceiveIntegerR(4);
//DriverManager.println("G: size="+sz); //debug //DriverManager.println("G: size="+sz); //debug
// Return an Integer if // Return an Integer if
if (resulttype) if (resulttype)
result = new Integer(stream.ReceiveIntegerR(sz)); result = new Integer(stream.ReceiveIntegerR(sz));
else else
{ {
byte buf[] = new byte[sz]; byte buf[] = new byte[sz];
stream.Receive(buf, 0, sz); stream.Receive(buf, 0, sz);
result = buf; result = buf;
} }
break; break;
//------------------------------ //------------------------------
// Error message returned // Error message returned
case 'E': case 'E':
throw new PSQLException("postgresql.fp.error", stream.ReceiveString(conn.getEncoding())); throw new PSQLException("postgresql.fp.error", stream.ReceiveString(conn.getEncoding()));
//------------------------------ //------------------------------
// Notice from backend // Notice from backend
case 'N': case 'N':
conn.addWarning(stream.ReceiveString(conn.getEncoding())); conn.addWarning(stream.ReceiveString(conn.getEncoding()));
break; break;
//------------------------------ //------------------------------
// End of results // End of results
// //
// Here we simply return res, which would contain the result // Here we simply return res, which would contain the result
// processed earlier. If no result, this already contains null // processed earlier. If no result, this already contains null
case '0': case '0':
//DriverManager.println("returning "+result); //DriverManager.println("returning "+result);
return result; return result;
case 'Z': case 'Z':
break; break;
default: default:
throw new PSQLException("postgresql.fp.protocol", new Character((char)in)); throw new PSQLException("postgresql.fp.protocol", new Character((char)in));
} }
} }
} }
......
...@@ -148,5 +148,4 @@ public class PGpath extends PGobject implements Serializable, Cloneable ...@@ -148,5 +148,4 @@ public class PGpath extends PGobject implements Serializable, Cloneable
{ {
open = true; open = true;
} }
} }
...@@ -617,53 +617,53 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta ...@@ -617,53 +617,53 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
} }
switch (targetSqlType) switch (targetSqlType)
{ {
case Types.TINYINT: case Types.TINYINT:
case Types.SMALLINT: case Types.SMALLINT:
case Types.INTEGER: case Types.INTEGER:
case Types.BIGINT: case Types.BIGINT:
case Types.REAL: case Types.REAL:
case Types.FLOAT: case Types.FLOAT:
case Types.DOUBLE: case Types.DOUBLE:
case Types.DECIMAL: case Types.DECIMAL:
case Types.NUMERIC: case Types.NUMERIC:
if (x instanceof Boolean) if (x instanceof Boolean)
set(parameterIndex, ((Boolean)x).booleanValue() ? "1" : "0"); set(parameterIndex, ((Boolean)x).booleanValue() ? "1" : "0");
else else
set(parameterIndex, x.toString()); set(parameterIndex, x.toString());
break; break;
case Types.CHAR: case Types.CHAR:
case Types.VARCHAR: case Types.VARCHAR:
case Types.LONGVARCHAR: case Types.LONGVARCHAR:
setString(parameterIndex, x.toString()); setString(parameterIndex, x.toString());
break; break;
case Types.DATE: case Types.DATE:
setDate(parameterIndex, (java.sql.Date)x); setDate(parameterIndex, (java.sql.Date)x);
break; break;
case Types.TIME: case Types.TIME:
setTime(parameterIndex, (Time)x); setTime(parameterIndex, (Time)x);
break; break;
case Types.TIMESTAMP: case Types.TIMESTAMP:
setTimestamp(parameterIndex, (Timestamp)x); setTimestamp(parameterIndex, (Timestamp)x);
break; break;
case Types.BIT: case Types.BIT:
if (x instanceof Boolean) if (x instanceof Boolean)
{ {
set(parameterIndex, ((Boolean)x).booleanValue() ? "TRUE" : "FALSE"); set(parameterIndex, ((Boolean)x).booleanValue() ? "TRUE" : "FALSE");
} }
else else
{ {
throw new PSQLException("postgresql.prep.type");
}
break;
case Types.BINARY:
case Types.VARBINARY:
setObject(parameterIndex, x);
break;
case Types.OTHER:
setString(parameterIndex, ((PGobject)x).getValue());
break;
default:
throw new PSQLException("postgresql.prep.type"); throw new PSQLException("postgresql.prep.type");
}
break;
case Types.BINARY:
case Types.VARBINARY:
setObject(parameterIndex, x);
break;
case Types.OTHER:
setString(parameterIndex, ((PGobject)x).getValue());
break;
default:
throw new PSQLException("postgresql.prep.type");
} }
} }
......
...@@ -394,40 +394,40 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -394,40 +394,40 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
wasNullFlag = (this_row[columnIndex - 1] == null); wasNullFlag = (this_row[columnIndex - 1] == null);
if (!wasNullFlag) if (!wasNullFlag)
{ {
if (binaryCursor) 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
if (fields[columnIndex - 1].getPGType().equals("bytea"))
{ {
return PGbytea.toBytes(getString(columnIndex)); //If the data is already binary then just return it
return this_row[columnIndex - 1];
} }
else else if (connection.haveMinimumCompatibleVersion("7.2"))
{
return this_row[columnIndex - 1];
}
}
else
{
//Version 7.1 and earlier supports LargeObjects for byte arrays
// Handle OID's as BLOBS
if ( fields[columnIndex - 1].getOID() == 26)
{ {
LargeObjectManager lom = connection.getLargeObjectAPI(); //Version 7.2 supports the bytea datatype for byte arrays
LargeObject lob = lom.open(getInt(columnIndex)); if (fields[columnIndex - 1].getPGType().equals("bytea"))
byte buf[] = lob.read(lob.size()); {
lob.close(); return PGbytea.toBytes(getString(columnIndex));
return buf; }
else
{
return this_row[columnIndex - 1];
}
} }
else else
{ {
return this_row[columnIndex - 1]; //Version 7.1 and earlier supports LargeObjects for byte arrays
// Handle OID's as BLOBS
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;
}
else
{
return this_row[columnIndex - 1];
}
} }
}
} }
return null; return null;
} }
...@@ -447,10 +447,13 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -447,10 +447,13 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
return null; return null;
// length == 10: SQL Date // length == 10: SQL Date
// length > 10: SQL Timestamp, assumes PGDATESTYLE=ISO // length > 10: SQL Timestamp, assumes PGDATESTYLE=ISO
try { try
return java.sql.Date.valueOf((s.length() == 10) ? s : s.substring(0,10)); {
} catch (NumberFormatException e) { return java.sql.Date.valueOf((s.length() == 10) ? s : s.substring(0, 10));
throw new PSQLException("postgresql.res.baddate", s); }
catch (NumberFormatException e)
{
throw new PSQLException("postgresql.res.baddate", s);
} }
} }
...@@ -926,43 +929,43 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -926,43 +929,43 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
switch (field.getSQLType()) switch (field.getSQLType())
{ {
case Types.BIT: case Types.BIT:
return new Boolean(getBoolean(columnIndex)); return new Boolean(getBoolean(columnIndex));
case Types.SMALLINT: case Types.SMALLINT:
return new Integer(getInt(columnIndex)); return new Integer(getInt(columnIndex));
case Types.INTEGER: case Types.INTEGER:
return new Integer(getInt(columnIndex)); return new Integer(getInt(columnIndex));
case Types.BIGINT: case Types.BIGINT:
return new Long(getLong(columnIndex)); return new Long(getLong(columnIndex));
case Types.NUMERIC: case Types.NUMERIC:
return getBigDecimal(columnIndex, ((field.getMod() - 4) & 0xffff)); return getBigDecimal(columnIndex, ((field.getMod() - 4) & 0xffff));
case Types.REAL: case Types.REAL:
return new Float(getFloat(columnIndex)); return new Float(getFloat(columnIndex));
case Types.DOUBLE: case Types.DOUBLE:
return new Double(getDouble(columnIndex)); return new Double(getDouble(columnIndex));
case Types.CHAR: case Types.CHAR:
case Types.VARCHAR: case Types.VARCHAR:
return getString(columnIndex);
case Types.DATE:
return getDate(columnIndex);
case Types.TIME:
return getTime(columnIndex);
case Types.TIMESTAMP:
return getTimestamp(columnIndex);
case Types.BINARY:
case Types.VARBINARY:
return getBytes(columnIndex);
default:
String type = field.getPGType();
// if the backend doesn't know the type then coerce to String
if (type.equals("unknown"))
{
return getString(columnIndex); return getString(columnIndex);
} case Types.DATE:
else return getDate(columnIndex);
{ case Types.TIME:
return connection.getObject(field.getPGType(), getString(columnIndex)); return getTime(columnIndex);
} case Types.TIMESTAMP:
return getTimestamp(columnIndex);
case Types.BINARY:
case Types.VARBINARY:
return getBytes(columnIndex);
default:
String type = field.getPGType();
// if the backend doesn't know the type then coerce to String
if (type.equals("unknown"))
{
return getString(columnIndex);
}
else
{
return connection.getObject(field.getPGType(), getString(columnIndex));
}
} }
} }
......
...@@ -78,17 +78,17 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -78,17 +78,17 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
switch (sql_type) switch (sql_type)
{ {
case Types.SMALLINT: case Types.SMALLINT:
case Types.INTEGER: case Types.INTEGER:
case Types.FLOAT: case Types.FLOAT:
case Types.REAL: case Types.REAL:
case Types.DOUBLE: case Types.DOUBLE:
case Types.DATE: case Types.DATE:
case Types.TIME: case Types.TIME:
case Types.TIMESTAMP: case Types.TIMESTAMP:
return false; return false;
default: default:
return true; return true;
} }
} }
...@@ -112,10 +112,10 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -112,10 +112,10 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
// for further expansion. // for further expansion.
switch (sql_type) switch (sql_type)
{ {
case Types.OTHER: case Types.OTHER:
return true; return true;
default: default:
return true; return true;
} }
} }
...@@ -167,18 +167,18 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -167,18 +167,18 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
switch (sql_type) switch (sql_type)
{ {
case Types.SMALLINT: case Types.SMALLINT:
case Types.INTEGER: case Types.INTEGER:
case Types.FLOAT: case Types.FLOAT:
case Types.REAL: case Types.REAL:
case Types.DOUBLE: case Types.DOUBLE:
return true; return true;
case Types.DATE: case Types.DATE:
case Types.TIME: case Types.TIME:
case Types.TIMESTAMP: case Types.TIMESTAMP:
return false; // I don't know about these? return false; // I don't know about these?
default: default:
return false; return false;
} }
} }
...@@ -294,26 +294,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -294,26 +294,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
switch (sql_type) switch (sql_type)
{ {
case Types.SMALLINT: case Types.SMALLINT:
return 5; return 5;
case Types.INTEGER: case Types.INTEGER:
return 10; return 10;
case Types.REAL: case Types.REAL:
return 8; return 8;
case Types.FLOAT: case Types.FLOAT:
return 16; return 16;
case Types.DOUBLE: case Types.DOUBLE:
return 16; return 16;
case Types.VARCHAR: case Types.VARCHAR:
return 0; return 0;
case Types.NUMERIC: case Types.NUMERIC:
Field f = getField(column); Field f = getField(column);
if (f != null) if (f != null)
return ((0xFFFF0000)&f.getMod()) >> 16; return ((0xFFFF0000)&f.getMod()) >> 16;
else else
return 0;
default:
return 0; return 0;
default:
return 0;
} }
} }
...@@ -331,26 +331,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -331,26 +331,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
switch (sql_type) switch (sql_type)
{ {
case Types.SMALLINT: case Types.SMALLINT:
return 0; return 0;
case Types.INTEGER: case Types.INTEGER:
return 0; return 0;
case Types.REAL: case Types.REAL:
return 8; return 8;
case Types.FLOAT: case Types.FLOAT:
return 16; return 16;
case Types.DOUBLE: case Types.DOUBLE:
return 16; return 16;
case Types.VARCHAR: case Types.VARCHAR:
return 0; return 0;
case Types.NUMERIC: case Types.NUMERIC:
Field f = getField(column); Field f = getField(column);
if (f != null) if (f != null)
return (((0x0000FFFF)&f.getMod()) - 4); return (((0x0000FFFF)&f.getMod()) - 4);
else else
return 0;
default:
return 0; return 0;
default:
return 0;
} }
} }
......
...@@ -652,53 +652,53 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta ...@@ -652,53 +652,53 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
} }
switch (targetSqlType) switch (targetSqlType)
{ {
case Types.TINYINT: case Types.TINYINT:
case Types.SMALLINT: case Types.SMALLINT:
case Types.INTEGER: case Types.INTEGER:
case Types.BIGINT: case Types.BIGINT:
case Types.REAL: case Types.REAL:
case Types.FLOAT: case Types.FLOAT:
case Types.DOUBLE: case Types.DOUBLE:
case Types.DECIMAL: case Types.DECIMAL:
case Types.NUMERIC: case Types.NUMERIC:
if (x instanceof Boolean) if (x instanceof Boolean)
set(parameterIndex, ((Boolean)x).booleanValue() ? "1" : "0"); set(parameterIndex, ((Boolean)x).booleanValue() ? "1" : "0");
else else
set(parameterIndex, x.toString()); set(parameterIndex, x.toString());
break; break;
case Types.CHAR: case Types.CHAR:
case Types.VARCHAR: case Types.VARCHAR:
case Types.LONGVARCHAR: case Types.LONGVARCHAR:
setString(parameterIndex, x.toString()); setString(parameterIndex, x.toString());
break; break;
case Types.DATE: case Types.DATE:
setDate(parameterIndex, (java.sql.Date)x); setDate(parameterIndex, (java.sql.Date)x);
break; break;
case Types.TIME: case Types.TIME:
setTime(parameterIndex, (Time)x); setTime(parameterIndex, (Time)x);
break; break;
case Types.TIMESTAMP: case Types.TIMESTAMP:
setTimestamp(parameterIndex, (Timestamp)x); setTimestamp(parameterIndex, (Timestamp)x);
break; break;
case Types.BIT: case Types.BIT:
if (x instanceof Boolean) if (x instanceof Boolean)
{ {
set(parameterIndex, ((Boolean)x).booleanValue() ? "TRUE" : "FALSE"); set(parameterIndex, ((Boolean)x).booleanValue() ? "TRUE" : "FALSE");
} }
else else
{ {
throw new PSQLException("postgresql.prep.type");
}
break;
case Types.BINARY:
case Types.VARBINARY:
setObject(parameterIndex, x);
break;
case Types.OTHER:
setString(parameterIndex, ((PGobject)x).getValue());
break;
default:
throw new PSQLException("postgresql.prep.type"); throw new PSQLException("postgresql.prep.type");
}
break;
case Types.BINARY:
case Types.VARBINARY:
setObject(parameterIndex, x);
break;
case Types.OTHER:
setString(parameterIndex, ((PGobject)x).getValue());
break;
default:
throw new PSQLException("postgresql.prep.type");
} }
} }
......
...@@ -321,40 +321,40 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -321,40 +321,40 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
wasNullFlag = (this_row[columnIndex - 1] == null); wasNullFlag = (this_row[columnIndex - 1] == null);
if (!wasNullFlag) if (!wasNullFlag)
{ {
if (binaryCursor) 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
if (fields[columnIndex - 1].getPGType().equals("bytea"))
{ {
return PGbytea.toBytes(getString(columnIndex)); //If the data is already binary then just return it
return this_row[columnIndex - 1];
} }
else else if (connection.haveMinimumCompatibleVersion("7.2"))
{ {
return this_row[columnIndex - 1]; //Version 7.2 supports the bytea datatype for byte arrays
} if (fields[columnIndex - 1].getPGType().equals("bytea"))
} {
else return PGbytea.toBytes(getString(columnIndex));
{ }
//Version 7.1 and earlier supports LargeObjects for byte arrays else
// Handle OID's as BLOBS {
if ( fields[columnIndex - 1].getOID() == 26) return this_row[columnIndex - 1];
{ }
LargeObjectManager lom = connection.getLargeObjectAPI();
LargeObject lob = lom.open(getInt(columnIndex));
byte buf[] = lob.read(lob.size());
lob.close();
return buf;
} }
else else
{ {
return this_row[columnIndex - 1]; //Version 7.1 and earlier supports LargeObjects for byte arrays
// Handle OID's as BLOBS
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;
}
else
{
return this_row[columnIndex - 1];
}
} }
}
} }
return null; return null;
} }
...@@ -742,44 +742,44 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -742,44 +742,44 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
switch (field.getSQLType()) switch (field.getSQLType())
{ {
case Types.BIT: case Types.BIT:
return new Boolean(getBoolean(columnIndex)); return new Boolean(getBoolean(columnIndex));
case Types.SMALLINT: case Types.SMALLINT:
return new Integer(getInt(columnIndex)); return new Integer(getInt(columnIndex));
case Types.INTEGER: case Types.INTEGER:
return new Integer(getInt(columnIndex)); return new Integer(getInt(columnIndex));
case Types.BIGINT: case Types.BIGINT:
return new Long(getLong(columnIndex)); return new Long(getLong(columnIndex));
case Types.NUMERIC: case Types.NUMERIC:
return getBigDecimal return getBigDecimal
(columnIndex, (field.getMod() == -1) ? -1 : ((field.getMod() - 4) & 0xffff)); (columnIndex, (field.getMod() == -1) ? -1 : ((field.getMod() - 4) & 0xffff));
case Types.REAL: case Types.REAL:
return new Float(getFloat(columnIndex)); return new Float(getFloat(columnIndex));
case Types.DOUBLE: case Types.DOUBLE:
return new Double(getDouble(columnIndex)); return new Double(getDouble(columnIndex));
case Types.CHAR: case Types.CHAR:
case Types.VARCHAR: case Types.VARCHAR:
return getString(columnIndex);
case Types.DATE:
return getDate(columnIndex);
case Types.TIME:
return getTime(columnIndex);
case Types.TIMESTAMP:
return getTimestamp(columnIndex);
case Types.BINARY:
case Types.VARBINARY:
return getBytes(columnIndex);
default:
String type = field.getPGType();
// if the backend doesn't know the type then coerce to String
if (type.equals("unknown"))
{
return getString(columnIndex); return getString(columnIndex);
} case Types.DATE:
else return getDate(columnIndex);
{ case Types.TIME:
return connection.getObject(field.getPGType(), getString(columnIndex)); return getTime(columnIndex);
} case Types.TIMESTAMP:
return getTimestamp(columnIndex);
case Types.BINARY:
case Types.VARBINARY:
return getBytes(columnIndex);
default:
String type = field.getPGType();
// if the backend doesn't know the type then coerce to String
if (type.equals("unknown"))
{
return getString(columnIndex);
}
else
{
return connection.getObject(field.getPGType(), getString(columnIndex));
}
} }
} }
...@@ -1082,7 +1082,7 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -1082,7 +1082,7 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
if (current_row < 0 || current_row >= rows_size) if (current_row < 0 || current_row >= rows_size)
return 0; return 0;
return current_row + 1; return current_row + 1;
} }
...@@ -1565,10 +1565,13 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -1565,10 +1565,13 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
return null; return null;
// length == 10: SQL Date // length == 10: SQL Date
// length > 10: SQL Timestamp, assumes PGDATESTYLE=ISO // length > 10: SQL Timestamp, assumes PGDATESTYLE=ISO
try { try
return java.sql.Date.valueOf((s.length() == 10) ? s : s.substring(0,10)); {
} catch (NumberFormatException e) { return java.sql.Date.valueOf((s.length() == 10) ? s : s.substring(0, 10));
throw new PSQLException("postgresql.res.baddate", s); }
catch (NumberFormatException e)
{
throw new PSQLException("postgresql.res.baddate", s);
} }
} }
...@@ -1578,10 +1581,13 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -1578,10 +1581,13 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
return null; // SQL NULL return null; // SQL NULL
// length == 8: SQL Time // length == 8: SQL Time
// length > 8: SQL Timestamp // length > 8: SQL Timestamp
try { try
return java.sql.Time.valueOf((s.length() == 8) ? s : s.substring(11,19)); {
} catch (NumberFormatException e) { return java.sql.Time.valueOf((s.length() == 8) ? s : s.substring(11, 19));
throw new PSQLException("postgresql.res.badtime",s); }
catch (NumberFormatException e)
{
throw new PSQLException("postgresql.res.badtime", s);
} }
} }
...@@ -1628,7 +1634,7 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -1628,7 +1634,7 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
char sub = resultSet.sbuf.charAt(resultSet.sbuf.length() - 3); char sub = resultSet.sbuf.charAt(resultSet.sbuf.length() - 3);
if (sub == '+' || sub == '-') if (sub == '+' || sub == '-')
{ {
//we have found timezone info of format +/-HH //we have found timezone info of format +/-HH
resultSet.sbuf.setLength(resultSet.sbuf.length() - 3); resultSet.sbuf.setLength(resultSet.sbuf.length() - 3);
if (subsecond) if (subsecond)
...@@ -1639,22 +1645,28 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu ...@@ -1639,22 +1645,28 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
{ {
resultSet.sbuf.append("GMT").append(s.substring(s.length() - 3)).append(":00"); resultSet.sbuf.append("GMT").append(s.substring(s.length() - 3)).append(":00");
} }
} else if (sub == ':') { }
//we may have found timezone info of format +/-HH:MM, or there is no else if (sub == ':')
//timezone info at all and this is the : preceding the seconds {
char sub2 = resultSet.sbuf.charAt(resultSet.sbuf.length()-5); //we may have found timezone info of format +/-HH:MM, or there is no
if (sub2 == '+' || sub2 == '-') //timezone info at all and this is the : preceding the seconds
char sub2 = resultSet.sbuf.charAt(resultSet.sbuf.length() - 5);
if (sub2 == '+' || sub2 == '-')
{ {
//we have found timezone info of format +/-HH:MM //we have found timezone info of format +/-HH:MM
resultSet.sbuf.setLength(resultSet.sbuf.length()-5); resultSet.sbuf.setLength(resultSet.sbuf.length() - 5);
if (subsecond) if (subsecond)
{ {
resultSet.sbuf.append('0').append("GMT").append(s.substring(s.length()-5)); resultSet.sbuf.append('0').append("GMT").append(s.substring(s.length() - 5));
} else {
resultSet.sbuf.append("GMT").append(s.substring(s.length()-5));
} }
} else if (subsecond) { else
resultSet.sbuf.append('0'); {
resultSet.sbuf.append("GMT").append(s.substring(s.length() - 5));
}
}
else if (subsecond)
{
resultSet.sbuf.append('0');
} }
} }
else if (subsecond) else if (subsecond)
......
...@@ -73,17 +73,17 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -73,17 +73,17 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
switch (sql_type) switch (sql_type)
{ {
case Types.SMALLINT: case Types.SMALLINT:
case Types.INTEGER: case Types.INTEGER:
case Types.FLOAT: case Types.FLOAT:
case Types.REAL: case Types.REAL:
case Types.DOUBLE: case Types.DOUBLE:
case Types.DATE: case Types.DATE:
case Types.TIME: case Types.TIME:
case Types.TIMESTAMP: case Types.TIMESTAMP:
return false; return false;
default: default:
return true; return true;
} }
} }
...@@ -107,10 +107,10 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -107,10 +107,10 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
// for further expansion. // for further expansion.
switch (sql_type) switch (sql_type)
{ {
case Types.OTHER: case Types.OTHER:
return true; return true;
default: default:
return true; return true;
} }
} }
...@@ -162,18 +162,18 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -162,18 +162,18 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
switch (sql_type) switch (sql_type)
{ {
case Types.SMALLINT: case Types.SMALLINT:
case Types.INTEGER: case Types.INTEGER:
case Types.FLOAT: case Types.FLOAT:
case Types.REAL: case Types.REAL:
case Types.DOUBLE: case Types.DOUBLE:
return true; return true;
case Types.DATE: case Types.DATE:
case Types.TIME: case Types.TIME:
case Types.TIMESTAMP: case Types.TIMESTAMP:
return false; // I don't know about these? return false; // I don't know about these?
default: default:
return false; return false;
} }
} }
...@@ -289,26 +289,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -289,26 +289,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
switch (sql_type) switch (sql_type)
{ {
case Types.SMALLINT: case Types.SMALLINT:
return 5; return 5;
case Types.INTEGER: case Types.INTEGER:
return 10; return 10;
case Types.REAL: case Types.REAL:
return 8; return 8;
case Types.FLOAT: case Types.FLOAT:
return 16; return 16;
case Types.DOUBLE: case Types.DOUBLE:
return 16; return 16;
case Types.VARCHAR: case Types.VARCHAR:
return 0; return 0;
case Types.NUMERIC: case Types.NUMERIC:
Field f = getField(column); Field f = getField(column);
if (f != null) if (f != null)
return ((0xFFFF0000)&f.getMod()) >> 16; return ((0xFFFF0000)&f.getMod()) >> 16;
else else
return 0;
default:
return 0; return 0;
default:
return 0;
} }
} }
...@@ -326,26 +326,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData ...@@ -326,26 +326,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
switch (sql_type) switch (sql_type)
{ {
case Types.SMALLINT: case Types.SMALLINT:
return 0; return 0;
case Types.INTEGER: case Types.INTEGER:
return 0; return 0;
case Types.REAL: case Types.REAL:
return 8; return 8;
case Types.FLOAT: case Types.FLOAT:
return 16; return 16;
case Types.DOUBLE: case Types.DOUBLE:
return 16; return 16;
case Types.VARCHAR: case Types.VARCHAR:
return 0; return 0;
case Types.NUMERIC: case Types.NUMERIC:
Field f = getField(column); Field f = getField(column);
if (f != null) if (f != null)
return (((0x0000FFFF)&f.getMod()) - 4); return (((0x0000FFFF)&f.getMod()) - 4);
else else
return 0;
default:
return 0; return 0;
default:
return 0;
} }
} }
......
...@@ -8,7 +8,7 @@ import java.sql.*; ...@@ -8,7 +8,7 @@ import java.sql.*;
import org.postgresql.largeobject.*; import org.postgresql.largeobject.*;
/* /*
* $Id: BlobTest.java,v 1.4 2001/11/19 22:33:39 momjian Exp $ * $Id: BlobTest.java,v 1.5 2001/11/19 23:16:46 momjian Exp $
* *
* Some simple tests based on problems reported by users. Hopefully these will * Some simple tests based on problems reported by users. Hopefully these will
* help prevent previous problems from re-occuring ;-) * help prevent previous problems from re-occuring ;-)
...@@ -108,36 +108,36 @@ public class BlobTest extends TestCase ...@@ -108,36 +108,36 @@ public class BlobTest extends TestCase
switch (method) switch (method)
{ {
case LOOP: case LOOP:
buf = new byte[2048]; buf = new byte[2048];
t = 0; t = 0;
while ((s = fis.read(buf, 0, buf.length)) > 0) while ((s = fis.read(buf, 0, buf.length)) > 0)
{ {
t += s; t += s;
blob.write(buf, 0, s); blob.write(buf, 0, s);
} }
break; break;
case NATIVE_STREAM: case NATIVE_STREAM:
os = blob.getOutputStream(); os = blob.getOutputStream();
s = fis.read();
while (s > -1)
{
os.write(s);
s = fis.read(); s = fis.read();
} while (s > -1)
os.close(); {
break; os.write(s);
s = fis.read();
case JDBC_STREAM: }
File f = new File(file); os.close();
PreparedStatement ps = con.prepareStatement(JDBC2Tests.insertSQL("testblob", "?")); break;
ps.setBinaryStream(1, fis, (int) f.length());
ps.execute(); case JDBC_STREAM:
break; File f = new File(file);
PreparedStatement ps = con.prepareStatement(JDBC2Tests.insertSQL("testblob", "?"));
default: ps.setBinaryStream(1, fis, (int) f.length());
assertTrue("Unknown method in uploadFile", false); ps.execute();
break;
default:
assertTrue("Unknown method in uploadFile", false);
} }
blob.close(); blob.close();
......
...@@ -21,7 +21,7 @@ public class ResultSetTest extends TestCase ...@@ -21,7 +21,7 @@ public class ResultSetTest extends TestCase
{ {
con = JDBC2Tests.openDB(); con = JDBC2Tests.openDB();
Statement stmt = con.createStatement(); Statement stmt = con.createStatement();
JDBC2Tests.createTable(con, "testrs", "id integer"); JDBC2Tests.createTable(con, "testrs", "id integer");
stmt.executeUpdate("INSERT INTO testrs VALUES (1)"); stmt.executeUpdate("INSERT INTO testrs VALUES (1)");
...@@ -44,23 +44,23 @@ public class ResultSetTest extends TestCase ...@@ -44,23 +44,23 @@ public class ResultSetTest extends TestCase
{ {
Statement stmt = con.createStatement(); Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM testrs"); ResultSet rs = stmt.executeQuery("SELECT * FROM testrs");
assertTrue(rs.absolute(-1)); assertTrue(rs.absolute( -1));
assertEquals(6, rs.getRow()); assertEquals(6, rs.getRow());
assertTrue(rs.absolute(1)); assertTrue(rs.absolute(1));
assertEquals(1, rs.getRow()); assertEquals(1, rs.getRow());
assertTrue(!rs.absolute(-10)); assertTrue(!rs.absolute( -10));
assertEquals(0, rs.getRow()); assertEquals(0, rs.getRow());
assertTrue(rs.next()); assertTrue(rs.next());
assertEquals(1, rs.getRow()); assertEquals(1, rs.getRow());
assertTrue(!rs.absolute(10)); assertTrue(!rs.absolute(10));
assertEquals(0, rs.getRow()); assertEquals(0, rs.getRow());
assertTrue(rs.previous()); assertTrue(rs.previous());
assertEquals(6, rs.getRow()); assertEquals(6, rs.getRow());
stmt.close(); stmt.close();
} }
} }
...@@ -77,6 +77,7 @@ public class PGtokenizer ...@@ -77,6 +77,7 @@ public class PGtokenizer
// Don't forget the last token ;-) // Don't forget the last token ;-)
if (s < string.length()) if (s < string.length())
tokens.addElement(string.substring(s)); tokens.addElement(string.substring(s));
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
* *
* Copyright 1999 (C) Exoffice Technologies Inc. All Rights Reserved. * Copyright 1999 (C) Exoffice Technologies Inc. All Rights Reserved.
* *
* $Id: XADataSourceImpl.java,v 1.3 2001/11/19 22:33:39 momjian Exp $ * $Id: XADataSourceImpl.java,v 1.4 2001/11/19 23:16:46 momjian Exp $
*/ */
...@@ -379,6 +379,7 @@ public abstract class XADataSourceImpl ...@@ -379,6 +379,7 @@ public abstract class XADataSourceImpl
// Look for all connections inside a transaction that // Look for all connections inside a transaction that
// should have timed out by now. // should have timed out by now.
timeout = System.currentTimeMillis(); timeout = System.currentTimeMillis();
enum = _txConnections.elements(); enum = _txConnections.elements();
while ( enum.hasMoreElements() ) while ( enum.hasMoreElements() )
......
...@@ -16,7 +16,7 @@ fi ...@@ -16,7 +16,7 @@ fi
for FILE for FILE
do do
astyle --style=java -b -p -j < "$FILE" >/tmp/$$ 2>/tmp/$$a astyle --style=java -b -p -j -S < "$FILE" >/tmp/$$ 2>/tmp/$$a
if [ "$?" -ne 0 -o -s /tmp/$$a ] if [ "$?" -ne 0 -o -s /tmp/$$a ]
then echo "$FILE" then echo "$FILE"
cat /tmp/$$a cat /tmp/$$a
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment