Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Bug#552504: java.lang.IllegalAccessException in Cacao does not occur in Zero

4 views
Skip to first unread message

Matt Magoffin

unread,
Oct 26, 2009, 9:40:01 PM10/26/09
to
Package: openjdk-6-jre-headless
Version: 6b16-4

Found this exception when using Hsqldb 1.9
(http://sourceforge.net/projects/hsqldb/files/alpha_beta/hsqldb_1_9_0_rc6/hsqldb-1.9.0-rc6.zip/download)
that occurs when using the Cacao but not Zero VM in OpenJDK.

Java source Bug.java:
=============================================================
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Bug {

public static void main(String[] args) throws Exception {
Connection conn = null;
try {
conn = DriverManager.getConnection(args[0]);
boolean tableExists = tableExists(conn, args[1], args[2]);
System.out.println("Table exists: " +tableExists);
} finally {
if ( conn != null ) {
conn.close();
}
}
}

private static boolean tableExists(Connection conn,
String aSchemaName, String aTableName)
throws SQLException {
DatabaseMetaData dbMeta = conn.getMetaData();
ResultSet rs = null;
try {
rs = dbMeta.getTables(null, null, null, null);
while ( rs.next() ) {
String schema = rs.getString(2);
String table = rs.getString(3);
System.err.println("Found table " +schema +'.' +table);
if ( (aSchemaName == null || (
aSchemaName.equalsIgnoreCase(schema)))
&& aTableName.equalsIgnoreCase(table) ) {
return true;
}
}
return false;
} finally {
if ( rs != null ) {
try {
rs.close();
} catch ( SQLException e ) {
// ignore this
}
}
}
}

}
=============================================================

solar@ts7260:~$ /usr/lib/jvm/java-6-openjdk/bin/java -cacao -version
java version "1.6.0_0"
IcedTea Runtime Environment (IcedTea6 1.5) (6b16-4)
CACAO (build 0.99.4, compiled mode)

solar@ts7260:~$ /usr/lib/jvm/java-6-openjdk/bin/java -cacao
-Djdbc.drivers=org.hsqldb.jdbcDriver -cp lib/hsqldb.jar:. Bug
'jdbc:hsqldb:test' public test
java.lang.IllegalAccessException:
org.hsqldb.dbinfo.DatabaseInformationFull.<init>(Lorg.hsqldb.Database;)V
not accessible from org.hsqldb.Database
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
at
org.hsqldb.dbinfo.DatabaseInformation.newDatabaseInformation(DatabaseInformation.java:318)
at org.hsqldb.Database.reopen(Database.java:261)
at org.hsqldb.Database.open(Database.java:237)
at org.hsqldb.DatabaseManager.getDatabase(DatabaseManager.java:225)
at org.hsqldb.DatabaseManager.newSession(DatabaseManager.java:148)
at org.hsqldb.jdbc.JDBCConnection.<init>(JDBCConnection.java:3216)
at org.hsqldb.jdbc.JDBCDriver.getConnection(JDBCDriver.java:285)
at org.hsqldb.jdbc.JDBCDriver.connect(JDBCDriver.java:245)
at java.sql.DriverManager.getConnection(DriverManager.java:620)
at java.sql.DriverManager.getConnection(DriverManager.java:222)
at Bug.main(Bug.java:12)
Exception in thread "main" java.sql.SQLException: user lacks privilege or
object not found: SYSTEM_TABLES
at org.hsqldb.jdbc.Util.sqlException(Util.java:200)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(JDBCStatement.java:1809)
at org.hsqldb.jdbc.JDBCStatement.executeQuery(JDBCStatement.java:179)
at
org.hsqldb.jdbc.JDBCDatabaseMetaData.execute(JDBCDatabaseMetaData.java:6060)
at
org.hsqldb.jdbc.JDBCDatabaseMetaData.getTables(JDBCDatabaseMetaData.java:3161)
at Bug.tableExists(Bug.java:28)
at Bug.main(Bug.java:13)
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not
found: SYSTEM_TABLES
at org.hsqldb.error.Error.error(Error.java:77)
at org.hsqldb.SchemaManager.getTable(SchemaManager.java:527)
at org.hsqldb.ParserDQL.readTableName(ParserDQL.java:4382)
at org.hsqldb.ParserDQL.readTableOrSubquery(ParserDQL.java:1397)
at org.hsqldb.ParserDQL.XreadTableReference(ParserDQL.java:881)
at org.hsqldb.ParserDQL.XreadFromClause(ParserDQL.java:868)
at org.hsqldb.ParserDQL.XreadTableExpression(ParserDQL.java:803)
at org.hsqldb.ParserDQL.XreadQuerySpecification(ParserDQL.java:797)
at org.hsqldb.ParserDQL.XreadSimpleTable(ParserDQL.java:781)
at org.hsqldb.ParserDQL.XreadQueryPrimary(ParserDQL.java:714)
at org.hsqldb.ParserDQL.XreadQueryTerm(ParserDQL.java:680)
at org.hsqldb.ParserDQL.XreadQueryExpressionBody(ParserDQL.java:659)
at org.hsqldb.ParserDQL.XreadQueryExpression(ParserDQL.java:633)
at org.hsqldb.ParserDQL.compileCursorSpecification(ParserDQL.java:4542)
at org.hsqldb.ParserCommand.compilePart(ParserCommand.java:124)
at org.hsqldb.ParserCommand.compileStatements(ParserCommand.java:85)
at org.hsqldb.Session.executeDirectStatement(Session.java:1057)
at org.hsqldb.Session.execute(Session.java:877)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(JDBCStatement.java:1801)
... 5 more

-----------------------------
Now, run with Zero, no IllegalAccessException is thrown (which is the
expected behavior):

solar@ts7260:~$ /usr/lib/jvm/java-6-openjdk/bin/java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (IcedTea6 1.5) (6b16-4)
OpenJDK Zero VM (build 14.0-b15, interpreted mode)

solar@ts7260:~$ /usr/lib/jvm/java-6-openjdk/bin/java
-Djdbc.drivers=org.hsqldb.jdbcDriver -cp lib/hsqldb.jar:. Bug
'jdbc:hsqldb:test' public test
Found table INFORMATION_SCHEMA.ADMINISTRABLE_ROLE_AUTHORIZATIONS
...
Table exists: false

-----------------------------

solar@ts7260:~$ uname -a
Linux ts7260 2.6.29-ts #4 PREEMPT Sun May 17 15:02:44 MST 2009 armv4tl
GNU/Linux


--
To UNSUBSCRIBE, email to debian-bugs-...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listm...@lists.debian.org

0 new messages