Top Description Fields Constructors Methods
org.hsqldb.scriptio

public abstract Class ScriptWriterBase

extends Object
implements Runnable
Class Inheritance
All Implemented Interfaces
java.lang.Runnable
Known Direct Subclasses
org.hsqldb.scriptio.ScriptWriterText
Imports
java.io.BufferedOutputStream, .IOException, .OutputStream, org.hsqldb.Database, .DatabaseManager, .HsqlException, .HsqlNameManager.HsqlName, .NumberSequence, .Row, .SchemaObject, .Session, .SqlInvariants, .Table, .TableBase, .Tokens, org.hsqldb.error.Error, .ErrorCode, org.hsqldb.lib.FileAccess, .FileUtil, .HsqlTimer, .Iterator, org.hsqldb.navigator.RowIterator, .RowSetNavigator, org.hsqldb.result.Result, org.hsqldb.types.DateTimeType, .TimestampData

Handles all logging to file operations. A log consists of three kinds of blocks:

DDL BLOCK: definition of DB objects, users and rights at startup time
DATA BLOCK: all data for MEMORY tables at startup time
LOG BLOCK: SQL statements logged since startup or the last CHECKPOINT
The implementation of this class and its subclasses support the formats used for writing the data. Since 1.7.2 the data can also be written as binary in order to speed up shutdown and startup.

From 1.7.2, two separate files are used, one for the DDL + DATA BLOCK and the other for the LOG BLOCK.

A related use for this class is for saving a current snapshot of the database data to a user-defined file. This happens in the SHUTDOWN COMPACT process or done as a result of the SCRIPT command. In this case, the DATA block contains the CACHED table data as well.

DatabaseScriptReader and its subclasses read back the data at startup time.

Author
Fred Toussi (fredt@users dot sourceforge.net)
Since
1.7.2
Version
2.7.3

Field Summary

Modifier and TypeField and Description
pack-priv long
pack-priv Session
currentSession

the last schema for last sessionId

pack-priv Database
pack-priv OutputStream
pack-priv boolean
pack-priv boolean
pack-priv boolean
pack-priv static final int
pack-priv static final int
pack-priv boolean
pack-priv boolean
pack-priv boolean
pack-priv boolean
isUserScript

this determines if the script is the normal script (false) used internally by the engine or a user-initiated snapshot of the DB (true)

pack-priv long
public static final String[]
pack-priv volatile boolean
pack-priv FileAccess.FileSync
pack-priv String
pack-priv HsqlNameManager.HsqlName
private int
pack-priv int
private Object
protected volatile int

Constructor Summary

AccessConstructor and Description
pack-priv
ScriptWriterBase(Database db, OutputStream outputStream, FileAccess.FileSync descriptor, boolean includeCachedData)

pack-priv
ScriptWriterBase(Database db, String file, boolean includeCachedData, boolean isNewFile, boolean isUserScript)

Method Summary

Modifier and TypeMethod and Description
public void
protected void
public void
public int
protected abstract void
protected void
openFile()

File is opened in append mode although in current usage the file never pre-exists

public void
run()

Implements java.lang.Runnable.run.

Runs this operation.

public void
setIncludeCachedData(boolean include)

public void
setIncludeIndexRoots(boolean include)

public void
setIncludeTableInit(boolean include)

public void
setWriteDelay(int delay)

public long
size()

public void
public void
stop()

public void
sync()

Called internally or externally in write delay intervals.

public void
public abstract void
protected abstract void
public void
public abstract void
writeDeleteStatement(Session session, Table table, Object[] data)

public void
writeExistingData(boolean lobSchema)

public abstract void
writeInsertStatement(Session session, Row row, Table table)

public abstract void
public abstract void
public abstract void
writeRow(Session session, Row row, Table table)

public abstract void
protected abstract void
protected void
public void
public void
public void
public void
public void
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

byteCountback to summary
pack-priv long byteCount
currentSessionback to summary
pack-priv Session currentSession

the last schema for last sessionId

