/**
   * Tests the pattern-like column retrieval from the database. DbUnit should not interpret any
   * table names as regex patterns.
   *
   * @throws Exception
   */
  public void testGetColumnsForTablesMatchingSamePattern() throws Exception {
    Connection jdbcConnection = HypersonicEnvironment.createJdbcConnection("tempdb");
    HypersonicEnvironment.executeDdlFile(
        new File("src/sql/hypersonic_dataset_pattern_test.sql"), jdbcConnection);
    IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);

    try {
      String tableName = "PATTERN_LIKE_TABLE_X_";
      String[] columnNames = {"VARCHAR_COL_XUNDERSCORE"};

      String sql = "select * from " + tableName;
      ForwardOnlyResultSetTable resultSetTable =
          new ForwardOnlyResultSetTable(tableName, sql, connection);
      ResultSetTableMetaData metaData = (ResultSetTableMetaData) resultSetTable.getTableMetaData();

      Column[] columns = metaData.getColumns();

      assertEquals("column count", columnNames.length, columns.length);

      for (int i = 0; i < columnNames.length; i++) {
        Column column = Columns.getColumn(columnNames[i], columns);
        assertEquals(columnNames[i], columnNames[i], column.getColumnName());
      }
    } finally {
      HypersonicEnvironment.shutdown(jdbcConnection);
      jdbcConnection.close();
      HypersonicEnvironment.deleteFiles("tempdb");
    }
  }
예제 #2
0
  public Column[] getPrimaryKeys() throws DataSetException {
    logger.debug("getPrimaryKeys() - start");
    DatabaseConfig config = _connection.getConfig();
    IColumnFilter primaryKeysFilter =
        (IColumnFilter) config.getProperty(DatabaseConfig.PROPERTY_PRIMARY_KEY_FILTER);

    if (_primaryKeys == null || primaryKeyFilterChanged(primaryKeysFilter)) {
      try {
        lastKeyFilter = primaryKeysFilter;
        if (primaryKeysFilter != null) {
          _primaryKeys = Columns.getColumns(getTableName(), getColumns(), primaryKeysFilter);
        } else {
          String[] pkNames = getPrimaryKeyNames();
          _primaryKeys = Columns.getColumns(pkNames, getColumns());
        }
      } catch (SQLException e) {
        throw new DataSetException(e);
      }
    }
    return _primaryKeys;
  }