Anyone? It's not clear to me why 'distinct' seems to be a special case which is not supported on read-only database connections. Is this a wrinkle in the implementation, or am I missing something? It seems the ability to (implicitly, as a side-effect of a query) create temporary tables on a read-only database is very broadly useful, e.g. for the efficient implementation of a join or an 'in' clause.
Thanks, Joel On May 23, 2:28 pm, Joel Nelson <[email protected]> wrote: > Do you think it is necessary to implement it that way? Large query > results are persisted to disk already for read-only databases; it > doesn't seem fundamentally different to do an external sort and > distinct that way? > > On May 18, 11:34 am, Noel Grandin <[email protected]> wrote: > > > > > > > > > The DISTINCT operation needs to allocate a temporary table, which it > > can't do if the database is read-only. > > > On Tue, May 17, 2011 at 14:03, Valentin Tablan <[email protected]> wrote: > > > Here's an example of a full stack trace when this occurs: > > > Caused by: org.h2.jdbc.JdbcSQLException: The database is read only; SQL > > > statement: > > > SELECT DISTINCT "ContentMentions".ID, "ContentMentions".Length FROM > > > "ContentMentions" [90097-150] > > > at > > > org.h2.message.DbException.getJdbcSQLException(DbException.java:327) > > > at org.h2.message.DbException.get(DbException.java:167) > > > at org.h2.message.DbException.get(DbException.java:144) > > > at org.h2.message.DbException.get(DbException.java:133) > > > at > > > org.h2.engine.Database.checkWritingAllowed(Database.java:1616) > > > at org.h2.store.PageStore.logUndo(PageStore.java:1005) > > > at org.h2.store.PageFreeList.allocate(PageFreeList.java:96) > > > at org.h2.store.PageStore.allocatePage(PageStore.java:1138) > > > at org.h2.store.PageStore.allocatePage(PageStore.java:1123) > > > at org.h2.index.PageDataIndex.<init>(PageDataIndex.java:69) > > > at org.h2.table.RegularTable.<init>(RegularTable.java:90) > > > at org.h2.schema.Schema.createTable(Schema.java:551) > > > at org.h2.result.ResultTempTable.<init>(ResultTempTable.java:56) > > > at org.h2.result.LocalResult.addRow(LocalResult.java:238) > > > at org.h2.command.dml.Select.queryFlat(Select.java:509) > > > at org.h2.command.dml.Select.queryWithoutCache(Select.java:597) > > > at org.h2.command.dml.Query.query(Query.java:256) > > > at org.h2.command.dml.Query.query(Query.java:226) > > > at org.h2.command.dml.Query.query(Query.java:37) > > > at > > > org.h2.command.CommandContainer.query(CommandContainer.java:78) > > > at org.h2.command.Command.executeQuery(Command.java:178) > > > at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:77) > > > > Thanks, > > > Valentin > > > > On Tue, 2011-05-17 at 12:42 +0100, Valentin Tablan wrote: > > >> Hi all, > > > >> While executing a SELECT query on a read-only database, I'm getting an > > >> exception saying the DB is read-only: > > > >> org.h2.jdbc.JdbcSQLException: The database is read only; SQL statement: > > >> SELECT DISTINCT "DocumentMentions".ID, "DocumentMentions".Length FROM > > >> "DocumentMentions" WHERE "DocumentMentions".L2_ID IS NULL [90097-150] > > > >> I would have thought that one can run SELECT queries on read-only DBs. > > >> Is that not the case? > > > >> Other similar queries do not cause the error, so I'm a bit confused as > > >> to what the cause may be. > > > >> Any ideas? > > > >> thanks, > > >> Valentin > > > > -- > > > You received this message because you are subscribed to the Google Groups > > > "H2 Database" group. > > > To post to this group, send email to [email protected]. > > > To unsubscribe from this group, send email to > > > [email protected]. > > > For more options, visit this group > > > athttp://groups.google.com/group/h2-database?hl=en. -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.
