Read-only is used for the case where you don't want to write anything to disk, 
like for example where you are running
from a DVD.

In order to support temporary tables on a read-only database, we'd have to 
allocate temporary tables in RAM.

It's certainly possible, but it'll take some work. Patches are welcome :-)

Joel Nelson wrote:
> 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