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.

Reply via email to