Index: src/java/org/apache/hadoop/hive/jdbc/ExtendedHiveResultSet.java =================================================================== --- src/java/org/apache/hadoop/hive/jdbc/ExtendedHiveResultSet.java (revision 0) +++ src/java/org/apache/hadoop/hive/jdbc/ExtendedHiveResultSet.java (revision 0) @@ -0,0 +1,140 @@ +package org.apache.hadoop.hive.jdbc; + +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Types; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Set; + +import org.apache.hadoop.hive.service.HiveInterface; + +/** + * + * Hive ResultSet Class extended to support additional JDBC metadata + * + */ +public class ExtendedHiveResultSet extends HiveResultSet { + HashMap updatedColumnNames = null; + HashMap defaultColumnValues = null; + Set dataTypeColumns = null; + + /** + * + * @param client + * @param columnNames + * @param defaultColumnValues + * @param dataTypeColumns + * @throws SQLException + */ + public ExtendedHiveResultSet(HiveInterface client, + HashMap columnNames, + HashMap defaultColumnValues, Set dataTypeColumns) + throws SQLException { + super(client); + this.updatedColumnNames = columnNames; + this.defaultColumnValues = defaultColumnValues; + this.dataTypeColumns = dataTypeColumns; + + } + + /** + * Meta data updated for the additional metadata of table nad table column + */ + public ResultSetMetaData getMetaData() throws SQLException { + List updatedColumnNamesList = new ArrayList( + updatedColumnNames.keySet()); + + List updatedColumnDataTypes = new ArrayList(); + + for (String newColumnName : updatedColumnNamesList) { + + String oldColumnName = this.updatedColumnNames.get(newColumnName); + if (oldColumnName == null || oldColumnName.isEmpty()) { + updatedColumnDataTypes.add("string"); + } else { + int index = this.nameToIndexMap.get(oldColumnName); + updatedColumnDataTypes.add(this.columnTypes.get(index)); + } + + } + + return new HiveResultSetMetaData(updatedColumnNamesList, + updatedColumnDataTypes); + } + + /** + * + */ + public String getString(String columnName) throws SQLException + { + int i= 0; + + for(String key : this.updatedColumnNames.keySet()) + { + + if(key.equalsIgnoreCase(columnName)) + { + return this.row.get(i).toString(); + } + + i++; + } + + throw new SQLException("Column not present with this name:" + columnName + ": All Columns list: " + this.columnNames); + + } + + /*** + * + */ + public boolean next() throws SQLException { + if (super.next()) { + ArrayList currentRow = new ArrayList(); + for (String newColumnName : updatedColumnNames.keySet()) { + String oldColumnName = this.updatedColumnNames.get(newColumnName); + + if (oldColumnName == null || oldColumnName.isEmpty()) { + String defaultValue = ""; + + if (this.defaultColumnValues != null) { + defaultValue = defaultColumnValues.get(newColumnName); + } + // add default values + currentRow.add(defaultValue != null ? defaultValue : ""); + } else { + Object value = row.get(this.nameToIndexMap.get(oldColumnName)); + if (dataTypeColumns != null + && dataTypeColumns.contains(newColumnName)) { + // we need to convert the thrift type to the SQL type + // TODO: this would be better handled in an enum + if ("string".equals(value)) + value = Types.VARCHAR; + else if ("bool".equals(value)) + value = Types.BOOLEAN; + else if ("double".equals(value)) + value = Types.DOUBLE; + else if ("byte".equals(value)) + value = Types.TINYINT; + else if ("i32".equals(value)) + value = Types.INTEGER; + else if ("i64".equals(value)) + value = Types.BIGINT; + else if ("int".equals(value)) { + value = Types.INTEGER; + } else { + value = Types.VARCHAR; + } + } + currentRow.add(value); + } + } + row = currentRow; + return true; + } else { + return false; + } + } + +} Index: src/java/org/apache/hadoop/hive/jdbc/HiveConnection.java =================================================================== --- src/java/org/apache/hadoop/hive/jdbc/HiveConnection.java (revision 942003) +++ src/java/org/apache/hadoop/hive/jdbc/HiveConnection.java (working copy) @@ -203,8 +203,7 @@ public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return createStatement(); } /* (non-Javadoc) @@ -214,8 +213,7 @@ public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return createStatement(); } /* (non-Javadoc) @@ -239,10 +237,10 @@ /* (non-Javadoc) * @see java.sql.Connection#getCatalog() */ - public String getCatalog() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + /*throw new SQLException("Method not supported");*/ + return "default"; } /* (non-Javadoc) @@ -277,7 +275,8 @@ */ public DatabaseMetaData getMetaData() throws SQLException { - return new HiveDatabaseMetaData(); + + return new HiveDatabaseMetaData(this); } /* (non-Javadoc) @@ -564,5 +563,9 @@ // TODO Auto-generated method stub throw new SQLException("Method not supported"); } + + public HiveInterface getClient() { + return client; + } } Index: src/java/org/apache/hadoop/hive/jdbc/HiveDatabaseMetaData.java =================================================================== --- src/java/org/apache/hadoop/hive/jdbc/HiveDatabaseMetaData.java (revision 942003) +++ src/java/org/apache/hadoop/hive/jdbc/HiveDatabaseMetaData.java (working copy) @@ -18,26 +18,38 @@ package org.apache.hadoop.hive.jdbc; +import java.io.IOException; +import java.net.URL; import java.sql.Connection; +import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.RowIdLifetime; import java.sql.SQLException; -import java.sql.DatabaseMetaData; -import java.net.URL; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.Set; +import java.util.jar.Attributes; import java.util.jar.Manifest; -import java.util.jar.Attributes; -import java.io.IOException; +import org.apache.hadoop.hive.service.HiveInterface; +import org.apache.hadoop.hive.service.HiveServerException; +import org.apache.thrift.TException; + public class HiveDatabaseMetaData implements java.sql.DatabaseMetaData { + private HiveConnection connection; /** * */ - public HiveDatabaseMetaData() { - // TODO Auto-generated constructor stub + public HiveDatabaseMetaData(HiveConnection connection) { + + this.connection=connection; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#allProceduresAreCallable() */ @@ -46,7 +58,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#allTablesAreSelectable() */ @@ -55,7 +69,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#autoCommitFailureClosesAllResultSets() */ @@ -64,7 +80,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#dataDefinitionCausesTransactionCommit() */ @@ -73,7 +91,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#dataDefinitionIgnoredInTransactions() */ @@ -82,7 +102,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#deletesAreDetected(int) */ @@ -91,7 +113,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#doesMaxRowSizeIncludeBlobs() */ @@ -100,19 +124,24 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getAttributes(java.lang.String, java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getAttributes(java.lang.String, + * java.lang.String, java.lang.String, java.lang.String) */ public ResultSet getAttributes(String catalog, String schemaPattern, - String typeNamePattern, String attributeNamePattern) - throws SQLException { + String typeNamePattern, String attributeNamePattern) throws SQLException { // TODO Auto-generated method stub throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getBestRowIdentifier(java.lang.String, java.lang.String, java.lang.String, int, boolean) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getBestRowIdentifier(java.lang.String, + * java.lang.String, java.lang.String, int, boolean) */ public ResultSet getBestRowIdentifier(String catalog, String schema, @@ -121,7 +150,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getCatalogSeparator() */ @@ -130,35 +161,47 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getCatalogTerm() */ public String getCatalogTerm() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return ""; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getCatalogs() */ public ResultSet getCatalogs() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + // throw new SQLException("Method not supported"); + + return new HiveResultSet(connection.getClient()); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getClientInfoProperties() */ public ResultSet getClientInfoProperties() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + // throw new SQLException("Method not supported"); + return new HiveResultSet(connection.getClient()); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getColumnPrivileges(java.lang.String, java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getColumnPrivileges(java.lang.String, + * java.lang.String, java.lang.String, java.lang.String) */ public ResultSet getColumnPrivileges(String catalog, String schema, @@ -167,28 +210,81 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getColumns(java.lang.String, + * java.lang.String, java.lang.String, java.lang.String) */ public ResultSet getColumns(String catalog, String schemaPattern, - String tableNamePattern, String columnNamePattern) - throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + String tableNamePattern, String columnNamePattern) throws SQLException { + HiveInterface client = connection.getClient(); + ExtendedHiveResultSet extendedHiveResultSet = null; + try { + client.execute("describe " + tableNamePattern); + + // Default table description columns + HashMap updatedColumnNames = new LinkedHashMap(); + Set dataTypeColumns = new HashSet(); + updatedColumnNames.put("TABLE_CAT", ""); + updatedColumnNames.put("TABLE_SCHEM", ""); + updatedColumnNames.put("TABLE_NAME", ""); + updatedColumnNames.put("COLUMN_NAME", "col_name"); + updatedColumnNames.put("DATA_TYPE", "data_type"); + updatedColumnNames.put("TYPE_NAME", ""); + updatedColumnNames.put("COLUMN_SIZE", ""); + updatedColumnNames.put("BUFFER_LENGTH", ""); + updatedColumnNames.put("NUM_PREC_RADIX", ""); + updatedColumnNames.put("NULLABLE", ""); + + updatedColumnNames.put("REMARKS", "comment"); + updatedColumnNames.put("COLUMN_DEF", ""); + updatedColumnNames.put("SQL_DATA_TYPE", ""); + updatedColumnNames.put("SQL_DATETIME_SUB", ""); + updatedColumnNames.put("CHAR_OCTET_LENGTH", ""); + + updatedColumnNames.put("ORDINAL_POSITION", ""); + updatedColumnNames.put("IS_NULLABLE", ""); + updatedColumnNames.put("SCOPE_CATLOG", ""); + updatedColumnNames.put("SCOPE_SCHEMA", ""); + + updatedColumnNames.put("SCOPE_TABLE", ""); + updatedColumnNames.put("SOURCE_DATA_TYPE", ""); + updatedColumnNames.put("IS_AUTOINCREMENT", ""); + + dataTypeColumns.add("DATA_TYPE"); + extendedHiveResultSet = new ExtendedHiveResultSet(client, + updatedColumnNames, null, dataTypeColumns); + + } catch (HiveServerException e) { + + e.printStackTrace(); + } catch (TException e) { + e.printStackTrace(); + + } + return extendedHiveResultSet; + } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getConnection() */ public Connection getConnection() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return connection; } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getCrossReference(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getCrossReference(java.lang.String, + * java.lang.String, java.lang.String, java.lang.String, java.lang.String, + * java.lang.String) */ public ResultSet getCrossReference(String primaryCatalog, @@ -198,7 +294,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getDatabaseMajorVersion() */ @@ -207,7 +305,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getDatabaseMinorVersion() */ @@ -216,7 +316,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getDatabaseProductName() */ @@ -224,7 +326,9 @@ return "Hive"; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getDatabaseProductVersion() */ @@ -232,7 +336,9 @@ return "0"; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getDefaultTransactionIsolation() */ @@ -241,7 +347,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getDriverMajorVersion() */ @@ -250,7 +358,9 @@ return 0; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getDriverMinorVersion() */ @@ -259,7 +369,9 @@ return 0; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getDriverName() */ @@ -267,16 +379,21 @@ return fetchManifestAttribute(Attributes.Name.IMPLEMENTATION_TITLE); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getDriverVersion() */ public String getDriverVersion() throws SQLException { - return fetchManifestAttribute(Attributes.Name.IMPLEMENTATION_VERSION); + return fetchManifestAttribute(Attributes.Name.IMPLEMENTATION_VERSION); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getExportedKeys(java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getExportedKeys(java.lang.String, + * java.lang.String, java.lang.String) */ public ResultSet getExportedKeys(String catalog, String schema, String table) @@ -285,7 +402,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getExtraNameCharacters() */ @@ -294,8 +413,11 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getFunctionColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getFunctionColumns(java.lang.String, + * java.lang.String, java.lang.String, java.lang.String) */ public ResultSet getFunctionColumns(String arg0, String arg1, String arg2, @@ -304,8 +426,11 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getFunctions(java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getFunctions(java.lang.String, + * java.lang.String, java.lang.String) */ public ResultSet getFunctions(String arg0, String arg1, String arg2) @@ -314,7 +439,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getIdentifierQuoteString() */ @@ -323,8 +450,11 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getImportedKeys(java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getImportedKeys(java.lang.String, + * java.lang.String, java.lang.String) */ public ResultSet getImportedKeys(String catalog, String schema, String table) @@ -333,8 +463,11 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getIndexInfo(java.lang.String, java.lang.String, java.lang.String, boolean, boolean) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getIndexInfo(java.lang.String, + * java.lang.String, java.lang.String, boolean, boolean) */ public ResultSet getIndexInfo(String catalog, String schema, String table, @@ -343,7 +476,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getJDBCMajorVersion() */ @@ -351,7 +486,9 @@ return 3; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getJDBCMinorVersion() */ @@ -359,7 +496,9 @@ return 0; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxBinaryLiteralLength() */ @@ -368,7 +507,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxCatalogNameLength() */ @@ -377,7 +518,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxCharLiteralLength() */ @@ -386,7 +529,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxColumnNameLength() */ @@ -395,7 +540,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxColumnsInGroupBy() */ @@ -404,7 +551,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxColumnsInIndex() */ @@ -413,7 +562,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxColumnsInOrderBy() */ @@ -422,7 +573,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxColumnsInSelect() */ @@ -431,7 +584,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxColumnsInTable() */ @@ -440,7 +595,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxConnections() */ @@ -449,7 +606,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxCursorNameLength() */ @@ -458,7 +617,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxIndexLength() */ @@ -467,7 +628,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxProcedureNameLength() */ @@ -476,7 +639,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxRowSize() */ @@ -485,7 +650,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxSchemaNameLength() */ @@ -494,7 +661,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxStatementLength() */ @@ -503,7 +672,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxStatements() */ @@ -512,7 +683,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxTableNameLength() */ @@ -521,7 +694,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxTablesInSelect() */ @@ -530,7 +705,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getMaxUserNameLength() */ @@ -539,17 +716,23 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getNumericFunctions() */ public String getNumericFunctions() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + // throw new SQLException("Method not supported"); + return ""; } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getPrimaryKeys(java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getPrimaryKeys(java.lang.String, + * java.lang.String, java.lang.String) */ public ResultSet getPrimaryKeys(String catalog, String schema, String table) @@ -558,8 +741,11 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getProcedureColumns(java.lang.String, java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getProcedureColumns(java.lang.String, + * java.lang.String, java.lang.String, java.lang.String) */ public ResultSet getProcedureColumns(String catalog, String schemaPattern, @@ -569,26 +755,33 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getProcedureTerm() */ public String getProcedureTerm() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return ""; } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getProcedures(java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getProcedures(java.lang.String, + * java.lang.String, java.lang.String) */ public ResultSet getProcedures(String catalog, String schemaPattern, String procedureNamePattern) throws SQLException { - //TODO: return empty result set here + // TODO: return empty result set here return null; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getResultSetHoldability() */ @@ -597,7 +790,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getRowIdLifetime() */ @@ -606,16 +801,20 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getSQLKeywords() */ public String getSQLKeywords() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return ""; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getSQLStateType() */ @@ -623,35 +822,47 @@ return DatabaseMetaData.sqlStateSQL99; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getSchemaTerm() */ public String getSchemaTerm() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return "default"; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getSchemas() */ - public ResultSet getSchemas() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + // throw new SQLException("Method not supported"); + HiveResultSet hiveResultSet = new HiveResultSet(connection.getClient()); + + return hiveResultSet; } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getSchemas(java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getSchemas(java.lang.String, + * java.lang.String) */ public ResultSet getSchemas(String catalog, String schemaPattern) throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + HiveResultSet hiveResultSet = new HiveResultSet(connection.getClient()); + + return hiveResultSet; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getSearchStringEscape() */ @@ -660,17 +871,22 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getStringFunctions() */ public String getStringFunctions() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return ""; } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getSuperTables(java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getSuperTables(java.lang.String, + * java.lang.String, java.lang.String) */ public ResultSet getSuperTables(String catalog, String schemaPattern, @@ -679,8 +895,11 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getSuperTypes(java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getSuperTypes(java.lang.String, + * java.lang.String, java.lang.String) */ public ResultSet getSuperTypes(String catalog, String schemaPattern, @@ -689,7 +908,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getSystemFunctions() */ @@ -698,8 +919,11 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getTablePrivileges(java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getTablePrivileges(java.lang.String, + * java.lang.String, java.lang.String) */ public ResultSet getTablePrivileges(String catalog, String schemaPattern, @@ -708,54 +932,99 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getTableTypes() */ - public ResultSet getTableTypes() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + // throw new SQLException("Method not supported"); + return new HiveResultSet(connection.getClient()); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getTables(java.lang.String, java.lang.String, java.lang.String, java.lang.String[]) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getTables(java.lang.String, + * java.lang.String, java.lang.String, java.lang.String[]) */ public ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + HiveInterface client = connection.getClient(); + ResultSet tableResultSet = null; + try { + client.execute("show tables"); + // Default table description columns + HashMap updatedColumnNames = new LinkedHashMap(); + updatedColumnNames.put("TABLE_CAT", ""); + updatedColumnNames.put("TABLE_SCHEM", ""); + updatedColumnNames.put("TABLE_NAME", "tab_name"); + updatedColumnNames.put("TABLE_TYPE", ""); + updatedColumnNames.put("REMARKS", ""); + updatedColumnNames.put("TYPE_CAT", ""); + updatedColumnNames.put("TYPE_SCHEM", ""); + updatedColumnNames.put("TYPE_NAME", ""); + updatedColumnNames.put("SELF_REFERENCING_COL_NAME", ""); + updatedColumnNames.put("REF_GENERATION", ""); + + // default values for the table description columns + HashMap defColumnValues = new HashMap(); + defColumnValues.put("TABLE_TYPE", "TABLE"); + + tableResultSet = new ExtendedHiveResultSet(client, updatedColumnNames, + defColumnValues, null); + + } catch (HiveServerException e) { + + e.printStackTrace(); + } catch (TException e) { + e.printStackTrace(); + + } + return tableResultSet; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getTimeDateFunctions() */ public String getTimeDateFunctions() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return ""; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getTypeInfo() */ public ResultSet getTypeInfo() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return new HiveResultSet(connection.getClient()); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getUDTs(java.lang.String, java.lang.String, java.lang.String, int[]) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getUDTs(java.lang.String, java.lang.String, + * java.lang.String, int[]) */ public ResultSet getUDTs(String catalog, String schemaPattern, String typeNamePattern, int[] types) throws SQLException { + // TODO Auto-generated method stub throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getURL() */ @@ -764,7 +1033,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#getUserName() */ @@ -773,17 +1044,22 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#getVersionColumns(java.lang.String, java.lang.String, java.lang.String) + /* + * (non-Javadoc) + * + * @see java.sql.DatabaseMetaData#getVersionColumns(java.lang.String, + * java.lang.String, java.lang.String) */ - public ResultSet getVersionColumns(String catalog, String schema, - String table) throws SQLException { + public ResultSet getVersionColumns(String catalog, String schema, String table) + throws SQLException { // TODO Auto-generated method stub throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#insertsAreDetected(int) */ @@ -792,7 +1068,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#isCatalogAtStart() */ @@ -801,7 +1079,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#isReadOnly() */ @@ -810,7 +1090,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#locatorsUpdateCopy() */ @@ -819,7 +1101,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#nullPlusNonNullIsNull() */ @@ -828,7 +1112,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#nullsAreSortedAtEnd() */ @@ -837,7 +1123,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#nullsAreSortedAtStart() */ @@ -846,7 +1134,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#nullsAreSortedHigh() */ @@ -855,7 +1145,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#nullsAreSortedLow() */ @@ -864,7 +1156,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#othersDeletesAreVisible(int) */ @@ -873,7 +1167,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#othersInsertsAreVisible(int) */ @@ -882,7 +1178,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#othersUpdatesAreVisible(int) */ @@ -891,7 +1189,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#ownDeletesAreVisible(int) */ @@ -900,7 +1200,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#ownInsertsAreVisible(int) */ @@ -909,7 +1211,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#ownUpdatesAreVisible(int) */ @@ -918,7 +1222,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#storesLowerCaseIdentifiers() */ @@ -927,7 +1233,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#storesLowerCaseQuotedIdentifiers() */ @@ -936,7 +1244,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#storesMixedCaseIdentifiers() */ @@ -945,7 +1255,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#storesMixedCaseQuotedIdentifiers() */ @@ -954,7 +1266,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#storesUpperCaseIdentifiers() */ @@ -963,7 +1277,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#storesUpperCaseQuotedIdentifiers() */ @@ -972,7 +1288,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsANSI92EntryLevelSQL() */ @@ -981,7 +1299,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsANSI92FullSQL() */ @@ -990,7 +1310,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsANSI92IntermediateSQL() */ @@ -999,7 +1321,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsAlterTableWithAddColumn() */ @@ -1008,7 +1332,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsAlterTableWithDropColumn() */ @@ -1017,7 +1343,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsBatchUpdates() */ @@ -1026,16 +1354,21 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsCatalogsInDataManipulation() */ public boolean supportsCatalogsInDataManipulation() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + // throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsCatalogsInIndexDefinitions() */ @@ -1044,25 +1377,31 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsCatalogsInPrivilegeDefinitions() */ public boolean supportsCatalogsInPrivilegeDefinitions() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsCatalogsInProcedureCalls() */ public boolean supportsCatalogsInProcedureCalls() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsCatalogsInTableDefinitions() */ @@ -1070,208 +1409,254 @@ return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsColumnAliasing() */ public boolean supportsColumnAliasing() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsConvert() */ public boolean supportsConvert() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsConvert(int, int) */ - public boolean supportsConvert(int fromType, int toType) - throws SQLException { + public boolean supportsConvert(int fromType, int toType) throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsCoreSQLGrammar() */ public boolean supportsCoreSQLGrammar() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsCorrelatedSubqueries() */ public boolean supportsCorrelatedSubqueries() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) - * @see java.sql.DatabaseMetaData#supportsDataDefinitionAndDataManipulationTransactions() + /* + * (non-Javadoc) + * + * @see + * java.sql.DatabaseMetaData#supportsDataDefinitionAndDataManipulationTransactions + * () */ public boolean supportsDataDefinitionAndDataManipulationTransactions() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsDataManipulationTransactionsOnly() */ - public boolean supportsDataManipulationTransactionsOnly() - throws SQLException { + public boolean supportsDataManipulationTransactionsOnly() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsDifferentTableCorrelationNames() */ public boolean supportsDifferentTableCorrelationNames() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsExpressionsInOrderBy() */ public boolean supportsExpressionsInOrderBy() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsExtendedSQLGrammar() */ public boolean supportsExtendedSQLGrammar() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsFullOuterJoins() */ public boolean supportsFullOuterJoins() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsGetGeneratedKeys() */ public boolean supportsGetGeneratedKeys() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsGroupBy() */ public boolean supportsGroupBy() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsGroupByBeyondSelect() */ public boolean supportsGroupByBeyondSelect() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsGroupByUnrelated() */ public boolean supportsGroupByUnrelated() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsIntegrityEnhancementFacility() */ public boolean supportsIntegrityEnhancementFacility() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsLikeEscapeClause() */ public boolean supportsLikeEscapeClause() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsLimitedOuterJoins() */ public boolean supportsLimitedOuterJoins() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsMinimumSQLGrammar() */ public boolean supportsMinimumSQLGrammar() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsMixedCaseIdentifiers() */ public boolean supportsMixedCaseIdentifiers() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsMixedCaseQuotedIdentifiers() */ public boolean supportsMixedCaseQuotedIdentifiers() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsMultipleOpenResults() */ public boolean supportsMultipleOpenResults() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsMultipleResultSets() */ @@ -1279,116 +1664,142 @@ return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsMultipleTransactions() */ public boolean supportsMultipleTransactions() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsNamedParameters() */ public boolean supportsNamedParameters() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsNonNullableColumns() */ public boolean supportsNonNullableColumns() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsOpenCursorsAcrossCommit() */ public boolean supportsOpenCursorsAcrossCommit() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsOpenCursorsAcrossRollback() */ public boolean supportsOpenCursorsAcrossRollback() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsOpenStatementsAcrossCommit() */ public boolean supportsOpenStatementsAcrossCommit() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsOpenStatementsAcrossRollback() */ public boolean supportsOpenStatementsAcrossRollback() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsOrderByUnrelated() */ public boolean supportsOrderByUnrelated() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsOuterJoins() */ public boolean supportsOuterJoins() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsPositionedDelete() */ public boolean supportsPositionedDelete() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsPositionedUpdate() */ public boolean supportsPositionedUpdate() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsResultSetConcurrency(int, int) */ public boolean supportsResultSetConcurrency(int type, int concurrency) throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsResultSetHoldability(int) */ @@ -1397,7 +1808,9 @@ return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsResultSetType(int) */ @@ -1405,16 +1818,20 @@ return true; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSavepoints() */ public boolean supportsSavepoints() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSchemasInDataManipulation() */ @@ -1422,34 +1839,42 @@ return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSchemasInIndexDefinitions() */ public boolean supportsSchemasInIndexDefinitions() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSchemasInPrivilegeDefinitions() */ public boolean supportsSchemasInPrivilegeDefinitions() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSchemasInProcedureCalls() */ public boolean supportsSchemasInProcedureCalls() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSchemasInTableDefinitions() */ @@ -1457,34 +1882,42 @@ return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSelectForUpdate() */ public boolean supportsSelectForUpdate() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsStatementPooling() */ public boolean supportsStatementPooling() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsStoredFunctionsUsingCallSyntax() */ public boolean supportsStoredFunctionsUsingCallSyntax() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsStoredProcedures() */ @@ -1492,125 +1925,153 @@ return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSubqueriesInComparisons() */ public boolean supportsSubqueriesInComparisons() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSubqueriesInExists() */ public boolean supportsSubqueriesInExists() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSubqueriesInIns() */ public boolean supportsSubqueriesInIns() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsSubqueriesInQuantifieds() */ public boolean supportsSubqueriesInQuantifieds() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsTableCorrelationNames() */ public boolean supportsTableCorrelationNames() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsTransactionIsolationLevel(int) */ public boolean supportsTransactionIsolationLevel(int level) throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsTransactions() */ public boolean supportsTransactions() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsUnion() */ public boolean supportsUnion() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#supportsUnionAll() */ public boolean supportsUnionAll() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#updatesAreDetected(int) */ public boolean updatesAreDetected(int type) throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#usesLocalFilePerTable() */ public boolean usesLocalFilePerTable() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.DatabaseMetaData#usesLocalFiles() */ public boolean usesLocalFiles() throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Wrapper#isWrapperFor(java.lang.Class) */ public boolean isWrapperFor(Class iface) throws SQLException { // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + return false; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Wrapper#unwrap(java.lang.Class) */ @@ -1626,26 +2087,31 @@ /** * Loads the manifest attributes from the jar. + * * @throws java.net.MalformedURLException * @throws IOException */ private synchronized void loadManifestAttributes() throws IOException { - if(manifestAttributes != null) return; + if (manifestAttributes != null) + return; Class clazz = this.getClass(); - String classContainer = clazz.getProtectionDomain().getCodeSource().getLocation().toString(); - URL manifestUrl = new URL("jar:" + classContainer + "!/META-INF/MANIFEST.MF"); + String classContainer = clazz.getProtectionDomain().getCodeSource() + .getLocation().toString(); + URL manifestUrl = new URL("jar:" + classContainer + + "!/META-INF/MANIFEST.MF"); Manifest manifest = new Manifest(manifestUrl.openStream()); manifestAttributes = manifest.getMainAttributes(); } /** * Helper to initialize attributes and return one. - * + * * @param attributeName * @return * @throws SQLException */ - private String fetchManifestAttribute(Attributes.Name attributeName) throws SQLException { + private String fetchManifestAttribute(Attributes.Name attributeName) + throws SQLException { try { loadManifestAttributes(); } catch (IOException e) { @@ -1653,10 +2119,10 @@ } return manifestAttributes.getValue(attributeName); } - + public static void main(String[] args) throws SQLException { - HiveDatabaseMetaData meta = new HiveDatabaseMetaData(); - System.out.println("DriverName: " + meta.getDriverName()); - System.out.println("DriverVersion: " + meta.getDriverVersion()); + // HiveDatabaseMetaData meta = new HiveDatabaseMetaData(); + // System.out.println("DriverName: " + meta.getDriverName()); + // System.out.println("DriverVersion: " + meta.getDriverVersion()); } } Index: src/java/org/apache/hadoop/hive/jdbc/HiveResultSet.java =================================================================== --- src/java/org/apache/hadoop/hive/jdbc/HiveResultSet.java (revision 942003) +++ src/java/org/apache/hadoop/hive/jdbc/HiveResultSet.java (working copy) @@ -37,6 +37,7 @@ import java.sql.Time; import java.sql.Timestamp; import java.util.Calendar; +import java.util.HashMap; import java.util.Map; import java.util.List; import java.util.ArrayList; @@ -57,6 +58,7 @@ DynamicSerDe ds; List columnNames; List columnTypes; + Map nameToIndexMap = null; SQLWarning warningChain = null; boolean wasNull = false; @@ -71,6 +73,7 @@ this.client = client; this.row = new ArrayList(); this.maxRows = maxRows; + this.nameToIndexMap = new HashMap(); initDynamicSerde(); } @@ -87,10 +90,8 @@ Schema fullSchema = client.getThriftSchema(); List schema = fullSchema.getFieldSchemas(); columnNames = new ArrayList(); - columnTypes = new ArrayList(); - + columnTypes = new ArrayList(); String serDDL; - if ((schema != null) && (!schema.isEmpty())) { serDDL = new String("struct result { "); for (int pos = 0; pos < schema.size(); pos++) { @@ -98,6 +99,7 @@ serDDL = serDDL.concat(","); columnTypes.add(schema.get(pos).getType()); columnNames.add(schema.get(pos).getName()); + this.nameToIndexMap.put(columnNames.get(pos), pos); serDDL = serDDL.concat(schema.get(pos).getType()); serDDL = serDDL.concat(" "); serDDL = serDDL.concat(schema.get(pos).getName()); @@ -169,9 +171,9 @@ * @see java.sql.ResultSet#close() */ - public void close() throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + public void close() throws SQLException { + // client = null; + } /* (non-Javadoc) @@ -689,8 +691,12 @@ */ public Object getObject(String columnName) throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + if(this.nameToIndexMap.containsKey(columnName)) + { + return getObject(this.nameToIndexMap.get(columnName)+1); + } + + throw new SQLException("Column not present with this name:" + columnName + ": All Columns list: " + this.columnNames); } /* (non-Javadoc) @@ -828,9 +834,21 @@ * @see java.sql.ResultSet#getString(java.lang.String) */ - public String getString(String columnName) throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + public String getString(String columnName) throws SQLException + { + if(this.nameToIndexMap.containsKey(columnName)) + { + // Column index starts from 1, not 0. + Object obj = getObject(this.nameToIndexMap.get(columnName)+1); + + if (obj == null) return null; + + return obj.toString(); + + } + + throw new SQLException("Column not present with this name:" + columnName + ": All Columns list: " + this.columnNames); + } /* (non-Javadoc) Index: src/java/org/apache/hadoop/hive/jdbc/HiveResultSetMetaData.java =================================================================== --- src/java/org/apache/hadoop/hive/jdbc/HiveResultSetMetaData.java (revision 942003) +++ src/java/org/apache/hadoop/hive/jdbc/HiveResultSetMetaData.java (working copy) @@ -43,7 +43,7 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* (non-Javadoc)o * @see java.sql.ResultSetMetaData#getColumnClassName(int) */ @@ -57,7 +57,9 @@ */ public int getColumnCount() throws SQLException { + return columnNames.size(); + } /* (non-Javadoc) @@ -97,6 +99,7 @@ */ public String getColumnName(int column) throws SQLException { + return columnNames.get(column-1); } @@ -107,10 +110,8 @@ public int getColumnType(int column) throws SQLException { if (columnTypes == null) throw new SQLException("Could not determine column type name for ResultSet"); - if (column < 1 || column > columnTypes.size()) - throw new SQLException("Invalid column value: " + column); - + throw new SQLException("Invalid column value: " + column); // we need to convert the thrift type to the SQL type String type = columnTypes.get(column-1); @@ -188,8 +189,8 @@ */ public String getSchemaName(int column) throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + + return ""; } /* (non-Javadoc) @@ -197,8 +198,9 @@ */ public String getTableName(int column) throws SQLException { - // TODO Auto-generated method stub - throw new SQLException("Method not supported"); + + + return ""; } /* (non-Javadoc) Index: src/java/org/apache/hadoop/hive/jdbc/HiveStatement.java =================================================================== --- src/java/org/apache/hadoop/hive/jdbc/HiveStatement.java (revision 942003) +++ src/java/org/apache/hadoop/hive/jdbc/HiveStatement.java (working copy) @@ -22,7 +22,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.sql.SQLWarning; -import java.util.Vector; + import org.apache.hadoop.hive.service.HiveInterface; import org.apache.hadoop.hive.service.HiveServerException; @@ -61,7 +61,9 @@ this.client = client; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#addBatch(java.lang.String) */ @@ -70,7 +72,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#cancel() */ @@ -79,7 +83,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#clearBatch() */ @@ -88,7 +94,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#clearWarnings() */ @@ -96,40 +104,47 @@ this.warningChain = null; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#close() */ public void close() throws SQLException { - //TODO: how to properly shut down the client? + client = null; resultSet = null; isClosed = true; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#execute(java.lang.String) */ public boolean execute(String sql) throws SQLException { ResultSet rs = executeQuery(sql); - //TODO: this should really check if there are results, but there's no easy - //way to do that without calling rs.next(); + // TODO: this should really check if there are results, but there's no easy + // way to do that without calling rs.next(); return rs != null; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#execute(java.lang.String, int) */ - public boolean execute(String sql, int autoGeneratedKeys) - throws SQLException { + public boolean execute(String sql, int autoGeneratedKeys) throws SQLException { // TODO Auto-generated method stub throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#execute(java.lang.String, int[]) */ @@ -138,17 +153,20 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#execute(java.lang.String, java.lang.String[]) */ - public boolean execute(String sql, String[] columnNames) - throws SQLException { + public boolean execute(String sql, String[] columnNames) throws SQLException { // TODO Auto-generated method stub throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#executeBatch() */ @@ -157,7 +175,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#executeQuery(java.lang.String) */ @@ -168,18 +188,18 @@ try { this.resultSet = null; client.execute(sql); - } - catch (HiveServerException e) { + } catch (HiveServerException e) { throw new SQLException(e.getMessage(), e.getSQLState(), e.getErrorCode()); + } catch (Exception ex) { + throw new SQLException(ex.toString(), "08S01"); } - catch (Exception ex) { - throw new SQLException(ex.toString(), "08S01"); - } this.resultSet = new HiveResultSet(client, maxRows); return this.resultSet; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#executeUpdate(java.lang.String) */ @@ -192,7 +212,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#executeUpdate(java.lang.String, int) */ @@ -202,17 +224,20 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#executeUpdate(java.lang.String, int[]) */ - public int executeUpdate(String sql, int[] columnIndexes) - throws SQLException { + public int executeUpdate(String sql, int[] columnIndexes) throws SQLException { // TODO Auto-generated method stub throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#executeUpdate(java.lang.String, java.lang.String[]) */ @@ -222,7 +247,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getConnection() */ @@ -231,7 +258,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getFetchDirection() */ @@ -240,7 +269,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getFetchSize() */ @@ -249,7 +280,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getGeneratedKeys() */ @@ -258,7 +291,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getMaxFieldSize() */ @@ -267,7 +302,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getMaxRows() */ @@ -275,7 +312,9 @@ return this.maxRows; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getMoreResults() */ @@ -284,7 +323,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getMoreResults(int) */ @@ -293,7 +334,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getQueryTimeout() */ @@ -302,7 +345,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getResultSet() */ @@ -310,7 +355,9 @@ return this.resultSet; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getResultSetConcurrency() */ @@ -319,7 +366,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getResultSetHoldability() */ @@ -328,7 +377,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getResultSetType() */ @@ -337,7 +388,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getUpdateCount() */ @@ -345,7 +398,9 @@ return 0; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#getWarnings() */ @@ -353,7 +408,9 @@ return this.warningChain; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#isClosed() */ @@ -361,7 +418,9 @@ return this.isClosed; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#isPoolable() */ @@ -370,7 +429,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#setCursorName(java.lang.String) */ @@ -379,7 +440,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#setEscapeProcessing(boolean) */ @@ -388,7 +451,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#setFetchDirection(int) */ @@ -397,7 +462,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#setFetchSize(int) */ @@ -406,7 +473,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#setMaxFieldSize(int) */ @@ -415,16 +484,21 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#setMaxRows(int) */ public void setMaxRows(int max) throws SQLException { - if (max < 0) throw new SQLException("max must be >= 0"); + if (max < 0) + throw new SQLException("max must be >= 0"); this.maxRows = max; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#setPoolable(boolean) */ @@ -433,7 +507,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Statement#setQueryTimeout(int) */ @@ -442,7 +518,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Wrapper#isWrapperFor(java.lang.Class) */ @@ -451,7 +529,9 @@ throw new SQLException("Method not supported"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.sql.Wrapper#unwrap(java.lang.Class) */