diff options
author | Bruce Momjian <bruce@momjian.us> | 2001-11-19 23:16:46 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2001-11-19 23:16:46 +0000 |
commit | 09634eafe15e2c63bddcea104e36f27367bd2fa7 (patch) | |
tree | 4ee3c30059c3edc23bd18ef6babbc8b89dcc4f0a /src/interfaces/jdbc/org/postgresql/jdbc2 | |
parent | 6c8120d68ced229111aeb1e45cb6aa3219e1e70b (diff) |
Indent jdbc case labels using pgjindent.
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/jdbc2')
5 files changed, 560 insertions, 527 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java b/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java index 56b8a0f15a5..14948e5b4b0 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java @@ -115,64 +115,64 @@ public class Array implements java.sql.Array int i = 0; switch ( getBaseType() ) { - case Types.BIT: - retVal = new boolean[ count ]; - for ( ; count > 0; count-- ) - ((boolean[])retVal)[i++] = ResultSet.toBoolean( arrayContents[(int)index++] ); - break; - case Types.SMALLINT: - case Types.INTEGER: - retVal = new int[ count ]; - for ( ; count > 0; count-- ) - ((int[])retVal)[i++] = ResultSet.toInt( arrayContents[(int)index++] ); - break; - case Types.BIGINT: - retVal = new long[ count ]; - for ( ; count > 0; count-- ) - ((long[])retVal)[i++] = ResultSet.toLong( arrayContents[(int)index++] ); - break; - case Types.NUMERIC: - retVal = new BigDecimal[ count ]; - for ( ; count > 0; count-- ) - ((BigDecimal[])retVal)[i] = ResultSet.toBigDecimal( arrayContents[(int)index++], 0 ); - break; - case Types.REAL: - retVal = new float[ count ]; - for ( ; count > 0; count-- ) - ((float[])retVal)[i++] = ResultSet.toFloat( arrayContents[(int)index++] ); - break; - case Types.DOUBLE: - retVal = new double[ count ]; - for ( ; count > 0; count-- ) - ((double[])retVal)[i++] = ResultSet.toDouble( arrayContents[(int)index++] ); - break; - case Types.CHAR: - case Types.VARCHAR: - retVal = new String[ count ]; - for ( ; count > 0; count-- ) - ((String[])retVal)[i++] = arrayContents[(int)index++]; - break; - case Types.DATE: - retVal = new java.sql.Date[ count ]; - for ( ; count > 0; count-- ) - ((java.sql.Date[])retVal)[i++] = ResultSet.toDate( arrayContents[(int)index++] ); - break; - case Types.TIME: - retVal = new java.sql.Time[ count ]; - for ( ; count > 0; count-- ) - ((java.sql.Time[])retVal)[i++] = ResultSet.toTime( arrayContents[(int)index++] ); - break; - case Types.TIMESTAMP: - retVal = new Timestamp[ count ]; - StringBuffer sbuf = null; - for ( ; count > 0; count-- ) - ((java.sql.Timestamp[])retVal)[i++] = ResultSet.toTimestamp( arrayContents[(int)index], rs ); - break; + case Types.BIT: + retVal = new boolean[ count ]; + for ( ; count > 0; count-- ) + ((boolean[])retVal)[i++] = ResultSet.toBoolean( arrayContents[(int)index++] ); + break; + case Types.SMALLINT: + case Types.INTEGER: + retVal = new int[ count ]; + for ( ; count > 0; count-- ) + ((int[])retVal)[i++] = ResultSet.toInt( arrayContents[(int)index++] ); + break; + case Types.BIGINT: + retVal = new long[ count ]; + for ( ; count > 0; count-- ) + ((long[])retVal)[i++] = ResultSet.toLong( arrayContents[(int)index++] ); + break; + case Types.NUMERIC: + retVal = new BigDecimal[ count ]; + for ( ; count > 0; count-- ) + ((BigDecimal[])retVal)[i] = ResultSet.toBigDecimal( arrayContents[(int)index++], 0 ); + break; + case Types.REAL: + retVal = new float[ count ]; + for ( ; count > 0; count-- ) + ((float[])retVal)[i++] = ResultSet.toFloat( arrayContents[(int)index++] ); + break; + case Types.DOUBLE: + retVal = new double[ count ]; + for ( ; count > 0; count-- ) + ((double[])retVal)[i++] = ResultSet.toDouble( arrayContents[(int)index++] ); + break; + case Types.CHAR: + case Types.VARCHAR: + retVal = new String[ count ]; + for ( ; count > 0; count-- ) + ((String[])retVal)[i++] = arrayContents[(int)index++]; + break; + case Types.DATE: + retVal = new java.sql.Date[ count ]; + for ( ; count > 0; count-- ) + ((java.sql.Date[])retVal)[i++] = ResultSet.toDate( arrayContents[(int)index++] ); + break; + case Types.TIME: + retVal = new java.sql.Time[ count ]; + for ( ; count > 0; count-- ) + ((java.sql.Time[])retVal)[i++] = ResultSet.toTime( arrayContents[(int)index++] ); + break; + case Types.TIMESTAMP: + retVal = new Timestamp[ count ]; + StringBuffer sbuf = null; + for ( ; count > 0; count-- ) + ((java.sql.Timestamp[])retVal)[i++] = ResultSet.toTimestamp( arrayContents[(int)index], rs ); + break; - // Other datatypes not currently supported. If you are really using other types ask - // yourself if an array of non-trivial data types is really good database design. - default: - throw org.postgresql.Driver.notImplemented(); + // Other datatypes not currently supported. If you are really using other types ask + // yourself if an array of non-trivial data types is really good database design. + default: + throw org.postgresql.Driver.notImplemented(); } return retVal; } @@ -213,126 +213,126 @@ public class Array implements java.sql.Array fields[0] = new Field(conn, "INDEX", conn.getOID("int2"), 2); switch ( getBaseType() ) { - case Types.BIT: - boolean[] booleanArray = (boolean[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("bool"), 1); - for ( int i = 0; i < booleanArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( (booleanArray[i] ? "YES" : "NO") ); // Value - rows.addElement(tuple); - } - case Types.SMALLINT: - fields[1] = new Field(conn, "VALUE", conn.getOID("int2"), 2); - case Types.INTEGER: - int[] intArray = (int[]) array; - if ( fields[1] == null ) - fields[1] = new Field(conn, "VALUE", conn.getOID("int4"), 4); - for ( int i = 0; i < intArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( Integer.toString(intArray[i]) ); // Value - rows.addElement(tuple); - } - break; - case Types.BIGINT: - long[] longArray = (long[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("int8"), 8); - for ( int i = 0; i < longArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( Long.toString(longArray[i]) ); // Value - rows.addElement(tuple); - } - break; - case Types.NUMERIC: - BigDecimal[] bdArray = (BigDecimal[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("numeric"), -1); - for ( int i = 0; i < bdArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( bdArray[i].toString() ); // Value - rows.addElement(tuple); - } - break; - case Types.REAL: - float[] floatArray = (float[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("float4"), 4); - for ( int i = 0; i < floatArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( Float.toString(floatArray[i]) ); // Value - rows.addElement(tuple); - } - break; - case Types.DOUBLE: - double[] doubleArray = (double[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("float8"), 8); - for ( int i = 0; i < doubleArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( Double.toString(doubleArray[i]) ); // Value - rows.addElement(tuple); - } - break; - case Types.CHAR: - fields[1] = new Field(conn, "VALUE", conn.getOID("char"), 1); - case Types.VARCHAR: - String[] strArray = (String[]) array; - if ( fields[1] == null ) - fields[1] = new Field(conn, "VALUE", conn.getOID("varchar"), -1); - for ( int i = 0; i < strArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( strArray[i] ); // Value - rows.addElement(tuple); - } - break; - case Types.DATE: - java.sql.Date[] dateArray = (java.sql.Date[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("date"), 4); - for ( int i = 0; i < dateArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( dateArray[i].toString() ); // Value - rows.addElement(tuple); - } - break; - case Types.TIME: - java.sql.Time[] timeArray = (java.sql.Time[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("time"), 8); - for ( int i = 0; i < timeArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( timeArray[i].toString() ); // Value - rows.addElement(tuple); - } - break; - case Types.TIMESTAMP: - java.sql.Timestamp[] timestampArray = (java.sql.Timestamp[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("timestamp"), 8); - for ( int i = 0; i < timestampArray.length; i++ ) - { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index - tuple[1] = conn.getEncoding().encode( timestampArray[i].toString() ); // Value - rows.addElement(tuple); - } - break; + case Types.BIT: + boolean[] booleanArray = (boolean[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("bool"), 1); + for ( int i = 0; i < booleanArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( (booleanArray[i] ? "YES" : "NO") ); // Value + rows.addElement(tuple); + } + case Types.SMALLINT: + fields[1] = new Field(conn, "VALUE", conn.getOID("int2"), 2); + case Types.INTEGER: + int[] intArray = (int[]) array; + if ( fields[1] == null ) + fields[1] = new Field(conn, "VALUE", conn.getOID("int4"), 4); + for ( int i = 0; i < intArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( Integer.toString(intArray[i]) ); // Value + rows.addElement(tuple); + } + break; + case Types.BIGINT: + long[] longArray = (long[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("int8"), 8); + for ( int i = 0; i < longArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( Long.toString(longArray[i]) ); // Value + rows.addElement(tuple); + } + break; + case Types.NUMERIC: + BigDecimal[] bdArray = (BigDecimal[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("numeric"), -1); + for ( int i = 0; i < bdArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( bdArray[i].toString() ); // Value + rows.addElement(tuple); + } + break; + case Types.REAL: + float[] floatArray = (float[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("float4"), 4); + for ( int i = 0; i < floatArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( Float.toString(floatArray[i]) ); // Value + rows.addElement(tuple); + } + break; + case Types.DOUBLE: + double[] doubleArray = (double[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("float8"), 8); + for ( int i = 0; i < doubleArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( Double.toString(doubleArray[i]) ); // Value + rows.addElement(tuple); + } + break; + case Types.CHAR: + fields[1] = new Field(conn, "VALUE", conn.getOID("char"), 1); + case Types.VARCHAR: + String[] strArray = (String[]) array; + if ( fields[1] == null ) + fields[1] = new Field(conn, "VALUE", conn.getOID("varchar"), -1); + for ( int i = 0; i < strArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( strArray[i] ); // Value + rows.addElement(tuple); + } + break; + case Types.DATE: + java.sql.Date[] dateArray = (java.sql.Date[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("date"), 4); + for ( int i = 0; i < dateArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( dateArray[i].toString() ); // Value + rows.addElement(tuple); + } + break; + case Types.TIME: + java.sql.Time[] timeArray = (java.sql.Time[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("time"), 8); + for ( int i = 0; i < timeArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( timeArray[i].toString() ); // Value + rows.addElement(tuple); + } + break; + case Types.TIMESTAMP: + java.sql.Timestamp[] timestampArray = (java.sql.Timestamp[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("timestamp"), 8); + for ( int i = 0; i < timestampArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( timestampArray[i].toString() ); // Value + rows.addElement(tuple); + } + break; - // Other datatypes not currently supported. If you are really using other types ask - // yourself if an array of non-trivial data types is really good database design. - default: - throw org.postgresql.Driver.notImplemented(); + // Other datatypes not currently supported. If you are really using other types ask + // yourself if an array of non-trivial data types is really good database design. + default: + throw org.postgresql.Driver.notImplemented(); } return new ResultSet((org.postgresql.jdbc2.Connection)conn, fields, rows, "OK", 1 ); } diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc2/DatabaseMetaData.java index 0d833a033af..50dee09b87c 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); } /* diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java b/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java index daf9650dce4..1575b166618 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java @@ -652,53 +652,53 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta } switch (targetSqlType) { - case Types.TINYINT: - case Types.SMALLINT: - case Types.INTEGER: - case Types.BIGINT: - case Types.REAL: - case Types.FLOAT: - case Types.DOUBLE: - case Types.DECIMAL: - case Types.NUMERIC: - if (x instanceof Boolean) - set(parameterIndex, ((Boolean)x).booleanValue() ? "1" : "0"); - else - set(parameterIndex, x.toString()); - break; - case Types.CHAR: - case Types.VARCHAR: - case Types.LONGVARCHAR: - setString(parameterIndex, x.toString()); - break; - case Types.DATE: - setDate(parameterIndex, (java.sql.Date)x); - break; - case Types.TIME: - setTime(parameterIndex, (Time)x); - break; - case Types.TIMESTAMP: - setTimestamp(parameterIndex, (Timestamp)x); - break; - case Types.BIT: - if (x instanceof Boolean) - { - set(parameterIndex, ((Boolean)x).booleanValue() ? "TRUE" : "FALSE"); - } - else - { + case Types.TINYINT: + case Types.SMALLINT: + case Types.INTEGER: + case Types.BIGINT: + case Types.REAL: + case Types.FLOAT: + case Types.DOUBLE: + case Types.DECIMAL: + case Types.NUMERIC: + if (x instanceof Boolean) + set(parameterIndex, ((Boolean)x).booleanValue() ? "1" : "0"); + else + set(parameterIndex, x.toString()); + break; + case Types.CHAR: + case Types.VARCHAR: + case Types.LONGVARCHAR: + setString(parameterIndex, x.toString()); + break; + case Types.DATE: + setDate(parameterIndex, (java.sql.Date)x); + break; + case Types.TIME: + setTime(parameterIndex, (Time)x); + break; + case Types.TIMESTAMP: + setTimestamp(parameterIndex, (Timestamp)x); + break; + case Types.BIT: + if (x instanceof Boolean) + { + set(parameterIndex, ((Boolean)x).booleanValue() ? "TRUE" : "FALSE"); + } + 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"); - } - 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"); } } diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java index 804d9a2c770..765fb46146e 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java @@ -321,40 +321,40 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu wasNullFlag = (this_row[columnIndex - 1] == null); if (!wasNullFlag) { - 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")) + if (binaryCursor) { - 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(); - LargeObject lob = lom.open(getInt(columnIndex)); - byte buf[] = lob.read(lob.size()); - lob.close(); - return buf; + //Version 7.2 supports the bytea datatype for byte arrays + if (fields[columnIndex - 1].getPGType().equals("bytea")) + { + return PGbytea.toBytes(getString(columnIndex)); + } + else + { + return this_row[columnIndex - 1]; + } } 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; } @@ -742,44 +742,44 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu switch (field.getSQLType()) { - case Types.BIT: - return new Boolean(getBoolean(columnIndex)); - case Types.SMALLINT: - return new Integer(getInt(columnIndex)); - case Types.INTEGER: - return new Integer(getInt(columnIndex)); - case Types.BIGINT: - return new Long(getLong(columnIndex)); - case Types.NUMERIC: - return getBigDecimal - (columnIndex, (field.getMod() == -1) ? -1 : ((field.getMod() - 4) & 0xffff)); - case Types.REAL: - return new Float(getFloat(columnIndex)); - case Types.DOUBLE: - return new Double(getDouble(columnIndex)); - case Types.CHAR: - 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")) - { + case Types.BIT: + return new Boolean(getBoolean(columnIndex)); + case Types.SMALLINT: + return new Integer(getInt(columnIndex)); + case Types.INTEGER: + return new Integer(getInt(columnIndex)); + case Types.BIGINT: + return new Long(getLong(columnIndex)); + case Types.NUMERIC: + return getBigDecimal + (columnIndex, (field.getMod() == -1) ? -1 : ((field.getMod() - 4) & 0xffff)); + case Types.REAL: + return new Float(getFloat(columnIndex)); + case Types.DOUBLE: + return new Double(getDouble(columnIndex)); + case Types.CHAR: + case Types.VARCHAR: return getString(columnIndex); - } - else - { - return connection.getObject(field.getPGType(), 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); + } + else + { + return connection.getObject(field.getPGType(), getString(columnIndex)); + } } } @@ -1082,7 +1082,7 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu if (current_row < 0 || current_row >= rows_size) return 0; - + return current_row + 1; } @@ -1565,10 +1565,13 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu return null; // length == 10: SQL Date // length > 10: SQL Timestamp, assumes PGDATESTYLE=ISO - try { - return java.sql.Date.valueOf((s.length() == 10) ? s : s.substring(0,10)); - } catch (NumberFormatException e) { - throw new PSQLException("postgresql.res.baddate", s); + try + { + return java.sql.Date.valueOf((s.length() == 10) ? s : s.substring(0, 10)); + } + 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 return null; // SQL NULL // length == 8: SQL Time // length > 8: SQL Timestamp - try { - return java.sql.Time.valueOf((s.length() == 8) ? s : s.substring(11,19)); - } catch (NumberFormatException e) { - throw new PSQLException("postgresql.res.badtime",s); + try + { + return java.sql.Time.valueOf((s.length() == 8) ? s : s.substring(11, 19)); + } + 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 char sub = resultSet.sbuf.charAt(resultSet.sbuf.length() - 3); 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); if (subsecond) @@ -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"); } - } else if (sub == ':') { - //we may have found timezone info of format +/-HH:MM, or there is no - //timezone info at all and this is the : preceding the seconds - char sub2 = resultSet.sbuf.charAt(resultSet.sbuf.length()-5); - if (sub2 == '+' || sub2 == '-') + } + else if (sub == ':') + { + //we may have found timezone info of format +/-HH:MM, or there is no + //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 - resultSet.sbuf.setLength(resultSet.sbuf.length()-5); - if (subsecond) + //we have found timezone info of format +/-HH:MM + resultSet.sbuf.setLength(resultSet.sbuf.length() - 5); + if (subsecond) { - resultSet.sbuf.append('0').append("GMT").append(s.substring(s.length()-5)); - } else { - resultSet.sbuf.append("GMT").append(s.substring(s.length()-5)); + resultSet.sbuf.append('0').append("GMT").append(s.substring(s.length() - 5)); } - } else if (subsecond) { - resultSet.sbuf.append('0'); + else + { + resultSet.sbuf.append("GMT").append(s.substring(s.length() - 5)); + } + } + else if (subsecond) + { + resultSet.sbuf.append('0'); } } else if (subsecond) diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java index 1268efeff99..7539a91c159 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java @@ -73,17 +73,17 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData switch (sql_type) { - case Types.SMALLINT: - case Types.INTEGER: - case Types.FLOAT: - case Types.REAL: - case Types.DOUBLE: - case Types.DATE: - case Types.TIME: - case Types.TIMESTAMP: - return false; - default: - return true; + case Types.SMALLINT: + case Types.INTEGER: + case Types.FLOAT: + case Types.REAL: + case Types.DOUBLE: + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + return false; + default: + return true; } } @@ -107,10 +107,10 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData // for further expansion. switch (sql_type) { - case Types.OTHER: - return true; - default: - return true; + case Types.OTHER: + return true; + default: + return true; } } @@ -162,18 +162,18 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData switch (sql_type) { - case Types.SMALLINT: - case Types.INTEGER: - case Types.FLOAT: - case Types.REAL: - case Types.DOUBLE: - return true; - case Types.DATE: - case Types.TIME: - case Types.TIMESTAMP: - return false; // I don't know about these? - default: - return false; + case Types.SMALLINT: + case Types.INTEGER: + case Types.FLOAT: + case Types.REAL: + case Types.DOUBLE: + return true; + case Types.DATE: + case Types.TIME: + case Types.TIMESTAMP: + return false; // I don't know about these? + default: + return false; } } @@ -289,26 +289,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData switch (sql_type) { - case Types.SMALLINT: - return 5; - case Types.INTEGER: - return 10; - case Types.REAL: - return 8; - case Types.FLOAT: - return 16; - case Types.DOUBLE: - return 16; - case Types.VARCHAR: - return 0; - case Types.NUMERIC: - Field f = getField(column); - if (f != null) - return ((0xFFFF0000)&f.getMod()) >> 16; - else + case Types.SMALLINT: + return 5; + case Types.INTEGER: + return 10; + case Types.REAL: + return 8; + case Types.FLOAT: + return 16; + case Types.DOUBLE: + return 16; + case Types.VARCHAR: + return 0; + case Types.NUMERIC: + Field f = getField(column); + if (f != null) + return ((0xFFFF0000)&f.getMod()) >> 16; + else + return 0; + default: return 0; - default: - return 0; } } @@ -326,26 +326,26 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData switch (sql_type) { - case Types.SMALLINT: - return 0; - case Types.INTEGER: - return 0; - case Types.REAL: - return 8; - case Types.FLOAT: - return 16; - case Types.DOUBLE: - return 16; - case Types.VARCHAR: - return 0; - case Types.NUMERIC: - Field f = getField(column); - if (f != null) - return (((0x0000FFFF)&f.getMod()) - 4); - else + case Types.SMALLINT: + return 0; + case Types.INTEGER: + return 0; + case Types.REAL: + return 8; + case Types.FLOAT: + return 16; + case Types.DOUBLE: + return 16; + case Types.VARCHAR: + return 0; + case Types.NUMERIC: + Field f = getField(column); + if (f != null) + return (((0x0000FFFF)&f.getMod()) - 4); + else + return 0; + default: return 0; - default: - return 0; } } |