Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc G. Fournier1998-02-09 03:22:41 +0000
committerMarc G. Fournier1998-02-09 03:22:41 +0000
commit2535fcde2a8a56159ed90b0debc05cf3be06ac35 (patch)
treed3fed126048e4002bab9b4a9e605e180913e678a /src/interfaces/jdbc/postgresql
parent83e637a99a3d8adbc0a4979cdf42303bbb8c7bb7 (diff)
From: Peter T Mount <patches@maidast.demon.co.uk>
This patch fixes the following: * Fixes minor bug found in DatabaseMetaData.getTables() where it doesn't handle default table types. * It now reports an error if the client opens a database using properties, and either the user or password properties are missing. This should make the recent problem with Servlets easier to find. * Commented out obsolete property in Driver.getPropertyInfo()
Diffstat (limited to 'src/interfaces/jdbc/postgresql')
-rw-r--r--src/interfaces/jdbc/postgresql/Connection.java8
-rw-r--r--src/interfaces/jdbc/postgresql/DatabaseMetaData.java10
-rw-r--r--src/interfaces/jdbc/postgresql/Driver.java18
3 files changed, 27 insertions, 9 deletions
diff --git a/src/interfaces/jdbc/postgresql/Connection.java b/src/interfaces/jdbc/postgresql/Connection.java
index 074a3d5579e..8dd980e2f06 100644
--- a/src/interfaces/jdbc/postgresql/Connection.java
+++ b/src/interfaces/jdbc/postgresql/Connection.java
@@ -139,6 +139,14 @@ public class Connection implements java.sql.Connection
{
//int len = STARTUP_LEN; // Length of a startup packet
+ // Throw an exception if the user or password properties are missing
+ // This occasionally occurs when the client uses the properties version
+ // of getConnection(), and is a common question on the email lists
+ if(info.getProperty("user")==null)
+ throw new SQLException("The user property is missing. It is mandatory.");
+ if(info.getProperty("password")==null)
+ throw new SQLException("The password property is missing. It is mandatory.")
+
this_driver = d;
this_url = new String(url);
PG_DATABASE = new String(database);
diff --git a/src/interfaces/jdbc/postgresql/DatabaseMetaData.java b/src/interfaces/jdbc/postgresql/DatabaseMetaData.java
index 47c257e7824..d717218c8f8 100644
--- a/src/interfaces/jdbc/postgresql/DatabaseMetaData.java
+++ b/src/interfaces/jdbc/postgresql/DatabaseMetaData.java
@@ -1615,6 +1615,10 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
*/
public java.sql.ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String types[]) throws SQLException
{
+ // Handle default value for types
+ if(types==null)
+ types = defaultTableTypes;
+
// the field descriptors for the new ResultSet
Field f[] = new Field[5];
ResultSet r; // ResultSet for the SQL query that we need to do
@@ -1687,6 +1691,12 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
{"SYSTEM INDEX", "(relkind='i' and relname ~ '^pg_')"}
};
+ // These are the default tables, used when NULL is passed to getTables
+ // The choice of these provide the same behaviour as psql's \d
+ private static final String defaultTableTypes[] = {
+ "TABLE","INDEX","SEQUENCE"
+ };
+
/**
* Get the schema names available in this database. The results
* are ordered by schema name.
diff --git a/src/interfaces/jdbc/postgresql/Driver.java b/src/interfaces/jdbc/postgresql/Driver.java
index 4b1772c88ef..c8ef8b9a15a 100644
--- a/src/interfaces/jdbc/postgresql/Driver.java
+++ b/src/interfaces/jdbc/postgresql/Driver.java
@@ -130,16 +130,16 @@ public class Driver implements java.sql.Driver
// naughty, but its best for speed. If anyone adds a property here, then
// this _MUST_ be increased to accomodate them.
- DriverPropertyInfo d,dpi[] = new DriverPropertyInfo[1];
- int i=0;
+ DriverPropertyInfo d,dpi[] = new DriverPropertyInfo[0];
+ //int i=0;
- dpi[i++] = d = new DriverPropertyInfo("auth",p.getProperty("auth","default"));
- d.description = "determines if password authentication is used";
- d.choices = new String[4];
- d.choices[0]="default"; // Get value from postgresql.auth property, defaults to trust
- d.choices[1]="trust"; // No password authentication
- d.choices[2]="password"; // Password authentication
- d.choices[3]="ident"; // Ident (RFC 1413) protocol
+ //dpi[i++] = d = new DriverPropertyInfo("auth",p.getProperty("auth","default"));
+ //d.description = "determines if password authentication is used";
+ //d.choices = new String[4];
+ //d.choices[0]="default"; // Get value from postgresql.auth property, defaults to trust
+ //d.choices[1]="trust"; // No password authentication
+ //d.choices[2]="password"; // Password authentication
+ //d.choices[3]="ident"; // Ident (RFC 1413) protocol
return dpi;
}