提交 7a335faf authored 作者: Thomas Mueller's avatar Thomas Mueller

Documentation.

上级 fb8a7d79
...@@ -524,29 +524,33 @@ CREATE SEQUENCE SEQ_ID ...@@ -524,29 +524,33 @@ CREATE SEQUENCE SEQ_ID
" "
"Commands (DDL)","CREATE TABLE"," "Commands (DDL)","CREATE TABLE","
CREATE [ CACHED | MEMORY | TEMP | [ GLOBAL | LOCAL ] TEMPORARY ] CREATE [ CACHED | MEMORY ] [ TEMP | [ GLOBAL | LOCAL ] TEMPORARY ]
TABLE [ IF NOT EXISTS ] TABLE [ IF NOT EXISTS ] name
name { { ( { columnDefinition | constraint } [,...] ) [ AS select ] } { { ( { columnDefinition | constraint } [,...] ) [ AS select ] }
| { AS select } } | { AS select } }
[ ENGINE tableEngineName ] [ NOT PERSISTENT ] [ ENGINE tableEngineName ] [ NOT PERSISTENT ]
"," ","
Creates a new table. Creates a new table.
Cached tables (the default) are persistent, and the number of rows is not limited by the main memory. Cached tables (the default for regular tables) are persistent,
and the number of rows is not limited by the main memory.
Memory tables are persistent, but the index data is kept in main memory, Memory tables (the default for temporary tables) are persistent,
but the index data is kept in main memory,
that means memory tables should not get too large. that means memory tables should not get too large.
Temporary tables are deleted when closing or opening a database.
Temporary tables can be global (accessible by all connections)
or local (only accessible by the current connection).
The default for temporary tables is global.
Indexes of temporary tables are kept fully in main memory,
unless the temporary table is created using CREATE CACHED ... TABLE.
The ENGINE option is only required when custom table implementations are used. The ENGINE option is only required when custom table implementations are used.
The table engine class must implement the interface org.h2.api.TableEngine. The table engine class must implement the interface org.h2.api.TableEngine.
Tables with the NOT PERSISTENT modifier are kept fully in memory, and all Tables with the NOT PERSISTENT modifier are kept fully in memory, and all
rows are lost when the database is closed. rows are lost when the database is closed.
Temporary tables are not persistent. Temporary tables can be global (accessible by all connections)
or local (only accessible by the current connection). The default is for temporary tables is global.
Indexes of temporary tables are kept fully in main memory.
This command commits an open transaction. This command commits an open transaction.
"," ","
CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255)) CREATE TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))
...@@ -1052,17 +1056,23 @@ SET DEFAULT_TABLE_TYPE MEMORY ...@@ -1052,17 +1056,23 @@ SET DEFAULT_TABLE_TYPE MEMORY
" "
"Commands (Other)","SET EXCLUSIVE"," "Commands (Other)","SET EXCLUSIVE","
SET EXCLUSIVE { TRUE | FALSE } SET EXCLUSIVE { 0 | 1 | 2 }
"," ","
Switched the database to exclusive mode and back. In exclusive mode, new Switched the database to exclusive mode (1, 2) and back to normal mode (0).
connections are rejected, and operations by other connections are paused until
the exclusive mode is disabled. Only the connection that set the exclusive mode In exclusive mode, new connections are rejected, and operations by
can disable it. When the connection is closed, it is automatically disabled. other connections are paused until the exclusive mode is disabled.
When using the value 1, existing connections stay open.
When using the value 2, all existing connections are closed
(and current transactions are rolled back) except the connection
that executes SET EXCLUSIVE.
Only the connection that set the exclusive mode can disable it.
When the connection is closed, it is automatically disabled.
Admin rights are required to execute this command. Admin rights are required to execute this command.
This command commits an open transaction. This command commits an open transaction.
"," ","
SET EXCLUSIVE TRUE SET EXCLUSIVE 1
" "
"Commands (Other)","SET IGNORECASE"," "Commands (Other)","SET IGNORECASE","
......
...@@ -273,9 +273,9 @@ From this point on, the operations will be executed only on one server until the ...@@ -273,9 +273,9 @@ From this point on, the operations will be executed only on one server until the
is back up. is back up.
</p><p> </p><p>
Clustering can only be used in the server mode (the embedded mode does not support clustering). Clustering can only be used in the server mode (the embedded mode does not support clustering).
It is possible to restore the cluster without stopping the server, however it is critical that no other The cluster can be re-created using the <code>CreateCluster</code> tool without stopping
application is changing the data in the first database while the second database is restored, so the remaining server. Applications that are still connected are automatically disconnected,
restoring the cluster is currently a manual process. however when appending <code>;AUTO_RECONNECT=TRUE</code>, they will recover from that.
</p><p> </p><p>
To initialize the cluster, use the following steps: To initialize the cluster, use the following steps:
</p> </p>
......
...@@ -18,8 +18,19 @@ Change Log ...@@ -18,8 +18,19 @@ Change Log
<h1>Change Log</h1> <h1>Change Log</h1>
<h2>Next Version (unreleased)</h2> <h2>Next Version (unreleased)</h2>
<ul><li>The CreateCluster tool now sets the source database in exclusive mode <ul><li>Cluster: after a cluster node failed, the second cluster node can now be re-created
and started without having to stop the first cluster node, and without having to stop
running applications. To do that, append ;AUTO_RECONNECT=TRUE to the database URL.
</li><li>SET EXCLUSIVE now supports 0 (disable), 1 (enable), and 2 (enable and close all other connections).
</li><li>Installing the H2 as a service should now work on Windows 7.
The batch files now explicitly set the directory using pushd "%~dp0".
</li><li>Temporary tables can now be 'cached', that means indexes of temporary tables
can be persisted. This enables very large temporary tables (both local and global).
</li><li>The CreateCluster tool now sets the source database in exclusive mode
before copying data to the new database. before copying data to the new database.
</li><li>The H2 Console now stream results one statement / result set at a time (using chunked transfer encoding).
To disable, set the system property h2.consoleStream to false.
This feature is not supported when using a servlet container.
</li><li>The H2 Console did not call the CreateCluster tool with the correctly escaped parameters. </li><li>The H2 Console did not call the CreateCluster tool with the correctly escaped parameters.
</li><li>Improved PostgreSQL compatibility for ALTER TABLE ALTER COLUMN. </li><li>Improved PostgreSQL compatibility for ALTER TABLE ALTER COLUMN.
</li><li>Commas at the end of INSERT ... VALUES (), (), are now supported. </li><li>Commas at the end of INSERT ... VALUES (), (), are now supported.
......
...@@ -1106,6 +1106,7 @@ or the SQL statement <code>SET MODE PostgreSQL</code>. ...@@ -1106,6 +1106,7 @@ or the SQL statement <code>SET MODE PostgreSQL</code>.
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
occurs when auto-commit is enabled; if auto-commit is disabled, an exception is thrown. occurs when auto-commit is enabled; if auto-commit is disabled, an exception is thrown.
To enable this mode, append <code>;AUTO_RECONNECT=TRUE</code> to the database URL.
</p> </p>
<p> <p>
Re-connecting will open a new session. After an automatic re-connect, Re-connecting will open a new session. After an automatic re-connect,
...@@ -1118,7 +1119,7 @@ contains all client side state that is re-created. ...@@ -1118,7 +1119,7 @@ contains all client side state that is re-created.
<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.
You can use the same database URL no matter if the database is already open or not. You can use the same database URL independent of whether the database is already open or not.
</p> </p>
<p> <p>
When using this mode, the first connection to the database is made in embedded mode, When using this mode, the first connection to the database is made in embedded mode,
...@@ -1371,7 +1372,7 @@ in <code>TestMultiDimension.java</code>. ...@@ -1371,7 +1372,7 @@ in <code>TestMultiDimension.java</code>.
<h3>Using Secure Passwords</h3> <h3>Using Secure Passwords</h3>
<p> <p>
Remember that weak passwords can be broken no matter of the encryption and security protocol. Remember that weak passwords can be broken regardless of the encryption and security protocols.
Don't use passwords that can be found in a dictionary. Also appending numbers does not make them Don't use passwords that can be found in a dictionary. Also appending numbers does not make them
secure. A way to create good passwords that can be remembered is, take the first secure. A way to create good passwords that can be remembered is, take the first
letters of a sentence, use upper and lower case characters, and creatively include special characters. letters of a sentence, use upper and lower case characters, and creatively include special characters.
...@@ -1685,6 +1686,7 @@ The amount of memory used for caching can be changed using the setting ...@@ -1685,6 +1686,7 @@ The amount of memory used for caching can be changed using the setting
<code>CACHE_SIZE</code>. This setting can be set in the database connection URL <code>CACHE_SIZE</code>. This setting can be set in the database connection URL
(<code>jdbc:h2:~/test;CACHE_SIZE=131072</code>), or it can be changed at runtime using (<code>jdbc:h2:~/test;CACHE_SIZE=131072</code>), or it can be changed at runtime using
<code>SET CACHE_SIZE size</code>. <code>SET CACHE_SIZE size</code>.
The size of the cache, as represented by <code>CACHE_SIZE</code> is measured in KB, with each KB being 1024 bytes.
This setting has no effect for in-memory databases. This setting has no effect for in-memory databases.
</p><p> </p><p>
Also included is an experimental second level soft reference cache. Rows in this cache are only garbage collected Also included is an experimental second level soft reference cache. Rows in this cache are only garbage collected
......
...@@ -120,6 +120,9 @@ via PayPal: ...@@ -120,6 +120,9 @@ via PayPal:
</li><li>Glenn Kidd, USA </li><li>Glenn Kidd, USA
</li><li>Gustav Trede, Sweden </li><li>Gustav Trede, Sweden
</li><li>Joonas Pulakka, Finland </li><li>Joonas Pulakka, Finland
</li><li>Bjorn Darri Sigurdsson, Iceland
</li><li>Iyama Jun, Japan
</li><li>Gray Watson, USA
</li></ul> </li></ul>
<!-- [close] { --></div></td></tr></table><!-- } --><!-- analytics --></body></html> <!-- [close] { --></div></td></tr></table><!-- } --><!-- analytics --></body></html>
......
...@@ -214,7 +214,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>. ...@@ -214,7 +214,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Run benchmarks with JDK 1.5, JDK 1.6, java -server </li><li>Run benchmarks with JDK 1.5, JDK 1.6, java -server
</li><li>Optimizations: faster hash function for strings, byte arrays </li><li>Optimizations: faster hash function for strings, byte arrays
</li><li>DatabaseEventListener: callback for all operations (including expected time, RUNSCRIPT) and cancel functionality </li><li>DatabaseEventListener: callback for all operations (including expected time, RUNSCRIPT) and cancel functionality
</li><li>H2 Console / large result sets: use 'streaming' instead of building the page in-memory
</li><li>Benchmark: add a graph to show how databases scale (performance/database size) </li><li>Benchmark: add a graph to show how databases scale (performance/database size)
</li><li>Implement a SQLData interface to map your data over to a custom object </li><li>Implement a SQLData interface to map your data over to a custom object
</li><li>In the MySQL and PostgreSQL mode, use lower case identifiers by default (DatabaseMetaData.storesLowerCaseIdentifiers = true) </li><li>In the MySQL and PostgreSQL mode, use lower case identifiers by default (DatabaseMetaData.storesLowerCaseIdentifiers = true)
...@@ -460,6 +459,7 @@ See also <a href="build.html#providing_patches">Providing Patches</a>. ...@@ -460,6 +459,7 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Issue 156: Support SELECT ? UNION SELECT ?. </li><li>Issue 156: Support SELECT ? UNION SELECT ?.
</li><li>Automatic mixed mode: support a port range list (to avoid firewall problems). </li><li>Automatic mixed mode: support a port range list (to avoid firewall problems).
</li><li>Support the pseudo column rowid, oid, _rowid_. </li><li>Support the pseudo column rowid, oid, _rowid_.
</li><li>H2 Console / large result sets: stream early instead of keeping a whole result in-memory
</li><li>Support TRUNCATE for linked tables. </li><li>Support TRUNCATE for linked tables.
</li><li>UNION: evaluate INTERSECT before UNION (like most other database except Oracle). </li><li>UNION: evaluate INTERSECT before UNION (like most other database except Oracle).
</li><li>Delay creating the information schema, and share metadata columns. </li><li>Delay creating the information schema, and share metadata columns.
...@@ -483,6 +483,7 @@ See also <a href="build.html#providing_patches">Providing Patches</a>. ...@@ -483,6 +483,7 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Maybe use a different page layout: keep the data at the head of the page, and ignore the tail </li><li>Maybe use a different page layout: keep the data at the head of the page, and ignore the tail
(don't store / read it). This may increase write / read performance depending on the file system. (don't store / read it). This may increase write / read performance depending on the file system.
</li><li>Indexes of temporary tables are currently kept in-memory. Is this how it should be? </li><li>Indexes of temporary tables are currently kept in-memory. Is this how it should be?
</li><li>The Shell tool should support the same built-in commands as the H2 Console.
</li></ul> </li></ul>
<h2>Not Planned</h2> <h2>Not Planned</h2>
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -180,9 +180,9 @@ CREATE SEQUENCE [ IF NOT EXISTS ] newSequenceName [ START WITH long ] ...@@ -180,9 +180,9 @@ CREATE SEQUENCE [ IF NOT EXISTS ] newSequenceName [ START WITH long ]
"," ","
Creates a new sequence." Creates a new sequence."
"Commands (DDL)","CREATE TABLE"," "Commands (DDL)","CREATE TABLE","
CREATE [ CACHED | MEMORY | TEMP | [ GLOBAL | LOCAL ] TEMPORARY ] CREATE [ CACHED | MEMORY ] [ TEMP | [ GLOBAL | LOCAL ] TEMPORARY ]
TABLE [ IF NOT EXISTS ] TABLE [ IF NOT EXISTS ] name
name { { ( { columnDefinition | constraint } [,...] ) [ AS select ] } { { ( { columnDefinition | constraint } [,...] ) [ AS select ] }
| { AS select } } | { AS select } }
[ ENGINE tableEngineName ] [ NOT PERSISTENT ] [ ENGINE tableEngineName ] [ NOT PERSISTENT ]
"," ","
...@@ -363,9 +363,9 @@ SET DEFAULT_TABLE_TYPE { MEMORY | CACHED } ...@@ -363,9 +363,9 @@ SET DEFAULT_TABLE_TYPE { MEMORY | CACHED }
"," ","
Sets the default table storage type that is used when creating new tables." Sets the default table storage type that is used when creating new tables."
"Commands (Other)","SET EXCLUSIVE"," "Commands (Other)","SET EXCLUSIVE","
SET EXCLUSIVE { TRUE | FALSE } SET EXCLUSIVE { 0 | 1 | 2 }
"," ","
Switched the database to exclusive mode and back." Switched the database to exclusive mode (1, 2) and back to normal mode (0)."
"Commands (Other)","SET IGNORECASE"," "Commands (Other)","SET IGNORECASE","
SET IGNORECASE { TRUE | FALSE } SET IGNORECASE { TRUE | FALSE }
"," ","
......
...@@ -292,11 +292,15 @@ java org.h2.test.TestAll timer ...@@ -292,11 +292,15 @@ java org.h2.test.TestAll timer
int testing; int testing;
// System.setProperty("h2.lobInDatabase", "true"); System.setProperty("h2.lobInDatabase", "true");
// System.setProperty("h2.analyzeAuto", "100"); System.setProperty("h2.analyzeAuto", "100");
/* /*
test services on Windows
h2-schema function
power failure test power failure test
power failure test: MULTI_THREADED=TRUE power failure test: MULTI_THREADED=TRUE
power failure test: larger binaries and additional index. power failure test: larger binaries and additional index.
...@@ -462,146 +466,146 @@ kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1` ...@@ -462,146 +466,146 @@ kill -9 `jps -l | grep "org.h2.test." | cut -d " " -f 1`
beforeTest(); beforeTest();
// db // db
new TestScriptSimple().runTest(this); // new TestScriptSimple().runTest(this);
new TestScript().runTest(this); // new TestScript().runTest(this);
new TestAlter().runTest(this); // new TestAlter().runTest(this);
new TestAutoRecompile().runTest(this); // new TestAutoRecompile().runTest(this);
new TestBackup().runTest(this); // new TestBackup().runTest(this);
new TestBigDb().runTest(this); // new TestBigDb().runTest(this);
new TestBigResult().runTest(this); // new TestBigResult().runTest(this);
new TestCases().runTest(this); // new TestCases().runTest(this);
new TestCheckpoint().runTest(this); // new TestCheckpoint().runTest(this);
new TestCluster().runTest(this); new TestCluster().runTest(this);
new TestConnectionInfo().runTest(this); // new TestConnectionInfo().runTest(this);
new TestCompatibility().runTest(this); // new TestCompatibility().runTest(this);
new TestCsv().runTest(this); // new TestCsv().runTest(this);
new TestDeadlock().runTest(this); // new TestDeadlock().runTest(this);
new TestEncryptedDb().runTest(this); // new TestEncryptedDb().runTest(this);
new TestExclusive().runTest(this); // new TestExclusive().runTest(this);
new TestFullText().runTest(this); // new TestFullText().runTest(this);
new TestFunctionOverload().runTest(this); // new TestFunctionOverload().runTest(this);
new TestFunctions().runTest(this); // new TestFunctions().runTest(this);
new TestInit().runTest(this); // new TestInit().runTest(this);
new TestIndex().runTest(this); // new TestIndex().runTest(this);
new TestLargeBlob().runTest(this); // new TestLargeBlob().runTest(this);
new TestLinkedTable().runTest(this); // new TestLinkedTable().runTest(this);
new TestListener().runTest(this); // new TestListener().runTest(this);
new TestLob().runTest(this); // new TestLob().runTest(this);
new TestMemoryUsage().runTest(this); // new TestMemoryUsage().runTest(this);
new TestMultiConn().runTest(this); // new TestMultiConn().runTest(this);
new TestMultiDimension().runTest(this); // new TestMultiDimension().runTest(this);
new TestMultiThread().runTest(this); // new TestMultiThread().runTest(this);
new TestMultiThreadedKernel().runTest(this); // new TestMultiThreadedKernel().runTest(this);
new TestOpenClose().runTest(this); // new TestOpenClose().runTest(this);
new TestOptimizations().runTest(this); // new TestOptimizations().runTest(this);
new TestOutOfMemory().runTest(this); // new TestOutOfMemory().runTest(this);
new TestPowerOff().runTest(this); // new TestPowerOff().runTest(this);
new TestReadOnly().runTest(this); // new TestReadOnly().runTest(this);
new TestRights().runTest(this); // new TestRights().runTest(this);
new TestRunscript().runTest(this); // new TestRunscript().runTest(this);
new TestSQLInjection().runTest(this); // new TestSQLInjection().runTest(this);
new TestSessionsLocks().runTest(this); // new TestSessionsLocks().runTest(this);
new TestSequence().runTest(this); // new TestSequence().runTest(this);
new TestSpaceReuse().runTest(this); // new TestSpaceReuse().runTest(this);
new TestSpeed().runTest(this); // new TestSpeed().runTest(this);
new TestTableEngines().runTest(this); // new TestTableEngines().runTest(this);
new TestTempTables().runTest(this); // new TestTempTables().runTest(this);
new TestTransaction().runTest(this); // new TestTransaction().runTest(this);
new TestTriggersConstraints().runTest(this); // new TestTriggersConstraints().runTest(this);
new TestTwoPhaseCommit().runTest(this); // new TestTwoPhaseCommit().runTest(this);
new TestView().runTest(this); // new TestView().runTest(this);
new TestViewAlterTable().runTest(this); // new TestViewAlterTable().runTest(this);
//
// jaqu // // jaqu
new AliasMapTest().runTest(this); // new AliasMapTest().runTest(this);
new SamplesTest().runTest(this); // new SamplesTest().runTest(this);
new UpdateTest().runTest(this); // new UpdateTest().runTest(this);
//
// jdbc // // jdbc
new TestBatchUpdates().runTest(this); // new TestBatchUpdates().runTest(this);
new TestCallableStatement().runTest(this); // new TestCallableStatement().runTest(this);
new TestCancel().runTest(this); // new TestCancel().runTest(this);
new TestDatabaseEventListener().runTest(this); // new TestDatabaseEventListener().runTest(this);
new TestDriver().runTest(this); // new TestDriver().runTest(this);
new TestManyJdbcObjects().runTest(this); // new TestManyJdbcObjects().runTest(this);
new TestMetaData().runTest(this); // new TestMetaData().runTest(this);
new TestNativeSQL().runTest(this); // new TestNativeSQL().runTest(this);
new TestPreparedStatement().runTest(this); // new TestPreparedStatement().runTest(this);
new TestResultSet().runTest(this); // new TestResultSet().runTest(this);
new TestStatement().runTest(this); // new TestStatement().runTest(this);
new TestTransactionIsolation().runTest(this); // new TestTransactionIsolation().runTest(this);
new TestUpdatableResultSet().runTest(this); // new TestUpdatableResultSet().runTest(this);
new TestZloty().runTest(this); // new TestZloty().runTest(this);
//
// jdbcx // // jdbcx
new TestConnectionPool().runTest(this); // new TestConnectionPool().runTest(this);
new TestDataSource().runTest(this); // new TestDataSource().runTest(this);
new TestXA().runTest(this); // new TestXA().runTest(this);
new TestXASimple().runTest(this); // new TestXASimple().runTest(this);
//
// server // // server
new TestAutoServer().runTest(this); // new TestAutoServer().runTest(this);
new TestNestedLoop().runTest(this); // new TestNestedLoop().runTest(this);
new TestWeb().runTest(this); // new TestWeb().runTest(this);
//
// mvcc & row level locking // // mvcc & row level locking
new TestMvcc1().runTest(this); // new TestMvcc1().runTest(this);
new TestMvcc2().runTest(this); // new TestMvcc2().runTest(this);
new TestMvcc3().runTest(this); // new TestMvcc3().runTest(this);
new TestMvccMultiThreaded().runTest(this); // new TestMvccMultiThreaded().runTest(this);
new TestRowLocks().runTest(this); // new TestRowLocks().runTest(this);
//
// synth // // synth
new TestBtreeIndex().runTest(this); // new TestBtreeIndex().runTest(this);
new TestCrashAPI().runTest(this); // new TestCrashAPI().runTest(this);
new TestFuzzOptimizations().runTest(this); // new TestFuzzOptimizations().runTest(this);
new TestRandomSQL().runTest(this); // new TestRandomSQL().runTest(this);
//
new TestKillRestart().runTest(this); // new TestKillRestart().runTest(this);
new TestKillRestartMulti().runTest(this); // new TestKillRestartMulti().runTest(this);
new TestMultiThreaded().runTest(this); // new TestMultiThreaded().runTest(this);
afterTest(); afterTest();
} }
private void testUnit() { private void testUnit() {
new TestAutoReconnect().runTest(this); // new TestAutoReconnect().runTest(this);
new TestCache().runTest(this); // new TestCache().runTest(this);
new TestClearReferences().runTest(this); // new TestClearReferences().runTest(this);
new TestCompress().runTest(this); // new TestCompress().runTest(this);
new TestDataPage().runTest(this); // new TestDataPage().runTest(this);
new TestDate().runTest(this); // new TestDate().runTest(this);
new TestDateIso8601().runTest(this); // new TestDateIso8601().runTest(this);
new TestExit().runTest(this); // new TestExit().runTest(this);
new TestFile().runTest(this); // new TestFile().runTest(this);
new TestFileLock().runTest(this); // new TestFileLock().runTest(this);
new TestFileLockSerialized().runTest(this); // new TestFileLockSerialized().runTest(this);
new TestFtp().runTest(this); // new TestFtp().runTest(this);
new TestFileSystem().runTest(this); // new TestFileSystem().runTest(this);
new TestIntArray().runTest(this); // new TestIntArray().runTest(this);
new TestIntIntHashMap().runTest(this); // new TestIntIntHashMap().runTest(this);
new TestMathUtils().runTest(this); // new TestMathUtils().runTest(this);
new TestOldVersion().runTest(this); // new TestOldVersion().runTest(this);
new TestNetUtils().runTest(this); // new TestNetUtils().runTest(this);
new TestMultiThreadedKernel().runTest(this); // new TestMultiThreadedKernel().runTest(this);
new TestOverflow().runTest(this); // new TestOverflow().runTest(this);
new TestPageStore().runTest(this); // new TestPageStore().runTest(this);
new TestPattern().runTest(this); // new TestPattern().runTest(this);
new TestPgServer().runTest(this); // new TestPgServer().runTest(this);
new TestReader().runTest(this); // new TestReader().runTest(this);
new TestRecovery().runTest(this); // new TestRecovery().runTest(this);
new TestSampleApps().runTest(this); // new TestSampleApps().runTest(this);
new TestScriptReader().runTest(this); // new TestScriptReader().runTest(this);
runTest("org.h2.test.unit.TestServlet"); // runTest("org.h2.test.unit.TestServlet");
new TestSecurity().runTest(this); // new TestSecurity().runTest(this);
new TestShell().runTest(this); // new TestShell().runTest(this);
new TestStreams().runTest(this); // new TestStreams().runTest(this);
new TestStringCache().runTest(this); // new TestStringCache().runTest(this);
new TestStringUtils().runTest(this); // new TestStringUtils().runTest(this);
new TestTools().runTest(this); new TestTools().runTest(this);
new TestValue().runTest(this); // new TestValue().runTest(this);
new TestValueHashMap().runTest(this); // new TestValueHashMap().runTest(this);
new TestValueMemory().runTest(this); // new TestValueMemory().runTest(this);
} }
private void runTest(String className) { private void runTest(String className) {
......
create memory temp table test(name varchar primary key);
select index_class from information_schema.indexes where table_name = 'TEST';
> org.h2.index.TreeIndex;
drop table test;
create cached temp table test(name varchar primary key);
select index_class from information_schema.indexes where table_name = 'TEST';
> org.h2.index.PageBtreeIndex;
drop table test;
create table test(id int); create table test(id int);
alter table test alter column id set default 'x'; alter table test alter column id set default 'x';
select column_default from information_schema.columns c where c.table_name = 'TEST' and c.column_name = 'ID'; select column_default from information_schema.columns c where c.table_name = 'TEST' and c.column_name = 'ID';
......
...@@ -641,4 +641,5 @@ stdio printf jchar sizeof stdlib jbyte jint uint ujlong typedef jdouble stdint ...@@ -641,4 +641,5 @@ stdio printf jchar sizeof stdlib jbyte jint uint ujlong typedef jdouble stdint
jfloat wchar hotspot jvoid std ujint jlong vars jboolean calloc argc strlen jfloat wchar hotspot jvoid std ujint jlong vars jboolean calloc argc strlen
equivalent synchronizes sullivan surname doe stepan getstart rojas snprintf equivalent synchronizes sullivan surname doe stepan getstart rojas snprintf
pulakka pagination collide visual aejaks simulation joonas finland minneapolis pulakka pagination collide visual aejaks simulation joonas finland minneapolis
determine timestampdiff harmony doap shortdesc wireless determine timestampdiff harmony doap shortdesc wireless iceland sigurdsson
\ No newline at end of file darri chunks bjorn chunked watson regardless usefulinc represented pushd
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论