databaseback to summary
pack-priv Database database
fileStreamOutback to summary
pack-priv OutputStream fileStreamOut
includeCachedDataback to summary
pack-priv boolean includeCachedData
includeIndexRootsback to summary
pack-priv boolean includeIndexRoots
includeTableInitback to summary
pack-priv boolean includeTableInit
INSERTback to summary
pack-priv static final int INSERT
INSERT_WITH_SCHEMAback to summary
pack-priv static final int INSERT_WITH_SCHEMA
isClosedback to summary
pack-priv boolean isClosed
isCompressedback to summary
pack-priv boolean isCompressed
isCryptback to summary
pack-priv boolean isCrypt
isUserScriptback to summary
pack-priv boolean isUserScript

this determines if the script is the normal script (false) used internally by the engine or a user-initiated snapshot of the DB (true)

lineCountback to summary
pack-priv long lineCount
LIST_SCRIPT_FORMATSback to summary
public static final String[] LIST_SCRIPT_FORMATS
needsSyncback to summary
pack-priv volatile boolean needsSync
outDescriptorback to summary
pack-priv FileAccess.FileSync outDescriptor
outFileback to summary
pack-priv String outFile
schemaToLogback to summary
pack-priv HsqlNameManager.HsqlName schemaToLog
syncCountback to summary
private int syncCount
tableRowCountback to summary
pack-priv int tableRowCount
timerTaskback to summary
private Object timerTask
writeDelayback to summary
protected volatile int writeDelay

Constructor Detail

ScriptWriterBaseback to summary
pack-priv ScriptWriterBase(Database db, OutputStream outputStream, FileAccess.FileSync descriptor, boolean includeCachedData)
ScriptWriterBaseback to summary
pack-priv ScriptWriterBase(Database db, String file, boolean includeCachedData, boolean isNewFile, boolean isUserScript)

Method Detail

closeback to summary
public void close()
finishStreamback to summary
protected void finishStream()
forceSyncback to summary
public void forceSync()
getWriteDelayback to summary
public int getWriteDelay()
initBuffersback to summary
protected abstract void initBuffers()
openFileback to summary
protected void openFile()

File is opened in append mode although in current usage the file never pre-exists

runback to summary
public void run()

Implements java.lang.Runnable.run.

Doc from java.lang.Runnable.run.

Runs this operation.

setIncludeCachedDataback to summary
public void setIncludeCachedData(boolean include)
setIncludeIndexRootsback to summary
public void setIncludeIndexRoots(boolean include)
setIncludeTableInitback to summary
public void setIncludeTableInit(boolean include)
setWriteDelayback to summary
public void setWriteDelay(int delay)
sizeback to summary
public long size()
startback to summary
public void start()
stopback to summary
public void stop()
syncback to summary
public void sync()

Called internally or externally in write delay intervals.

writeAllback to summary
public void writeAll()
writeCommitStatementback to summary
public abstract void writeCommitStatement(Session session)
writeDataTermback to summary
protected abstract void writeDataTerm()
writeDDLback to summary
public void writeDDL()
writeDeleteStatementback to summary
public abstract void writeDeleteStatement(Session session, Table table, Object[] data)
writeExistingDataback to summary
public void writeExistingData(boolean lobSchema)
writeInsertStatementback to summary
public abstract void writeInsertStatement(Session session, Row row, Table table)
writeLogStatementback to summary
public abstract void writeLogStatement(Session session, String s)
writeOtherStatementback to summary
public abstract void writeOtherStatement(Session session, String s)
writeRowback to summary
public abstract void writeRow(Session session, Row row, Table table)
writeSequenceStatementback to summary
public abstract void writeSequenceStatement(Session session, NumberSequence seq)
writeSessionIdAndSchemaback to summary
protected abstract void writeSessionIdAndSchema(Session session)
writeSingleColumnResultback to summary
protected void writeSingleColumnResult(Result r)
writeTableDataback to summary
public void writeTableData(Table t)
writeTableInitback to summary
public void writeTableInit(Table t)
writeTableTermback to summary
public void writeTableTerm(Table t)
writeTableVersionDataback to summary
public void writeTableVersionData(Table t, TimestampData from)
writeVersioningDataback to summary
public void writeVersioningData(TimestampData from)