while ( outerRowSet.next() && innerRowSet.next() )
{ for ( int i=1; i <= outerRowSet.getColumnCount(); ++i )
{
assertTrue( "content of column " + i + " of row " + outerRowSet.getRow() + " not identical",
innerRowSet.getString(i).equals( outerRowSet.getString(i) ) );
}
}
}
/** executes a SQL statement simply selecting all columns from a query
*/
@Test publicvoid executeSimpleSelect() throws SQLException
{
verifyEqualRowSetContent(
CommandType.COMMAND, "SELECT * FROM \"query products\"",
CommandType.QUERY,QUERY_PRODUCTS);
}
/** verifies that aliases for inner queries work as expected
*/
@Test publicvoid executeAliasedSelect() throws SQLException
{
verifyEqualRowSetContent(
CommandType.COMMAND, "SELECT \"PROD\".\"ID\" FROM \"query products\" AS \"PROD\"",
CommandType.COMMAND, "SELECT \"ID\" FROM \"products\"" );
verifyEqualRowSetContent(
CommandType.COMMAND, "SELECT \"PROD\".* FROM \"query products\" AS \"PROD\"",
CommandType.QUERY,QUERY_PRODUCTS);
}
/** verifies that aliases for inner queries work as expected
*/
@Test publicvoid checkNameCollisions()
{ // create a query with a name which is used by a table boolean caughtExpected = false; try
{
m_database.getDatabase().getDataSource().createQuery( "products", "SELECT * FROM \"products\"" );
} catch ( WrappedTargetException e ) { caughtExpected = true; } catch ( IllegalArgumentException e ) {} catch ( ElementExistException e ) { caughtExpected = true; }
assertTrue( "creating queries with the name of an existing table should not be possible",
caughtExpected );
// create a table with a name which is used by a query final HsqlTableDescriptor table = new HsqlTableDescriptor( QUERY_PRODUCTS, new HsqlColumnDescriptor[] { new HsqlColumnDescriptor( "ID", "INTEGER" ), new HsqlColumnDescriptor( "Name", "VARCHAR(50)" ) } );
caughtExpected = false; try
{
m_database.getDatabase().createTableInSDBCX( table );
} catch ( SQLException e ) { caughtExpected = true; } catch ( ElementExistException ex ) { }
assertTrue( "creating tables with the name of an existing query should not be possible",
caughtExpected );
}
@Test publicvoid checkCyclicReferences() throws ElementExistException, WrappedTargetException, IllegalArgumentException
{ // some queries which create a cycle in the sub query tree
m_database.getDatabase().getDataSource().createQuery( "orders level 1", "SELECT * FROM \"orders level 0\"" );
m_database.getDatabase().getDataSource().createQuery( "orders level 2", "SELECT * FROM \"orders level 1\"" );
m_database.getDatabase().getDataSource().createQuery( "orders level 3", "SELECT * FROM \"orders level 2\"" );
m_database.getDatabase().getDataSource().createQuery( "orders level 0", "SELECT * FROM \"orders level 3\"" );
final RowSet rowSet = m_database.getDatabase().createRowSet( CommandType.QUERY, "orders level 0" );
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.