summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/Connection.java
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2000-09-12 04:58:50 +0000
committerBruce Momjian <bruce@momjian.us>2000-09-12 04:58:50 +0000
commit65edb541865032b5750cfe58cb8f7affbe1fc298 (patch)
tree6f7c1aae279e75e5be4dceae692c8d3b2c9386a4 /src/interfaces/jdbc/org/postgresql/Connection.java
parent4f5cdadf03ae97de4fbd9ef90e15a080291b6a13 (diff)
downloadpostgresql-65edb541865032b5750cfe58cb8f7affbe1fc298.tar.gz
Attached are a patch to allow the charset encoding used by the JDBC
driver to be set, and a description of said patch. Please refer to the latter for more information. William -- William Webber william@peopleweb.net.au
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/Connection.java')
-rw-r--r--src/interfaces/jdbc/org/postgresql/Connection.java41
1 files changed, 37 insertions, 4 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/Connection.java b/src/interfaces/jdbc/org/postgresql/Connection.java
index 539faecd3e..33834118bd 100644
--- a/src/interfaces/jdbc/org/postgresql/Connection.java
+++ b/src/interfaces/jdbc/org/postgresql/Connection.java
@@ -10,7 +10,7 @@ import org.postgresql.largeobject.*;
import org.postgresql.util.*;
/**
- * $Id: Connection.java,v 1.4 2000/06/06 11:05:59 peter Exp $
+ * $Id: Connection.java,v 1.5 2000/09/12 04:58:47 momjian Exp $
*
* This abstract class is used by org.postgresql.Driver to open either the JDBC1 or
* JDBC2 versions of the Connection class.
@@ -30,6 +30,14 @@ public abstract class Connection
private String PG_PASSWORD;
private String PG_DATABASE;
private boolean PG_STATUS;
+
+ /**
+ * The encoding to use for this connection.
+ * If <b>null</b>, the encoding has not been specified by the
+ * user, and the default encoding for the platform should be
+ * used.
+ */
+ private String encoding;
public boolean CONNECTION_OK = true;
public boolean CONNECTION_BAD = false;
@@ -111,6 +119,8 @@ public abstract class Connection
PG_PORT = port;
PG_HOST = new String(host);
PG_STATUS = CONNECTION_BAD;
+
+ encoding = info.getProperty("charSet"); // could be null
// Now make the initial connection
try
@@ -154,7 +164,8 @@ public abstract class Connection
// The most common one to be thrown here is:
// "User authentication failed"
//
- throw new SQLException(pg_stream.ReceiveString(4096));
+ throw new SQLException(pg_stream.ReceiveString
+ (4096, getEncoding()));
case 'R':
// Get the type of request
@@ -224,7 +235,8 @@ public abstract class Connection
break;
case 'E':
case 'N':
- throw new SQLException(pg_stream.ReceiveString(4096));
+ throw new SQLException(pg_stream.ReceiveString
+ (4096, getEncoding()));
default:
throw new PSQLException("postgresql.con.setup");
}
@@ -313,7 +325,7 @@ public abstract class Connection
Field[] fields = null;
Vector tuples = new Vector();
- byte[] buf = new byte[sql.length()];
+ byte[] buf = null;
int fqp = 0;
boolean hfr = false;
String recv_status = null, msg;
@@ -325,6 +337,18 @@ public abstract class Connection
// larger than 8K. Peter June 6 2000
//if (sql.length() > 8192)
//throw new PSQLException("postgresql.con.toolong",sql);
+
+ if (getEncoding() == null)
+ buf = sql.getBytes();
+ else {
+ try {
+ buf = sql.getBytes(getEncoding());
+ } catch (UnsupportedEncodingException unse) {
+ throw new PSQLException("postgresql.con.encoding",
+ unse);
+ }
+ }
+
try
{
pg_stream.SendChar('Q');
@@ -513,6 +537,15 @@ public abstract class Connection
{
return PG_USER;
}
+
+ /**
+ * Get the character encoding to use for this connection.
+ * @return the encoding to use, or <b>null</b> for the
+ * default encoding.
+ */
+ public String getEncoding() throws SQLException {
+ return encoding;
+ }
/**
* This returns the Fastpath API for the current connection.