提交 17712d53 authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 fed5361e
......@@ -283,7 +283,7 @@ java org.h2.tools.CreateCluster
-urlSource jdbc:h2:tcp://localhost:9101/~/test
-urlTarget jdbc:h2:tcp://localhost:9102/~/test
-user sa
-serverlist localhost:9101,localhost:9102
-serverList localhost:9101,localhost:9102
</pre>
</li><li>You can now connect to the databases using
an application or the H2 Console using the JDBC URL
......
......@@ -18,7 +18,23 @@ Change Log
<h1>Change Log</h1>
<h2>Next Version (unreleased)</h2>
<ul><li>-
<ul><li>The Console tool now supports command line options to start things separately.
</li><li>Large objects did not work for in-memory databases in server mode in Linux.
</li><li>Connections from a local address other than 'localhost' were not allowed if remote
connections were disabled. This was always a problem, but only got visible in the last release
because the server no longer connects to 'localhost' if networked.
</li><li>The h2console.war can now be built using the Java build.
</li><li>By default, databases are shared in the same process. For read-only databases
this causes unnecessary synchronization, but safes memory. If you want that each connection
opens its own database, append ;OPEN_NEW=TRUE to the database URL.
</li><li>New auto-reconnect feature will setting causes the JDBC driver to reconnect to
the database if the connection is lost. To enable, append ;AUTO_RECONNECT=TRUE to the database URL.
This is specially helpful when using AUTO_SERVER.
</li><li>CreateCluster: the property 'serverlist' is now called 'serverList'.
</li><li>The ConvertTraceFile tool could not parse some files because the trace
mechanism did not encode prepared statement parameters.
</li><li>Databases names can now be one character long
(the minimum size used to be 2 characters).
</li></ul>
<h2>Version 1.0.79 (2008-09-26)</h2>
......
......@@ -19,19 +19,19 @@ Downloads
<h1>Downloads</h1>
<h3>Version ${version} (${versionDate}, Current)</h3>
<h3>Version ${version} (${versionDate}, Beta)</h3>
<p>
<a href="http://www.h2database.com/h2-setup-${versionDate}.exe">Windows Installer</a><br />
<a href="http://www.h2database.com/h2-${versionDate}.zip">Platform-Independent Zip</a><br />
</p>
<h3>Version ${previousVersion} (${previousVersionDate}, Last Stable)</h3>
<h3>Version ${stableVersion} (${stableVersionDate}, Last Stable)</h3>
<p>
<a href="http://www.h2database.com/h2-setup-${previousVersionDate}.exe">Windows Installer</a><br />
<a href="http://www.h2database.com/h2-${previousVersionDate}.zip">Platform-Independent Zip</a><br />
<a href="http://www.h2database.com/h2-setup-${stableVersionDate}.exe">Windows Installer</a><br />
<a href="http://www.h2database.com/h2-${stableVersionDate}.zip">Platform-Independent Zip</a><br />
</p>
<h3>Download Mirror and Older Versions</h3>
<h3>Download Older Versions</h3>
<p>
<a href="http://code.google.com/p/h2database/downloads/list">Platform-Independent Zip</a><br />
</p>
......
......@@ -31,9 +31,9 @@ Welcome to H2, the Java SQL database. The main feature of H2 are:
<table style="border: 0px; width: 395px;">
<tr><td style="background-color: #eee;">
<table style="border: 0px; margin: 5px; background-color: #eee;">
<table style="border: 0px; margin: 0px 5px; background-color: #eee;">
<tr><td style="border: 0px; background-color: #eee;" colspan="2">
<h3>Download</h3>
<h3>Download Beta</h3>
Version ${version} (${versionDate}):
</td></tr>
<tr><td style="border: 0px; background-color: #eee;">
......@@ -47,7 +47,7 @@ Welcome to H2, the Java SQL database. The main feature of H2 are:
<a href="http://www.h2database.com/h2-${versionDate}.zip">All platforms (zip, 4.6 MB)</a>
</td></tr>
<tr><td style="border: 0px; background-color: #eee;" colspan="2">
<a href="download.html">All Downloads</a>
<a href="download.html">All Downloads (including Stable)</a>
</td></tr>
</table>
</td><td style="border: 0px;">&nbsp;&nbsp;&nbsp;</td>
......
......@@ -391,6 +391,7 @@ Of course, patches are always welcome, but are not always applied as is. Patches
</li><li>Document FTL_SEARCH, FTL_SEARCH_DATA.
</li><li>Support DatabaseMetaData.insertsAreDetected: updatable result sets should detect inserts.
</li><li>Auto-server: add option to define the IP address range or list.
</li><li>Open a read-only database but don't share it with other connections. jdbc:h2:~/test;PRIVATE=TRUE
</li></ul>
<h2>Not Planned</h2>
......
......@@ -63,6 +63,7 @@ rem == svn copy: /svn/trunk /svn/tags/version-1.0.x; Version 1.0.x (yyyy-mm-dd)
rem == Newsletter: prepare (always to BCC!!)
rem == Upload to h2database.com, http://code.google.com/p/h2database/downloads/list
rem == Newsletter: send (always to BCC!!)
rem == Remove Contacts in GMail
rem == Add to freshmeat
rem == Change version: http://en.wikipedia.org/wiki/H2_%28DBMS%29
rem == Change version: http://ja.wikipedia.org/wiki/H2_Database
......
......@@ -80,22 +80,22 @@ public class Constants {
/**
* The build id is incremented for each public release.
*/
public static final int BUILD_ID = 79;
public static final int BUILD_ID = 100;
/**
* The build id of the previous release.
* The build id of the last stable release.
*/
public static final int BUILD_ID_PREVIOUS = 78;
public static final int BUILD_ID_STABLE = 79;
/**
* The build date is updated for each public release.
*/
public static final String BUILD_DATE = "2008-09-26";
public static final String BUILD_DATE = "2008-09-29";
/**
* The build date is updated for each public release.
*/
public static final String BUILD_DATE_PREVIOUS = "2008-08-28";
public static final String BUILD_DATE_STABLE = "2008-09-26";
/**
* The TCP protocol version number 5. This protocol is used by the TCP
......@@ -117,7 +117,7 @@ public class Constants {
/**
* The minor version of this product.
*/
public static final int VERSION_MINOR = 0;
public static final int VERSION_MINOR = 1;
/**
* The version number (major.minor) of this product.
......@@ -584,12 +584,12 @@ public class Constants {
}
/**
* Get the version of the previous version.
* Get the last stable version name.
*
* @return the version number
*/
public static Object getVersionPrevious() {
return VERSION_MAJOR + "." + VERSION_MINOR + "." + BUILD_ID_PREVIOUS;
public static Object getVersionStable() {
return "1.0." + BUILD_ID_STABLE;
}
/**
......
......@@ -2764,6 +2764,7 @@ CSVREAD(fileNameString [, columnNamesString [, charsetString [, fieldSeparatorSt
[, escapeCharacterString [, nullString]]]]]]): resultSet
","
Returns the result set of reading the CSV (comma separated values) file.
For each parameter, NULL means the default value should be used.
If the column names are specified (a list of column names separated with the fieldSeparator),
those are used they are read from the file, otherwise (or if they are set to NULL) the first line
of the file is interpreted as the column names.
......@@ -2776,6 +2777,8 @@ Admin rights are required to execute this command.
CALL CSVREAD('test.csv');
-- Read a file containing the columns ID, NAME with UTF-8 encoding and the pipe (|) as field separator
CALL CSVREAD('test2.csv', 'ID|NAME', 'UTF-8', '|');
-- Read a semicolon-separated file
SELECT * FROM CSVREAD('data/test.csv', NULL, NULL, ';');
"
"Functions (System)","CSVWRITE","
......@@ -2784,6 +2787,7 @@ CSVWRITE(fileNameString, queryString [, charsetString [, fieldSeparatorString [,
","
Writes a CSV (comma separated values).
The file is overwritten if it exists.
For each parameter, NULL means the default value should be used.
The default charset is the default value for this system, and the default field separator is a comma.
The null string is used when writing NULL (by default nothing is written when NULL appears).
The default line separator is the default value for this system ('line.separator' system property).
......
......@@ -9,6 +9,7 @@ package org.h2.server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
......@@ -212,10 +213,16 @@ public class TcpServer implements Service {
if (allowOthers) {
return true;
}
return NetUtils.isLoopbackAddress(socket);
try {
return NetUtils.isLocalAddress(socket);
} catch (UnknownHostException e) {
traceError(e);
return false;
}
}
public synchronized void start() throws SQLException {
stop = false;
serverSocket = NetUtils.createServerSocket(port, ssl);
port = serverSocket.getLocalPort();
initManagementDb();
......
......@@ -9,6 +9,7 @@ package org.h2.server.pg;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
......@@ -127,7 +128,12 @@ public class PgServer implements Service {
if (allowOthers) {
return true;
}
return NetUtils.isLoopbackAddress(socket);
try {
return NetUtils.isLocalAddress(socket);
} catch (UnknownHostException e) {
traceError(e);
return false;
}
}
public void start() throws SQLException {
......
......@@ -22,6 +22,7 @@ import java.io.StringReader;
import java.io.StringWriter;
import java.lang.reflect.Method;
import java.net.Socket;
import java.net.UnknownHostException;
import java.security.SecureClassLoader;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
......@@ -2101,7 +2102,12 @@ class WebThread extends Thread implements DatabaseEventListener {
if (server.getAllowOthers()) {
return true;
}
return NetUtils.isLoopbackAddress(socket);
try {
return NetUtils.isLocalAddress(socket);
} catch (UnknownHostException e) {
server.traceError(e);
return false;
}
}
/**
......
......@@ -300,13 +300,9 @@ public class FileLock {
method = SOCKET;
properties = new SortedProperties();
setUniqueId();
try {
// TODO documentation: if this returns 127.0.0.1,
// the computer is probably not networked
ipAddress = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
throw getException(e);
}
// TODO documentation: if this returns 127.0.0.1,
// the computer is probably not networked
ipAddress = NetUtils.getLocalAddress();
if (!fs.createNewFile(fileName)) {
waitUntilOld();
long read = fs.getLastModified(fileName);
......
......@@ -130,6 +130,7 @@ public class Column {
newColumn.convertNullToDefault = convertNullToDefault;
newColumn.sequence = sequence;
newColumn.comment = comment;
newColumn.computeTableFilter = computeTableFilter;
newColumn.isComputed = isComputed;
newColumn.selectivity = selectivity;
newColumn.primaryKey = primaryKey;
......
......@@ -78,6 +78,7 @@ import org.h2.test.mvcc.TestMvcc2;
import org.h2.test.mvcc.TestMvcc3;
import org.h2.test.mvcc.TestMvccMultiThreaded;
import org.h2.test.rowlock.TestRowLocks;
import org.h2.test.server.TestAutoReconnect;
import org.h2.test.server.TestAutoServer;
import org.h2.test.server.TestNestedLoop;
import org.h2.test.server.TestPgServer;
......@@ -275,9 +276,47 @@ java org.h2.test.TestAll timer
/*
14.zip
Open Anzo
http://www.openanzo.org
Semantic Application Server
H2 Dialect for TopLink
http://www.marciowb.net/blog/2008/08/quickly-using-h2-database-with
osgi (derby, hsqldb)
private=true
auto_reconnect
implemented:
- works with server mode
- works with auto_server mode
- use the same property name as in MySQL (reconnect?)
- statements
- prepared statements
- small result sets (up to fetch size)
- throws an error when autocommit is false
untested:
- batch updates
- throw error for large result sets
- throw error in cluster mode
- ignored in embedded mode
- server mode, embedded (ignored)
not implemented
- temporary linked tables
- temporary tables
- variables
- in cluster mode (error)
- identity, getGeneratedKeys
check all version(s) before the release
Patch.zip
document url parameter auto_server
document url parameter auto_reconnect
document url parameter private
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
......@@ -527,6 +566,7 @@ http://www.w3schools.com/sql/
new TestXASimple().runTest(this);
// server
new TestAutoReconnect().runTest(this);
new TestAutoServer().runTest(this);
new TestNestedLoop().runTest(this);
new TestWeb().runTest(this);
......
......@@ -67,12 +67,6 @@ public class TestCases extends TestBase {
} catch (SQLException e) {
assertEquals(ErrorCode.INVALID_DATABASE_NAME_1, e.getErrorCode());
}
try {
getConnection("cases/a");
fail();
} catch (SQLException e) {
assertEquals(ErrorCode.INVALID_DATABASE_NAME_1, e.getErrorCode());
}
}
private void testReuseSpace() throws SQLException {
......
......@@ -50,7 +50,7 @@ public class TestCluster extends TestBase {
conn.close();
CreateCluster.main(new String[] { "-urlSource", "jdbc:h2:file:" + baseDir + "/node1/test", "-urlTarget",
"jdbc:h2:file:" + baseDir + "/node2/test", "-user", "sa", "-serverlist",
"jdbc:h2:file:" + baseDir + "/node2/test", "-user", "sa", "-serverList",
"localhost:9191,localhost:9192" });
Server n1 = org.h2.tools.Server.createTcpServer(
new String[] { "-tcpPort", "9191", "-baseDir", baseDir + "/node1" }).start();
......@@ -91,7 +91,7 @@ public class TestCluster extends TestBase {
// re-create the cluster
DeleteDbFiles.main(new String[] { "-dir", baseDir + "/node2", "-quiet" });
CreateCluster.main(new String[] { "-urlSource", "jdbc:h2:file:" + baseDir + "/node1/test", "-urlTarget",
"jdbc:h2:file:" + baseDir + "/node2/test", "-user", "sa", "-serverlist",
"jdbc:h2:file:" + baseDir + "/node2/test", "-user", "sa", "-serverList",
"localhost:9191,localhost:9192" });
n1 = org.h2.tools.Server.createTcpServer(
new String[] { "-tcpPort", "9191", "-baseDir", baseDir + "/node1" }).start();
......
......@@ -150,7 +150,7 @@ public class TestTools extends TestBase {
stat.execute("create table test(id int primary key, name varchar, amount decimal)");
PreparedStatement prep = conn.prepareStatement("insert into test values(?, ?, ?)");
prep.setInt(1, 1);
prep.setString(2, "Hello");
prep.setString(2, "Hello \\'Joe\n\\'");
prep.setBigDecimal(3, new BigDecimal("10.20"));
prep.executeUpdate();
stat.execute("create table test2(id int primary key, a real, b double, c bigint, " +
......@@ -194,7 +194,7 @@ public class TestTools extends TestBase {
rs = stat.executeQuery("select * from test");
rs.next();
assertEquals(1, rs.getInt(1));
assertEquals("Hello", rs.getString(2));
assertEquals("Hello \\'Joe\n\\'", rs.getString(2));
assertEquals("10.20", rs.getBigDecimal(3).toString());
assertFalse(rs.next());
rs = stat.executeQuery("select * from test2");
......
......@@ -19,10 +19,12 @@ Initial Developer: H2 Group
<servlet>
<servlet-name>H2Console</servlet-name>
<servlet-class>org.h2.server.web.WebServlet</servlet-class>
<!--
<init-param>
<param-name>trace</param-name>
<param-value></param-value>
</init-param>
-->
<load-on-startup>1</load-on-startup>
</servlet>
......
......@@ -61,8 +61,8 @@ public class GenerateDoc {
bnf = Bnf.getInstance(null);
session.put("version", Constants.getVersion());
session.put("versionDate", Constants.BUILD_DATE);
session.put("previousVersion", Constants.getVersionPrevious());
session.put("previousVersionDate", Constants.BUILD_DATE_PREVIOUS);
session.put("stableVersion", Constants.getVersionStable());
session.put("stableVersionDate", Constants.BUILD_DATE_STABLE);
map("commands", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION LIKE 'Commands%' ORDER BY ID");
map("commandsDML", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION='Commands (DML)' ORDER BY ID");
map("commandsDDL", "SELECT * FROM INFORMATION_SCHEMA.HELP WHERE SECTION='Commands (DDL)' ORDER BY ID");
......
......@@ -384,7 +384,7 @@ selling semicolon semmle send sending sends sense sensitive sensitivity sent
sentence sentinel sep sepang separate separated separately separating separator
separators sept september seq sequence sequences sequential sequentially sequoia
serial serializable serialization serialize serialized series serif server
serverlist servers service services servicing servlet servlets sesar session
servers service services servicing servlet servlets sesar session
sessions set sets setter setters setting settings settlement setup several
severity sftp sha shadow shall shallow share shared shares shell shellbook shift
shipping short shorter shortest should shouldn show showing shown shows shrink
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论