提交 da30c87b authored 作者: Thomas Mueller's avatar Thomas Mueller

docs

上级 d9a94ab2
...@@ -71,8 +71,7 @@ Advanced Topics ...@@ -71,8 +71,7 @@ Advanced Topics
<a href="#glossary_links"> <a href="#glossary_links">
Glossary and Links</a><br /> Glossary and Links</a><br />
<br /><a name="result_sets"></a> <h2 id="result_sets">Result Sets</h2>
<h2>Result Sets</h2>
<h3>Limiting the Number of Rows</h3> <h3>Limiting the Number of Rows</h3>
<p> <p>
...@@ -91,8 +90,8 @@ If ORDER BY is used, the sorting is done using an external sort algorithm. In th ...@@ -91,8 +90,8 @@ If ORDER BY is used, the sorting is done using an external sort algorithm. In th
quick sort, then written to disk; when reading the data, the blocks are merged together. quick sort, then written to disk; when reading the data, the blocks are merged together.
</p> </p>
<br /><a name="large_objects"></a> <br />
<h2>Large Objects</h2> <h2 id="large_objects">Large Objects</h2>
<h3>Storing and Reading Large Objects</h3> <h3>Storing and Reading Large Objects</h3>
<p> <p>
...@@ -126,8 +125,8 @@ operations. If you store many large compressible values such as XML, HTML, text, ...@@ -126,8 +125,8 @@ operations. If you store many large compressible values such as XML, HTML, text,
then compressing can save a lot of disk space (sometimes more than 50%), and read operations may even be faster. then compressing can save a lot of disk space (sometimes more than 50%), and read operations may even be faster.
</p> </p>
<br /><a name="linked_tables"></a> <br />
<h2>Linked Tables</h2> <h2 id="linked_tables">Linked Tables</h2>
<p> <p>
This database supports linked tables, which means tables that don't exist in the current database but This database supports linked tables, which means tables that don't exist in the current database but
are just links to another database. To create such a link, use the CREATE LINKED TABLE statement: are just links to another database. To create such a link, use the CREATE LINKED TABLE statement:
...@@ -160,8 +159,8 @@ The CREATE LINKED TABLE statement supports an optional schema name parameter. ...@@ -160,8 +159,8 @@ The CREATE LINKED TABLE statement supports an optional schema name parameter.
See the grammar for details. See the grammar for details.
</p> </p>
<br /><a name="transaction_isolation"></a> <br />
<h2>Transaction Isolation</h2> <h2 id="transaction_isolation">Transaction Isolation</h2>
<p> <p>
Transaction isolation is provided for all data manipulation language (DML) statements. Transaction isolation is provided for all data manipulation language (DML) statements.
Most data definition language (DDL) statements commit the current transaction. Most data definition language (DDL) statements commit the current transaction.
...@@ -232,8 +231,8 @@ connection will get a lock timeout exception. The lock timeout can be set indivi ...@@ -232,8 +231,8 @@ connection will get a lock timeout exception. The lock timeout can be set indivi
for each connection. for each connection.
</p> </p>
<br /><a name="mvcc"></a> <br />
<h2>Multi-Version Concurrency Control (MVCC)</h2> <h2 id="mvcc">Multi-Version Concurrency Control (MVCC)</h2>
<p> <p>
The MVCC feature allows higher concurrency than using (table level or row level) locks. The MVCC feature allows higher concurrency than using (table level or row level) locks.
When using MVCC in this database, delete, insert and update operations will only issue a When using MVCC in this database, delete, insert and update operations will only issue a
...@@ -258,8 +257,8 @@ the complete undo log must fit in memory when using multi-version concurrency ...@@ -258,8 +257,8 @@ the complete undo log must fit in memory when using multi-version concurrency
(the setting MAX_MEMORY_UNDO has no effect). (the setting MAX_MEMORY_UNDO has no effect).
</p> </p>
<br /><a name="clustering"></a> <br />
<h2>Clustering / High Availability</h2> <h2 id="clustering">Clustering / High Availability</h2>
<p> <p>
This database supports a simple clustering / high availability mechanism. The architecture is: This database supports a simple clustering / high availability mechanism. The architecture is:
two database servers run on two different computers, and on both computers is a copy of the two database servers run on two different computers, and on both computers is a copy of the
...@@ -339,8 +338,8 @@ directly in modifying statements (for example INSERT, UPDATE, or MERGE). However ...@@ -339,8 +338,8 @@ directly in modifying statements (for example INSERT, UPDATE, or MERGE). However
in read-only statements and the result can then be used for modifying statements. in read-only statements and the result can then be used for modifying statements.
</p> </p>
<br /><a name="two_phase_commit"></a> <br />
<h2>Two Phase Commit</h2> <h2 id="two_phase_commit">Two Phase Commit</h2>
<p> <p>
The two phase commit protocol is supported. 2-phase-commit works as follows: The two phase commit protocol is supported. 2-phase-commit works as follows:
</p> </p>
...@@ -360,8 +359,8 @@ The two phase commit protocol is supported. 2-phase-commit works as follows: ...@@ -360,8 +359,8 @@ The two phase commit protocol is supported. 2-phase-commit works as follows:
</li><li>The database needs to be closed and re-opened to apply the changes </li><li>The database needs to be closed and re-opened to apply the changes
</li></ul> </li></ul>
<br /><a name="compatibility"></a> <br />
<h2>Compatibility</h2> <h2 id="compatibility">Compatibility</h2>
<p> <p>
This database is (up to a certain point) compatible to other databases such as HSQLDB, MySQL and PostgreSQL. This database is (up to a certain point) compatible to other databases such as HSQLDB, MySQL and PostgreSQL.
There are certain areas where H2 is incompatible. There are certain areas where H2 is incompatible.
...@@ -387,8 +386,8 @@ Certain words of this list are keywords because they are functions that can be u ...@@ -387,8 +386,8 @@ Certain words of this list are keywords because they are functions that can be u
for example CURRENT_TIMESTAMP. for example CURRENT_TIMESTAMP.
</p> </p>
<br /><a name="standards_compliance"></a> <br />
<h2>Standards Compliance</h2> <h2 id="standards_compliance">Standards Compliance</h2>
<p> <p>
This database tries to be as much standard compliant as possible. For the SQL language, ANSI/ISO is the main This database tries to be as much standard compliant as possible. For the SQL language, ANSI/ISO is the main
standard. There are several versions that refer to the release date: SQL-92, SQL:1999, and SQL:2003. standard. There are several versions that refer to the release date: SQL-92, SQL:1999, and SQL:2003.
...@@ -396,8 +395,8 @@ Unfortunately, the standard documentation is not freely available. Another probl ...@@ -396,8 +395,8 @@ Unfortunately, the standard documentation is not freely available. Another probl
are not standardized. Whenever this is the case, this database tries to be compatible to other databases. are not standardized. Whenever this is the case, this database tries to be compatible to other databases.
</p> </p>
<br /><a name="windows_service"></a> <br />
<h2>Run as Windows Service</h2> <h2 id="windows_service">Run as Windows Service</h2>
<p> <p>
Using a native wrapper / adapter, Java applications can be run as a Windows Service. Using a native wrapper / adapter, Java applications can be run as a Windows Service.
There are various tools available to do that. The Java Service Wrapper from Tanuki Software, Inc. There are various tools available to do that. The Java Service Wrapper from Tanuki Software, Inc.
...@@ -440,8 +439,8 @@ To uninstall the service, double click on 5_uninstall_service.bat. ...@@ -440,8 +439,8 @@ To uninstall the service, double click on 5_uninstall_service.bat.
If successful, a command prompt window will pop up and disappear immediately. If not, a message will appear. If successful, a command prompt window will pop up and disappear immediately. If not, a message will appear.
</p> </p>
<br /><a name="odbc_driver"></a> <br />
<h2>ODBC Driver</h2> <h2 id="odbc_driver">ODBC Driver</h2>
<p> <p>
This database does not come with its own ODBC driver at this time, This database does not come with its own ODBC driver at this time,
but it supports the PostgreSQL network protocol. but it supports the PostgreSQL network protocol.
...@@ -547,8 +546,8 @@ Also, it is currently not possible to use encrypted SSL connections. ...@@ -547,8 +546,8 @@ Also, it is currently not possible to use encrypted SSL connections.
Therefore the ODBC driver should not be used where security is important. Therefore the ODBC driver should not be used where security is important.
</p> </p>
<br /><a name="microsoft_dot_net"></a> <br />
<h2>Using H2 in Microsoft .NET</h2> <h2 id="microsoft_dot_net">Using H2 in Microsoft .NET</h2>
<p> <p>
The database can be used from Microsoft .NET even without using Java, by using IKVM.NET. The database can be used from Microsoft .NET even without using Java, by using IKVM.NET.
You can access a H2 database on .NET using the JDBC API, or using the ADO.NET interface. You can access a H2 database on .NET using the JDBC API, or using the ADO.NET interface.
...@@ -597,8 +596,8 @@ class Test ...@@ -597,8 +596,8 @@ class Test
} }
</pre> </pre>
<br /><a name="acid"></a> <br />
<h2>ACID</h2> <h2 id="acid">ACID</h2>
<p> <p>
In the database world, ACID stands for: In the database world, ACID stands for:
</p> </p>
...@@ -637,8 +636,8 @@ If durability is required for all possible cases of hardware failure, clustering ...@@ -637,8 +636,8 @@ If durability is required for all possible cases of hardware failure, clustering
such as the H2 clustering mode. such as the H2 clustering mode.
</p> </p>
<br /><a name="durability_problems"></a> <br />
<h2>Durability Problems</h2> <h2 id="durability_problems">Durability Problems</h2>
<p> <p>
Complete durability means all committed transaction survive a power failure. Complete durability means all committed transaction survive a power failure.
Some databases claim they can guarantee durability, but such claims are wrong. Some databases claim they can guarantee durability, but such claims are wrong.
...@@ -718,8 +717,8 @@ none of the databases contains all the records that the listener computer knows ...@@ -718,8 +717,8 @@ none of the databases contains all the records that the listener computer knows
consult the source code of the listener and test application. consult the source code of the listener and test application.
</p> </p>
<br /><a name="using_recover_tool"></a> <br />
<h2>Using the Recover Tool</h2> <h2 id="using_recover_tool">Using the Recover Tool</h2>
<p> <p>
The recover tool can be used to extract the contents of a data file, even if the database is corrupted. The recover tool can be used to extract the contents of a data file, even if the database is corrupted.
It also extracts the content of the log file or large objects (CLOB or BLOB). It also extracts the content of the log file or large objects (CLOB or BLOB).
...@@ -743,8 +742,8 @@ however it does not automatically apply those changes. Usually, many of those ch ...@@ -743,8 +742,8 @@ however it does not automatically apply those changes. Usually, many of those ch
applied in the .data.db file. applied in the .data.db file.
</p> </p>
<br /><a name="file_locking_protocols"></a> <br />
<h2>File Locking Protocols</h2> <h2 id="file_locking_protocols">File Locking Protocols</h2>
<p> <p>
Whenever a database is opened, a lock file is created to signal other processes Whenever a database is opened, a lock file is created to signal other processes
that the database is in use. If the database is closed, or if the process that opened that the database is in use. If the database is closed, or if the process that opened
...@@ -825,8 +824,8 @@ share, two processes (running on different computers) could still open the same ...@@ -825,8 +824,8 @@ share, two processes (running on different computers) could still open the same
database files, if they do not have a direct TCP/IP connection. database files, if they do not have a direct TCP/IP connection.
</p> </p>
<br /><a name="sql_injection"></a> <br />
<h2>Protection against SQL Injection</h2> <h2 id="sql_injection">Protection against SQL Injection</h2>
<h3>What is SQL Injection</h3> <h3>What is SQL Injection</h3>
<p> <p>
This database engine provides a solution for the security vulnerability known as 'SQL Injection'. This database engine provides a solution for the security vulnerability known as 'SQL Injection'.
...@@ -907,8 +906,8 @@ It is not required to create a constant for the number 0 as there is already a b ...@@ -907,8 +906,8 @@ It is not required to create a constant for the number 0 as there is already a b
SELECT * FROM USERS WHERE LENGTH(PASSWORD)=ZERO(); SELECT * FROM USERS WHERE LENGTH(PASSWORD)=ZERO();
</pre> </pre>
<br /><a name="remote_access"></a> <br />
<h2>Protection against Remote Access</h2> <h2 id="remote_access">Protection against Remote Access</h2>
<p> <p>
By default this database does not allow others to connect when starting the H2 Console, By default this database does not allow others to connect when starting the H2 Console,
the TCP server, or the PG server. Remote access can be enabled using the command line the TCP server, or the PG server. Remote access can be enabled using the command line
...@@ -918,8 +917,8 @@ users can not create new databases or access existing databases with weak passwo ...@@ -918,8 +917,8 @@ users can not create new databases or access existing databases with weak passwo
ensure the existing accessible databases are protected using a strong password. ensure the existing accessible databases are protected using a strong password.
</p> </p>
<br /><a name="restricting_classes"></a> <br />
<h2>Restricting Class Loading and Usage</h2> <h2 id="restricting_classes">Restricting Class Loading and Usage</h2>
<p> <p>
By default there is no restriction on loading classes and executing Java code for admins. By default there is no restriction on loading classes and executing Java code for admins.
That means an admin may call system functions such as System.setProperty by executing: That means an admin may call system functions such as System.setProperty by executing:
...@@ -945,8 +944,8 @@ trigger classes, user-defined functions, user-defined aggregate functions, and J ...@@ -945,8 +944,8 @@ trigger classes, user-defined functions, user-defined aggregate functions, and J
driver classes (with the exception of the H2 driver) when using the H2 Console. driver classes (with the exception of the H2 driver) when using the H2 Console.
</p> </p>
<br /><a name="security_protocols"></a> <br />
<h2>Security Protocols</h2> <h2 id="security_protocols">Security Protocols</h2>
<p> <p>
The following paragraphs document the security protocols used in this database. The following paragraphs document the security protocols used in this database.
These descriptions are very technical and only intended for security experts that already know These descriptions are very technical and only intended for security experts that already know
...@@ -1056,8 +1055,8 @@ There is a default self-certified certificate to support an easy starting point, ...@@ -1056,8 +1055,8 @@ There is a default self-certified certificate to support an easy starting point,
custom certificates are supported as well. custom certificates are supported as well.
</p> </p>
<br /><a name="ssl_tls_connections"></a> <br />
<h2>SSL/TLS Connections</h2> <h2 id="ssl_tls_connections">SSL/TLS Connections</h2>
<p> <p>
Remote SSL/TLS connections are supported using the Java Secure Socket Extension Remote SSL/TLS connections are supported using the Java Secure Socket Extension
(SSLServerSocket / SSLSocket). By default, anonymous SSL is enabled. (SSLServerSocket / SSLSocket). By default, anonymous SSL is enabled.
...@@ -1074,10 +1073,10 @@ for more information. ...@@ -1074,10 +1073,10 @@ for more information.
To disable anonymous SSL, set the system property <code>h2.enableAnonymousSSL</code> to false. To disable anonymous SSL, set the system property <code>h2.enableAnonymousSSL</code> to false.
</p> </p>
<br /><a name="uuid"></a> <br />
<h2>Universally Unique Identifiers (UUID)</h2> <h2 id="uuid">Universally Unique Identifiers (UUID)</h2>
<p> <p>
This database supports the UUIDs. Also supported is a function to create new UUIDs using This database supports UUIDs. Also supported is a function to create new UUIDs using
a cryptographically strong pseudo random number generator. a cryptographically strong pseudo random number generator.
With random UUIDs, the chance of two having the same value can be calculated With random UUIDs, the chance of two having the same value can be calculated
using the probability theory. See also 'Birthday Paradox'. using the probability theory. See also 'Birthday Paradox'.
...@@ -1115,8 +1114,8 @@ one's annual risk of being hit by a meteorite is estimated to be one chance in 1 ...@@ -1115,8 +1114,8 @@ one's annual risk of being hit by a meteorite is estimated to be one chance in 1
that means the probability is about 0.000'000'000'06. that means the probability is about 0.000'000'000'06.
</p> </p>
<br /><a name="system_properties"></a> <br />
<h2>Settings Read from System Properties</h2> <h2 id="system_properties">Settings Read from System Properties</h2>
<p> <p>
Some settings of the database can be set on the command line using Some settings of the database can be set on the command line using
-DpropertyName=value. It is usually not required to change those settings manually. -DpropertyName=value. It is usually not required to change those settings manually.
...@@ -1135,8 +1134,8 @@ For a complete list of settings, see ...@@ -1135,8 +1134,8 @@ For a complete list of settings, see
<a href="../javadoc/org/h2/constant/SysProperties.html">SysProperties</a>. <a href="../javadoc/org/h2/constant/SysProperties.html">SysProperties</a>.
</p> </p>
<br /><a name="server_bind_address"></a> <br />
<h2>Setting the Server Bind Address</h2> <h2 id="server_bind_address">Setting the Server Bind Address</h2>
<p> <p>
Usually server sockets accept connections on any/all local addresses. Usually server sockets accept connections on any/all local addresses.
This may be a problem on multi-homed hosts. This may be a problem on multi-homed hosts.
...@@ -1145,8 +1144,8 @@ This setting is used for both regular server sockets and for SSL server sockets. ...@@ -1145,8 +1144,8 @@ This setting is used for both regular server sockets and for SSL server sockets.
IPv4 and IPv6 address formats are supported. IPv4 and IPv6 address formats are supported.
</p> </p>
<br /><a name="file_system"></a> <br />
<h2>Pluggable File System</h2> <h2 id="file_system">Pluggable File System</h2>
<p> <p>
This database supports a pluggable file system API. The file system implementation This database supports a pluggable file system API. The file system implementation
is selected using a file name prefix. The following file systems are included: is selected using a file name prefix. The following file systems are included:
...@@ -1167,8 +1166,8 @@ To register a new file system, extend the classes org.h2.store.fs.FileSystem and ...@@ -1167,8 +1166,8 @@ To register a new file system, extend the classes org.h2.store.fs.FileSystem and
and call the method FileSystem.register before using it. and call the method FileSystem.register before using it.
</p> </p>
<br /><a name="limits_limitations"></a> <br />
<h2>Limits and Limitations</h2> <h2 id="limits_limitations">Limits and Limitations</h2>
<p> <p>
This database has the following known limitations: This database has the following known limitations:
</p> </p>
...@@ -1206,8 +1205,8 @@ OR X = 2 OR X = 2 OR X = 2 OR X = 2 OR X = 2 ...@@ -1206,8 +1205,8 @@ OR X = 2 OR X = 2 OR X = 2 OR X = 2 OR X = 2
or the data type documentation of this database. or the data type documentation of this database.
</li></ul> </li></ul>
<br /><a name="glossary_links"></a> <br />
<h2>Glossary and Links</h2> <h2 id="glossary_links">Glossary and Links</h2>
<table> <table>
<tr> <tr>
<th>Term</th> <th>Term</th>
......
...@@ -33,15 +33,15 @@ Build ...@@ -33,15 +33,15 @@ Build
<a href="#automated"> <a href="#automated">
Automated Build</a><br /> Automated Build</a><br />
<br /><a name="portability"></a> <br />
<h2>Portability</h2> <h2 id="portability">Portability</h2>
<p> <p>
This database is written in Java and therefore works on many platforms. This database is written in Java and therefore works on many platforms.
It can also be compiled to a native executable using GCJ. It can also be compiled to a native executable using GCJ.
</p> </p>
<br /><a name="environment"></a> <br />
<h2>Environment</h2> <h2 id="environment">Environment</h2>
<p> <p>
A Java Runtime Environment (JRE) version 1.5 or higher is required to run this database. A Java Runtime Environment (JRE) version 1.5 or higher is required to run this database.
</p> </p>
...@@ -63,8 +63,8 @@ Newer version or compatible software works too. ...@@ -63,8 +63,8 @@ Newer version or compatible software works too.
</li><li><a href="http://maven.apache.org">Maven 2.0.9</a> </li><li><a href="http://maven.apache.org">Maven 2.0.9</a>
</li></ul> </li></ul>
<br /><a name="building"></a> <br />
<h2>Building the Software</h2> <h2 id="building">Building the Software</h2>
<p> <p>
You need to install a JDK, for example the Sun JDK version 1.5 or 1.6. You need to install a JDK, for example the Sun JDK version 1.5 or 1.6.
Ensure that Java binary directory is included in the PATH environment variable, and that Ensure that Java binary directory is included in the PATH environment variable, and that
...@@ -93,8 +93,8 @@ To switch the source code to the install version of Java, run: ...@@ -93,8 +93,8 @@ To switch the source code to the install version of Java, run:
build switchSource build switchSource
</pre> </pre>
<br /><a name="build_targets"></a> <br />
<h2>Build Targets</h2> <h2 id="build_targets">Build Targets</h2>
<p> <p>
The build system can generate smaller jar files as well. The following targets are currently supported: The build system can generate smaller jar files as well. The following targets are currently supported:
</p> </p>
...@@ -110,8 +110,8 @@ To create the h2client.jar file, go to the directory h2 and execute the followin ...@@ -110,8 +110,8 @@ To create the h2client.jar file, go to the directory h2 and execute the followin
build jarClient build jarClient
</pre> </pre>
<br /><a name="maven2"></a> <br />
<h2>Using Maven 2</h2> <h2 id="maven2">Using Maven 2</h2>
<h3>Using a Central Repository</h3> <h3>Using a Central Repository</h3>
<p> <p>
You can include the database in your Maven 2 project as a dependency. You can include the database in your Maven 2 project as a dependency.
...@@ -148,8 +148,8 @@ Afterwards, you can include the database in your Maven 2 project as a dependency ...@@ -148,8 +148,8 @@ Afterwards, you can include the database in your Maven 2 project as a dependency
&lt;/dependency&gt; &lt;/dependency&gt;
</pre> </pre>
<br /><a name="translating"></a> <br />
<h2>Translating</h2> <h2 id="translating">Translating</h2>
<p> <p>
The translation of this software is split into the following parts: The translation of this software is split into the following parts:
</p> </p>
...@@ -165,8 +165,8 @@ is automated by running the tool PropertiesToUTF8. The web site translation is a ...@@ -165,8 +165,8 @@ is automated by running the tool PropertiesToUTF8. The web site translation is a
using <code>build docs</code>. using <code>build docs</code>.
</p> </p>
<br /><a name="providing_patches"></a> <br />
<h2>Providing Patches</h2> <h2 id="providing_patches">Providing Patches</h2>
<p> <p>
If you like to provide patches, please consider the following guidelines to simplify merging them: If you like to provide patches, please consider the following guidelines to simplify merging them:
</p> </p>
...@@ -201,8 +201,8 @@ multiple-licensed under the H2 License, version 1.0, and under the ...@@ -201,8 +201,8 @@ multiple-licensed under the H2 License, version 1.0, and under the
Eclipse Public License, version 1.0 (http://h2database.com/html/license.html)." Eclipse Public License, version 1.0 (http://h2database.com/html/license.html)."
</pre> </pre>
<br /><a name="automated"></a> <br />
<h2>Automated Build</h2> <h2 id="automated">Automated Build</h2>
<p> <p>
This build process is automated and runs regularly. This build process is automated and runs regularly.
The build process includes running the tests and code coverage, using the command line The build process includes running the tests and code coverage, using the command line
......
...@@ -22,7 +22,7 @@ Data Types ...@@ -22,7 +22,7 @@ Data Types
<c:forEach var="item" items="dataTypes"> <c:forEach var="item" items="dataTypes">
<br /> <br />
<a name="${item.link}"></a><h3>${item.topic}</h3> <h3 id="${item.link}">${item.topic}</h3>
<pre> <pre>
${item.syntax} ${item.syntax}
</pre> </pre>
......
...@@ -40,8 +40,8 @@ Frequently Asked Questions ...@@ -40,8 +40,8 @@ Frequently Asked Questions
<a href="#translate"> <a href="#translate">
How to Translate this Project?</a><br /> How to Translate this Project?</a><br />
<br /><a name="known_bugs"></a> <br />
<h3>Are there Known Bugs? When is the Next Release?</h3> <h3 id="known_bugs">Are there Known Bugs? When is the Next Release?</h3>
<p> <p>
Usually, bugs get fixes as they are found. There is a release every few weeks. Usually, bugs get fixes as they are found. There is a release every few weeks.
Here is the list of known and confirmed issues: Here is the list of known and confirmed issues:
...@@ -62,15 +62,15 @@ Here is the list of known and confirmed issues: ...@@ -62,15 +62,15 @@ Here is the list of known and confirmed issues:
This problem is solved in Install4j 4.1.4. This problem is solved in Install4j 4.1.4.
</li></ul> </li></ul>
<br /><a name="open_source"></a> <br />
<h3>Is this Database Engine Open Source?</h3> <h3 id="open_source">Is this Database Engine Open Source?</h3>
<p> <p>
Yes. It is free to use and distribute, and the source code is included. Yes. It is free to use and distribute, and the source code is included.
See also under license. See also under license.
</p> </p>
<br /><a name="query_slow"></a> <br />
<h3>My Query is Slow</h3> <h3 id="query_slow">My Query is Slow</h3>
<p> <p>
Slow SELECT (or DELETE, UPDATE, MERGE) statement can have multiple reasons. Slow SELECT (or DELETE, UPDATE, MERGE) statement can have multiple reasons.
Follow this checklist: Follow this checklist:
...@@ -83,14 +83,14 @@ Follow this checklist: ...@@ -83,14 +83,14 @@ Follow this checklist:
</li> </li>
</ul> </ul>
<br /><a name="create_database"></a> <br />
<h3>How to Create a New Database?</h3> <h3 id="create_database">How to Create a New Database?</h3>
<p> <p>
By default, a new database is automatically created if it does not yet exist. By default, a new database is automatically created if it does not yet exist.
</p> </p>
<br /><a name="connect"></a> <br />
<h3>How to Connect to a Database?</h3> <h3 id="connect">How to Connect to a Database?</h3>
<p> <p>
The database driver is <code>org.h2.Driver</code>, The database driver is <code>org.h2.Driver</code>,
and the database URL starts with <code>jdbc:h2:</code>. and the database URL starts with <code>jdbc:h2:</code>.
...@@ -101,8 +101,8 @@ Class.forName("org.h2.Driver"); ...@@ -101,8 +101,8 @@ Class.forName("org.h2.Driver");
Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", ""); Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
</pre> </pre>
<br /><a name="database_files"></a> <br />
<h3>Where are the Database Files Stored?</h3> <h3 id="database_files">Where are the Database Files Stored?</h3>
<p> <p>
When using database URLs like jdbc:h2:~/test, the database is stored in the user directory. When using database URLs like jdbc:h2:~/test, the database is stored in the user directory.
For Windows, this is usually "C:\Documents and Settings\&lt;userName&gt;". For Windows, this is usually "C:\Documents and Settings\&lt;userName&gt;".
...@@ -114,14 +114,14 @@ The directory is created automatically if it does not yet exist. It is also poss ...@@ -114,14 +114,14 @@ The directory is created automatically if it does not yet exist. It is also poss
Example: jdbc:h2:file:C:/data/test Example: jdbc:h2:file:C:/data/test
</p> </p>
<br /><a name="size_limit"></a> <br />
<h3>What is the Size Limit (Maximum Size) of a Database?</h3> <h3 id="size_limit">What is the Size Limit (Maximum Size) of a Database?</h3>
<p> <p>
See <a href="advanced.html#limits_limitations">Limits and Limitations</a>. See <a href="advanced.html#limits_limitations">Limits and Limitations</a>.
</p> </p>
<br /><a name="reliable"></a> <br />
<h3>Is it Reliable?</h3> <h3 id="reliable">Is it Reliable?</h3>
<p> <p>
Some users have reported that after a power failure, the database can sometimes not be Some users have reported that after a power failure, the database can sometimes not be
opened because the index file is corrupt. In that case, the index file can be deleted opened because the index file is corrupt. In that case, the index file can be deleted
...@@ -173,8 +173,8 @@ Areas considered Experimental: ...@@ -173,8 +173,8 @@ Areas considered Experimental:
</li><li>Compatibility modes for other databases (only some features are implemented) </li><li>Compatibility modes for other databases (only some features are implemented)
</li></ul> </li></ul>
<br /><a name="slow_open"></a> <br />
<h3>Why is Opening my Database Slow?</h3> <h3 id="slow_open">Why is Opening my Database Slow?</h3>
<p> <p>
If it takes a long time to open a database, in most cases it was not closed the last time. If it takes a long time to open a database, in most cases it was not closed the last time.
This is specially a problem for larger databases. This is specially a problem for larger databases.
...@@ -194,8 +194,8 @@ Other possible reasons are: the database is very big (many GB), or contains link ...@@ -194,8 +194,8 @@ Other possible reasons are: the database is very big (many GB), or contains link
that are slow to open. that are slow to open.
</p> </p>
<br /><a name="gcj"></a> <br />
<h3>Is the GCJ Version Stable? Faster?</h3> <h3 id="gcj">Is the GCJ Version Stable? Faster?</h3>
<p> <p>
The GCJ version is not as stable as the Java version. The GCJ version is not as stable as the Java version.
When running the regression test with the GCJ version, sometimes the application just stops When running the regression test with the GCJ version, sometimes the application just stops
...@@ -204,8 +204,8 @@ Currently, the GCJ version is also slower than when using the Sun VM. ...@@ -204,8 +204,8 @@ Currently, the GCJ version is also slower than when using the Sun VM.
However, the startup of the GCJ version is faster than when using a VM. However, the startup of the GCJ version is faster than when using a VM.
</p> </p>
<br /><a name="translate"></a> <br />
<h3>How to Translate this Project?</h3> <h3 id="translate">How to Translate this Project?</h3>
<p> <p>
For more information, see For more information, see
<a href="build.html#translating">Build/Translating</a>. <a href="build.html#translating">Build/Translating</a>.
......
...@@ -84,8 +84,8 @@ Features ...@@ -84,8 +84,8 @@ Features
<a href="#cache_settings"> <a href="#cache_settings">
Cache Settings</a><br /> Cache Settings</a><br />
<br /><a name="feature_list"></a> <br />
<h2>Feature List</h2> <h2 id="feature_list">Feature List</h2>
<h3>Main Features</h3> <h3>Main Features</h3>
<ul> <ul>
<li>Very fast database engine <li>Very fast database engine
...@@ -152,8 +152,8 @@ Features ...@@ -152,8 +152,8 @@ Features
</li><li>Well tested (high code coverage, randomized stress tests) </li><li>Well tested (high code coverage, randomized stress tests)
</li></ul> </li></ul>
<br /><a name="comparison"></a> <br />
<h2>Comparison to Other Database Engines</h2> <h2 id="comparison">Comparison to Other Database Engines</h2>
<table><tr> <table><tr>
<th>Feature</th> <th>Feature</th>
...@@ -383,15 +383,15 @@ It looks like the development of this database has stopped. The last release was ...@@ -383,15 +383,15 @@ It looks like the development of this database has stopped. The last release was
It looks like the development of this database has stopped. The last release was August 2004 It looks like the development of this database has stopped. The last release was August 2004
</p> </p>
<br /><a name="products_work_with"></a> <br />
<h2>H2 in Use</h2> <h2 id="products_work_with">H2 in Use</h2>
<p> <p>
For a list of applications that work with or use H2, see: For a list of applications that work with or use H2, see:
<a href="links.html">Links</a>. <a href="links.html">Links</a>.
</p> </p>
<br /><a name="connection_modes"></a> <br />
<h2>Connection Modes</h2> <h2 id="connection_modes">Connection Modes</h2>
<p> <p>
The following connection modes are supported: The following connection modes are supported:
</p> </p>
...@@ -445,8 +445,8 @@ it's an local or remote connection) can do so using the exact same database URL. ...@@ -445,8 +445,8 @@ it's an local or remote connection) can do so using the exact same database URL.
<img src="images/connection-mode-mixed.png" <img src="images/connection-mode-mixed.png"
alt="The database and the server is running inside the application; another application connects remotely" /> alt="The database and the server is running inside the application; another application connects remotely" />
<br /><a name="database_url"></a> <br />
<h2>Database URL Overview</h2> <h2 id="database_url">Database URL Overview</h2>
<p> <p>
This database supports multiple connection modes and connection settings. This database supports multiple connection modes and connection settings.
This is achieved using different database URLs. Settings in the URLs are not case sensitive. This is achieved using different database URLs. Settings in the URLs are not case sensitive.
...@@ -586,8 +586,8 @@ This is achieved using different database URLs. Settings in the URLs are not cas ...@@ -586,8 +586,8 @@ This is achieved using different database URLs. Settings in the URLs are not cas
</tr> </tr>
</table> </table>
<br /><a name="embedded_databases"></a> <br />
<h2>Connecting to an Embedded (Local) Database</h2> <h2 id="embedded_databases">Connecting to an Embedded (Local) Database</h2>
<p> <p>
The database URL for connecting to a local database is <code>jdbc:h2:[file:][&lt;path&gt;]&lt;databaseName&gt;</code>. The database URL for connecting to a local database is <code>jdbc:h2:[file:][&lt;path&gt;]&lt;databaseName&gt;</code>.
The prefix <code>file:</code> is optional. If no or only a relative path is used, then the current working The prefix <code>file:</code> is optional. If no or only a relative path is used, then the current working
...@@ -597,8 +597,8 @@ The database name must be at least three characters long (a limitation of File.c ...@@ -597,8 +597,8 @@ The database name must be at least three characters long (a limitation of File.c
To point to the user home directory, use ~/, as in: jdbc:h2:~/test. To point to the user home directory, use ~/, as in: jdbc:h2:~/test.
</p> </p>
<br /><a name="memory_only_databases"></a> <br />
<h2>Memory-Only Databases</h2> <h2 id="memory_only_databases">Memory-Only Databases</h2>
<p> <p>
For certain use cases (for example: rapid prototyping, testing, high performance For certain use cases (for example: rapid prototyping, testing, high performance
operations, read-only databases), it may not be required to persist data, or persist changes to the data. operations, read-only databases), it may not be required to persist data, or persist changes to the data.
...@@ -625,8 +625,8 @@ To keep the content of an in-memory database as long as the virtual machine is a ...@@ -625,8 +625,8 @@ To keep the content of an in-memory database as long as the virtual machine is a
<code>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</code>. <code>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</code>.
</p> </p>
<br /><a name="file_encryption"></a> <br />
<h2>Database Files Encryption</h2> <h2 id="file_encryption">Database Files Encryption</h2>
<p> <p>
The database files can be encrypted. Two encryption algorithms are supported: AES and XTEA. The database files can be encrypted. Two encryption algorithms are supported: AES and XTEA.
To use file encryption, you need to specify the encryption algorithm (the 'cipher') To use file encryption, you need to specify the encryption algorithm (the 'cipher')
...@@ -668,8 +668,8 @@ with the file password 'filepwd' and the encryption algorithm AES: ...@@ -668,8 +668,8 @@ with the file password 'filepwd' and the encryption algorithm AES:
java -cp h2*.jar org.h2.tools.ChangeFileEncryption -dir ~ -db test -cipher AES -encrypt filepwd java -cp h2*.jar org.h2.tools.ChangeFileEncryption -dir ~ -db test -cipher AES -encrypt filepwd
</pre> </pre>
<br /><a name="database_file_locking"></a> <br />
<h2>Database File Locking</h2> <h2 id="database_file_locking">Database File Locking</h2>
<p> <p>
Whenever a database is opened, a lock file is created to signal other processes Whenever a database is opened, a lock file is created to signal other processes
that the database is in use. If database is closed, or if the process that opened that the database is in use. If database is closed, or if the process that opened
...@@ -706,8 +706,8 @@ For more information about the algorithms, see ...@@ -706,8 +706,8 @@ For more information about the algorithms, see
<a href="advanced.html#file_locking_protocols">Advanced / File Locking Protocols</a>. <a href="advanced.html#file_locking_protocols">Advanced / File Locking Protocols</a>.
</p> </p>
<br /><a name="database_only_if_exists"></a> <br />
<h2>Opening a Database Only if it Already Exists</h2> <h2 id="database_only_if_exists">Opening a Database Only if it Already Exists</h2>
<p> <p>
By default, when an application calls <code>DriverManager.getConnection(url, ...)</code> By default, when an application calls <code>DriverManager.getConnection(url, ...)</code>
and the database specified in the URL does not yet exist, a new (empty) database is created. and the database specified in the URL does not yet exist, a new (empty) database is created.
...@@ -721,8 +721,8 @@ The complete URL may look like this: ...@@ -721,8 +721,8 @@ The complete URL may look like this:
String url = "jdbc:h2:/data/sample;IFEXISTS=TRUE"; String url = "jdbc:h2:/data/sample;IFEXISTS=TRUE";
</pre> </pre>
<br /><a name="closing_a_database"></a> <br />
<h2>Closing a Database</h2> <h2 id="closing_a_database">Closing a Database</h2>
<h3>Delayed Database Closing</h3> <h3>Delayed Database Closing</h3>
<p> <p>
...@@ -743,8 +743,8 @@ This setting is persistent and can be set by an administrator only. ...@@ -743,8 +743,8 @@ This setting is persistent and can be set by an administrator only.
It is possible to set the value in the database URL: <code>jdbc:h2:~/test;DB_CLOSE_DELAY=10</code>. It is possible to set the value in the database URL: <code>jdbc:h2:~/test;DB_CLOSE_DELAY=10</code>.
</p> </p>
<br /><a name="do_not_close_on_exit"></a> <br />
<h3>Don't Close a Database when the VM Exits</h3> <h3 id="do_not_close_on_exit">Don't Close a Database when the VM Exits</h3>
<p> <p>
By default, a database is closed when the last connection is closed. However, if it is never closed, By default, a database is closed when the last connection is closed. However, if it is never closed,
the database is closed when the virtual machine exits normally, using a shutdown hook. the database is closed when the virtual machine exits normally, using a shutdown hook.
...@@ -759,8 +759,8 @@ The database URL to disable database closing on exit is: ...@@ -759,8 +759,8 @@ The database URL to disable database closing on exit is:
String url = "jdbc:h2:~/test;DB_CLOSE_ON_EXIT=FALSE"; String url = "jdbc:h2:~/test;DB_CLOSE_ON_EXIT=FALSE";
</pre> </pre>
<br /><a name="log_index_changes"></a> <br />
<h2>Log Index Changes</h2> <h2 id="log_index_changes">Log Index Changes</h2>
<p> <p>
Usually, changes to the index file are not logged for performance. Usually, changes to the index file are not logged for performance.
If the index file is corrupt or missing when opening a database, it is re-created from the data. If the index file is corrupt or missing when opening a database, it is re-created from the data.
...@@ -775,8 +775,8 @@ This setting should be specified when connecting. ...@@ -775,8 +775,8 @@ This setting should be specified when connecting.
The update performance of the database will be reduced when using this option. The update performance of the database will be reduced when using this option.
</p> </p>
<br /><a name="ignore_unknown_settings"></a> <br />
<h2>Ignore Unknown Settings</h2> <h2 id="ignore_unknown_settings">Ignore Unknown Settings</h2>
<p> <p>
Some applications (for example OpenOffice.org Base) pass some additional parameters Some applications (for example OpenOffice.org Base) pass some additional parameters
when connecting to the database. Why those parameters are passed is unknown. when connecting to the database. Why those parameters are passed is unknown.
...@@ -787,8 +787,8 @@ saying the parameter is not supported. It is possible to ignored such parameters ...@@ -787,8 +787,8 @@ saying the parameter is not supported. It is possible to ignored such parameters
;IGNORE_UNKNOWN_SETTINGS=TRUE to the database URL. ;IGNORE_UNKNOWN_SETTINGS=TRUE to the database URL.
</p> </p>
<br /><a name="other_settings"></a> <br />
<h2>Changing Other Settings when Opening a Connection</h2> <h2 id="other_settings">Changing Other Settings when Opening a Connection</h2>
<p> <p>
In addition to the settings already described, In addition to the settings already described,
other database settings can be passed in the database URL. other database settings can be passed in the database URL.
...@@ -797,8 +797,8 @@ same as executing the statement <code>SET setting value</code> just after ...@@ -797,8 +797,8 @@ same as executing the statement <code>SET setting value</code> just after
connecting. For a list of supported settings, see <a href="grammar.html">SQL Grammar</a>. connecting. For a list of supported settings, see <a href="grammar.html">SQL Grammar</a>.
</p> </p>
<br /><a name="custom_access_mode"></a> <br />
<h2>Custom File Access Mode</h2> <h2 id="custom_access_mode">Custom File Access Mode</h2>
<p> <p>
Usually, the database opens log, data and index files with the access mode 'rw', meaning Usually, the database opens log, data and index files with the access mode 'rw', meaning
read-write (except for read only databases, where the mode 'r' is used). read-write (except for read only databases, where the mode 'r' is used).
...@@ -817,8 +817,8 @@ For more information see <a href="advanced.html#durability_problems">Durability ...@@ -817,8 +817,8 @@ For more information see <a href="advanced.html#durability_problems">Durability
On many operating systems the access mode 'rws' does not guarantee that the data is written to the disk. On many operating systems the access mode 'rws' does not guarantee that the data is written to the disk.
</p> </p>
<br /><a name="multiple_connections"></a> <br />
<h2>Multiple Connections</h2> <h2 id="multiple_connections">Multiple Connections</h2>
<h3>Opening Multiple Databases at the Same Time</h3> <h3>Opening Multiple Databases at the Same Time</h3>
<p> <p>
...@@ -900,8 +900,8 @@ The initial lock timeout (that is the timeout used for new connections) can be s ...@@ -900,8 +900,8 @@ The initial lock timeout (that is the timeout used for new connections) can be s
SET DEFAULT_LOCK_TIMEOUT &lt;milliseconds&gt;. The default lock timeout is persistent. SET DEFAULT_LOCK_TIMEOUT &lt;milliseconds&gt;. The default lock timeout is persistent.
</p> </p>
<br /><a name="database_file_layout"></a> <br />
<h2>Database File Layout</h2> <h2 id="database_file_layout">Database File Layout</h2>
<p> <p>
There are a number of files created for persistent databases. Unlike some other databases, There are a number of files created for persistent databases. Unlike some other databases,
not every table and/or index is stored in its own file. Instead, usually only the following files are created: not every table and/or index is stored in its own file. Instead, usually only the following files are created:
...@@ -998,8 +998,8 @@ automatically if they don't exist. ...@@ -998,8 +998,8 @@ automatically if they don't exist.
To backup data while the database is running, the SQL command SCRIPT can be used. To backup data while the database is running, the SQL command SCRIPT can be used.
</p> </p>
<br /><a name="logging_recovery"></a> <br />
<h2>Logging and Recovery</h2> <h2 id="logging_recovery">Logging and Recovery</h2>
<p> <p>
Whenever data is modified in the database and those changes are committed, the changes are logged Whenever data is modified in the database and those changes are committed, the changes are logged
to disk (except for in-memory objects). The changes to the data file itself are usually written to disk (except for in-memory objects). The changes to the data file itself are usually written
...@@ -1022,8 +1022,8 @@ must contain RECOVER=1, as in jdbc:h2:~/test;RECOVER=1. Indexes are rebuilt in t ...@@ -1022,8 +1022,8 @@ must contain RECOVER=1, as in jdbc:h2:~/test;RECOVER=1. Indexes are rebuilt in t
the summary (object allocation table) is not read in this case, so opening the database takes longer. the summary (object allocation table) is not read in this case, so opening the database takes longer.
</p> </p>
<br /><a name="compatibility"></a> <br />
<h2>Compatibility</h2> <h2 id="compatibility">Compatibility</h2>
<p> <p>
All database engines behave a little bit different. Where possible, H2 supports the ANSI SQL standard, All database engines behave a little bit different. Where possible, H2 supports the ANSI SQL standard,
and tries to be compatible to other databases. There are still a few differences however: and tries to be compatible to other databases. There are still a few differences however:
...@@ -1130,8 +1130,8 @@ or the SQL statement <code>SET MODE PostgreSQL</code>. ...@@ -1130,8 +1130,8 @@ or the SQL statement <code>SET MODE PostgreSQL</code>.
</li><li>The system columns 'CTID' and 'OID' are supported. </li><li>The system columns 'CTID' and 'OID' are supported.
</li></ul> </li></ul>
<br /><a name="auto_reconnect"></a> <br />
<h2>Auto-Reconnect</h2> <h2 id="auto_reconnect">Auto-Reconnect</h2>
<p> <p>
The auto-reconnect feature causes the JDBC driver to reconnect to The auto-reconnect feature causes the JDBC driver to reconnect to
the database if the connection is lost. The automatic re-connect only the database if the connection is lost. The automatic re-connect only
...@@ -1144,8 +1144,8 @@ The contents of the system table INFORMATION_SCHEMA.SESSION_STATE ...@@ -1144,8 +1144,8 @@ The contents of the system table INFORMATION_SCHEMA.SESSION_STATE
contains all client side state that is re-created. contains all client side state that is re-created.
</p> </p>
<br /><a name="auto_mixed_mode"></a> <br />
<h2>Automatic Mixed Mode</h2> <h2 id="auto_mixed_mode">Automatic Mixed Mode</h2>
<p> <p>
Multiple processes can access the same database without having to start the server manually. Multiple processes can access the same database without having to start the server manually.
To do that, append <code>;AUTO_SERVER=TRUE</code> to the database URL. To do that, append <code>;AUTO_SERVER=TRUE</code> to the database URL.
...@@ -1184,8 +1184,8 @@ DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE"); ...@@ -1184,8 +1184,8 @@ DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE");
DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE"); DriverManager.getConnection("jdbc:h2:/data/test;AUTO_SERVER=TRUE");
</pre> </pre>
<br /><a name="trace_options"></a> <br />
<h2>Using the Trace Options</h2> <h2 id="trace_options">Using the Trace Options</h2>
<p> <p>
To find problems in an application, it is sometimes good to see what database operations To find problems in an application, it is sometimes good to see what database operations
where executed. This database offers the following trace features: where executed. This database offers the following trace features:
...@@ -1259,8 +1259,8 @@ If this is the case, the source code needs to be split in multiple methods. ...@@ -1259,8 +1259,8 @@ If this is the case, the source code needs to be split in multiple methods.
The password is not listed in the trace file and therefore not included in the source code. The password is not listed in the trace file and therefore not included in the source code.
</p> </p>
<br /><a name="other_logging"></a> <br />
<h2>Using Other Logging APIs</h2> <h2 id="other_logging">Using Other Logging APIs</h2>
<p> <p>
By default, this database uses its own native 'trace' facility. This facility is called 'trace' and not By default, this database uses its own native 'trace' facility. This facility is called 'trace' and not
'log' within this database to avoid confusion with the transaction log. Trace messages can be 'log' within this database to avoid confusion with the transaction log. Trace messages can be
...@@ -1287,8 +1287,8 @@ will not have the desired effect. To use SLF4J, all required jar files need to b ...@@ -1287,8 +1287,8 @@ will not have the desired effect. To use SLF4J, all required jar files need to b
If it does not work, check the file &lt;database&gt;.trace.db for error messages. If it does not work, check the file &lt;database&gt;.trace.db for error messages.
</p> </p>
<br /><a name="read_only"></a> <br />
<h2>Read Only Databases</h2> <h2 id="read_only">Read Only Databases</h2>
<p> <p>
If the database files are read-only, then the database is read-only as well. If the database files are read-only, then the database is read-only as well.
It is not possible to create new tables, add or modify data in this database. It is not possible to create new tables, add or modify data in this database.
...@@ -1300,8 +1300,8 @@ There are two ways an application can find out whether database is read-only: ...@@ -1300,8 +1300,8 @@ There are two ways an application can find out whether database is read-only:
by calling Connection.isReadOnly() or by executing the SQL statement CALL READONLY(). by calling Connection.isReadOnly() or by executing the SQL statement CALL READONLY().
</p> </p>
<br /><a name="database_in_zip"></a> <br />
<h2>Read Only Databases in Zip or Jar File</h2> <h2 id="database_in_zip">Read Only Databases in Zip or Jar File</h2>
<p> <p>
To create a read-only database in a zip file, first create a regular persistent database, and then create a backup. To create a read-only database in a zip file, first create a regular persistent database, and then create a backup.
If you are using a database named 'test', an easy way to do that is using the Backup tool or the BACKUP SQL statement: If you are using a database named 'test', an easy way to do that is using the Backup tool or the BACKUP SQL statement:
...@@ -1325,8 +1325,8 @@ is not read in memory; therefore large databases are supported as well. The same ...@@ -1325,8 +1325,8 @@ is not read in memory; therefore large databases are supported as well. The same
a regular database. a regular database.
</p> </p>
<br /><a name="low_disk_space"></a> <br />
<h2>Graceful Handling of Low Disk Space Situations</h2> <h2 id="low_disk_space">Graceful Handling of Low Disk Space Situations</h2>
<p> <p>
If the database needs more disk space, it calls the database event listener if one is installed. If the database needs more disk space, it calls the database event listener if one is installed.
The application may then delete temporary files, or display a message and wait until The application may then delete temporary files, or display a message and wait until
...@@ -1344,8 +1344,8 @@ is corrupted, then the database can be opened by specifying a database event lis ...@@ -1344,8 +1344,8 @@ is corrupted, then the database can be opened by specifying a database event lis
The exceptions are logged, but opening the database will continue. The exceptions are logged, but opening the database will continue.
</p> </p>
<br /><a name="computed_columns"></a> <br />
<h2>Computed Columns / Function Based Index</h2> <h2 id="computed_columns">Computed Columns / Function Based Index</h2>
<p> <p>
Function indexes are not directly supported by this database, but they can be emulated Function indexes are not directly supported by this database, but they can be emulated
by using computed columns. For example, if an index on the upper-case version of by using computed columns. For example, if an index on the upper-case version of
...@@ -1370,8 +1370,8 @@ INSERT INTO ADDRESS(ID, NAME) VALUES(1, 'Miller'); ...@@ -1370,8 +1370,8 @@ INSERT INTO ADDRESS(ID, NAME) VALUES(1, 'Miller');
SELECT * FROM ADDRESS WHERE UPPER_NAME='MILLER'; SELECT * FROM ADDRESS WHERE UPPER_NAME='MILLER';
</pre> </pre>
<br /><a name="multi_dimensional"></a> <br />
<h2>Multi-Dimensional Indexes</h2> <h2 id="multi_dimensional">Multi-Dimensional Indexes</h2>
<p> <p>
A tool is provided to execute efficient multi-dimension (spatial) range queries. A tool is provided to execute efficient multi-dimension (spatial) range queries.
This database does not support a specialized spatial index (R-Tree or similar). This database does not support a specialized spatial index (R-Tree or similar).
...@@ -1393,8 +1393,8 @@ For an example how to use the tool, please have a look at the sample code provid ...@@ -1393,8 +1393,8 @@ For an example how to use the tool, please have a look at the sample code provid
in TestMultiDimension.java. in TestMultiDimension.java.
</p> </p>
<br /><a name="passwords"></a> <br />
<h2>Using Passwords</h2> <h2 id="passwords">Using Passwords</h2>
<h3>Using Secure Passwords</h3> <h3>Using Secure Passwords</h3>
<p> <p>
...@@ -1466,8 +1466,8 @@ Connection conn = DriverManager. ...@@ -1466,8 +1466,8 @@ Connection conn = DriverManager.
The settings in the URL override the settings passed as a separate parameter. The settings in the URL override the settings passed as a separate parameter.
</p> </p>
<br /><a name="user_defined_functions"></a> <br />
<h2>User-Defined Functions and Stored Procedures</h2> <h2 id="user_defined_functions">User-Defined Functions and Stored Procedures</h2>
<p> <p>
In addition to the built-in functions, this database supports user-defined Java functions. In addition to the built-in functions, this database supports user-defined Java functions.
In this database, Java functions can be used as stored procedures as well. In this database, Java functions can be used as stored procedures as well.
...@@ -1586,8 +1586,8 @@ CREATE ALIAS MATRIX FOR "org.h2.samples.Function.getMatrix"; ...@@ -1586,8 +1586,8 @@ CREATE ALIAS MATRIX FOR "org.h2.samples.Function.getMatrix";
SELECT * FROM MATRIX(4) ORDER BY X, Y; SELECT * FROM MATRIX(4) ORDER BY X, Y;
</pre> </pre>
<br /><a name="triggers"></a> <br />
<h2>Triggers</h2> <h2 id="triggers">Triggers</h2>
<p> <p>
This database supports Java triggers that are called before or after a row is updated, inserted or deleted. This database supports Java triggers that are called before or after a row is updated, inserted or deleted.
Triggers can be used for complex consistency checks, or to update related data in the database. Triggers can be used for complex consistency checks, or to update related data in the database.
...@@ -1621,8 +1621,8 @@ CREATE TRIGGER INV_INS AFTER INSERT ON INVOICE ...@@ -1621,8 +1621,8 @@ CREATE TRIGGER INV_INS AFTER INSERT ON INVOICE
The trigger can be used to veto a change, by throwing a SQLException. The trigger can be used to veto a change, by throwing a SQLException.
</p> </p>
<br /><a name="compacting"></a> <br />
<h2>Compacting a Database</h2> <h2 id="compacting">Compacting a Database</h2>
<p> <p>
Empty space in the database file is re-used automatically. Empty space in the database file is re-used automatically.
To re-build the indexes, the simplest way is to delete the .index.db file To re-build the indexes, the simplest way is to delete the .index.db file
...@@ -1646,8 +1646,8 @@ The commands SCRIPT / RUNSCRIPT can be used as well to create a backup ...@@ -1646,8 +1646,8 @@ The commands SCRIPT / RUNSCRIPT can be used as well to create a backup
of a database and re-build the database from the script. of a database and re-build the database from the script.
</p> </p>
<br /><a name="cache_settings"></a> <br />
<h2>Cache Settings</h2> <h2 id="cache_settings">Cache Settings</h2>
<p> <p>
The database keeps most frequently used data and index pages in the main memory. The database keeps most frequently used data and index pages in the main memory.
The amount of memory used for caching can be changed using the setting The amount of memory used for caching can be changed using the setting
......
...@@ -13,7 +13,7 @@ Initial Developer: H2 Group ...@@ -13,7 +13,7 @@ Initial Developer: H2 Group
</head><body onload="highlight();"> </head><body onload="highlight();">
<table class="nav" onmousemove="return mouseMove(event)"><tr class="nav"><td class="nav" valign="top"> <table class="nav" onmousemove="return mouseMove(event)"><tr class="nav"><td class="nav" valign="top">
<div id="searchMenu" style="width: 180px; overflow: hidden;"> <div id = "searchMenu" style="width: 180px; overflow: hidden;">
<div class="menu"> <div class="menu">
<img src="images/h2-logo.png" alt="H2 Logo" onclick="document.location='main.html'" width="136" height="74"/> <img src="images/h2-logo.png" alt="H2 Logo" onclick="document.location='main.html'" width="136" height="74"/>
</div> </div>
...@@ -32,17 +32,17 @@ Initial Developer: H2 Group ...@@ -32,17 +32,17 @@ Initial Developer: H2 Group
</tr> </tr>
<tr class="search"> <tr class="search">
<td class="search" colspan="2"> <td class="search" colspan="2">
<input id="search" name="search" type="text" size="21" maxlength="100" onkeyup="listWords(this.value, '')" /><br /> <input id = "search" name="search" type="text" size="21" maxlength="100" onkeyup="listWords(this.value, '')" /><br />
<input type="reset" id="clear" style="display:none;" value="Clear" onclick="listWords('', '');" /> <input type="reset" id = "clear" style="display:none;" value="Clear" onclick="listWords('', '');" />
</td> </td>
</tr> </tr>
<tr class="search" style="display:none;" > <tr class="search" style="display:none;" >
<td class="search" style="width: 1%; vertical-align: middle;"><input id="highlight" type="checkbox" checked="checked" onclick="highlightCurrent(this.checked, search.value)" /></td> <td class="search" style="width: 1%; vertical-align: middle;"><input id = "highlight" type="checkbox" checked="checked" onclick="highlightCurrent(this.checked, search.value)" /></td>
<td class="search" style="width: 99%; padding: 0px; vertical-align: middle;"> Highlight keyword(s) </td> <td class="search" style="width: 99%; padding: 0px; vertical-align: middle;"> Highlight keyword(s) </td>
</tr> </tr>
<tr class="search"> <tr class="search">
<td class="search" colspan="2"> <td class="search" colspan="2">
<table id="result" style="border: 0px;"> <table id = "result" style="border: 0px;">
<tr style="display:none"><td></td></tr> <tr style="display:none"><td></td></tr>
</table> </table>
</td> </td>
......
...@@ -44,7 +44,7 @@ Functions ...@@ -44,7 +44,7 @@ Functions
<c:forEach var="item" items="functionsAll"> <c:forEach var="item" items="functionsAll">
<br /> <br />
<a name="${item.link}"></a><h3>${item.topic}</h3> <h3 id="${item.link}">${item.topic}</h3>
<pre> <pre>
${item.syntax} ${item.syntax}
</pre> </pre>
......
...@@ -38,7 +38,7 @@ SQL Grammar ...@@ -38,7 +38,7 @@ SQL Grammar
<c:forEach var="item" items="commands"> <c:forEach var="item" items="commands">
<br /> <br />
<a name="${item.link}"></a><h3>${item.topic}</h3> <h3 id="${item.link}">${item.topic}</h3>
<pre> <pre>
${item.syntax} ${item.syntax}
</pre> </pre>
...@@ -52,7 +52,7 @@ ${item.example} ...@@ -52,7 +52,7 @@ ${item.example}
<c:forEach var="item" items="otherGrammar"> <c:forEach var="item" items="otherGrammar">
<br /> <br />
<a name="${item.link}"></a><h3>${item.topic}</h3> <h3 id="${item.link}">${item.topic}</h3>
<pre> <pre>
${item.syntax} ${item.syntax}
</pre> </pre>
...@@ -65,7 +65,7 @@ ${item.example} ...@@ -65,7 +65,7 @@ ${item.example}
</c:forEach> </c:forEach>
<br /> <br />
<a name="information_schema"></a><h3>Information Schema</h3> <h3 id="information_schema">Information Schema</h3>
<p> <p>
The system tables in the schema 'INFORMATION_SCHEMA' contain the meta data The system tables in the schema 'INFORMATION_SCHEMA' contain the meta data
of all tables in the database as well as the current settings. of all tables in the database as well as the current settings.
...@@ -77,7 +77,7 @@ of all tables in the database as well as the current settings. ...@@ -77,7 +77,7 @@ of all tables in the database as well as the current settings.
</table> </table>
<br /> <br />
<a name="range_table"></a><h3>Range Table</h3> <h3 id="range_table">Range Table</h3>
<p> <p>
The range table is a dynamic system table that contains all values from a start to an end value. The range table is a dynamic system table that contains all values from a start to an end value.
The table contains one column called X. Both the start and end values are included in the result. The table contains one column called X. Both the start and end values are included in the result.
......
...@@ -27,8 +27,8 @@ History ...@@ -27,8 +27,8 @@ History
<a href="#supporters"> <a href="#supporters">
Supporters</a><br /> Supporters</a><br />
<br /><a name="changelog"></a> <br />
<h2>Change Log</h2> <h2 id="changelog">Change Log</h2>
<p> <p>
The up-to-date change log is available at The up-to-date change log is available at
<a href="http://www.h2database.com/html/changelog.html"> <a href="http://www.h2database.com/html/changelog.html">
...@@ -36,8 +36,8 @@ http://www.h2database.com/html/changelog.html ...@@ -36,8 +36,8 @@ http://www.h2database.com/html/changelog.html
</a> </a>
</p> </p>
<br /><a name="roadmap"></a> <br />
<h2>Roadmap</h2> <h2 id="roadmap">Roadmap</h2>
<p> <p>
The current roadmap is available at The current roadmap is available at
<a href="http://www.h2database.com/html/roadmap.html"> <a href="http://www.h2database.com/html/roadmap.html">
...@@ -45,8 +45,8 @@ http://www.h2database.com/html/roadmap.html ...@@ -45,8 +45,8 @@ http://www.h2database.com/html/roadmap.html
</a> </a>
</p> </p>
<br /><a name="history"></a> <br />
<h2>History of this Database Engine</h2> <h2 id="history">History of this Database Engine</h2>
<p> <p>
The development of H2 was started in May 2004, The development of H2 was started in May 2004,
but it was first published on December 14th 2005. but it was first published on December 14th 2005.
...@@ -58,8 +58,8 @@ The name H2 stands for Hypersonic 2; however H2 does not share any code with ...@@ -58,8 +58,8 @@ The name H2 stands for Hypersonic 2; however H2 does not share any code with
Hypersonic SQL or HSQLDB. H2 is built from scratch. Hypersonic SQL or HSQLDB. H2 is built from scratch.
</p> </p>
<br /><a name="why_java"></a> <br />
<h2>Why Java</h2> <h2 id="why_java">Why Java</h2>
<p> <p>
A few reasons using a Java database are: A few reasons using a Java database are:
</p> </p>
...@@ -92,8 +92,8 @@ instead of using the existing libraries. Libraries that are not available in ope ...@@ -92,8 +92,8 @@ instead of using the existing libraries. Libraries that are not available in ope
Java implementations (such as Swing) are not used or only used for specific features. Java implementations (such as Swing) are not used or only used for specific features.
</p> </p>
<br /><a name="supporters"></a> <br />
<h2>Supporters</h2> <h2 id="supporters">Supporters</h2>
<p> <p>
Many thanks for those who helped by finding and reporting bugs, gave valuable feedback, Many thanks for those who helped by finding and reporting bugs, gave valuable feedback,
spread the word and have translated this project. Also many thanks to the donors who contributed spread the word and have translated this project. Also many thanks to the donors who contributed
......
...@@ -26,8 +26,8 @@ Installation ...@@ -26,8 +26,8 @@ Installation
<a href="#directory_structure"> <a href="#directory_structure">
Directory Structure</a><br /> Directory Structure</a><br />
<br /><a name="requirements"></a> <br />
<h2>Requirements</h2> <h2 id="requirements">Requirements</h2>
<p> <p>
To run the database, the following minimum software stack is known to work: To run the database, the following minimum software stack is known to work:
</p> </p>
...@@ -38,8 +38,8 @@ To run the database, the following minimum software stack is known to work: ...@@ -38,8 +38,8 @@ To run the database, the following minimum software stack is known to work:
</li><li>Mozilla Firefox 1.5 or newer </li><li>Mozilla Firefox 1.5 or newer
</li></ul> </li></ul>
<br /><a name="supported_platforms"></a> <br />
<h2>Supported Platforms</h2> <h2 id="supported_platforms">Supported Platforms</h2>
<p> <p>
As this database is written in Java, it can run on many different platforms. As this database is written in Java, it can run on many different platforms.
It is tested with Java 1.5 and 1.6 but can also be compiled to native code using GCJ. It is tested with Java 1.5 and 1.6 but can also be compiled to native code using GCJ.
...@@ -48,14 +48,14 @@ developed and tested on Windows XP and Mac OS X using the Sun JDK 1.5, but it al ...@@ -48,14 +48,14 @@ developed and tested on Windows XP and Mac OS X using the Sun JDK 1.5, but it al
works in many other operating systems and using other Java runtime environments. works in many other operating systems and using other Java runtime environments.
</p> </p>
<br /><a name="installing"></a> <br />
<h2>Installing the Software</h2> <h2 id="installing">Installing the Software</h2>
<p> <p>
To install the software, run the installer or unzip it to a directory of your choice. To install the software, run the installer or unzip it to a directory of your choice.
</p> </p>
<br /><a name="directory_structure"></a> <br />
<h2>Directory Structure</h2> <h2 id="directory_structure">Directory Structure</h2>
<p> <p>
After installing, you should get the following directory structure: After installing, you should get the following directory structure:
</p> </p>
......
...@@ -45,67 +45,67 @@ copyright and license as the original code. The copyright of the ported source c ...@@ -45,67 +45,67 @@ copyright and license as the original code. The copyright of the ported source c
<h2>H2 License, Version 1.0</h2> <h2>H2 License, Version 1.0</h2>
<h3 id="section-1">1. Definitions</h3> <h3 id = "section-1">1. Definitions</h3>
<p id="section-1.0.1"><b>1.0.1. "Commercial Use"</b> <p id = "section-1.0.1"><b>1.0.1. "Commercial Use"</b>
means distribution or otherwise making the Covered Code available to a third party. means distribution or otherwise making the Covered Code available to a third party.
</p> </p>
<p id="section-1.1"><b>1.1. "Contributor"</b> <p id = "section-1.1"><b>1.1. "Contributor"</b>
means each entity that creates or contributes to the creation of Modifications. means each entity that creates or contributes to the creation of Modifications.
</p> </p>
<p id="section-1.2"><b>1.2. "Contributor Version"</b> <p id = "section-1.2"><b>1.2. "Contributor Version"</b>
means the combination of the Original Code, prior Modifications used by a Contributor, means the combination of the Original Code, prior Modifications used by a Contributor,
and the Modifications made by that particular Contributor. and the Modifications made by that particular Contributor.
</p> </p>
<p id="section-1.3"><b>1.3. "Covered Code"</b> <p id = "section-1.3"><b>1.3. "Covered Code"</b>
means the Original Code or Modifications or the combination of the Original Code and means the Original Code or Modifications or the combination of the Original Code and
Modifications, in each case including portions thereof. Modifications, in each case including portions thereof.
</p> </p>
<p id="section-1.4"><b>1.4. "Electronic Distribution Mechanism"</b> <p id = "section-1.4"><b>1.4. "Electronic Distribution Mechanism"</b>
means a mechanism generally accepted in the software development community for the means a mechanism generally accepted in the software development community for the
electronic transfer of data. electronic transfer of data.
</p> </p>
<p id="section-1.5"><b>1.5. "Executable"</b> <p id = "section-1.5"><b>1.5. "Executable"</b>
means Covered Code in any form other than Source Code. means Covered Code in any form other than Source Code.
</p> </p>
<p id="section-1.6"><b>1.6. "Initial Developer"</b> <p id = "section-1.6"><b>1.6. "Initial Developer"</b>
means the individual or entity identified as the Initial Developer in the Source Code means the individual or entity identified as the Initial Developer in the Source Code
notice required by <a href="#exhibit-a">Exhibit A</a>. notice required by <a href="#exhibit-a">Exhibit A</a>.
</p> </p>
<p id="section-1.7"><b>1.7. "Larger Work"</b> <p id = "section-1.7"><b>1.7. "Larger Work"</b>
means a work which combines Covered Code or portions thereof with code not governed means a work which combines Covered Code or portions thereof with code not governed
by the terms of this License. by the terms of this License.
</p> </p>
<p id="section-1.8"><b>1.8. "License"</b> <p id = "section-1.8"><b>1.8. "License"</b>
means this document. means this document.
</p> </p>
<p id="section-1.8.1"><b>1.8.1. "Licensable"</b> <p id = "section-1.8.1"><b>1.8.1. "Licensable"</b>
means having the right to grant, to the maximum extent possible, whether at the means having the right to grant, to the maximum extent possible, whether at the
time of the initial grant or subsequently acquired, any and all of the rights time of the initial grant or subsequently acquired, any and all of the rights
conveyed herein. conveyed herein.
</p> </p>
<p id="section-1.9"><b>1.9. "Modifications"</b> <p id = "section-1.9"><b>1.9. "Modifications"</b>
means any addition to or deletion from the substance or structure of either the means any addition to or deletion from the substance or structure of either the
Original Code or any previous Modifications. When Covered Code is released as a Original Code or any previous Modifications. When Covered Code is released as a
series of files, a Modification is: series of files, a Modification is:
</p> </p>
<p id="section-1.9-a">1.9.a. Any addition to or deletion from the contents of a file <p id = "section-1.9-a">1.9.a. Any addition to or deletion from the contents of a file
containing Original Code or previous Modifications. containing Original Code or previous Modifications.
</p> </p>
<p id="section-1.9-b">1.9.b. Any new file that contains any part of the Original Code or <p id = "section-1.9-b">1.9.b. Any new file that contains any part of the Original Code or
previous Modifications. previous Modifications.
</p> </p>
<p id="section-1.10"><b>1.10. "Original Code"</b> <p id = "section-1.10"><b>1.10. "Original Code"</b>
means Source Code of computer software code which is described in the Source Code means Source Code of computer software code which is described in the Source Code
notice required by <a href="#exhibit-a">Exhibit A</a> as Original Code, and which, notice required by <a href="#exhibit-a">Exhibit A</a> as Original Code, and which,
at the time of its release under this License is not already Covered Code governed at the time of its release under this License is not already Covered Code governed
by this License. by this License.
</p> </p>
<p id="section-1.10.1"><b>1.10.1. "Patent Claims"</b> <p id = "section-1.10.1"><b>1.10.1. "Patent Claims"</b>
means any patent claim(s), now owned or hereafter acquired, including without means any patent claim(s), now owned or hereafter acquired, including without
limitation, method, process, and apparatus claims, in any patent Licensable by limitation, method, process, and apparatus claims, in any patent Licensable by
grantor. grantor.
</p> </p>
<p id="section-1.11"><b>1.11. "Source Code"</b> <p id = "section-1.11"><b>1.11. "Source Code"</b>
means the preferred form of the Covered Code for making modifications to it, means the preferred form of the Covered Code for making modifications to it,
including all modules it contains, plus any associated interface definition files, including all modules it contains, plus any associated interface definition files,
scripts used to control compilation and installation of an Executable, or source scripts used to control compilation and installation of an Executable, or source
...@@ -114,7 +114,7 @@ available Covered Code of the Contributor's choice. The Source Code can be in a ...@@ -114,7 +114,7 @@ available Covered Code of the Contributor's choice. The Source Code can be in a
compressed or archival form, provided the appropriate decompression or de-archiving compressed or archival form, provided the appropriate decompression or de-archiving
software is widely available for no charge. software is widely available for no charge.
</p> </p>
<p id="section-1.12"><b>1.12. "You" (or "Your")</b> <p id = "section-1.12"><b>1.12. "You" (or "Your")</b>
means an individual or a legal entity exercising rights under, and complying with means an individual or a legal entity exercising rights under, and complying with
all of the terms of, this License or a future version of this License issued under all of the terms of, this License or a future version of this License issued under
<a href="#section-6.1">Section 6.1.</a> For legal entities, "You" includes any entity <a href="#section-6.1">Section 6.1.</a> For legal entities, "You" includes any entity
...@@ -125,7 +125,7 @@ ownership of more than fifty percent (50%) of the outstanding shares or benefici ...@@ -125,7 +125,7 @@ ownership of more than fifty percent (50%) of the outstanding shares or benefici
ownership of such entity. ownership of such entity.
</p> </p>
<h3 id="section-2">2. Source Code License</h3> <h3 id = "section-2">2. Source Code License</h3>
<h4 id="section-2.1">2.1. The Initial Developer Grant</h4> <h4 id="section-2.1">2.1. The Initial Developer Grant</h4>
<p> <p>
The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive
...@@ -140,12 +140,12 @@ Modifications, and/or as part of a Larger Work; and ...@@ -140,12 +140,12 @@ Modifications, and/or as part of a Larger Work; and
of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or
otherwise dispose of the Original Code (or portions thereof). otherwise dispose of the Original Code (or portions thereof).
</p> </p>
<p id="section-2.1-c">2.1.c. the licenses granted in this Section 2.1 <p id = "section-2.1-c">2.1.c. the licenses granted in this Section 2.1
(<a href="#section-2.1-a">a</a>) and (<a href="#section-2.1-b">b</a>) are effective on (<a href="#section-2.1-a">a</a>) and (<a href="#section-2.1-b">b</a>) are effective on
the date Initial Developer first distributes Original Code under the terms of this the date Initial Developer first distributes Original Code under the terms of this
License. License.
</p> </p>
<p id="section-2.1-d">2.1.d. Notwithstanding Section 2.1 (<a href="#section-2.1-b">b</a>) <p id = "section-2.1-d">2.1.d. Notwithstanding Section 2.1 (<a href="#section-2.1-b">b</a>)
above, no patent license is granted: 1) for code that You delete from the Original Code; above, no patent license is granted: 1) for code that You delete from the Original Code;
2) separate from the Original Code; or 3) for infringements caused by: i) the 2) separate from the Original Code; or 3) for infringements caused by: i) the
modification of the Original Code or ii) the combination of the Original Code with other modification of the Original Code or ii) the combination of the Original Code with other
...@@ -170,11 +170,11 @@ sale, have made, and/or otherwise dispose of: 1) Modifications made by that Cont ...@@ -170,11 +170,11 @@ sale, have made, and/or otherwise dispose of: 1) Modifications made by that Cont
(or portions thereof); and 2) the combination of Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor
with its Contributor Version (or portions of such combination). with its Contributor Version (or portions of such combination).
</p> </p>
<p id="section-2.2-c">2.2.c. the licenses granted in Sections 2.2 <p id = "section-2.2-c">2.2.c. the licenses granted in Sections 2.2
(<a href="#section-2.2-a">a</a>) and 2.2 (<a href="#section-2.2-b">b</a>) are effective (<a href="#section-2.2-a">a</a>) and 2.2 (<a href="#section-2.2-b">b</a>) are effective
on the date Contributor first makes Commercial Use of the Covered Code. on the date Contributor first makes Commercial Use of the Covered Code.
</p> </p>
<p id="section-2.2-d">2.2.c. Notwithstanding Section 2.2 (<a href="#section-2.2-b">b</a>) <p id = "section-2.2-d">2.2.c. Notwithstanding Section 2.2 (<a href="#section-2.2-b">b</a>)
above, no patent license is granted: 1) for any code that Contributor has deleted from above, no patent license is granted: 1) for any code that Contributor has deleted from
the Contributor Version; 2) separate from the Contributor Version; 3) for infringements the Contributor Version; 2) separate from the Contributor Version; 3) for infringements
caused by: i) third party modifications of Contributor Version or ii) the combination of caused by: i) third party modifications of Contributor Version or ii) the combination of
...@@ -183,7 +183,7 @@ Contributor Version) or other devices; or 4) under Patent Claims infringed by Co ...@@ -183,7 +183,7 @@ Contributor Version) or other devices; or 4) under Patent Claims infringed by Co
in the absence of Modifications made by that Contributor. in the absence of Modifications made by that Contributor.
</p> </p>
<h3 id="section-3">3. Distribution Obligations</h3> <h3 id = "section-3">3. Distribution Obligations</h3>
<h4 id="section-3.1">3.1. Application of License</h4> <h4 id="section-3.1">3.1. Application of License</h4>
<p> <p>
The Modifications which You create or to which You contribute are governed by the terms The Modifications which You create or to which You contribute are governed by the terms
...@@ -233,12 +233,12 @@ all copies Contributor makes available thereafter and shall take other steps (su ...@@ -233,12 +233,12 @@ all copies Contributor makes available thereafter and shall take other steps (su
notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who
received the Covered Code that new knowledge has been obtained. received the Covered Code that new knowledge has been obtained.
</p> </p>
<p id="section-3.4-b"><b>3.4.b. Contributor APIs:</b> <p id = "section-3.4-b"><b>3.4.b. Contributor APIs:</b>
If Contributor's Modifications include an application programming interface and Contributor If Contributor's Modifications include an application programming interface and Contributor
has knowledge of patent licenses which are reasonably necessary to implement that has knowledge of patent licenses which are reasonably necessary to implement that
API, Contributor must also include this information in the legal file. API, Contributor must also include this information in the legal file.
</p> </p>
<p id="section-3.4-c"><b>3.4.c. Representations:</b> <p id = "section-3.4-c"><b>3.4.c. Representations:</b>
Contributor represents that, except as disclosed pursuant to Section 3.4 Contributor represents that, except as disclosed pursuant to Section 3.4
(<a href="#section-3.4-a">a</a>) above, Contributor believes that Contributor's Modifications (<a href="#section-3.4-a">a</a>) above, Contributor believes that Contributor's Modifications
are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the
...@@ -263,7 +263,7 @@ and every Contributor for any liability incurred by the Initial Developer or suc ...@@ -263,7 +263,7 @@ and every Contributor for any liability incurred by the Initial Developer or suc
as a result of warranty, support, indemnity or liability terms You offer. as a result of warranty, support, indemnity or liability terms You offer.
</p> </p>
<h4 id="section-3.6">3.6. Distribution of Executable Versions</h4> <h4 id = "section-3.6">3.6. Distribution of Executable Versions</h4>
<p> <p>
You may distribute Covered Code in Executable form only if the requirements of Sections You may distribute Covered Code in Executable form only if the requirements of Sections
<a href="#section-3.1">3.1</a>, <a href="#section-3.2">3.2</a>, <a href="#section-3.1">3.1</a>, <a href="#section-3.2">3.2</a>,
...@@ -285,14 +285,14 @@ every Contributor for any liability incurred by the Initial Developer or such Co ...@@ -285,14 +285,14 @@ every Contributor for any liability incurred by the Initial Developer or such Co
a result of any such terms You offer. a result of any such terms You offer.
</p> </p>
<h4 id="section-3.7">3.7. Larger Works</h4> <h4 id = "section-3.7">3.7. Larger Works</h4>
<p> <p>
You may create a Larger Work by combining Covered Code with other code not governed by the You may create a Larger Work by combining Covered Code with other code not governed by the
terms of this License and distribute the Larger Work as a single product. In such a case, terms of this License and distribute the Larger Work as a single product. In such a case,
You must make sure the requirements of this License are fulfilled for the Covered Code. You must make sure the requirements of this License are fulfilled for the Covered Code.
</p> </p>
<h3 id="section-4">4. Inability to Comply Due to Statute or Regulation.</h3> <h3 id = "section-4">4. Inability to Comply Due to Statute or Regulation.</h3>
<p> <p>
If it is impossible for You to comply with any of the terms of this License with respect to If it is impossible for You to comply with any of the terms of this License with respect to
some or all of the Covered Code due to statute, judicial order, or regulation then You must: some or all of the Covered Code due to statute, judicial order, or regulation then You must:
...@@ -304,13 +304,13 @@ Except to the extent prohibited by statute or regulation, such description must ...@@ -304,13 +304,13 @@ Except to the extent prohibited by statute or regulation, such description must
sufficiently detailed for a recipient of ordinary skill to be able to understand it. sufficiently detailed for a recipient of ordinary skill to be able to understand it.
</p> </p>
<h3 id="section-5">5. Application of this License.</h3> <h3 id = "section-5">5. Application of this License.</h3>
<p> <p>
This License applies to code to which the Initial Developer has attached the notice in This License applies to code to which the Initial Developer has attached the notice in
<a href="#exhibit-a">Exhibit A</a> and to related Covered Code. <a href="#exhibit-a">Exhibit A</a> and to related Covered Code.
</p> </p>
<h3 id="section-6">6. Versions of the License.</h3> <h3 id = "section-6">6. Versions of the License.</h3>
<h4 id="section-6.1">6.1. New Versions</h4> <h4 id="section-6.1">6.1. New Versions</h4>
<p> <p>
...@@ -318,7 +318,7 @@ The <em class="u">H2 Group</em> may publish revised and/or new versions ...@@ -318,7 +318,7 @@ The <em class="u">H2 Group</em> may publish revised and/or new versions
of the License from time to time. Each version will be given a distinguishing version number. of the License from time to time. Each version will be given a distinguishing version number.
</p> </p>
<h4 id="section-6.2">6.2. Effect of New Versions</h4> <h4 id = "section-6.2">6.2. Effect of New Versions</h4>
<p> <p>
Once Covered Code has been published under a particular version of the License, You may Once Covered Code has been published under a particular version of the License, You may
always continue to use it under the terms of that version. You may also choose to use such always continue to use it under the terms of that version. You may also choose to use such
...@@ -327,7 +327,7 @@ No one other than the <em class="u">H2 Group</em> has the right to modify the te ...@@ -327,7 +327,7 @@ No one other than the <em class="u">H2 Group</em> has the right to modify the te
created under this License. created under this License.
</p> </p>
<h4 id="section-6.3">6.3. Derivative Works</h4> <h4 id = "section-6.3">6.3. Derivative Works</h4>
<p> <p>
If You create or use a modified version of this License (which you may only do in order to If You create or use a modified version of this License (which you may only do in order to
apply it to code which is not already Covered Code governed by this License), You must (a) apply it to code which is not already Covered Code governed by this License), You must (a)
...@@ -340,7 +340,7 @@ notice described in <a href="#exhibit-a">Exhibit A</a> shall not of themselves b ...@@ -340,7 +340,7 @@ notice described in <a href="#exhibit-a">Exhibit A</a> shall not of themselves b
be modifications of this License.) be modifications of this License.)
</p> </p>
<h3 id="section-7">7. Disclaimer of Warranty</h3> <h3 id = "section-7">7. Disclaimer of Warranty</h3>
<p> <p>
Covered code is provided under this license on an "as is" Covered code is provided under this license on an "as is"
basis, without warranty of any kind, either expressed or implied, including, without basis, without warranty of any kind, either expressed or implied, including, without
...@@ -353,7 +353,7 @@ of this license. No use of any covered code is authorized hereunder except under ...@@ -353,7 +353,7 @@ of this license. No use of any covered code is authorized hereunder except under
disclaimer. disclaimer.
</p> </p>
<h3 id="section-8">8. Termination</h3> <h3 id = "section-8">8. Termination</h3>
<p id="section-8.1">8.1. This License and the rights granted hereunder will terminate <p id="section-8.1">8.1. This License and the rights granted hereunder will terminate
automatically if You fail to comply with terms herein and fail to cure such breach automatically if You fail to comply with terms herein and fail to cure such breach
within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which
...@@ -366,7 +366,7 @@ claim (excluding declaratory judgment actions) against Initial Developer or a Co ...@@ -366,7 +366,7 @@ claim (excluding declaratory judgment actions) against Initial Developer or a Co
(the Initial Developer or Contributor against whom You file such action is referred to (the Initial Developer or Contributor against whom You file such action is referred to
as "Participant") alleging that: as "Participant") alleging that:
</p> </p>
<p id="section-8.2-a">8.2.a. such Participant's Contributor Version directly or indirectly <p id = "section-8.2-a">8.2.a. such Participant's Contributor Version directly or indirectly
infringes any patent, then any and all rights granted by such Participant to You under infringes any patent, then any and all rights granted by such Participant to You under
Sections <a href="#section-2.1">2.1</a> and/or <a href="#section-2.2">2.2</a> of this Sections <a href="#section-2.1">2.1</a> and/or <a href="#section-2.2">2.2</a> of this
License shall, upon 60 days notice from Participant terminate prospectively, unless if License shall, upon 60 days notice from Participant terminate prospectively, unless if
...@@ -380,14 +380,14 @@ Participant to You under Sections <a href="#section-2.1">2.1</a> and/or ...@@ -380,14 +380,14 @@ Participant to You under Sections <a href="#section-2.1">2.1</a> and/or
<a href="#section-2.2">2.2</a> automatically terminate at the expiration of the 60 day <a href="#section-2.2">2.2</a> automatically terminate at the expiration of the 60 day
notice period specified above. notice period specified above.
</p> </p>
<p id="section-8.2-b">8.2.b. any software, hardware, or device, other than such Participant's <p id = "section-8.2-b">8.2.b. any software, hardware, or device, other than such Participant's
Contributor Version, directly or indirectly infringes any patent, then any rights Contributor Version, directly or indirectly infringes any patent, then any rights
granted to You by such Participant under Sections 2.1(<a href="#section-2.1-b">b</a>) granted to You by such Participant under Sections 2.1(<a href="#section-2.1-b">b</a>)
and 2.2(<a href="#section-2.2-b">b</a>) are revoked effective as of the date You first and 2.2(<a href="#section-2.2-b">b</a>) are revoked effective as of the date You first
made, used, sold, distributed, or had made, Modifications made by that Participant. made, used, sold, distributed, or had made, Modifications made by that Participant.
</p> </p>
<p id="section-8.3">8.3. If You assert a patent infringement claim against Participant <p id = "section-8.3">8.3. If You assert a patent infringement claim against Participant
alleging that such Participant's Contributor Version directly or indirectly infringes alleging that such Participant's Contributor Version directly or indirectly infringes
any patent where such claim is resolved (such as by license or settlement) prior to the any patent where such claim is resolved (such as by license or settlement) prior to the
initiation of patent infringement litigation, then the reasonable value of the licenses initiation of patent infringement litigation, then the reasonable value of the licenses
...@@ -396,14 +396,14 @@ granted by such Participant under Sections <a href="#section-2.1">2.1</a> or ...@@ -396,14 +396,14 @@ granted by such Participant under Sections <a href="#section-2.1">2.1</a> or
value of any payment or license. value of any payment or license.
</p> </p>
<p id="section-8.4">8.4. In the event of termination under Sections <p id = "section-8.4">8.4. In the event of termination under Sections
<a href="#section-8.1">8.1</a> or <a href="#section-8.2">8.2</a> above, all end user <a href="#section-8.1">8.1</a> or <a href="#section-8.2">8.2</a> above, all end user
license agreements (excluding distributors and resellers) which have been validly license agreements (excluding distributors and resellers) which have been validly
granted by You or any distributor hereunder prior to termination shall survive granted by You or any distributor hereunder prior to termination shall survive
termination. termination.
</p> </p>
<h3 id="section-9">9. Limitation of Liability</h3> <h3 id = "section-9">9. Limitation of Liability</h3>
<p> <p>
Under no circumstances and under no legal theory, whether Under no circumstances and under no legal theory, whether
tort (including negligence), contract, or otherwise, shall you, the initial developer, tort (including negligence), contract, or otherwise, shall you, the initial developer,
...@@ -419,7 +419,7 @@ or limitation of incidental or consequential damages, so this exclusion and limi ...@@ -419,7 +419,7 @@ or limitation of incidental or consequential damages, so this exclusion and limi
may not apply to you. may not apply to you.
</p> </p>
<h3 id="section-10">10. United States Government End Users</h3> <h3 id = "section-10">10. United States Government End Users</h3>
<p> <p>
The Covered Code is a "commercial item", as that term is defined in 48 The Covered Code is a "commercial item", as that term is defined in 48
C.F.R. 2.101 (October 1995), consisting of C.F.R. 2.101 (October 1995), consisting of
...@@ -429,7 +429,7 @@ terms are used in 48 C.F.R. 12.212 (September 1995). Consistent with 48 C.F.R. 1 ...@@ -429,7 +429,7 @@ terms are used in 48 C.F.R. 12.212 (September 1995). Consistent with 48 C.F.R. 1
acquire Covered Code with only those rights set forth herein. acquire Covered Code with only those rights set forth herein.
</p> </p>
<h3 id="section-11">11. Miscellaneous</h3> <h3 id = "section-11">11. Miscellaneous</h3>
<p> <p>
This License represents the complete agreement concerning subject matter hereof. If This License represents the complete agreement concerning subject matter hereof. If
any provision of this License is held to be unenforceable, such provision shall be any provision of this License is held to be unenforceable, such provision shall be
...@@ -446,7 +446,7 @@ excluded. Any law or regulation which provides that the language of a contract ...@@ -446,7 +446,7 @@ excluded. Any law or regulation which provides that the language of a contract
shall be construed against the drafter shall not apply to this License. shall be construed against the drafter shall not apply to this License.
</p> </p>
<h3 id="section-12">12. Responsibility for Claims</h3> <h3 id = "section-12">12. Responsibility for Claims</h3>
<p> <p>
As between Initial Developer and the Contributors, each party is responsible for As between Initial Developer and the Contributors, each party is responsible for
claims and damages arising, directly or indirectly, out of its utilization of rights claims and damages arising, directly or indirectly, out of its utilization of rights
...@@ -455,7 +455,7 @@ distribute such responsibility on an equitable basis. Nothing herein is intended ...@@ -455,7 +455,7 @@ distribute such responsibility on an equitable basis. Nothing herein is intended
shall be deemed to constitute any admission of liability. shall be deemed to constitute any admission of liability.
</p> </p>
<h3 id="section-13">13. Multiple-Licensed Code</h3> <h3 id = "section-13">13. Multiple-Licensed Code</h3>
<p> <p>
Initial Developer may designate portions of the Covered Code as Initial Developer may designate portions of the Covered Code as
"Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits "Multiple-Licensed". "Multiple-Licensed" means that the Initial Developer permits
......
...@@ -29,8 +29,8 @@ Performance ...@@ -29,8 +29,8 @@ Performance
<a href="#fast_import"> <a href="#fast_import">
Fast Database Import</a><br /> Fast Database Import</a><br />
<br /><a name="performance_comparison"></a> <br />
<h2>Performance Comparison</h2> <h2 id="performance_comparison">Performance Comparison</h2>
<p> <p>
In many cases H2 is faster than other In many cases H2 is faster than other
(open source and not open source) database engines. (open source and not open source) database engines.
...@@ -271,8 +271,8 @@ Here, one (wrapper) connection is opened at the start, ...@@ -271,8 +271,8 @@ Here, one (wrapper) connection is opened at the start,
and for each step a new connection is opened and then closed. and for each step a new connection is opened and then closed.
</p> </p>
<br /><a name="poleposition_benchmark"></a> <br />
<h2>PolePosition Benchmark</h2> <h2 id="poleposition_benchmark">PolePosition Benchmark</h2>
<p> <p>
The PolePosition is an open source benchmark. The algorithms are all quite simple. The PolePosition is an open source benchmark. The algorithms are all quite simple.
It was developed / sponsored by db4o. It was developed / sponsored by db4o.
...@@ -315,8 +315,8 @@ To change that, use the database URL jdbc:h2:file:data/h2/dbbench;DB_CLOSE_DELAY ...@@ -315,8 +315,8 @@ To change that, use the database URL jdbc:h2:file:data/h2/dbbench;DB_CLOSE_DELAY
Unfortunately, the PolePosition test does not take this into account. Unfortunately, the PolePosition test does not take this into account.
</li></ul> </li></ul>
<br /><a name="application_profiling"></a> <br />
<h2>Application Profiling</h2> <h2 id="application_profiling">Application Profiling</h2>
<h3>Analyze First</h3> <h3>Analyze First</h3>
<p> <p>
...@@ -342,8 +342,8 @@ run <code>jstack &lt;pid&gt;</code> or <code>kill -QUIT &lt;pid&gt;</code> (Linu ...@@ -342,8 +342,8 @@ run <code>jstack &lt;pid&gt;</code> or <code>kill -QUIT &lt;pid&gt;</code> (Linu
Ctrl+C (Windows). Ctrl+C (Windows).
</p> </p>
<br /><a name="database_profiling"></a> <br />
<h2>Database Profiling</h2> <h2 id="database_profiling">Database Profiling</h2>
<p> <p>
The ConvertTraceFile tool generates SQL statement statistics at the end of the SQL script file. The ConvertTraceFile tool generates SQL statement statistics at the end of the SQL script file.
The format used is similar to the profiling data generated when using java -Xrunhprof. The format used is similar to the profiling data generated when using java -Xrunhprof.
...@@ -381,8 +381,8 @@ following profiling data (results vary): ...@@ -381,8 +381,8 @@ following profiling data (results vary):
-- 0% 100% 0 1 0 SET TRACE_LEVEL_FILE 3; -- 0% 100% 0 1 0 SET TRACE_LEVEL_FILE 3;
</pre> </pre>
<br /><a name="database_performance_tuning"></a> <br />
<h2>Database Performance Tuning</h2> <h2 id="database_performance_tuning">Database Performance Tuning</h2>
<h3>Use a Modern JVM</h3> <h3>Use a Modern JVM</h3>
<p> <p>
...@@ -510,8 +510,8 @@ Each data type has different storage and performance characteristics: ...@@ -510,8 +510,8 @@ Each data type has different storage and performance characteristics:
</li><li>SMALLINT/TINYINT/BOOLEAN are not significantly smaller or faster to work with than INTEGER in most modes. </li><li>SMALLINT/TINYINT/BOOLEAN are not significantly smaller or faster to work with than INTEGER in most modes.
</li></ul> </li></ul>
<br /><a name="fast_import"></a> <br />
<h2>Fast Database Import</h2> <h2 id="fast_import">Fast Database Import</h2>
<p> <p>
To speed up large imports, consider using the following options temporarily: To speed up large imports, consider using the following options temporarily:
</p> </p>
......
...@@ -21,8 +21,8 @@ Quickstart ...@@ -21,8 +21,8 @@ Quickstart
<a href="#h2_console"> <a href="#h2_console">
The H2 Console Application</a><br /> The H2 Console Application</a><br />
<br /><a name="embedding"></a> <br />
<h2>Embedding H2 in an Application</h2> <h2 id="embedding">Embedding H2 in an Application</h2>
<p> <p>
This database can be used in embedded mode, or in server mode. To use it in embedded mode, you need to: This database can be used in embedded mode, or in server mode. To use it in embedded mode, you need to:
</p> </p>
...@@ -33,8 +33,8 @@ This database can be used in embedded mode, or in server mode. To use it in embe ...@@ -33,8 +33,8 @@ This database can be used in embedded mode, or in server mode. To use it in embe
</li><li>A new database is automatically created </li><li>A new database is automatically created
</li></ul> </li></ul>
<br /><a name="h2_console"></a> <br />
<h2>The H2 Console Application</h2> <h2 id="h2_console">The H2 Console Application</h2>
<p> <p>
The Console lets you access a SQL database using a browser interface. The Console lets you access a SQL database using a browser interface.
<br /> <br />
......
...@@ -457,6 +457,8 @@ See also <a href="build.html#providing_patches">Providing Patches</a>. ...@@ -457,6 +457,8 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Maybe disallow = within database names (jdbc:h2:mem:MODE=DB2 means database name MODE=DB2). </li><li>Maybe disallow = within database names (jdbc:h2:mem:MODE=DB2 means database name MODE=DB2).
</li><li>Fast alter table add column. </li><li>Fast alter table add column.
</li><li>Improve concurrency for in-memory database operations. </li><li>Improve concurrency for in-memory database operations.
</li><li>Issue 122: Support for connection aliases for remote tcp connections.
</li><li>Fast scrambling (strong encryption doesn't help if the password is included in the application).
</li></ul> </li></ul>
<h2>Not Planned</h2> <h2>Not Planned</h2>
......
...@@ -41,7 +41,7 @@ Initial Developer: H2 Group ...@@ -41,7 +41,7 @@ Initial Developer: H2 Group
if (line == i) { if (line == i) {
document.write('<b>' + i + '></b><br />'); document.write('<b>' + i + '></b><br />');
} else if (line <= 4 || i + 4 == line) { } else if (line <= 4 || i + 4 == line) {
document.write(i + '<a name="here"></a><br />'); document.write(i + '<a id = "here"></a><br />');
} else { } else {
document.write(i + '<br />'); document.write(i + '<br />');
} }
...@@ -50,7 +50,7 @@ Initial Developer: H2 Group ...@@ -50,7 +50,7 @@ Initial Developer: H2 Group
</script> </script>
</td> </td>
<td width="92%" style="vertical-align: top"> <td width="92%" style="vertical-align: top">
<iframe id="source" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="80000px" scrolling="no" src=""> <iframe id = "source" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="80000px" scrolling="no" src="">
</iframe> </iframe>
</td> </td>
</tr> </tr>
......
...@@ -186,14 +186,14 @@ function sizeTextArea() { ...@@ -186,14 +186,14 @@ function sizeTextArea() {
<h1>Online Error Analyzer</h1> <h1>Online Error Analyzer</h1>
<b><a href="../html/main.html">Home</a></b><br /> <b><a href="../html/main.html">Home</a></b><br />
<h2> <h2>
<a href="javascript:select('input')" id="inputTab">Input</a>&nbsp; <a href="javascript:select('input')" id = "inputTab">Input</a>&nbsp;
<a href="javascript:select('details')" id="detailsTab">Details</a>&nbsp; <a href="javascript:select('details')" id = "detailsTab">Details</a>&nbsp;
<a href="javascript:select('source')" id="sourceTab">Source Code</a> <a href="javascript:select('source')" id = "sourceTab">Source Code</a>
</h2> </h2>
<hr/> <hr/>
<div id="input"> <div id = "input">
<p>Fill in the error message and stack trace and click on 'Details' or 'Source Code': </p> <p>Fill in the error message and stack trace and click on 'Details' or 'Source Code': </p>
<textarea id="error" cols="100" style="width: 100%; overflow: auto;" rows="20" <textarea id = "error" cols="100" style="width: 100%; overflow: auto;" rows="20"
onChange="convert()" onChange="convert()"
onSelect="convert()" onSelect="convert()"
onKeyUp="convert()" onKeyUp="convert()"
...@@ -203,24 +203,24 @@ function sizeTextArea() { ...@@ -203,24 +203,24 @@ function sizeTextArea() {
> >
</textarea> </textarea>
</div> </div>
<div id="details"> <div id = "details">
<p><b>Error Code: </b><span id="errorCode"></span></p> <p><b>Error Code: </b><span id = "errorCode"></span></p>
<p><b>Product Version: </b><span id="version"></span></p> <p><b>Product Version: </b><span id = "version"></span></p>
<p><b>Message: </b></p> <p><b>Message: </b></p>
<p id="message"></p> <p id = "message"></p>
<p><b>More Information:</b></p> <p><b>More Information:</b></p>
<iframe id="more" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="100px" src=""> <iframe id = "more" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="100px" src="">
</iframe> </iframe>
</div> </div>
<div id="source"> <div id = "source">
<table id="sourceTable" style="border:0px" width="100%"><tr> <table id = "sourceTable" style="border:0px" width="100%"><tr>
<td style="border:0px" width="30px"> <td style="border:0px" width="30px">
<p><b>Stack Trace: </b></p> <p><b>Stack Trace: </b></p>
<p id="links"></p> <p id = "links"></p>
</td><td style="border:0px" width="90%"> </td><td style="border:0px" width="90%">
<p><b>Source File: </b><span id="file"></span><br /> <p><b>Source File: </b><span id = "file"></span><br />
Raw file <input type="checkbox" id="rawSource" /> (fast; only Firefox)</p> Raw file <input type="checkbox" id = "rawSource" /> (fast; only Firefox)</p>
<iframe id="code" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="100px" src=""> <iframe id = "code" frameborder="0" marginwidth="0" marginheight="0" width="100%" height="100px" src="">
</iframe> </iframe>
</td> </td>
</tr></table> </tr></table>
......
...@@ -53,8 +53,8 @@ Tutorial ...@@ -53,8 +53,8 @@ Tutorial
<a href="#spring"> <a href="#spring">
Using Spring</a><br /> Using Spring</a><br />
<br /><a name="tutorial_starting_h2_console"></a> <br />
<h2>Starting and Using the H2 Console</h2> <h2 id="tutorial_starting_h2_console">Starting and Using the H2 Console</h2>
<p> <p>
The H2 Console application lets you access a SQL database using a browser interface. The H2 Console application lets you access a SQL database using a browser interface.
This can be a H2 database, or another database that supports the JDBC API. This can be a H2 database, or another database that supports the JDBC API.
...@@ -220,8 +220,8 @@ press [Ctrl]+[C] in the console where the server was started (Windows), ...@@ -220,8 +220,8 @@ press [Ctrl]+[C] in the console where the server was started (Windows),
or close the console window. or close the console window.
</p> </p>
<br /><a name="console_settings"></a> <br />
<h2>Settings of the H2 Console</h2> <h2 id="console_settings">Settings of the H2 Console</h2>
<p> <p>
The settings of the H2 Console are stored in a configuration file The settings of the H2 Console are stored in a configuration file
called <code>.h2.server.properties</code> in you user home directory. called <code>.h2.server.properties</code> in you user home directory.
...@@ -229,8 +229,8 @@ For Windows installations, the user home directory is usually <code>C:\Documents ...@@ -229,8 +229,8 @@ For Windows installations, the user home directory is usually <code>C:\Documents
The configuration file contains the settings of the application and is automatically created when the H2 Console is first started. The configuration file contains the settings of the application and is automatically created when the H2 Console is first started.
</p> </p>
<br /><a name="connecting_using_jdbc"></a> <br />
<h2>Connecting to a Database using JDBC</h2> <h2 id="connecting_using_jdbc">Connecting to a Database using JDBC</h2>
<p> <p>
To connect to a database, a Java application first needs to load the database driver, To connect to a database, a Java application first needs to load the database driver,
and then get a connection. A simple way to do that is using the following code: and then get a connection. A simple way to do that is using the following code:
...@@ -258,16 +258,16 @@ is the user name ('sa' for System Administrator in this example). The third para ...@@ -258,16 +258,16 @@ is the user name ('sa' for System Administrator in this example). The third para
In this database, user names are not case sensitive, but passwords are. In this database, user names are not case sensitive, but passwords are.
</p> </p>
<br /><a name="creating_new_databases"></a> <br />
<h2>Creating New Databases</h2> <h2 id="creating_new_databases">Creating New Databases</h2>
<p> <p>
By default, if the database specified in the URL does not yet exist, a new (empty) By default, if the database specified in the URL does not yet exist, a new (empty)
database is created automatically. The user that created the database automatically becomes database is created automatically. The user that created the database automatically becomes
the administrator of this database. the administrator of this database.
</p> </p>
<br /><a name="using_server"></a> <br />
<h2>Using the Server</h2> <h2 id="using_server">Using the Server</h2>
<p> <p>
H2 currently supports three server: a web server (for the H2 Console), H2 currently supports three server: a web server (for the H2 Console),
a TCP server (for client/server connections) and an PG server (for PostgreSQL clients). a TCP server (for client/server connections) and an PG server (for PostgreSQL clients).
...@@ -342,8 +342,8 @@ Shutting down a TCP server can be protected using the option -tcpPassword ...@@ -342,8 +342,8 @@ Shutting down a TCP server can be protected using the option -tcpPassword
(the same password must be used to start and stop the TCP server). (the same password must be used to start and stop the TCP server).
</p> </p>
<br /><a name="using_hibernate"></a> <br />
<h2>Using Hibernate</h2> <h2 id="using_hibernate">Using Hibernate</h2>
<p> <p>
This database supports Hibernate version 3.1 and newer. You can use the HSQLDB Dialect, This database supports Hibernate version 3.1 and newer. You can use the HSQLDB Dialect,
or the native H2 Dialect. Unfortunately the H2 Dialect included in Hibernate is buggy. A or the native H2 Dialect. Unfortunately the H2 Dialect included in Hibernate is buggy. A
...@@ -353,8 +353,8 @@ is also available at src/tools/org/hibernate/dialect/H2Dialect.java.txt. ...@@ -353,8 +353,8 @@ is also available at src/tools/org/hibernate/dialect/H2Dialect.java.txt.
You can rename it to H2Dialect.java and include this as a patch in your application. You can rename it to H2Dialect.java and include this as a patch in your application.
</p> </p>
<br /><a name="using_toplink"></a> <br />
<h2>Using TopLink and Glassfish</h2> <h2 id="using_toplink">Using TopLink and Glassfish</h2>
<p> <p>
To use H2 with Glassfish (or Sun AS), set the Datasource Classname to To use H2 with Glassfish (or Sun AS), set the Datasource Classname to
<code>org.h2.jdbcx.JdbcDataSource</code>. You can set this in the GUI <code>org.h2.jdbcx.JdbcDataSource</code>. You can set this in the GUI
...@@ -380,8 +380,8 @@ To enable it, change the following setting in persistence.xml: ...@@ -380,8 +380,8 @@ To enable it, change the following setting in persistence.xml:
In old versions of Glassfish, the property name is <code>toplink.platform.class.name</code>. In old versions of Glassfish, the property name is <code>toplink.platform.class.name</code>.
</p> </p>
<br /><a name="web_applications"></a> <br />
<h2>Using Databases in Web Applications</h2> <h2 id="web_applications">Using Databases in Web Applications</h2>
<p> <p>
There are multiple ways to access a database from within web There are multiple ways to access a database from within web
applications. Here are some examples if you use Tomcat or JBoss. applications. Here are some examples if you use Tomcat or JBoss.
...@@ -487,8 +487,8 @@ To create a web application with just the H2 Console, run the following command: ...@@ -487,8 +487,8 @@ To create a web application with just the H2 Console, run the following command:
build warConsole build warConsole
</pre> </pre>
<br /><a name="csv"></a> <br />
<h2>CSV (Comma Separated Values) Support</h2> <h2 id="csv">CSV (Comma Separated Values) Support</h2>
<p> <p>
The CSV file support can be used inside the database using the functions CSVREAD and CSVWRITE, The CSV file support can be used inside the database using the functions CSVREAD and CSVWRITE,
or it can be used outside the database as a standalone tool. or it can be used outside the database as a standalone tool.
...@@ -560,8 +560,8 @@ public class TestCsv { ...@@ -560,8 +560,8 @@ public class TestCsv {
} }
</pre> </pre>
<br /><a name="upgrade_backup_restore"></a> <br />
<h2>Upgrade, Backup, and Restore</h2> <h2 id="upgrade_backup_restore">Upgrade, Backup, and Restore</h2>
<h3>Database Upgrade</h3> <h3>Database Upgrade</h3>
<p> <p>
...@@ -625,8 +625,8 @@ if the file systems support creating snapshots. The problem is that it can't ...@@ -625,8 +625,8 @@ if the file systems support creating snapshots. The problem is that it can't
be guaranteed that the data is copied in the right order. be guaranteed that the data is copied in the right order.
</p> </p>
<br /><a name="command_line_tools"></a> <br />
<h2>Command Line Tools</h2> <h2 id="command_line_tools">Command Line Tools</h2>
<p> <p>
This database comes with a number of command line tools. To get more information about a tool, This database comes with a number of command line tools. To get more information about a tool,
start it with the parameter '-?', for example: start it with the parameter '-?', for example:
...@@ -655,8 +655,8 @@ The tools can also be called from an application by calling the main or another ...@@ -655,8 +655,8 @@ The tools can also be called from an application by calling the main or another
For details, see the Javadoc documentation. For details, see the Javadoc documentation.
</p> </p>
<br /><a name="open_office"></a> <br />
<h2>Using OpenOffice Base</h2> <h2 id="open_office">Using OpenOffice Base</h2>
<p> <p>
OpenOffice.org Base supports database access over the JDBC API. To connect to a H2 database OpenOffice.org Base supports database access over the JDBC API. To connect to a H2 database
using OpenOffice Base, you first need to add the JDBC driver to OpenOffice. using OpenOffice Base, you first need to add the JDBC driver to OpenOffice.
...@@ -703,8 +703,8 @@ This can be done by create it using the NetBeans OpenOffice plugin. ...@@ -703,8 +703,8 @@ This can be done by create it using the NetBeans OpenOffice plugin.
See also <a href="http://wiki.services.openoffice.org/wiki/Extensions_development_java">Extensions Development</a>. See also <a href="http://wiki.services.openoffice.org/wiki/Extensions_development_java">Extensions Development</a>.
</p> </p>
<br /><a name="web_start"></a> <br />
<h2>Java Web Start / JNLP</h2> <h2 id="web_start">Java Web Start / JNLP</h2>
<p> <p>
When using Java Web Start / JNLP (Java Network Launch Protocol), permissions tags must be set in the .jnlp file, When using Java Web Start / JNLP (Java Network Launch Protocol), permissions tags must be set in the .jnlp file,
and the application .jar file must be signed. Otherwise, when trying to write to the file system, the following and the application .jar file must be signed. Otherwise, when trying to write to the file system, the following
...@@ -717,8 +717,8 @@ Example permission tags: ...@@ -717,8 +717,8 @@ Example permission tags:
&lt;/security> &lt;/security>
</pre> </pre>
<br /><a name="connection_pool"></a> <br />
<h2>Using a Connection Pool</h2> <h2 id="connection_pool">Using a Connection Pool</h2>
<p> <p>
For H2, opening a connection is fast if the database is already open. For H2, opening a connection is fast if the database is already open.
Still, using a connection pool improves performance if you open and close connections a lot. Still, using a connection pool improves performance if you open and close connections a lot.
...@@ -746,8 +746,8 @@ public class Test { ...@@ -746,8 +746,8 @@ public class Test {
} }
</pre> </pre>
<br /><a name="fulltext"></a> <br />
<h2>Fulltext Search</h2> <h2 id="fulltext">Fulltext Search</h2>
<p> <p>
H2 includes two fulltext search implementations. One is using Apache Lucene, H2 includes two fulltext search implementations. One is using Apache Lucene,
and the other (the native implementation) stores the index data in special and the other (the native implementation) stores the index data in special
...@@ -791,7 +791,7 @@ The result contains the columns SCHEMA (the schema name), ...@@ -791,7 +791,7 @@ The result contains the columns SCHEMA (the schema name),
TABLE (the table name), COLUMNS (an array of column names), and KEYS TABLE (the table name), COLUMNS (an array of column names), and KEYS
(an array of objects). To join a table, use a join as in: (an array of objects). To join a table, use a join as in:
<code>SELECT T.* FROM FT_SEARCH_DATA('Hello', 0, 0) FT, TEST T <code>SELECT T.* FROM FT_SEARCH_DATA('Hello', 0, 0) FT, TEST T
WHERE FT.TABLE='TEST' AND T.ID= FT.KEYS[0];</code> WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];</code>
</p> </p>
<p> <p>
You can also call the index from within a Java application: You can also call the index from within a Java application:
...@@ -841,7 +841,7 @@ The result contains the columns SCHEMA (the schema name), ...@@ -841,7 +841,7 @@ The result contains the columns SCHEMA (the schema name),
TABLE (the table name), COLUMNS (an array of column names), and KEYS TABLE (the table name), COLUMNS (an array of column names), and KEYS
(an array of objects). To join a table, use a join as in: (an array of objects). To join a table, use a join as in:
<code>SELECT T.* FROM FTL_SEARCH_DATA('Hello', 0, 0) FT, TEST T <code>SELECT T.* FROM FTL_SEARCH_DATA('Hello', 0, 0) FT, TEST T
WHERE FT.TABLE='TEST' AND T.ID= FT.KEYS[0];</code> WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];</code>
</p> </p>
<p> <p>
You can also call the index from within a Java application: You can also call the index from within a Java application:
...@@ -851,8 +851,8 @@ org.h2.fulltext.FullTextLucene.search(conn, text, limit, offset); ...@@ -851,8 +851,8 @@ org.h2.fulltext.FullTextLucene.search(conn, text, limit, offset);
org.h2.fulltext.FullTextLucene.searchData(conn, text, limit, offset); org.h2.fulltext.FullTextLucene.searchData(conn, text, limit, offset);
</pre> </pre>
<br /><a name="user_defined_variables"></a> <br />
<h2>User-Defined Variables</h2> <h2 id="user_defined_variables">User-Defined Variables</h2>
<p> <p>
This database supports user-defined variables. Variables start with @ and can be used wherever This database supports user-defined variables. Variables start with @ and can be used wherever
expressions or parameters are allowed. Variables are not persisted and session scoped, that means only visible expressions or parameters are allowed. Variables are not persisted and session scoped, that means only visible
...@@ -874,8 +874,8 @@ of the value assigned to it, that means it is not necessary (or possible) to dec ...@@ -874,8 +874,8 @@ of the value assigned to it, that means it is not necessary (or possible) to dec
There are no restrictions on the assigned values; large objects (LOBs) are supported as well. There are no restrictions on the assigned values; large objects (LOBs) are supported as well.
</p> </p>
<br /><a name="date_time"></a> <br />
<h2>Date and Time</h2> <h2 id="date_time">Date and Time</h2>
<p> <p>
Date, time and timestamp values support ISO 8601 formatting, including time zone: Date, time and timestamp values support ISO 8601 formatting, including time zone:
</p> </p>
...@@ -891,13 +891,13 @@ you need to create a SQL script file using the SCRIPT command or Script tool, an ...@@ -891,13 +891,13 @@ you need to create a SQL script file using the SCRIPT command or Script tool, an
the database using the RUNSCRIPT command or the RunScript tool in the new time zone. the database using the RUNSCRIPT command or the RunScript tool in the new time zone.
</p> </p>
<br /><a name="spring"></a> <br />
<h2>Using Spring</h2> <h2 id="spring">Using Spring</h2>
<p> <p>
Use the following configuration to start and stop the H2 TCP server using the Spring Framework: Use the following configuration to start and stop the H2 TCP server using the Spring Framework:
</p> </p>
<pre> <pre>
&lt;bean id="org.h2.tools.Server" &lt;bean id = "org.h2.tools.Server"
class="org.h2.tools.Server" class="org.h2.tools.Server"
factory-method="createTcpServer" factory-method="createTcpServer"
init-method="start" init-method="start"
......
...@@ -15,18 +15,18 @@ function off(id) { ...@@ -15,18 +15,18 @@ function off(id) {
function allDetails() { function allDetails() {
for (i = 0;; i++) { for (i = 0;; i++) {
x = document.getElementById('m' + i); x = document.getElementById('_' + i);
if (x == null) { if (x == null) {
break; break;
} }
switchTag('m' + i, 'titleOff', 'detailOn'); switchTag(i, 'titleOff', 'detailOn');
} }
return false; return false;
} }
function switchTag(id, title, detail) { function switchTag(id, title, detail) {
document.getElementById('t' + id).className = title; document.getElementById('__' + id).className = title;
document.getElementById(id).className = detail; document.getElementById('_' + id).className = detail;
return false; return false;
} }
...@@ -38,7 +38,7 @@ function openLink() { ...@@ -38,7 +38,7 @@ function openLink() {
} }
var ref = page.substr(pos); var ref = page.substr(pos);
link = decodeURIComponent(ref); link = decodeURIComponent(ref);
el = document.getElementsByName(link)[0].parentNode.parentNode; el = document.getElementById(link).parentNode.parentNode;
on(el.id); on(el.id);
window.scrollTo(0, el.offsetTop); window.scrollTo(0, el.offsetTop);
return true; return true;
......
...@@ -851,7 +851,7 @@ To disable anonymous SSL, set the system property <code>h2.enableAnonymousSSL</c ...@@ -851,7 +851,7 @@ To disable anonymous SSL, set the system property <code>h2.enableAnonymousSSL</c
Universally Unique Identifiers (UUID) Universally Unique Identifiers (UUID)
@advanced_1284_p @advanced_1284_p
This database supports the UUIDs. Also supported is a function to create new UUIDs using a cryptographically strong pseudo random number generator. With random UUIDs, the chance of two having the same value can be calculated using the probability theory. See also 'Birthday Paradox'. Standardized randomly generated UUIDs have 122 random bits. 4 bits are used for the version (Randomly generated UUID), and 2 bits for the variant (Leach-Salz). This database supports generating such UUIDs using the built-in function RANDOM_UUID(). Here is a small program to estimate the probability of having two identical UUIDs after generating a number of values: This database supports UUIDs. Also supported is a function to create new UUIDs using a cryptographically strong pseudo random number generator. With random UUIDs, the chance of two having the same value can be calculated using the probability theory. See also 'Birthday Paradox'. Standardized randomly generated UUIDs have 122 random bits. 4 bits are used for the version (Randomly generated UUID), and 2 bits for the variant (Leach-Salz). This database supports generating such UUIDs using the built-in function RANDOM_UUID(). Here is a small program to estimate the probability of having two identical UUIDs after generating a number of values:
@advanced_1285_p @advanced_1285_p
Some values are: Some values are:
...@@ -9031,13 +9031,19 @@ Fast alter table add column. ...@@ -9031,13 +9031,19 @@ Fast alter table add column.
@roadmap_1421_li @roadmap_1421_li
Improve concurrency for in-memory database operations. Improve concurrency for in-memory database operations.
@roadmap_1422_h2 @roadmap_1422_li
Not Planned Issue 122: Support for connection aliases for remote tcp connections.
@roadmap_1423_li @roadmap_1423_li
Fast scrambling (strong encryption doesn't help if the password is included in the application).
@roadmap_1424_h2
Not Planned
@roadmap_1425_li
HSQLDB (did) support this: select id i from test where i&lt;0 (other databases don't). Supporting it may break compatibility. HSQLDB (did) support this: select id i from test where i&lt;0 (other databases don't). Supporting it may break compatibility.
@roadmap_1424_li @roadmap_1426_li
String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively. String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
@sourceError_1000_h1 @sourceError_1000_h1
...@@ -9050,7 +9056,7 @@ Home ...@@ -9050,7 +9056,7 @@ Home
Input Input
@sourceError_1003_h2 @sourceError_1003_h2
&nbsp; <a href="javascript:select('details')" id="detailsTab">Details</a> &nbsp; <a href="javascript:select('source')" id="sourceTab">Source Code</a> &nbsp; <a href="javascript:select('details')" id = "detailsTab">Details</a> &nbsp; <a href="javascript:select('source')" id = "sourceTab">Source Code</a>
@sourceError_1004_p @sourceError_1004_p
Fill in the error message and stack trace and click on 'Details' or 'Source Code': Fill in the error message and stack trace and click on 'Details' or 'Source Code':
...@@ -9683,7 +9689,7 @@ This will produce a result set that contains the query needed to retrieve the da ...@@ -9683,7 +9689,7 @@ This will produce a result set that contains the query needed to retrieve the da
QUERY: "PUBLIC"."TEST" WHERE "ID"=1 QUERY: "PUBLIC"."TEST" WHERE "ID"=1
@tutorial_1201_p @tutorial_1201_p
To get the raw data, use <code>FT_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in: <code>SELECT T.* FROM FT_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID= FT.KEYS[0];</code> To get the raw data, use <code>FT_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in: <code>SELECT T.* FROM FT_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];</code>
@tutorial_1202_p @tutorial_1202_p
You can also call the index from within a Java application: You can also call the index from within a Java application:
...@@ -9707,7 +9713,7 @@ This will produce a result set that contains the query needed to retrieve the da ...@@ -9707,7 +9713,7 @@ This will produce a result set that contains the query needed to retrieve the da
QUERY: "PUBLIC"."TEST" WHERE "ID"=1 QUERY: "PUBLIC"."TEST" WHERE "ID"=1
@tutorial_1209_p @tutorial_1209_p
To get the raw data, use <code>FTL_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in: <code>SELECT T.* FROM FTL_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID= FT.KEYS[0];</code> To get the raw data, use <code>FTL_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in: <code>SELECT T.* FROM FTL_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];</code>
@tutorial_1210_p @tutorial_1210_p
You can also call the index from within a Java application: You can also call the index from within a Java application:
......
...@@ -851,7 +851,7 @@ SSL/TLS 接続 ...@@ -851,7 +851,7 @@ SSL/TLS 接続
汎用一意識別子 (UUID) 汎用一意識別子 (UUID)
@advanced_1284_p @advanced_1284_p
このデータベースはUUIDをサポートしています。 また、暗号化強力疑似乱数ジェネレーターを使用して新しいUUIDを作成する関数をサポートしています。 同じ値をもつ二つの無作為なUUIDが存在する可能性は、確率論を使用して計算されることができます。 "Birthday Paradox" もご覧下さい。標準化された無作為に生成されたUUIDは、122の無作為なビットを保持しています。 4ビットはバージョン(無作為に生成されたUUID) に、2ビットはバリアント (Leach-Salz) に使用されます。 このデータベースは組み込み関数 RANDOM_UUID() を使用してこのようなUUIDを生成することをサポートしています。 ここに、値の数字が生成された後、二つの 同一のUUIDが生じる可能性を見積もる小さなプログラムがあります: #This database supports UUIDs. Also supported is a function to create new UUIDs using a cryptographically strong pseudo random number generator. With random UUIDs, the chance of two having the same value can be calculated using the probability theory. See also 'Birthday Paradox'. Standardized randomly generated UUIDs have 122 random bits. 4 bits are used for the version (Randomly generated UUID), and 2 bits for the variant (Leach-Salz). This database supports generating such UUIDs using the built-in function RANDOM_UUID(). Here is a small program to estimate the probability of having two identical UUIDs after generating a number of values:
@advanced_1285_p @advanced_1285_p
いくつかの値は: いくつかの値は:
...@@ -9031,13 +9031,19 @@ SQLコマンドがコマンドエリアに表示されます。 ...@@ -9031,13 +9031,19 @@ SQLコマンドがコマンドエリアに表示されます。
@roadmap_1421_li @roadmap_1421_li
#Improve concurrency for in-memory database operations. #Improve concurrency for in-memory database operations.
@roadmap_1422_h2 @roadmap_1422_li
#Not Planned #Issue 122: Support for connection aliases for remote tcp connections.
@roadmap_1423_li @roadmap_1423_li
#Fast scrambling (strong encryption doesn't help if the password is included in the application).
@roadmap_1424_h2
#Not Planned
@roadmap_1425_li
#HSQLDB (did) support this: select id i from test where i&lt;0 (other databases don't). Supporting it may break compatibility. #HSQLDB (did) support this: select id i from test where i&lt;0 (other databases don't). Supporting it may break compatibility.
@roadmap_1424_li @roadmap_1426_li
#String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively. #String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
@sourceError_1000_h1 @sourceError_1000_h1
...@@ -9050,7 +9056,7 @@ SQLコマンドがコマンドエリアに表示されます。 ...@@ -9050,7 +9056,7 @@ SQLコマンドがコマンドエリアに表示されます。
#Input #Input
@sourceError_1003_h2 @sourceError_1003_h2
#&nbsp; <a href="javascript:select('details')" id="detailsTab">Details</a> &nbsp; <a href="javascript:select('source')" id="sourceTab">Source Code</a> #&nbsp; <a href="javascript:select('details')" id = "detailsTab">Details</a> &nbsp; <a href="javascript:select('source')" id = "sourceTab">Source Code</a>
@sourceError_1004_p @sourceError_1004_p
#Fill in the error message and stack trace and click on 'Details' or 'Source Code': #Fill in the error message and stack trace and click on 'Details' or 'Source Code':
...@@ -9683,7 +9689,7 @@ Java Web Start / JNLP (Java Network Launch Protocol) を使用している時、 ...@@ -9683,7 +9689,7 @@ Java Web Start / JNLP (Java Network Launch Protocol) を使用している時、
#QUERY: "PUBLIC"."TEST" WHERE "ID"=1 #QUERY: "PUBLIC"."TEST" WHERE "ID"=1
@tutorial_1201_p @tutorial_1201_p
#To get the raw data, use <code>FT_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in: <code>SELECT T.* FROM FT_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID= FT.KEYS[0];</code> #To get the raw data, use <code>FT_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in: <code>SELECT T.* FROM FT_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];</code>
@tutorial_1202_p @tutorial_1202_p
Javaアプリケーション内からインデックスを呼び出すことも可能です: Javaアプリケーション内からインデックスを呼び出すことも可能です:
...@@ -9707,7 +9713,7 @@ Luceneフルテキストサーチを使用する ...@@ -9707,7 +9713,7 @@ Luceneフルテキストサーチを使用する
#QUERY: "PUBLIC"."TEST" WHERE "ID"=1 #QUERY: "PUBLIC"."TEST" WHERE "ID"=1
@tutorial_1209_p @tutorial_1209_p
#To get the raw data, use <code>FTL_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in: <code>SELECT T.* FROM FTL_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID= FT.KEYS[0];</code> #To get the raw data, use <code>FTL_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in: <code>SELECT T.* FROM FTL_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE='TEST' AND T.ID=FT.KEYS[0];</code>
@tutorial_1210_p @tutorial_1210_p
Javaアプリケーション内からインデックスを呼び出すことも可能です: Javaアプリケーション内からインデックスを呼び出すことも可能です:
......
...@@ -282,7 +282,7 @@ advanced_1280_p=Remote SSL/TLS connections are supported using the Java Secure S ...@@ -282,7 +282,7 @@ advanced_1280_p=Remote SSL/TLS connections are supported using the Java Secure S
advanced_1281_p=To use your own keystore, set the system properties <code>javax.net.ssl.keyStore</code> and <code>javax.net.ssl.keyStorePassword</code> before starting the H2 server and client. See also <a href\="http\://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html\#CustomizingStores">Customizing the Default Key and Trust Stores, Store Types, and Store Passwords</a> for more information. advanced_1281_p=To use your own keystore, set the system properties <code>javax.net.ssl.keyStore</code> and <code>javax.net.ssl.keyStorePassword</code> before starting the H2 server and client. See also <a href\="http\://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html\#CustomizingStores">Customizing the Default Key and Trust Stores, Store Types, and Store Passwords</a> for more information.
advanced_1282_p=To disable anonymous SSL, set the system property <code>h2.enableAnonymousSSL</code> to false. advanced_1282_p=To disable anonymous SSL, set the system property <code>h2.enableAnonymousSSL</code> to false.
advanced_1283_h2=Universally Unique Identifiers (UUID) advanced_1283_h2=Universally Unique Identifiers (UUID)
advanced_1284_p=This database supports the UUIDs. Also supported is a function to create new UUIDs using a cryptographically strong pseudo random number generator. With random UUIDs, the chance of two having the same value can be calculated using the probability theory. See also 'Birthday Paradox'. Standardized randomly generated UUIDs have 122 random bits. 4 bits are used for the version (Randomly generated UUID), and 2 bits for the variant (Leach-Salz). This database supports generating such UUIDs using the built-in function RANDOM_UUID(). Here is a small program to estimate the probability of having two identical UUIDs after generating a number of values\: advanced_1284_p=This database supports UUIDs. Also supported is a function to create new UUIDs using a cryptographically strong pseudo random number generator. With random UUIDs, the chance of two having the same value can be calculated using the probability theory. See also 'Birthday Paradox'. Standardized randomly generated UUIDs have 122 random bits. 4 bits are used for the version (Randomly generated UUID), and 2 bits for the variant (Leach-Salz). This database supports generating such UUIDs using the built-in function RANDOM_UUID(). Here is a small program to estimate the probability of having two identical UUIDs after generating a number of values\:
advanced_1285_p=Some values are\: advanced_1285_p=Some values are\:
advanced_1286_p=To help non-mathematicians understand what those numbers mean, here a comparison\: one's annual risk of being hit by a meteorite is estimated to be one chance in 17 billion, that means the probability is about 0.000'000'000'06. advanced_1286_p=To help non-mathematicians understand what those numbers mean, here a comparison\: one's annual risk of being hit by a meteorite is estimated to be one chance in 17 billion, that means the probability is about 0.000'000'000'06.
advanced_1287_h2=Settings Read from System Properties advanced_1287_h2=Settings Read from System Properties
...@@ -3007,13 +3007,15 @@ roadmap_1418_li=Add option to enable TCP_NODELAY using Socket.setTcpNoDelay(true ...@@ -3007,13 +3007,15 @@ roadmap_1418_li=Add option to enable TCP_NODELAY using Socket.setTcpNoDelay(true
roadmap_1419_li=Maybe disallow \= within database names (jdbc\:h2\:mem\:MODE\=DB2 means database name MODE\=DB2). roadmap_1419_li=Maybe disallow \= within database names (jdbc\:h2\:mem\:MODE\=DB2 means database name MODE\=DB2).
roadmap_1420_li=Fast alter table add column. roadmap_1420_li=Fast alter table add column.
roadmap_1421_li=Improve concurrency for in-memory database operations. roadmap_1421_li=Improve concurrency for in-memory database operations.
roadmap_1422_h2=Not Planned roadmap_1422_li=Issue 122\: Support for connection aliases for remote tcp connections.
roadmap_1423_li=HSQLDB (did) support this\: select id i from test where i&lt;0 (other databases don't). Supporting it may break compatibility. roadmap_1423_li=Fast scrambling (strong encryption doesn't help if the password is included in the application).
roadmap_1424_li=String.intern (so that Strings can be compared with \=\=) will not be used because some VMs have problems when used extensively. roadmap_1424_h2=Not Planned
roadmap_1425_li=HSQLDB (did) support this\: select id i from test where i&lt;0 (other databases don't). Supporting it may break compatibility.
roadmap_1426_li=String.intern (so that Strings can be compared with \=\=) will not be used because some VMs have problems when used extensively.
sourceError_1000_h1=Online Error Analyzer sourceError_1000_h1=Online Error Analyzer
sourceError_1001_a=Home sourceError_1001_a=Home
sourceError_1002_a=Input sourceError_1002_a=Input
sourceError_1003_h2=&nbsp; <a href\="javascript\:select('details')" id\="detailsTab">Details</a> &nbsp; <a href\="javascript\:select('source')" id\="sourceTab">Source Code</a> sourceError_1003_h2=&nbsp; <a href\="javascript\:select('details')" id \= "detailsTab">Details</a> &nbsp; <a href\="javascript\:select('source')" id \= "sourceTab">Source Code</a>
sourceError_1004_p=Fill in the error message and stack trace and click on 'Details' or 'Source Code'\: sourceError_1004_p=Fill in the error message and stack trace and click on 'Details' or 'Source Code'\:
sourceError_1005_b=Error Code\: sourceError_1005_b=Error Code\:
sourceError_1006_b=Product Version\: sourceError_1006_b=Product Version\:
...@@ -3224,7 +3226,7 @@ tutorial_1197_p=You need to initialize it in each database where you want to use ...@@ -3224,7 +3226,7 @@ tutorial_1197_p=You need to initialize it in each database where you want to use
tutorial_1198_p=PUBLIC is the schema, TEST is the table name. The list of column names (column separated) is optional, in this case all columns are indexed. The index is updated in realtime. To search the index, use the following query\: tutorial_1198_p=PUBLIC is the schema, TEST is the table name. The list of column names (column separated) is optional, in this case all columns are indexed. The index is updated in realtime. To search the index, use the following query\:
tutorial_1199_p=This will produce a result set that contains the query needed to retrieve the data\: tutorial_1199_p=This will produce a result set that contains the query needed to retrieve the data\:
tutorial_1200_p=QUERY\: "PUBLIC"."TEST" WHERE "ID"\=1 tutorial_1200_p=QUERY\: "PUBLIC"."TEST" WHERE "ID"\=1
tutorial_1201_p=To get the raw data, use <code>FT_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in\: <code>SELECT T.* FROM FT_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE\='TEST' AND T.ID\= FT.KEYS[0];</code> tutorial_1201_p=To get the raw data, use <code>FT_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in\: <code>SELECT T.* FROM FT_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE\='TEST' AND T.ID\=FT.KEYS[0];</code>
tutorial_1202_p=You can also call the index from within a Java application\: tutorial_1202_p=You can also call the index from within a Java application\:
tutorial_1203_h3=Using the Lucene Fulltext Search tutorial_1203_h3=Using the Lucene Fulltext Search
tutorial_1204_p=To use the Lucene full text search, you need the Lucene library in the classpath. How to do that depends on the application; if you use the H2 Console, you can add the Lucene jar file to the environment variables H2DRIVERS or CLASSPATH. To initialize the Lucene fulltext search in a database, call\: tutorial_1204_p=To use the Lucene full text search, you need the Lucene library in the classpath. How to do that depends on the application; if you use the H2 Console, you can add the Lucene jar file to the environment variables H2DRIVERS or CLASSPATH. To initialize the Lucene fulltext search in a database, call\:
...@@ -3232,7 +3234,7 @@ tutorial_1205_p=You need to initialize it in each database where you want to use ...@@ -3232,7 +3234,7 @@ tutorial_1205_p=You need to initialize it in each database where you want to use
tutorial_1206_p=PUBLIC is the schema, TEST is the table name. The list of column names (column separated) is optional, in this case all columns are indexed. The index is updated in realtime. To search the index, use the following query\: tutorial_1206_p=PUBLIC is the schema, TEST is the table name. The list of column names (column separated) is optional, in this case all columns are indexed. The index is updated in realtime. To search the index, use the following query\:
tutorial_1207_p=This will produce a result set that contains the query needed to retrieve the data\: tutorial_1207_p=This will produce a result set that contains the query needed to retrieve the data\:
tutorial_1208_p=QUERY\: "PUBLIC"."TEST" WHERE "ID"\=1 tutorial_1208_p=QUERY\: "PUBLIC"."TEST" WHERE "ID"\=1
tutorial_1209_p=To get the raw data, use <code>FTL_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in\: <code>SELECT T.* FROM FTL_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE\='TEST' AND T.ID\= FT.KEYS[0];</code> tutorial_1209_p=To get the raw data, use <code>FTL_SEARCH_DATA('Hello', 0, 0);</code> . The result contains the columns SCHEMA (the schema name), TABLE (the table name), COLUMNS (an array of column names), and KEYS (an array of objects). To join a table, use a join as in\: <code>SELECT T.* FROM FTL_SEARCH_DATA('Hello', 0, 0) FT, TEST T WHERE FT.TABLE\='TEST' AND T.ID\=FT.KEYS[0];</code>
tutorial_1210_p=You can also call the index from within a Java application\: tutorial_1210_p=You can also call the index from within a Java application\:
tutorial_1211_h2=User-Defined Variables tutorial_1211_h2=User-Defined Variables
tutorial_1212_p=This database supports user-defined variables. Variables start with @ and can be used wherever expressions or parameters are allowed. Variables are not persisted and session scoped, that means only visible from within the session in which they are defined. A value is usually assigned using the SET command\: tutorial_1212_p=This database supports user-defined variables. Variables start with @ and can be used wherever expressions or parameters are allowed. Variables are not persisted and session scoped, that means only visible from within the session in which they are defined. A value is usually assigned using the SET command\:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论