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

--no commit message

--no commit message
上级 bd3ced2d
......@@ -54,6 +54,8 @@ Advanced Topics
Restricting Class Loading and Usage</a><br />
<a href="#security_protocols">
Security Protocols</a><br />
<a href="#ssl_tls_connections">
SSL/TLS Connections</a><br />
<a href="#uuid">
Universally Unique Identifiers (UUID)</a><br />
<a href="#system_properties">
......@@ -126,14 +128,9 @@ NULL and values that are not set in the insert statement are both inserted as NU
This may not have the desired effect if a default value in the target table is other than NULL.
</p>
<p>
For each linked table a new connection is opened. This can be a problem for some databases when using
many linked tables. For Oracle XE, the maximum number of connection can be increased.
Oracle XE needs to be restarted after changing these values:
If multiple linked tables point to the same database (using the same database URL), the connection
is shared. To disable this, set the system property h2.shareLinkedConnections to false.
</p>
<pre>
alter system set processes=100 scope=spfile;
alter system set sessions=100 scope=spfile;
</pre>
<p>
The CREATE LINKED TABLE statement supports an optional schema name parameter.
See the grammar for details.
......@@ -990,7 +987,15 @@ so that an attacker needs to wait for the whole delay. Delays are synchronized.
to protect against parallel attacks.
</p>
<h3>SSL/TLS Connections</h3>
<h3>HTTPS Connections</h3>
<p>
The web server supports HTTP and HTTPS connections using SSLServerSocket.
There is a default self-certified certificate to support an easy starting point, but
custom certificates are supported as well.
</p>
<br /><a name="ssl_tls_connections"></a>
<h2>SSL/TLS Connections</h2>
<p>
Remote SSL/TLS connections are supported using the Java Secure Socket Extension
(SSLServerSocket / SSLSocket). By default, anonymous SSL is enabled.
......@@ -1007,13 +1012,6 @@ for more information.
To disable anonymous SSL, set the system property <code>h2.enableAnonymousSSL</code> to false.
</p>
<h3>HTTPS Connections</h3>
<p>
The web server supports HTTP and HTTPS connections using SSLServerSocket.
There is a default self-certified certificate to support an easy starting point, but
custom certificates are supported as well.
</p>
<br /><a name="uuid"></a>
<h2>Universally Unique Identifiers (UUID)</h2>
<p>
......
......@@ -147,19 +147,14 @@ Not all such problems may be fixed.
Areas that are not fully tested:
</p>
<ul>
<li>Platforms other than Windows XP and the Sun JVM 1.4 and 1.5
<li>Platforms other than Windows XP or Linux, or JVMs other than Sun 1.4 - 1.6
</li><li>The features AUTO_SERVER and AUTO_RECONNECT
</li><li>The MVCC (multi version concurrency) mode
</li><li>Cluster mode, 2-phase commit, savepoints
</li><li>24/7 operation
</li><li>Some operations on databases larger than 500 MB may be slower than expected
</li><li>Updatable result sets
</li><li>Referential integrity and check constraints, triggers
</li><li>ALTER TABLE statements, views, linked tables, schema, UNION
</li><li>Not all built-in functions are completely tested
</li><li>The optimizer may not always select the best plan
</li><li>Data types BLOB, CLOB, VARCHAR_IGNORECASE, OTHER
</li><li>Wide indexes with large VARCHAR or VARBINARY columns and / or with a lot of columns
</li><li>Multi-threading and using multiple connections
</li><li>The optimizer may not always select the best plan
</li></ul>
<p>
......
......@@ -29,8 +29,9 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>RECOVER=1 should automatically recover, =2 should run the recovery tool if required
</li><li>Test with Spatial DB in a box / JTS (http://docs.codehaus.org/display/GEOS/SpatialDBBox)
</li><li>Optimization: result set caching (like MySQL)
</li><li>Server side cursors
</li><li>Support large updates (use the transaction log to undo).
</li><li>Shutdown compact
</li><li>Server side cursors
</li></ul>
<h2>Priority 2</h2>
......@@ -44,7 +45,6 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>Optimize .. OR .. to UNION if the cost is lower
</li><li>Index organized tables CREATE TABLE...(...) ORGANIZATION INDEX (store in data file) (probably file format changes are required for rowId)
</li><li>Better space re-use in the files after deleting data: shrink the data file without closing the database (if the end of the file is empty)
</li><li>Support large updates (use the transaction log to undo).
</li><li>Full outer joins
</li><li>Support trigger on the tables information_schema.tables and ...columns
</li><li>Test very large databases and LOBs (up to 256 GB)
......@@ -98,7 +98,6 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>Linked schema using CSV files: one schema for a directory of files; support indexes for CSV files
</li><li>Don't write stack traces for common exceptions like duplicate key to the log by default
</li><li>GCJ: what is the state now?
</li><li>Use Janino to convert Java to C++
</li><li>Reduce disk space usage
</li><li>Events for: Database Startup, Connections, Login attempts, Disconnections, Prepare (after parsing), Web Server (see http://docs.openlinksw.com/virtuoso/fn_dbev_startup.html)
</li><li>Optimization: Log compression
......@@ -111,6 +110,7 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>EXE file: maybe use http://jsmooth.sourceforge.net
</li><li>Performance: Automatically build in-memory indexes if the whole table is in memory
</li><li>H2 Console: The webclient could support more features like phpMyAdmin.
</li><li>Use Janino to convert Java to C++
</li><li>The HELP information schema can be directly exposed in the Console
</li><li>Maybe use the 0x1234 notation for binary fields, see MS SQL Server
</li><li>Support Oracle CONNECT BY in some way: http://www.adp-gmbh.ch/ora/sql/connect_by.html, http://philip.greenspun.com/sql/trees.html
......@@ -349,7 +349,7 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>Enable warning for 'Local variable declaration hides another field or variable'.
</li><li>Linked tables: make hidden columns available (Oracle: rowid and ora_rowscn columns).
</li><li>Support merge join.
</li><li>H2 Console: in-place autocomplete (need to merge query and result frame, use div).
</li><li>H2 Console: in-place autocomplete.
</li><li>MySQL compatibility: update test1 t1, test2 t2 set t1.id = t2.id where t1.id = t2.id;
</li><li>Oracle: support DECODE method (convert to CASE WHEN).
</li><li>Support large databases: split LOB (BLOB, CLOB) to multiple directories / disks (similar to tablespaces).
......@@ -358,6 +358,7 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>H2 Console: support configuration option for fixed width (monospace) font.
</li><li>Native fulltext search: support analyzers (specially for Chinese, Japanese).
</li><li>Automatically compact databases from time to time (as a background process).
</li><li>Support SCOPE_IDENTITY().
</li><li>Support GRANT SELECT, UPDATE ON *.
</li><li>Test Eclipse DTP.
</li><li>Support JMX: Create an MBean for each database and server (support JConsole).
......
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -414,11 +414,17 @@ Usually, for update statements, the old rows are deleted first
and then the new rows inserted. It is possible to emit update
statements (however this is not possible on rollback), however
in this case multi-row unique key updates may not always work.
Linked tables to the same database share one connection.
If a query is used instead of the original table name, the table is read only.
To use JNDI to get the connection, the driver class must be a
javax.naming.Context (for example javax.naming.InitialContext), and the
URL must be the resource name (for example java:comp/env/jdbc/Test).
The current user owner must have admin rights.
","
CREATE LINKED TABLE LINK('org.h2.Driver', 'jdbc:h2:test2', 'sa', 'sa', 'TEST');
CREATE LINKED TABLE LINK('', 'jdbc:h2:test2', 'sa', 'sa', '(SELECT * FROM TEST WHERE ID>0)');
CREATE LINKED TABLE LINK('javax.naming.InitialContext',
'java:comp/env/jdbc/Test', NULL, NULL, '(SELECT * FROM TEST WHERE ID>0)');
"
"Commands (DDL)","CREATE ROLE","
......
......@@ -46,7 +46,8 @@ public class BitField {
if (data[i] == 0) {
continue;
}
for (int j = Math.max(fromIndex, i << ADDRESS_BITS); j < maxAddress; j++) {
int j = Math.max(fromIndex, i << ADDRESS_BITS);
for (int end = Math.min(maxAddress, j + 64); j < end; j++) {
if (get(j)) {
return j;
}
......@@ -68,7 +69,8 @@ public class BitField {
if (data[i] == -1) {
continue;
}
for (int j = Math.max(fromIndex, i << ADDRESS_BITS);; j++) {
int j = Math.max(fromIndex, i << ADDRESS_BITS);
for (int end = j + 64; j < end; j++) {
if (!get(j)) {
return j;
}
......
......@@ -279,13 +279,10 @@ java org.h2.test.TestAll timer
/*
test with 1.0
document shared connections for linked tables
document osgi
document url parameter auto_server
document url parameter auto_reconnect
document url parameter open_new
osgi: create a sample application, test, document
merge join test case
......@@ -310,12 +307,6 @@ not implemented / not tested
- keep identity, getGeneratedKeys on client
- throw error when in cluster mode
Feature requests:
SCOPE_IDENTITY
Add version number. Install directory: h2-1.1, jar file: h2-1.1.100.jar.
Micro version: use build number, staring with 1.1.100
TestMVCC:
Concurrent update in table test: another transaction has updated or
deleted the same row when exactly does it occur in other databases
......
......@@ -27,11 +27,42 @@ public class TestBitField extends TestBase {
}
public void test() {
testNextClearBit();
testNextSetBit();
testByteOperations();
testRandom();
testGetSet();
}
private void testNextSetBit() {
Random random = new Random(1);
BitField field = new BitField();
for (int i = 0; i < 100000; i++) {
int a = random.nextInt(120);
int b = a + 1 + random.nextInt(200);
field.set(a);
field.set(b);
assertEquals(b, field.nextSetBit(a + 1));
field.clear(a);
field.clear(b);
}
}
private void testNextClearBit() {
Random random = new Random(1);
BitField field = new BitField();
field.setRange(0, 500, true);
for (int i = 0; i < 100000; i++) {
int a = random.nextInt(120);
int b = a + 1 + random.nextInt(200);
field.clear(a);
field.clear(b);
assertEquals(b, field.nextClearBit(a + 1));
field.set(a);
field.set(b);
}
}
private void testByteOperations() {
BitField used = new BitField();
testSetFast(used, false);
......@@ -48,7 +79,9 @@ public class TestBitField extends TestBase {
x += 8;
// for (int j = 0; j < 8; j++, x++) {
// if (used.get(x) != ((mask & (1 << j)) != 0)) {
// throw Message.getInternalError("Redo failure, block: " + x + " expected in-use bit: " + used.get(x));
// throw Message.getInternalError(
// "Redo failure, block: " + x +
// " expected in-use bit: " + used.get(x));
// }
// }
} else {
......
......@@ -25,7 +25,7 @@ public class ThreadDumpFilter {
do {
System.out.println(s);
s = in.readLine();
} while(s != null && (s.length() == 0 || "\t\"".indexOf(s.charAt(0)) >= 0));
} while(s != null && (s.length() == 0 || " \t\"".indexOf(s.charAt(0)) >= 0));
}
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论