NullPointerException in ModelBasedResultSetIterator ---------------------------------------------------
Key: DDLUTILS-227 URL: https://issues.apache.org/jira/browse/DDLUTILS-227 Project: DdlUtils Issue Type: Bug Components: Core (No specific database), Core - HSQLDB Environment: HSQLDB Reporter: Rijk van Haaften Assignee: Thomas Dudziak The bug is in initFromMetaData(Database) For subqueries in HSQLDB, tableOfColumn = metaData.getTableName(idx) = "SYSTEM_SUBQUERY", rather than null or "", so the if-block (see below) is executed. That table, of course is not in the model, so table = model.findTable... will set table to null. That is correct. But unlike the else-block, tableOfColumn is left unchanged. This causes the tableName to be wrong, which later on sets the _dynaClass to be null: _dynaClass = model.getDynaClassFor(tableName); // model does not contain a "SYSTEM_SUBQUERY"-table This finally causes a NullPointerException in the implementation of next(): DynaBean bean = _dynaClass.newInstance(); The solution is simple: Update the tableOfColumn not only in the else-block, but always (only the last few lines changed): if ((tableOfColumn != null) && (tableOfColumn.length() > 0)) { _log.debug("Table from metadata: " + tableOfColumn); // jConnect might return a table name enclosed in quotes if (tableOfColumn.startsWith("\"") && tableOfColumn.endsWith("\"") && (tableOfColumn.length() > 1)) { tableOfColumn = tableOfColumn.substring(1, tableOfColumn.length() - 1); } // the JDBC driver gave us enough meta data info table = model.findTable(tableOfColumn, _caseSensitive); } else { _log.debug("Try query hints"); // not enough info in the meta data of the result set, lets try the // user-supplied query hints table = (Table)_preparedQueryHints.get(_caseSensitive ? columnName : columnName.toLowerCase()); } tableOfColumn = (table == null ? null : table.getName()); // Moved out of the else-block -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.