summaryrefslogtreecommitdiff
path: root/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2001-11-19 23:16:46 +0000
committerBruce Momjian <bruce@momjian.us>2001-11-19 23:16:46 +0000
commit09634eafe15e2c63bddcea104e36f27367bd2fa7 (patch)
tree4ee3c30059c3edc23bd18ef6babbc8b89dcc4f0a /src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java
parent6c8120d68ced229111aeb1e45cb6aa3219e1e70b (diff)
downloadpostgresql-09634eafe15e2c63bddcea104e36f27367bd2fa7.tar.gz
Indent jdbc case labels using pgjindent.
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java')
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java327
1 files changed, 174 insertions, 153 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java
index 0d833a033a..50dee09b87 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java
@@ -15,7 +15,7 @@ import org.postgresql.util.PSQLException;
/*
* This class provides information about the database as a whole.
*
- * $Id: DatabaseMetaData.java,v 1.46 2001/11/19 22:33:39 momjian Exp $
+ * $Id: DatabaseMetaData.java,v 1.47 2001/11/19 23:16:46 momjian Exp $
*
* <p>Many of the methods here return lists of information in ResultSets. You
* can use the normal ResultSet methods such as getString and getInt to
@@ -88,7 +88,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
public String getURL() throws SQLException
{
String url = connection.getURL();
- Driver.debug("getURL "+url);
+ Driver.debug("getURL " + url);
return url;
}
@@ -101,7 +101,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
public String getUserName() throws SQLException
{
String userName = connection.getUserName();
- Driver.debug("getUserName "+ userName);
+ Driver.debug("getUserName " + userName);
return userName;
}
@@ -114,7 +114,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
public boolean isReadOnly() throws SQLException
{
boolean isReadOnly = connection.isReadOnly();
- Driver.debug("isReadOnly " +isReadOnly);
+ Driver.debug("isReadOnly " + isReadOnly);
return isReadOnly;
}
@@ -164,7 +164,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
public boolean nullsAreSortedAtEnd() throws SQLException
{
boolean nullsAreSortedAtEnd = ! connection.haveMinimumServerVersion("7.2");
- Driver.debug("nullsAreSortedAtEnd "+nullsAreSortedAtEnd);
+ Driver.debug("nullsAreSortedAtEnd " + nullsAreSortedAtEnd);
return nullsAreSortedAtEnd;
}
@@ -209,7 +209,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
}
/*
- * What is the version string of this JDBC driver? Again, this is
+ * What is the version string of this JDBC driver? Again, this is
* static.
*
* @return the JDBC driver name.
@@ -218,7 +218,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
public String getDriverVersion() throws SQLException
{
String driverVersion = connection.this_driver.getVersion();
- Driver.debug("getDriverVersion "+driverVersion);
+ Driver.debug("getDriverVersion " + driverVersion);
return driverVersion;
}
@@ -230,7 +230,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
public int getDriverMajorVersion()
{
int majorVersion = connection.this_driver.getMajorVersion();
- Driver.debug("getMajorVersion " +majorVersion);
+ Driver.debug("getMajorVersion " + majorVersion);
return majorVersion;
}
@@ -242,12 +242,12 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
public int getDriverMinorVersion()
{
int minorVersion = connection.this_driver.getMinorVersion();
- Driver.debug("getMinorVersion " +minorVersion);
+ Driver.debug("getMinorVersion " + minorVersion);
return minorVersion;
}
/*
- * Does the database store tables in a local file? No - it
+ * Does the database store tables in a local file? No - it
* stores them in a file on the server.
*
* @return true if so
@@ -298,7 +298,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
*/
public boolean storesUpperCaseIdentifiers() throws SQLException
{
- Driver.debug("storesUpperCaseIdentifiers "+false);
+ Driver.debug("storesUpperCaseIdentifiers " + false);
return false;
}
@@ -622,13 +622,13 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
public boolean supportsGroupByUnrelated() throws SQLException
{
boolean supportsGroupByUnrelated = connection.haveMinimumServerVersion("6.4");
- Driver.debug("supportsGroupByUnrelated "+ supportsGroupByUnrelated);
+ Driver.debug("supportsGroupByUnrelated " + supportsGroupByUnrelated);
return supportsGroupByUnrelated;
}
/*
* Can a "GROUP BY" clause add columns not in the SELECT provided
- * it specifies all the columns in the SELECT? Does anyone actually
+ * it specifies all the columns in the SELECT? Does anyone actually
* understand what they mean here?
*
* (I think this is a subset of the previous function. -- petere)
@@ -686,7 +686,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
}
/*
- * Can columns be defined as non-nullable. A JDBC Compliant driver
+ * Can columns be defined as non-nullable. A JDBC Compliant driver
* always returns true.
*
* <p>This changed from false to true in v6.2 of the driver, as this
@@ -715,12 +715,12 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
*/
public boolean supportsMinimumSQLGrammar() throws SQLException
{
- Driver.debug("supportsMinimumSQLGrammar TRUE");
- return true;
+ Driver.debug("supportsMinimumSQLGrammar TRUE");
+ return true;
}
/*
- * Does this driver support the Core ODBC SQL grammar. We need
+ * Does this driver support the Core ODBC SQL grammar. We need
* SQL-92 conformance for this.
*
* @return true if so
@@ -910,7 +910,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
}
/*
- * Can a schema name be used in a data manipulation statement? Nope.
+ * Can a schema name be used in a data manipulation statement? Nope.
*
* @return true if so
* @exception SQLException if a database access error occurs
@@ -1831,20 +1831,20 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
String relKind;
switch (r.getBytes(3)[0])
{
- case (byte) 'r':
- relKind = "TABLE";
- break;
- case (byte) 'i':
- relKind = "INDEX";
- break;
- case (byte) 'S':
- relKind = "SEQUENCE";
- break;
- case (byte) 'v':
- relKind = "VIEW";
- break;
- default:
- relKind = null;
+ case (byte) 'r':
+ relKind = "TABLE";
+ break;
+ case (byte) 'i':
+ relKind = "INDEX";
+ break;
+ case (byte) 'S':
+ relKind = "SEQUENCE";
+ break;
+ case (byte) 'v':
+ relKind = "VIEW";
+ break;
+ default:
+ relKind = null;
}
tuple[0] = null; // Catalog name
@@ -2243,29 +2243,30 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
Vector v = new Vector();
if (tableNamePattern == null)
- tableNamePattern = "%";
+ tableNamePattern = "%";
- f[0] = new Field(connection,"TABLE_CAT",iVarcharOid,32);
- f[1] = new Field(connection,"TABLE_SCHEM",iVarcharOid,32);
- f[2] = new Field(connection,"TABLE_NAME",iVarcharOid,32);
- f[3] = new Field(connection,"COLUMN_NAME",iVarcharOid,32);
- f[4] = new Field(connection,"GRANTOR",iVarcharOid,32);
- f[5] = new Field(connection,"GRANTEE",iVarcharOid,32);
- f[6] = new Field(connection,"PRIVILEGE",iVarcharOid,32);
- f[7] = new Field(connection,"IS_GRANTABLE",iVarcharOid,32);
+ f[0] = new Field(connection, "TABLE_CAT", iVarcharOid, 32);
+ f[1] = new Field(connection, "TABLE_SCHEM", iVarcharOid, 32);
+ f[2] = new Field(connection, "TABLE_NAME", iVarcharOid, 32);
+ f[3] = new Field(connection, "COLUMN_NAME", iVarcharOid, 32);
+ f[4] = new Field(connection, "GRANTOR", iVarcharOid, 32);
+ f[5] = new Field(connection, "GRANTEE", iVarcharOid, 32);
+ f[6] = new Field(connection, "PRIVILEGE", iVarcharOid, 32);
+ f[7] = new Field(connection, "IS_GRANTABLE", iVarcharOid, 32);
// This is taken direct from the psql source
- java.sql.ResultSet r = connection.ExecSQL("SELECT relname, relacl FROM pg_class, pg_user WHERE ( relkind = 'r' OR relkind = 'i') and relname !~ '^pg_' and relname !~ '^xin[vx][0-9]+' and usesysid = relowner and relname like '"+tableNamePattern.toLowerCase()+"' ORDER BY relname");
- while (r.next()) {
- byte[][] tuple = new byte[8][0];
- tuple[0] = tuple[1]= "".getBytes();
- DriverManager.println("relname=\""+r.getString(1)+"\" relacl=\""+r.getString(2)+"\"");
-
- // For now, don't add to the result as relacl needs to be processed.
- //v.addElement(tuple);
+ java.sql.ResultSet r = connection.ExecSQL("SELECT relname, relacl FROM pg_class, pg_user WHERE ( relkind = 'r' OR relkind = 'i') and relname !~ '^pg_' and relname !~ '^xin[vx][0-9]+' and usesysid = relowner and relname like '" + tableNamePattern.toLowerCase() + "' ORDER BY relname");
+ while (r.next())
+ {
+ byte[][] tuple = new byte[8][0];
+ tuple[0] = tuple[1] = "".getBytes();
+ DriverManager.println("relname=\"" + r.getString(1) + "\" relacl=\"" + r.getString(2) + "\"");
+
+ // For now, don't add to the result as relacl needs to be processed.
+ //v.addElement(tuple);
}
- return new ResultSet(connection,f,v,"OK",1);
+ return new ResultSet(connection, f, v, "OK", 1);
}
/*
@@ -2389,7 +2390,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
"a.attnum as KEY_SEQ," +
"ic.relname as PK_NAME " +
" FROM pg_class bc, pg_class ic, pg_index i, pg_attribute a" +
- " WHERE bc.relkind = 'r' " + // -- not indices
+ " WHERE bc.relkind = 'r' " + // -- not indices
" and upper(bc.relname) = upper('" + table + "')" +
" and i.indrelid = bc.oid" +
" and i.indexrelid = ic.oid" +
@@ -2401,112 +2402,132 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
private java.sql.ResultSet getImportedExportedKeys(String catalog, String schema, String primaryTable, String foreignTable) throws SQLException
{
- Field f[]=new Field[14];
-
- f[0]=new Field(connection, "PKTABLE_CAT", iVarcharOid, 32);
- f[1]=new Field(connection, "PKTABLE_SCHEM", iVarcharOid, 32);
- f[2]=new Field(connection, "PKTABLE_NAME", iVarcharOid, 32);
- f[3]=new Field(connection, "PKCOLUMN_NAME", iVarcharOid, 32);
- f[4]=new Field(connection, "FKTABLE_CAT", iVarcharOid, 32);
- f[5]=new Field(connection, "FKTABLE_SCHEM", iVarcharOid, 32);
- f[6]=new Field(connection, "FKTABLE_NAME", iVarcharOid, 32);
- f[7]=new Field(connection, "FKCOLUMN_NAME", iVarcharOid, 32);
- f[8]=new Field(connection, "KEY_SEQ", iInt2Oid, 2);
- f[9]=new Field(connection, "UPDATE_RULE", iInt2Oid, 2);
- f[10]=new Field(connection, "DELETE_RULE", iInt2Oid, 2);
- f[11]=new Field(connection, "FK_NAME", iVarcharOid, 32);
- f[12]=new Field(connection, "PK_NAME", iVarcharOid, 32);
- f[13]=new Field(connection, "DEFERRABILITY", iInt2Oid, 2);
+ Field f[] = new Field[14];
+
+ f[0] = new Field(connection, "PKTABLE_CAT", iVarcharOid, 32);
+ f[1] = new Field(connection, "PKTABLE_SCHEM", iVarcharOid, 32);
+ f[2] = new Field(connection, "PKTABLE_NAME", iVarcharOid, 32);
+ f[3] = new Field(connection, "PKCOLUMN_NAME", iVarcharOid, 32);
+ f[4] = new Field(connection, "FKTABLE_CAT", iVarcharOid, 32);
+ f[5] = new Field(connection, "FKTABLE_SCHEM", iVarcharOid, 32);
+ f[6] = new Field(connection, "FKTABLE_NAME", iVarcharOid, 32);
+ f[7] = new Field(connection, "FKCOLUMN_NAME", iVarcharOid, 32);
+ f[8] = new Field(connection, "KEY_SEQ", iInt2Oid, 2);
+ f[9] = new Field(connection, "UPDATE_RULE", iInt2Oid, 2);
+ f[10] = new Field(connection, "DELETE_RULE", iInt2Oid, 2);
+ f[11] = new Field(connection, "FK_NAME", iVarcharOid, 32);
+ f[12] = new Field(connection, "PK_NAME", iVarcharOid, 32);
+ f[13] = new Field(connection, "DEFERRABILITY", iInt2Oid, 2);
java.sql.ResultSet rs = connection.ExecSQL("SELECT c.relname,c2.relname,"
- + "t.tgconstrname,ic.relname,"
- + "t.tgdeferrable,t.tginitdeferred,"
- + "t.tgnargs,t.tgargs,p.proname "
- + "FROM pg_trigger t,pg_class c,pg_class c2,"
- + "pg_class ic,pg_proc p, pg_index i "
- + "WHERE t.tgrelid=c.oid AND t.tgconstrrelid=c2.oid "
- + "AND t.tgfoid=p.oid AND tgisconstraint "
- + ((primaryTable!=null) ? "AND c2.relname='"+primaryTable+"' " : "")
- + ((foreignTable!=null) ? "AND c.relname='"+foreignTable+"' " : "")
- + "AND i.indrelid=c.oid "
- + "AND i.indexrelid=ic.oid AND i.indisprimary "
- + "ORDER BY c.relname,c2.relname"
- );
+ + "t.tgconstrname,ic.relname,"
+ + "t.tgdeferrable,t.tginitdeferred,"
+ + "t.tgnargs,t.tgargs,p.proname "
+ + "FROM pg_trigger t,pg_class c,pg_class c2,"
+ + "pg_class ic,pg_proc p, pg_index i "
+ + "WHERE t.tgrelid=c.oid AND t.tgconstrrelid=c2.oid "
+ + "AND t.tgfoid=p.oid AND tgisconstraint "
+ + ((primaryTable != null) ? "AND c2.relname='" + primaryTable + "' " : "")
+ + ((foreignTable != null) ? "AND c.relname='" + foreignTable + "' " : "")
+ + "AND i.indrelid=c.oid "
+ + "AND i.indexrelid=ic.oid AND i.indisprimary "
+ + "ORDER BY c.relname,c2.relname"
+ );
Vector tuples = new Vector();
- short seq=0;
- if (rs.next()) {
- boolean hasMore;
- do {
- byte tuple[][]=new byte[14][0];
- for (int k = 0;k < 14;k++)
- tuple[k] = null;
-
- String fKeyName=rs.getString(3);
- boolean foundRule=false;
- do {
- String proname=rs.getString(9);
- if (proname!=null && proname.startsWith("RI_FKey_")) {
- int col=-1;
- if (proname.endsWith("_upd")) col=9; // UPDATE_RULE
- else if (proname.endsWith("_del")) col=10; // DELETE_RULE
- if (col>-1) {
- String rule=proname.substring(8, proname.length()-4);
- int action=importedKeyNoAction;
- if ("cascade".equals(rule)) action=importedKeyCascade;
- else if ("setnull".equals(rule)) action=importedKeySetNull;
- else if ("setdefault".equals(rule)) action=importedKeySetDefault;
- tuple[col]=Integer.toString(action).getBytes();
- foundRule=true;
- }
- }
- } while ((hasMore=rs.next()) && fKeyName.equals(rs.getString(3)));
-
- if (foundRule) {
- tuple[2]=rs.getBytes(2); //PKTABLE_NAME
- tuple[6]=rs.getBytes(1); //FKTABLE_NAME
-
- // Parse the tgargs data
- StringBuffer fkeyColumns=new StringBuffer();
- StringBuffer pkeyColumns=new StringBuffer();
- int numColumns=(rs.getInt(7) >> 1) - 2;
- String s=rs.getString(8);
- int pos=s.lastIndexOf("\\000");
- for(int c=0;c<numColumns;c++) {
- if (pos>-1) {
- int pos2=s.lastIndexOf("\\000", pos-1);
- if (pos2>-1) {
- if (fkeyColumns.length()>0) fkeyColumns.insert(0, ',');
- fkeyColumns.insert(0, s.substring(pos2+4, pos)); //FKCOLUMN_NAME
- pos=s.lastIndexOf("\\000", pos2-1);
- if (pos>-1) {
- if (pkeyColumns.length()>0) pkeyColumns.insert(0, ',');
- pkeyColumns.insert(0, s.substring(pos+4, pos2)); //PKCOLUMN_NAME
+ short seq = 0;
+ if (rs.next())
+ {
+ boolean hasMore;
+ do
+ {
+ byte tuple[][] = new byte[14][0];
+ for (int k = 0;k < 14;k++)
+ tuple[k] = null;
+
+ String fKeyName = rs.getString(3);
+ boolean foundRule = false;
+ do
+ {
+ String proname = rs.getString(9);
+ if (proname != null && proname.startsWith("RI_FKey_"))
+ {
+ int col = -1;
+ if (proname.endsWith("_upd"))
+ col = 9; // UPDATE_RULE
+ else if (proname.endsWith("_del"))
+ col = 10; // DELETE_RULE
+ if (col > -1)
+ {
+ String rule = proname.substring(8, proname.length() - 4);
+ int action = importedKeyNoAction;
+ if ("cascade".equals(rule))
+ action = importedKeyCascade;
+ else if ("setnull".equals(rule))
+ action = importedKeySetNull;
+ else if ("setdefault".equals(rule))
+ action = importedKeySetDefault;
+ tuple[col] = Integer.toString(action).getBytes();
+ foundRule = true;
+ }
}
}
- }
- }
- tuple[7]=fkeyColumns.toString().getBytes(); //FKCOLUMN_NAME
- tuple[3]=pkeyColumns.toString().getBytes(); //PKCOLUMN_NAME
-
- tuple[8]=Integer.toString(seq++).getBytes(); //KEY_SEQ
- tuple[11]=fKeyName.getBytes(); //FK_NAME
- tuple[12]=rs.getBytes(4); //PK_NAME
-
- // DEFERRABILITY
- int deferrability=importedKeyNotDeferrable;
- boolean deferrable=rs.getBoolean(5);
- boolean initiallyDeferred=rs.getBoolean(6);
- if (deferrable) {
- if (initiallyDeferred)
- deferrability=importedKeyInitiallyDeferred;
- else
- deferrability=importedKeyInitiallyImmediate;
- }
- tuple[13]=Integer.toString(deferrability).getBytes();
+ while ((hasMore = rs.next()) && fKeyName.equals(rs.getString(3)));
+
+ if (foundRule)
+ {
+ tuple[2] = rs.getBytes(2); //PKTABLE_NAME
+ tuple[6] = rs.getBytes(1); //FKTABLE_NAME
+
+ // Parse the tgargs data
+ StringBuffer fkeyColumns = new StringBuffer();
+ StringBuffer pkeyColumns = new StringBuffer();
+ int numColumns = (rs.getInt(7) >> 1) - 2;
+ String s = rs.getString(8);
+ int pos = s.lastIndexOf("\\000");
+ for (int c = 0;c < numColumns;c++)
+ {
+ if (pos > -1)
+ {
+ int pos2 = s.lastIndexOf("\\000", pos - 1);
+ if (pos2 > -1)
+ {
+ if (fkeyColumns.length() > 0)
+ fkeyColumns.insert(0, ',');
+ fkeyColumns.insert(0, s.substring(pos2 + 4, pos)); //FKCOLUMN_NAME
+ pos = s.lastIndexOf("\\000", pos2 - 1);
+ if (pos > -1)
+ {
+ if (pkeyColumns.length() > 0)
+ pkeyColumns.insert(0, ',');
+ pkeyColumns.insert(0, s.substring(pos + 4, pos2)); //PKCOLUMN_NAME
+ }
+ }
+ }
+ }
+ tuple[7] = fkeyColumns.toString().getBytes(); //FKCOLUMN_NAME
+ tuple[3] = pkeyColumns.toString().getBytes(); //PKCOLUMN_NAME
+
+ tuple[8] = Integer.toString(seq++).getBytes(); //KEY_SEQ
+ tuple[11] = fKeyName.getBytes(); //FK_NAME
+ tuple[12] = rs.getBytes(4); //PK_NAME
+
+ // DEFERRABILITY
+ int deferrability = importedKeyNotDeferrable;
+ boolean deferrable = rs.getBoolean(5);
+ boolean initiallyDeferred = rs.getBoolean(6);
+ if (deferrable)
+ {
+ if (initiallyDeferred)
+ deferrability = importedKeyInitiallyDeferred;
+ else
+ deferrability = importedKeyInitiallyImmediate;
+ }
+ tuple[13] = Integer.toString(deferrability).getBytes();
- tuples.addElement(tuple);
+ tuples.addElement(tuple);
+ }
}
- } while (hasMore);
+ while (hasMore);
}
return new ResultSet(connection, f, tuples, "OK", 1);
@@ -2565,7 +2586,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
*/
public java.sql.ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException
{
- return getImportedExportedKeys(catalog, schema, null, table);
+ return getImportedExportedKeys(catalog, schema, null, table);
}
/*
@@ -2623,7 +2644,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
*/
public java.sql.ResultSet getExportedKeys(String catalog, String schema, String table) throws SQLException
{
- return getImportedExportedKeys(catalog, schema, table, null);
+ return getImportedExportedKeys(catalog, schema, table, null);
}
/*
@@ -2684,7 +2705,7 @@ public class DatabaseMetaData implements java.sql.DatabaseMetaData
*/
public java.sql.ResultSet getCrossReference(String primaryCatalog, String primarySchema, String primaryTable, String foreignCatalog, String foreignSchema, String foreignTable) throws SQLException
{
- return getImportedExportedKeys(primaryCatalog, primarySchema, primaryTable, foreignTable);
+ return getImportedExportedKeys(primaryCatalog, primarySchema, primaryTable, foreignTable);
}
/*