The only direct database configuration is the readonly property which we can
move to Database.

If you get a working solution, I will incorporate it with any updates
resulting from further changes to the Log and related classes before the
next release.

NB. With this new property, only MEMORY tables will be allowed to change.
CACHED and TEXT tables will remain readonly as these disk-based tables
cannot be made read-write without write access to disk. So the caches must
be opened in readonly mode.

Fred


----- Original Message -----
From: "Alex" <[EMAIL PROTECTED]>
To: "HSQLDB Developer Mailinglist" <[EMAIL PROTECTED]>
Sent: 12 February 2003 21:42
Subject: [Hsqldb-developers] Log Object opens database? Solution for
readonly files but not database


Hey,

ok I know that I'm brand new with your source, but can you please explain
me, why the Log object is configuring the database in the open method of
Log?

Shouldn't this code not be within the database class where you check all
the other database properties?

Ok I've a first solution - I think very dirty.
I justed added a new property
filesreadonly=true

If this property is set added the following code in the Log.open()

        if (pProperties.isPropertyTrue("readonly")) {
            bReadOnly = true;

            dDatabase.setReadOnly();

            if (cCache != null) {
                cCache.open(true);
            }

            reopenAllTextCaches();

            bRestoring = true;

            ScriptRunner.runScript(dDatabase, sFileScript, logType);

            bRestoring = false;

            return false;
        }
// akede@users - patch Files readonly (e.G. on a CD)
        if (pProperties.isPropertyTrue("filesreadonly")) {
            bReadOnly = true;               // The log should be read only

            //dDatabase.setReadOnly();      // The database should be
possible to be modified
            if (cCache != null) {
                cCache.open(true);
            }

            reopenAllTextCaches();

            bRestoring = true;

            ScriptRunner.runScript(dDatabase, sFileScript, logType);

            bRestoring = false;

            return false;
        }
// end: patch akede

Cause the Log writer checks during the write if bReadOnly is true he will
not try to write anything to the disc. And because the Log checks the
bReadOnly on the close() too, there will also no script or cached file be
written.

As I said above, it was for me a little bit confusing that a Log class is
responsible for reading and writing the database and not the database
class. So I was first confused why i worked till I understood that the
Log.bReadOnly flag in the Log class only affects the files and not the
database.bReadOnly only takes care about the statements and JDBC calls. If
the database object would be asked for veryfing that scripts can be written
or not, my patch won't work.

I'm looking forward to any comments.

Alex

PS: I changed also the HsqlDatabaseProperties.java but just to set the
default value of filesreadonly to false.


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
hsqldb-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hsqldb-developers



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
hsqldb-developers mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/hsqldb-developers

Reply via email to