提交 2a910f70 authored 作者: Thomas Mueller's avatar Thomas Mueller

--no commit message

--no commit message
上级 0844c811
<project name="h2" default="all" basedir=".">
<!-- jar files required by the benchmark -->
<path id="benchmark.drivers.path">
<pathelement location="bin"/>
<pathelement path="data/java"/>
<fileset dir="benchmark.drivers.dir">
<include name="**/*.jar"/>
</fileset>
</path>
<target name="all" depends="jar">
</target>
<target name="benchmark" depends="compile">
<java fork="true" classname="org.h2.test.bench.TestPerformance" classpathref="benchmark.drivers.path" maxmemory="128m"><arg line="-init -db 1"/></java>
<java fork="true" classname="org.h2.test.bench.TestPerformance" classpathref="benchmark.drivers.path" maxmemory="128m"><arg line="-db 2"/></java>
<java fork="true" classname="org.h2.test.bench.TestPerformance" classpathref="benchmark.drivers.path" maxmemory="128m"><arg line="-db 3 -out pe.html"/></java>
<java fork="true" classname="org.h2.test.bench.TestPerformance" classpathref="benchmark.drivers.path" maxmemory="128m"><arg line="-init -db 4"/></java>
<java fork="true" classname="org.h2.test.bench.TestPerformance" classpathref="benchmark.drivers.path" maxmemory="128m"><arg line="-db 5"/></java>
<java fork="true" classname="org.h2.test.bench.TestPerformance" classpathref="benchmark.drivers.path" maxmemory="128m"><arg line="-db 6"/></java>
<java fork="true" classname="org.h2.test.bench.TestPerformance" classpathref="benchmark.drivers.path" maxmemory="128m"><arg line="-db 7"/></java>
<java fork="true" classname="org.h2.test.bench.TestPerformance" classpathref="benchmark.drivers.path" maxmemory="128m"><arg line="-db 8"/></java>
<java fork="true" classname="org.h2.test.bench.TestPerformance" classpathref="benchmark.drivers.path" maxmemory="128m"><arg line="-db 9 -out ps.html"/></java>
</target>
<target name="clean" depends="init">
<mkdir dir="bin"/>
<mkdir dir="docs"/>
......
......@@ -86,7 +86,7 @@ Example:
&lt;dependency&gt;
&lt;groupId&gt;com.h2database&lt;/groupId&gt;
&lt;artifactId&gt;h2&lt;/artifactId&gt;
&lt;version&gt;1.0.71&lt;/version&gt;
&lt;version&gt;1.0.72&lt;/version&gt;
&lt;/dependency&gt;
</pre>
<p>
......
......@@ -33,6 +33,18 @@ Change Log
or if there was a comment on the table.
</li><li>Triggers are no longer executed when executing an changing the table
structure (ALTER TABLE).
</li><li>When setting BLOB or CLOB values larger than 65 KB using
a remote connection, temporary files were kept on the client
longer than required (until the connection was closed or the
object is garbage collected). Now they are removed as soon
as the PreparedStatement is closed, or when the value is
overwritten.
</li><li>Statements can now be cancelled remotely
(when using remote connections).
</li><li>The Shell tool now uses java.io.Console to read the password
when using JDK 1.6
</li><li>When using read-only databases and setting LOG=2, an exception
was written to the trace file when closing the database. Fixed.
</li></ul>
<h2>Version 1.0.71 (2008-04-25)</h2>
......
......@@ -17,16 +17,16 @@ H2 Database Engine
<h1>Downloads</h1>
<h3>Version 1.0.71 (2008-04-25, Current)</h3>
<h3>Version 1.0.72 (2008-05-10, Current)</h3>
<p>
<a href="http://www.h2database.com/h2-setup-2008-04-25.exe">Windows Installer</a><br />
<a href="http://www.h2database.com/h2-2008-04-25.zip">Platform-Independent Zip</a><br />
<a href="http://www.h2database.com/h2-setup-2008-05-10.exe">Windows Installer</a><br />
<a href="http://www.h2database.com/h2-2008-05-10.zip">Platform-Independent Zip</a><br />
</p>
<h3>Version 1.0.69 (2008-03-29, Last Stable)</h3>
<h3>Version 1.0.71 (2008-04-25, Last Stable)</h3>
<p>
<a href="http://www.h2database.com/h2-setup-2008-03-29.exe">Windows Installer</a><br />
<a href="http://www.h2database.com/h2-2008-03-29.zip">Platform-Independent Zip</a><br />
<a href="http://www.h2database.com/h2-setup-2008-04-25.exe">Windows Installer</a><br />
<a href="http://www.h2database.com/h2-2008-04-25.zip">Platform-Independent Zip</a><br />
</p>
<h3>Download Mirror and Older Versions</h3>
......
......@@ -34,17 +34,17 @@ Welcome to H2, the Java SQL database. The main feature of H2 are:
<table style="border: 0px; margin: 5px; background-color: #eee;">
<tr><td style="border: 0px; background-color: #eee;" colspan="2">
<h3>Download</h3>
Version 1.0.71 (2008-04-25):
Version 1.0.72 (2008-05-10):
</td></tr>
<tr><td style="border: 0px; background-color: #eee;">
<a href="http://www.h2database.com/h2-setup-2008-04-25.exe"><img border="1" src="images/download.png" alt="download" /></a>
<a href="http://www.h2database.com/h2-setup-2008-05-10.exe"><img border="1" src="images/download.png" alt="download" /></a>
</td><td style="vertical-align: middle; border: 0px; background-color: #eee;">
<a href="http://www.h2database.com/h2-setup-2008-04-25.exe">Windows Installer (3.1 MB)</a>
<a href="http://www.h2database.com/h2-setup-2008-05-10.exe">Windows Installer (3.1 MB)</a>
</td></tr>
<tr><td style="border: 0px; background-color: #eee;">
<a href="http://www.h2database.com/h2-2008-04-25.zip"><img border="1" src="images/download.png" alt="download" /></a>
<a href="http://www.h2database.com/h2-2008-05-10.zip"><img border="1" src="images/download.png" alt="download" /></a>
</td><td style="vertical-align: middle; border: 0px; background-color: #eee;">
<a href="http://www.h2database.com/h2-2008-04-25.zip">All platforms (zip, 4.5 MB)</a>
<a href="http://www.h2database.com/h2-2008-05-10.zip">All platforms (zip, 4.5 MB)</a>
</td></tr>
<tr><td style="border: 0px; background-color: #eee;" colspan="2">
<a href="download.html">All Downloads</a>
......
......@@ -6857,103 +6857,103 @@ Cluster: hot deploy (adding a node on runtime)
Test with PostgreSQL Version 8.2
@roadmap_1295_li
Submit again to http://www.docjar.com/
Website: Don't use frames.
@roadmap_1296_li
Website: Don't use frames.
Try again with Lobo browser (pure Java)
@roadmap_1297_li
Try again with Lobo browser (pure Java)
Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
@roadmap_1298_li
Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
RECOVER=2 to backup the database, run recovery, open the database
@roadmap_1299_li
RECOVER=2 to backup the database, run recovery, open the database
Recovery should work with encrypted databases
@roadmap_1300_li
Recovery should work with encrypted databases
Corruption: new error code, add help
@roadmap_1301_li
Corruption: new error code, add help
Space reuse: after init, scan all storages and free those that don't belong to a live database object
@roadmap_1302_li
Space reuse: after init, scan all storages and free those that don't belong to a live database object
SysProperties: change everything to H2_...
@roadmap_1303_li
SysProperties: change everything to H2_...
Use FilterIn / FilterOut putStream?
@roadmap_1304_li
Use FilterIn / FilterOut putStream?
Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
@roadmap_1305_li
Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
Support NOCACHE table option (Oracle)
@roadmap_1306_li
Support NOCACHE table option (Oracle)
Index usage for UPDATE ... WHERE .. IN (SELECT...)
@roadmap_1307_li
Index usage for UPDATE ... WHERE .. IN (SELECT...)
Add regular javadocs (using the default doclet, but another css) to the homepage.
@roadmap_1308_li
Add regular javadocs (using the default doclet, but another css) to the homepage.
The database should be kept open for a longer time when using the server mode.
@roadmap_1309_li
The database should be kept open for a longer time when using the server mode.
Javadocs: for each tool, add a copy &amp; paste sample in the class level.
@roadmap_1310_li
Javadocs: for each tool, add a copy &amp; paste sample in the class level.
Javadocs: add @author tags.
@roadmap_1311_li
Javadocs: add @author tags.
Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
@roadmap_1312_li
Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
MySQL compatibility: real SQL statements for SHOW TABLES, DESCRIBE TEST (then remove from Shell)
@roadmap_1313_li
MySQL compatibility: real SQL statements for SHOW TABLES, DESCRIBE TEST (then remove from Shell)
Use a default delay of 1 second before closing a database.
@roadmap_1314_li
Use a default delay of 1 second before closing a database.
Maven: upload source code and javadocs as well.
@roadmap_1315_li
Maven: upload source code and javadocs as well.
Write (log) to system table before adding to internal data structures.
@roadmap_1316_li
Write (log) to system table before adding to internal data structures.
Support very large deletes and updates.
@roadmap_1317_li
Support very large deletes and updates.
Doclet (javadocs): constructors are not listed.
@roadmap_1318_li
Doclet (javadocs): constructors are not listed.
Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
@roadmap_1319_li
Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
@roadmap_1320_li
Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
@roadmap_1321_li
MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
Support CREATE TEMPORARY LINKED TABLE.
@roadmap_1322_li
Support CREATE TEMPORARY LINKED TABLE.
MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
@roadmap_1323_li
MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
Oracle compatibility: support NLS_DATE_FORMAT.
@roadmap_1324_li
Oracle compatibility: support NLS_DATE_FORMAT.
Support flashback queries as in Oracle.
@roadmap_1325_li
Support flashback queries as in Oracle.
Import / Export of fixed with text files.
@roadmap_1326_li
Import / Export of fixed with text files.
Support for OUT parameters in user-defined procedures.
@roadmap_1327_li
Support for OUT parameters in user-defined procedures.
Support getGeneratedKeys to return multiple rows when used with batch updates. This is supported by MySQL, but not Derby. Both PostgreSQL and HSQLDB don't support getGeneratedKeys. Also support it when using INSERT ... SELECT.
@roadmap_1328_h2
Not Planned
......
......@@ -6865,103 +6865,103 @@ SQLコマンドがコマンドエリアに表示されます。
#Test with PostgreSQL Version 8.2
@roadmap_1295_li
#Submit again to http://www.docjar.com/
#Website: Don't use frames.
@roadmap_1296_li
#Website: Don't use frames.
#Try again with Lobo browser (pure Java)
@roadmap_1297_li
#Try again with Lobo browser (pure Java)
#Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
@roadmap_1298_li
#Recovery tool: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
#RECOVER=2 to backup the database, run recovery, open the database
@roadmap_1299_li
#RECOVER=2 to backup the database, run recovery, open the database
#Recovery should work with encrypted databases
@roadmap_1300_li
#Recovery should work with encrypted databases
#Corruption: new error code, add help
@roadmap_1301_li
#Corruption: new error code, add help
#Space reuse: after init, scan all storages and free those that don't belong to a live database object
@roadmap_1302_li
#Space reuse: after init, scan all storages and free those that don't belong to a live database object
#SysProperties: change everything to H2_...
@roadmap_1303_li
#SysProperties: change everything to H2_...
#Use FilterIn / FilterOut putStream?
@roadmap_1304_li
#Use FilterIn / FilterOut putStream?
#Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
@roadmap_1305_li
#Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
#Support NOCACHE table option (Oracle)
@roadmap_1306_li
#Support NOCACHE table option (Oracle)
#Index usage for UPDATE ... WHERE .. IN (SELECT...)
@roadmap_1307_li
#Index usage for UPDATE ... WHERE .. IN (SELECT...)
#Add regular javadocs (using the default doclet, but another css) to the homepage.
@roadmap_1308_li
#Add regular javadocs (using the default doclet, but another css) to the homepage.
#The database should be kept open for a longer time when using the server mode.
@roadmap_1309_li
#The database should be kept open for a longer time when using the server mode.
#Javadocs: for each tool, add a copy &amp; paste sample in the class level.
@roadmap_1310_li
#Javadocs: for each tool, add a copy &amp; paste sample in the class level.
#Javadocs: add @author tags.
@roadmap_1311_li
#Javadocs: add @author tags.
#Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
@roadmap_1312_li
#Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
#MySQL compatibility: real SQL statements for SHOW TABLES, DESCRIBE TEST (then remove from Shell)
@roadmap_1313_li
#MySQL compatibility: real SQL statements for SHOW TABLES, DESCRIBE TEST (then remove from Shell)
#Use a default delay of 1 second before closing a database.
@roadmap_1314_li
#Use a default delay of 1 second before closing a database.
#Maven: upload source code and javadocs as well.
@roadmap_1315_li
#Maven: upload source code and javadocs as well.
#Write (log) to system table before adding to internal data structures.
@roadmap_1316_li
#Write (log) to system table before adding to internal data structures.
#Support very large deletes and updates.
@roadmap_1317_li
#Support very large deletes and updates.
#Doclet (javadocs): constructors are not listed.
@roadmap_1318_li
#Doclet (javadocs): constructors are not listed.
#Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
@roadmap_1319_li
#Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
#Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
@roadmap_1320_li
#Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
#MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
@roadmap_1321_li
#MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
#Support CREATE TEMPORARY LINKED TABLE.
@roadmap_1322_li
#Support CREATE TEMPORARY LINKED TABLE.
#MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
@roadmap_1323_li
#MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
#Oracle compatibility: support NLS_DATE_FORMAT.
@roadmap_1324_li
#Oracle compatibility: support NLS_DATE_FORMAT.
#Support flashback queries as in Oracle.
@roadmap_1325_li
#Support flashback queries as in Oracle.
#Import / Export of fixed with text files.
@roadmap_1326_li
#Import / Export of fixed with text files.
#Support for OUT parameters in user-defined procedures.
@roadmap_1327_li
#Support for OUT parameters in user-defined procedures.
#Support getGeneratedKeys to return multiple rows when used with batch updates. This is supported by MySQL, but not Derby. Both PostgreSQL and HSQLDB don't support getGeneratedKeys. Also support it when using INSERT ... SELECT.
@roadmap_1328_h2
#Not Planned
......@@ -7682,1116 +7682,3 @@ Javaアプリケーション内からインデックスを呼び出すことも
@tutorial_1201_p
#If the time zone is not set, the value is parsed using the current time zone setting of the system. Date and time information is stored in H2 database files in GMT (Greenwich Mean Time). If the database is opened using another system time zone, the date and time will change accordingly. If you want to move a database from one time zone to the other and don't want this to happen, you need to create a SQL script file using the SCRIPT command or Script tool, and then load the database using the RUNSCRIPT command or the RunScript tool in the new time zone.
@~changelog_1003_h2
#Version 1.0.71 (2008-04-25)
@~changelog_1003_li
#Sometimes an exception 'File ID mismatch' or 'try to add a record twice' occured after large records (8 KB or larger) are updated or deleted. See also http://code.google.com/p/h2database/issues/detail?id=22
@~changelog_1007_h2
#Version 1.0.70 (2008-04-20)
@~changelog_1009_h2
#Version 1.0.70 (2008-04-20)
@~changelog_1009_li
#Multi version concurrency (MVCC): when a row was updated, and the updated column was not indexed, this update was visible sometimes for other sessions even if it was not committed.
@~changelog_1011_li
#Multi version concurrency (MVCC): when a row was updated, and the updated column was not indexed, this update was visible sometimes for other sessions even if it was not committed.
@~changelog_1017_li
#The servlet and lucene jar files are now automatically downloaded when building.
@~changelog_1031_h2
#Version 1.0.69 (2008-03-29)
@~changelog_1033_h2
#Version 1.0.69 (2008-03-29)
@~changelog_1033_li
#A new Shell tools is now included (org.h2.tools.Shell) to query a database from the command line.
@~changelog_1041_li
#TRACE_LEVEL_ settings are no longer persistent. This was a problem when database initialization code caused a lot of trace output.
@~changelog_1048_h2
#Version 1.0.68 (2008-03-18)
@~changelog_1050_h2
#Version 1.0.68 (2008-03-18)
@~changelog_1050_li
#A error is now thrown when trying to call a method inside a trigger that implicitly commits the current transaction, if an object is locked.
@~changelog_1058_li
#H2 Console: autocomplete didn't work with very large scripts. Fixed.
@~changelog_1072_h2
#Version 1.0.67 (2008-02-22)
@~changelog_1074_h2
#Version 1.0.67 (2008-02-22)
@~changelog_1074_li
#CREATE TABLE AS SELECT now supports specifying the column list and data types.
@~changelog_1082_li
#Databases can now be opened even if trigger classes are not in the classpath. The exception is thrown when trying to fire the trigger.
@~changelog_1095_h2
#Version 1.0.66 (2008-02-02)
@~changelog_1097_h2
#Version 1.0.66 (2008-02-02)
@~changelog_1097_li
#H2 Console: stack traces are now links to the source code in the source repository (H2 database only).
@~changelog_1105_li
#The exception "Hexadecimal string contains non-hex character" was not always thrown when it should have been. Fixed.
@~changelog_1112_h2
#Version 1.0.65 (2008-01-18)
@~changelog_1114_h2
#Version 1.0.65 (2008-01-18)
@~changelog_1114_li
#A recovery bug has been fixed. With older versions, it was necessary to add ;RECOVER=1 to the database URL in cases where it should not have been required.
@~changelog_1122_li
#New read-only setting CREATE_BUILD (the build number of the database engine that created the database).
@~changelog_1135_h2
#Version 1.0.64 (2007-12-27)
@~changelog_1137_h2
#Version 1.0.64 (2007-12-27)
@~changelog_1137_li
#The PostgreSQL ODBC driver did not work in the last release due to a parser regression. Fixed.
@~changelog_1145_li
#New system function CANCEL_SESSION to cancel the currently executing statement of another session.
@~changelog_1161_h2
#Version 1.0.63 (2007-12-02)
@~changelog_1163_h2
#Version 1.0.63 (2007-12-02)
@~changelog_1163_li
#In time zones where the summer time saving limit is at midnight, some dates do not work in some virtual machines, for example 2007-10-14 in Chile, using the Sun JVM 1.6.0_03-b05. Fixed.
@~changelog_1171_li
#New function TABLE_DISTINCT.
@~changelog_1172_h2
#Version 1.0.62 (2007-11-25)
@~changelog_1174_h2
#Version 1.0.62 (2007-11-25)
@~changelog_1174_li
#MVCC: now an exception is thrown when an application tries to change the MVCC setting while the database is already open.
@~changelog_1182_li
#Google Android support: use 'ant codeswitchAndroid' to switch the source code to Android.
@~changelog_1191_h2
#Version 1.0.61 (2007-11-10)
@~changelog_1193_h2
#Version 1.0.61 (2007-11-10)
@~changelog_1193_li
#Added more tests. The code coverage is now at 83%.
@~changelog_1201_li
#Can now open a database stored in a jar or zip file (for example, jdbc:h2:zip:c:/temp/h2.zip!/test).
@~changelog_1206_h2
#Version 1.0.60 (2007-10-20)
@~changelog_1208_h2
#Version 1.0.60 (2007-10-20)
@~changelog_1208_li
#User defined aggregate functions are not supported.
@~changelog_1216_li
#Prepared statements could not be used after data definition statements (creating tables and so on). Fixed.
@~changelog_1218_h2
#Version 1.0.59 (2007-10-03)
@~changelog_1220_h2
#Version 1.0.59 (2007-10-03)
@~changelog_1220_li
#If the process was killed while the database was running, sometimes the database could not be opened ('double allocation') except when the system property h2.check was set to false. Fixed.
@~changelog_1228_li
#The Console did not refresh the table list if the CREATE TABLE statement started with a comment. Fixed.
@~changelog_1234_h2
#Version 1.0.58 (2007-09-15)
@~changelog_1236_h2
#Version 1.0.58 (2007-09-15)
@~changelog_1236_li
#Optimization for independent subqueries. For example, this query can now an index: SELECT * FROM TEST WHERE ID = (SELECT MAX(ID) FROM TEST) This can be disabled by setting the system property h2.optimizeSubqueryCache to false.
@~changelog_1244_li
#The documentation indexer does no longer index Japanese pages. If somebody knows how to split Japanese into words please post it.
@~changelog_1259_h2
#Version 1.0.57 (2007-08-25)
@~changelog_1261_h2
#Version 1.0.57 (2007-08-25)
@~changelog_1261_li
#The version number is now major.minor.micro where micro is the build number. Not all version are public, so there may be gaps in the micro. The minor changes when there is a file format change.
@~changelog_1269_li
#Creating more than 10 views that depend on each other was very slow. Reconnecting was slow as well. Fixed.
@~features_1030_h2
特徴一覧
@~features_1031_h3
主な特徴
@~features_1032_li
非常に高速なデータベースエンジン
@~features_1039_h3
追加された特徴
@~features_1040_li
ディスクベースデータベース、またはインメモリデータベースと、テーブル、読み取り専用データベースをサポート、テンポラリテーブル
@~features_1046_h3
SQLサポート
@~features_1047_li
複数のスキーマ、インフォメーションスキーマをサポート
@~features_1057_h3
セキュリティの特徴
@~features_1058_li
SQLインジェクション問題の解決を含む
@~features_1065_h3
他の特徴とツール
@~features_1066_li
省スペース (1MBより小さい)、少ないメモリが必要条件
@~features_1081_h2
#Limitations
@~features_1082_p
#For the list of limitations, please have a look at the road map page at: <a href="http://groups.google.com/group/h2-database/web/roadmap">http://groups.google.com/group/h2-database/web/roadmap</a>
@~features_1083_h2
他のデータベースエンジンと比較する
@~features_1084_th
特徴
@~features_1090_td
Pure Java
@~features_1168_h3
DerbyとHSQLDB
@~features_1169_p
予期しない過程での終了後 (例:電源異常)、H2はユーザーの相互作用なしで安全に、自動的に回復することができます。DerbyとHSQLDBでは、いくつかの手動のステップが必要とされます ('Another instance of Derby may have already booted the database' / 'The database is already in use by another process')。
@~features_1170_h3
DaffodilDbとOne$Db
@~features_1171_p
このデータベースの開発は止まっているようです。最後のリリースは2006年2月でした。
@~features_1172_h3
McKoi
@~features_1173_p
このデータベースの開発は止まっているようです。最後のリリースは2004年8月でした。
@~features_1174_h2
#H2 in Use
@~features_1175_p
#For a list of applications that work with or use H2, see: <a href="links.html">Links</a> .
@~features_1176_h2
接続モード
@~features_1177_p
以下の接続モードがサポートされています:
@~features_1178_li
#Embedded mode (local connections using JDBC)
@~features_1181_h3
エンベッドモード
@~features_1182_p
#In embedded mode, an application opens a database from within the same JVM using JDBC. This is the fastest and easiest connection mode. The disadvantage is that a database may only be open in one virtual machine (and class loader) at any time. As in all modes, both persistent and in-memory databases are supported. There is no limit on the number of database open concurrently, or on the number of open connections.
@~features_1183_h3
#Remote Mode
@~features_1184_p
#When using the remote mode (sometimes called client/server mode), an application opens a database remotely using the JDBC or ODBC API. A server needs to be started within the same or another virtual machine (or on another computer). Many applications can connect to the same database at the same time. The remote mode is slower than the embedded mode, because all data is transferred over TCP/IP. As in all modes, both persistent and in-memory databases are supported. There is no limit on the number of database open concurrently, or on the number of open connections.
@~features_1185_h3
#Mixed Mode
@~features_1186_p
#The mixed mode is a combination of the embedded and the remote mode. The main application connects to a database in embedded mode, but also starts a server so that other applications (running in different virtual machines) can concurrently access the same data.
@~features_1187_h2
データベースURL概要
@~features_1188_p
#This database supports multiple connection modes and connection settings. This is achieved using different database URLs. Settings in the URLs are not case sensitive.
@~features_1189_th
トピック
@~features_1191_td
エンベッド (ローカル) 接続
@~features_1242_h3
エンベッド (ローカル) データベースに接続
@~features_1243_p
#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 directory is used as a starting point. The case sensitivity of the path and database name depend on the operating system, however it is recommended to use lowercase letters only. The database name must be at least three characters long (a limitation of File.createTempFile). To point to the user home directory, use ~/, as in: jdbc:h2:~/test.
@~features_1244_h2
メモリオンリーデータベース
@~features_1245_p
特定の使用方法では (例: rapid prototyping、テスト、高パフォーマンスオペレーション、読み取り専用データベース)、データは持続する (変化する) 必要は全くないかもしれません。このデータベースは、データが持続しない際にメモリオンリーモードをサポートします。
@~features_1250_h2
暗号化ファイルと共にデータベースへ接続する
@~features_1251_p
ファイルを暗号化して使用するためには、暗号化アルゴリズム ("cipher") とファイルパスワードを指定することが必要です。アルゴリズムは、接続パラメータを使用することで指定される必要があります。二つのアルゴリズムがサポートされています: XTEAとAES です。ファイルパスワードは、ユーザーパスワードの前のパスワードフィールドで指定されます。ファイルパスワードとユーザーパスワードの間に、シングルスペースを加えることが必要です; ファイルパスワードそのものにはスペースは含まれません。ファイルパスワードは (ユーザーパスワードも同様) 大文字と小文字を区別しています。こちらがパスワードの暗号化されたデータベースに接続するための例です:
@~features_1252_h2
データベースファイルロック
@~features_1253_p
データベースが開かれるときはいつも、データベースが使用中であると他のプロセスに合図するためにロックファイルが作成されます。もしデータベースが閉じられるか、データベースを開いたプロセスが終了するなら、ロックファイルは削除されます。
@~features_1255_li
デフォルトメソッドは "file" で、データベースファイルを保護するために、watchdogスレッドを使用します。watchdogは、ロックファイルをそれぞれ秒単位で読み込みます。
@~features_1258_p
異なったファイルロックメソッドでデータベースを開くには、"FILE_LOCK" パラメータを使用します。以下のコードは "socket" ロックメソッドのデータベースを開きます:
@~features_1261_h2
すでに存在する場合のみ、データベースを開く
@~features_1262_p
デフォルトでは、アプリケーションが <code>DriverManager.getConnection(url,...)</code> を呼び出し、URLで指定されたデータベースがまだ存在しない時、 新しい (空の) データベースが作成されます。ある状況では、もしすでにデータベースが存在するのであれば、新しいデータベースの作成を制限して、データベースを開くだけにした方がよいでしょう。<code>;ifexists=true</code> をURLに追加することによって可能になります。このケースでは、もしデータベースがまだ存在していなければ、接続しようとした時に例外が投げられます。接続は、データベースがすでに存在する時のみ成功します。完全なURLは次のようです:
@~features_1263_h2
データベースを終了する
@~features_1264_h3
データベースの遅延終了
@~features_1265_p
通常、データベースへの最後の接続が閉じられた時、データベースが終了されます。一部状況では、例えば、可能ではない時に接続をつなげたままにしておくことは、アプリケーションを減速させます。SQLステートメントの SET DB_CLOSE_DELAY &lt;seconds&gt; でデータベースの自動終了を遅らせるか、または無効にすることができます。secondsには、最後の接続が閉じられた後データベースを接続したままの状態に保つため、秒数を指定します。例えば、次のステートメントはデータベースを10秒間開かれた状態に保ちます:
@~features_1267_h3
VMが終了した時、データベースを終了しない
@~features_1268_p
デフォルトでは、データベースは最後の接続が閉じられた時に終了されます。しかし、最後の接続が決して閉じられなければ、仮想マシンが正常に終了する時にデータベースは閉じられます。これはshutdown hookを使うことによって行われます。一部状況では、データベースはこのケースで終了されてはいけません。例えば、仮想マシンが終了している時にデータベースがまだ使われている場合です (例として、シャットダウンプロセスをデータベースに保存するため)。このケースでは、データベースURLでデータベースの自動終了を無効にすることが可能です。最初の接続は (ひとつはデータベースを開始するもの) データベースURLにオプションを設定する必要があります (設定を後で変更することは不可能です)。VMが終了する時、データベースの終了を無効にするためのデータベースURLです:
@~features_1269_h2
ログインデックスの修正
@~features_1270_p
通常、インデックスファイルの変更はパフォーマンスのために記録されません。データベースを開いた時に、インデックスファイルが破損しているか、無くなっていたら、データから作り直されます。停電、またはプログラムの異常終了のため、データベースが正しく終了されなかった時、インデックスファイルは破損されます。一部状況では、例えば、非常に大きなデータベースを使用している時 (数百MB以上)、インデックスファイルが再作成されるのにはとても時間がかかります。それらの状況では、インデックスファイルの変更を記録しておいた方がよいでしょう。そうすることによって、破損されたインデックスファイルの回復が速くなります。ログインデックスの修正を可能にするためには、jdbc:h2:~/test;LOG=2 のように、URLに LOG=2 を追加して下さい。接続する時に、この設定が指定されます。このオプションを使用する時、データベースのアップデートパフォーマンスは低下するでしょう。
@~features_1271_h3
未知の設定を無視
@~features_1272_p
データベースに接続する時、いくつかのアプリケーションが (例えば、OpenOffice.org Base) いくつかの追加パラメータを渡します。なぜそれらのパラメータが渡されるのかは知られていません。PREFERDOSLIKELINEENDS と IGNOREDRIVERPRIVILEGES はパラメータの例で、それらは、OpenOffice.orgとの互換性を改良するために単に無視されます。もしデータベースに接続する時、アプリケーションが他のパラメータを渡していたら、通常データベースは、 パラメータはサポートされていません、という例外を投げます。データベースURLに ;IGNORE_UNKNOWN_SETTINGS=TRUE を追加することで、このようなパラメータを無視することが可能です。
@~features_1273_h3
接続が開始された時に他の設定を変更する
@~features_1274_p
すでに記述された設定に加えて (暗号、ファイルロック、データベースの存在、ユーザー、パスワード)、他のデータベースの設定は、データベースURLの中で渡すことができます。<CODE>SET setting value</CODE>ステートメントを接続直後に実行するのと同じように 、<CODE>setting=value</CODE> をURLの最後に追加します。このデータベースによってサポートされている設定の一覧は、SQL文法のドキュメントをご覧下さい。
@~features_1275_h2
カスタムファイル アクセスモード
@~features_1276_p
#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). To open a database in read-only mode if the files are not read-only, use ACCESS_MODE_DATA=r. Also supported are 'rws' and 'rwd'. The access mode used for log files is set via ACCESS_MODE_LOG; for data and index files use ACCESS_MODE_DATA. These settings must be specified in the database URL:
@~features_1278_h2
複数の接続
@~features_1279_h3
同時に複数のデータベースを開く
@~features_1280_p
アプリケーションは、同じデータベースへの複数の接続を含め、複数のデータベースを同時に開くことができます。開くデータベースの数は、利用可能なメモリによってのみ制限されています。
@~features_1281_h3
>同じデータベースへの複数の接続: クライアント/サーバー
@~features_1282_p
異なったプロセス、またはコンピューターから同時に同じデータベースにアクセスしたい場合、クライアント/サーバー モードを使用することが必要です。このケースでは、ひとつのプロセスがサーバーとして動作し、他のプロセスは (同様に他のコンピューターに属することができます) TCP/IP (または改善されたセキュリティ用のTCP/IPの上のSSL/TLS) を通してサーバーに接続します。
@~features_1283_h3
マルチスレッドサポート
@~features_1284_p
このデータベースは安全なマルチスレッドです。これは、アプリケーションがマルチスレッドならば、データベースへの同時アクセスに関して心配する必要がない、ということを意味しています。本質的に、同じデータベースへのほとんどのリクエストは同時に動きます。アプリケーションは、同時に同じデータベースにアクセスするマルチスレッドを使用することができますが、ひとつのスレッドが処理時間の長いクエリーを実行しているなら、他のスレッドは待つ必要があります。
@~features_1285_h3
ロック、ロックタイムアウト、デッドロック
@~features_1286_p
データの一貫した状態をそれぞれの接続に与えるために、データベースはテーブルレベルでのロックを使用します。二種類のロックがあります: リードロック (共有ロック) とライトロック (排他ロック) です。もし、接続がテーブルから読み込みたい場合で、テーブルにライトロックがない場合に、リードロックをテーブルに追加します。もしライトロックがあれば、この接続はロックを解除するために他の接続を待ちます。接続が指定された時間までにロックを取得できなければ、ロックタイムアウトの例外が投げられます。
@~features_1288_th
ロックの種類
@~features_1290_td
Read
@~features_1305_p
SQLコマンド SET LOCK_TIMEOUT &lt;milliseconds&gt; を使用して、ロックタイムアウトの例外が投げられるまでの秒数を、それぞれの接続ごとに別々に設定することができます。SQLコマンド SET DEFAULT_LOCK_TIMEOUT &lt;milliseconds&gt; を使用して、初期のロックタイムアウト (新しい接続に使用されるタイムアウト) を設定することができます。デフォルトのロックタイムアウトは永続的です。
@~features_1306_h2
データベースファイルレイアウト
@~features_1307_p
永続的なデータベースのために作成された多くのファイルがあります。一部のデータベースを除いて、全てのテーブルと (または) インデックスが自身のファイル内に保存されているわけではありません。その代りに、通常次のファイルのみが作成されます: データファイル、インデックスファイル、ログファイル、データベースロックファイル (データベースが使われている間のみ存在します)。それに加えて、ファイルはそれぞれの大きなオブジェクト (CLOB/BLOB) のために作成されます。各ライナーインデックスのためのファイル、大きなresult setのためのテンポラリーファイルです。データベーストレースオプションが有効の場合、トレースファイルが作成されます。次のファイルはデータベースによって作成されます:
@~features_1308_th
ファイル名
@~features_1311_td
test.data.db
@~features_1352_h3
データベースファイルの移動と改名
@~features_1353_p
データベースの名前と位置は、データベース名の中には保存されません。
@~features_1356_h3
バックアップ
@~features_1357_p
データベースが閉じられている時、データベースファイルのバックアップをとることが可能です。インデックスファイルはバックアップをとる必要はありません。なぜなら、インデックスファイルは冗長なデータを含み、もしファイルが存在しなければ自動的に再作成されるからです。
@~features_1359_h2
ログとリカバリー
@~features_1360_p
データベースでデータが修正され、それらの変更がコミットされた時はいつでも、変更はディスクに記録されます (インメモリオブジェクトを除いて)。データファイル自体への変更は通常、ディスクアクセスを最適化するために後で書かれています。もし電源異常があった場合、データファイルとインデックスファイルはアップデートされません。しかし、変更がログファイルに書かれていれば、次回データベースを開いた時に、ログファイルに書かれた変更は自動的に再び適用されます。
@~features_1364_h2
互換性
@~features_1365_p
#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:
@~features_1367_h3
互換モード
@~features_1368_p
#For certain features, this database can emulate the behavior of specific databases. Not all features or differences of those databases are implemented. Currently, this feature is mainly used for randomized comparative testing (where random statements are executed against multiple databases and the results are compared). The mode can be changed by specifying the mode in the database URL, or using the SQL statement SET MODE. To use the HSQLDB mode, you can use the database URL <code>jdbc:h2:~/test;MODE=HSQLDB</code> or the SQL statement <code>SET MODE HSQLDB</code> . Here is the list of currently supported modes and the difference to the regular mode:
@~features_1369_th
モード
@~features_1371_td
PostgreSQL
@~features_1377_h2
トレースオプションを使用する
@~features_1378_p
アプリケーション内の問題を見つけるために、時々、何のデータベースオペレーションがどこで実行されているかを知るのは良い方法です。このデータベースは次のトレースの特徴を提供します:
@~features_1379_li
System.out と (または) ファイルをトレースする
@~features_1384_h3
トレースオプション
@~features_1385_p
トレースオプションを可能にする簡単な方法は、データベースURLにトレースオプションを設定することです。二つの設定があり、ひとつは、System.out (TRACE_LEVEL_SYSTEM_OUT) トレーシングで、もうひとつはファイルトレーシング(TRACE_LEVEL_FILE)です。トレースレベルは、0 が OFF、1 が ERROR (デフォルト)、2 が INFO で 3 が DEBUGです。両方のレベルがDEBUGに設定されたデータベースURLです:
@~features_1387_h3
トレースファイルの最大サイズを設定
@~features_1388_p
高いトレースレベルを使用する時、トレースファイルは早くサイズが非常に大きくなります。SQLステートメント <CODE>SET TRACE_MAX_FILE_SIZE maximumFileSizeInMB</CODE> を実行することによりファイルのサイズを制限することができます。ログファイルが制限を超えたら、ファイルは ".old" にファイル名を変えて、新しいファイルが作成されます。もしもうひとつの .oldファイルが存在する場合は、それは削除されます。デフォルトの設定は16 MBです。例:
@~features_1389_h3
Javaコード生成
@~features_1390_p
トレースレベルをINFOかDEBUGに設定した時、同様にJavaのソースコードが生成されるので、問題はより簡単に再生されます。トレースファイルはこのようなものです:
@~features_1394_h3
手動でファイルを作成し、ランタイムでトレースオプションを可能にする
@~features_1395_p
時々、アプリケーション、またはデータベースのURLを変えられない、変えたくない場合があります。このような場合に、ランタイムであっても (データベースの接続が開かれている間) トレースモードを可能にできる方法がまだあります。必要なことは、データベースファイルが保存されているディレクトリに特別なファイルを作るだけです。データベースエンジンは、このファイルが存在する場合に (ステートメントが実行されている間のみ) 4秒ごとにチェックしています。このファイル名は、データベース名 プラス ".trace.db.start" です。この特徴はデータベースが暗号化されている場合は無効になります。
@~features_1397_h2
読み取り専用データベース
@~features_1398_p
データベースファイルが読み取り専用なら、同様にデータベースも読み取り専用です。このデータベースで新しいテーブルを作成したり、データを追加したり変更したりすることはできません。SELECTステートメントのみ許可されています。読み取り専用データベースを作成するには、データベースを終了してログファイルを小さくします。ログファイルを削除してはいけません。そして、オペレーティングシステムを使用してデータベースファイルを読み取り専用にします。これでデータベースを開くと、読み取り専用になっています。アプリケーションが、データベースが読み取り専用であることを判断する方法は二つあります: Connection.isReadOnly() を呼ぶか、SQLステートメント CALL READONLY() を実行します。
@~features_1399_h2
#Read Only Databases in Zip or Jar File
@~features_1400_p
#To create a read-only database in a zip, 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:
@~features_1403_h2
バイナリーとテキストストレージフォーマット
@~features_1404_p
このデータベースエンジンは、バイナリーとテキストストレージフォーマットの両方をサポートしています。バイナリーはより高速ですが、テキストストレージフォーマットは同様に役立つ場合があります。例えば、データベースエンジンをデバッグする場合です。データベースがすでに存在するなら、ストレージフォーマットは自動的に推奨されます。新しいデータベースはデフォルトでバイナリーストレージフォーマットで作られます。テキストストレージフォーマットで新しいデータベースを作成するには、データベースURLに、パラメータ STORAGE=TEXT が含まれていなければなりません。例: jdbc:h2:~/test;STORAGE=TEXT
@~features_1405_h2
ディスクスペースが少ない状況での正しい取り扱い
@~features_1406_p
データベースは、利用可能なディスクスペースが少なくなっている状況に対処することができます。データベースを開始する時はいつも、"emergency space" ファイルが作られ (サイズは 1 MB)、利用可能なスペースがもうない場合には、ファイルは小さくなります。利用可能なスペースが 128 KB以下になった場合、データベースは特別な読み取り専用モードになり、全ての書き込み操作はもはや許可されません: この時点から全ての書き込み操作は、"No disk space available" を例外に投げます。通常のオペレーションモードに戻るためには、最初にデータベースへの全ての接続を終了し、スペースを空ける必要があります。
@~features_1408_h3
破損したデータベースを開く
@~features_1412_p
値は生成されているので、データを挿入する時、カラムのupper-caseバージョンのための値を指定する必要はありません (許可されていません)。 しかし、テーブルを呼ぶ時、このカラムを使用することはできます。:
@~features_1413_h2
多次元インデックス
@~features_1415_p
現在、Z-order (N-order または Morton-order とも呼ばれています) が使用されています; Hilbert curveも使用できますが、実装はより複雑です。多次元の値を変換するアルゴリズムは、bit-interleavingと呼ばれています。B-Treeインデックス (通常は computed columnを使用します)を使用することで、スカラーの値はインデックスをつけられます。
@~features_1418_h3
安全なパスワードを使用する
@~features_1420_p
i'sE2rtPiUKtT (もしトリックを知っていれば、このパスワードは覚えやすいものです)
@~features_1421_h3
パスワード: Stringの代わりにChar Arraysを使用する
@~features_1424_p
このデータベースは、ユーザーパスワードとファイルパスワードを認証するために、Stringの代わりにchar arrayを使用することをサポートしています。次のコードはこのように使用されます:
@~features_1425_p
このサンプルでは、パスワードはアプリケーションでのハードコードで、もちろん安全ではありません。しかし、Java Swingはchar arrayを使用してパスワードを得る方法をサポートしています (JPasswordField)。
@~features_1426_h3
ユーザー名 と (または) パスワードをURLで認証する
@~features_1428_h2
ユーザー定義の関数とストアドプロシージャ
@~features_1432_h3
データタイプマッピング関数
@~features_1433_p
"int" のような non-nullable (NULL可能ではない) パラメータを受け入れる関数は、パラメータのうちひとつがNULLであるなら呼ばれないでしょう。このケースでは、NULLの値は結果として使用されます。このケースで関数を呼び出したいのなら、"int" の代わりに "java.lang.Integer" を使用する必要があります。
@~features_1434_h3
接続を必要とする関数
@~features_1435_p
もしJava関数の最初のパラメータが java.sql.Connection なら、データベースへの接続は与えられています。返す前にこの接続を閉じる必要はありません。
@~features_1436_h3
例外を投げる関数
@~features_1438_h3
Result Setを返す関数
@~features_1439_p
関数はresult setを返します。このような関数はCALLステートメントと一緒に呼ばれます:
@~features_1440_h3
SimpleResultSetを使用する
@~features_1441_p
result setを返す関数は、SimpleResultSetツールを使用して最初からこのresult setを作成することができます:
@~features_1442_h3
関数をテーブルとして使用する
@~features_1443_p
result setを返す関数はテーブルのようになれます。しかし、このケースでは関数は少なくとも二回は呼ばれます: 最初はカラム名を集めるために構文解析している間です (コンパイル時に未知のところでパラメータはNULLに設定)。そして、データを取得するためにステートメントを実行している間です (これが結合なら繰り返されます)。関数がカラム一覧を取得するためだけに呼ばれたのなら、関数を認証する接続URLは jdbc:columnlist:connection です。そうでなければ、接続URLは jdbc:default:connection です。
@~features_1444_h2
トリガー
@~features_1445_p
このデータベースは、行が更新、挿入、または削除された前後に呼ばれるJavaトリガーをサポートしています。トリガーは複雑な一貫性チェックか、データベース内の関連したデータをアップデートするのに使用されます。マテリアライズドビューをシミュレートするためにトリガーを使用することも可能です。完全なサンプルアプリケーションは src/test/org/h2/samples/TriggerSample.java をご覧下さい。Javaトリガーは、インターフェイス org.h2.api.Trigger を実装しなければなりません:
@~features_1447_p
トリガーはSQL Exceptionを投げることによって、変更を禁止させることができます。
@~features_1448_h2
データベースをコンパクトにする
@~features_1449_p
データベースファイルの空のスペースは自動的に再利用されます。インデックスを再構築するもっとも簡単な方法は、データベースが閉じられている間に .index.db ファイルを削除します。しかし、一部状況では (例えば、データベースの多数のデータを削除した後)、データベースのサイズを縮小したい場合があります (データベースをコンパクトにする)。そのためのサンプルです:
@~links_1014_h2
#Project Pages
@~links_1015_a
#Ohloh
@~links_1021_h2
#Products and Projects
@~links_1022_a
#Apache Cayenne
@~links_1023_p
#Open source persistence framework providing object-relational mapping (ORM) and remoting services.
@~links_1024_a
#Apache Jackrabbit
@~links_1025_p
#Open source implementation of the Java Content Repository API (JCR).
@~links_1026_a
#Apache OpenJPA
@~links_1027_p
#Open source implementation of the Java Persistence API (JPA).
@~links_1028_a
#AppFuse
@~links_1029_p
#Helps building web applications.
@~links_1030_a
#Blojsom
@~links_1031_p
#Java-based multi-blog, multi-user software package (Mac OS X Weblog Server).
@~links_1032_a
#Bookmarks Portlet
@~links_1033_p
#JSR 168 compliant bookmarks management portlet application.
@~links_1034_a
#Claros inTouch
@~links_1035_p
#Ajax communication suite with mail, addresses, notes, IM, and rss reader.
@~links_1036_a
#CrashPlan PRO Server
@~links_1037_p
#Easy and cross platform backup solution for business and service providers.
@~links_1038_a
#DB Solo
@~links_1039_p
#SQL query tool.
@~links_1040_a
#DbVisualizer
@~links_1041_p
#Database tool.
@~links_1042_a
#Execute Query
@~links_1043_p
#Database utility written in Java.
@~links_1044_a
#Flux
@~links_1045_p
#Java job scheduler, file transfer, workflow, and BPM.
@~links_1046_a
#Golden T Studios
@~links_1047_p
#Fun-to-play games with a simple interface.
@~links_1048_a
#Group Session
@~links_1049_p
#Open source web groupware.
@~links_1050_a
#HA-JDBC
@~links_1051_p
#High-Availability JDBC: A JDBC proxy that provides light-weight, transparent, fault tolerant clustering capability to any underlying JDBC driver.
@~links_1052_a
#HenPlus
@~links_1053_p
#HenPlus is a SQL shell written in Java.
@~links_1054_a
#Hibernate
@~links_1055_p
#Relational persistence for idiomatic Java (O-R mapping tool).
@~links_1056_a
#Hibicius
@~links_1057_p
#Online Banking Client for the HBCI protocol.
@~links_1058_a
#H2 Spatial
@~links_1059_p
#A project to add spatial functions to H2 database.
@~links_1060_a
#JAMWiki
@~links_1061_p
#Java-based Wiki engine.
@~links_1062_a
#Jala
@~links_1063_p
#Open source collection of JavaScript modules.
@~links_1064_a
#JavaPlayer
@~links_1065_p
#Pure Java MP3 player.
@~links_1066_a
#JMatter
@~links_1067_p
#Framework for constructing workgroup business applications based on the Naked Objects Architectural Pattern.
@~links_1068_a
#JPOX
@~links_1069_p
#Java persistent objects.
@~links_1070_a
#Liftweb
@~links_1071_p
#A Scala-based, secure, developer friendly web framework.
@~links_1072_a
#LiquiBase
@~links_1073_p
#A tool to manage database changes and refactorings.
@~links_1074_a
#Luntbuild
@~links_1075_p
#Build automation and management tool.
@~links_1076_a
#MiniConnectionPoolManager
@~links_1077_p
#A lightweight standalone JDBC connection pool manager.
@~links_1078_a
#Mr. Persister
@~links_1079_p
#Simple, small and fast object relational mapping.
@~links_1080_a
#Myna Application Server
@~links_1081_p
#Java web app that provides dynamic web content and Java libraries access from JavaScript.
@~links_1082_a
#MyTunesRss
@~links_1083_p
#MyTunesRSS lets you listen to your music wherever you are.
@~links_1084_a
#NCGC CurveFit
@~links_1085_p
#From: NIH Chemical Genomics Center, National Institutes of Health, USA. An open source application in the life sciences research field. This application handles chemical structures and biological responses of thousands of compounds with the potential to handle million+ compounds. It utilizes an embedded H2 database to enable flexible query/retrieval of all data including advanced chemical substructure and similarity searching. The application highlights an automated curve fitting and classification algorithm that outperforms commercial packages in the field. Commercial alternatives are typically small desktop software that handle a few dose response curves at a time. A couple of commercial packages that do handle several thousand curves are very expensive tools (&gt;60k USD) that require manual curation of analysis by the user; require a license to Oracle; lack advanced query/retrieval; and the ability to handle chemical structures.
@~links_1086_a
#Orion
@~links_1087_p
#J2EE Application Server.
@~links_1088_a
#P5H2
@~links_1089_p
#A library for the <a href="http://www.processing.org">Processing</a> programming language and environment.
@~links_1090_a
#Phase-6
@~links_1091_p
#A computer based learning software.
@~links_1092_a
#PolePosition
@~links_1093_p
#Open source database benchmark.
@~links_1094_a
#Scriptella
@~links_1095_p
#ETL (Extract-Transform-Load) and script execution tool.
@~links_1096_a
#Sesar
@~links_1097_p
#Dependency Injection Container with Aspect Oriented Programming.
@~links_1098_a
#SemmleCode
@~links_1099_p
#Eclipse plugin to help you improve software quality.
@~links_1100_a
#Shellbook
@~links_1101_p
#Desktop publishing application.
@~links_1102_a
#Signsoft intelliBO
@~links_1103_p
#Persistence middleware supporting the JDO specification.
@~links_1104_a
#SmartFoxServer
@~links_1105_p
#Platform for developing multiuser applications and games with Macromedia Flash.
@~links_1106_a
#SQL Developer
@~links_1107_p
#Universal Database Frontend.
@~links_1108_a
#SQL Workbench/J
@~links_1109_p
#Free DBMS-independent SQL tool.
@~links_1110_a
#SQuirreL SQL Client
@~links_1111_p
#Graphical tool to view the structure of a database, browse the data, issue SQL commands etc.
@~links_1112_a
#SQuirreL DB Copy Plugin
@~links_1113_p
#Tool to copy data from one database to another.
@~links_1114_a
#StorYBook
@~links_1115_p
#A summary-based tool for novelist and script writers. It helps to keep the overview over the various traces a story has.
@~links_1116_a
#StreamCruncher
@~links_1117_p
#Event (stream) processing kernel.
@~links_1118_a
#Tamava
@~links_1119_p
#Newsgroups Reader.
@~links_1120_a
#Tune Backup
@~links_1121_p
#Easy-to-use backup solution for your iTunes library.
@~links_1122_a
#Web of Web
@~links_1123_p
#Collaborative and realtime interactive media platform for the web.
@~links_1124_a
#Werkzeugkasten
@~links_1125_p
#Minimum Java Toolset.
@~links_1126_a
#Volunteer database
@~links_1127_p
#A database front end to register volunteers, partnership and donation for a Non Profit organization.
@~roadmap_1025_li
#Document server mode, embedded mode, web app mode, dual mode (server+embedded)
@~roadmap_1027_h2
#Priority 2
@~roadmap_1328_li
#Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
@~roadmap_1331_li
#Maven: upload source code and javadocs as well.
@~roadmap_1332_li
#Write (log) to system table before adding to internal data structures.
@~roadmap_1333_li
#Support very large deletes and updates.
@~roadmap_1334_li
#Doclet (javadocs): constructors are not listed.
@~roadmap_1335_li
#Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
@~roadmap_1336_li
#Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
@~roadmap_1337_li
#MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
@~roadmap_1338_li
#Support CREATE TEMPORARY LINKED TABLE.
@~roadmap_1339_li
#MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
@~roadmap_1340_li
#Oracle compatibility: support NLS_DATE_FORMAT.
@~roadmap_1341_li
#Support flashback queries as in Oracle.
@~roadmap_1342_li
#Import / Export of fixed with text files.
@~roadmap_1343_li
#Support for OUT parameters in user-defined procedures.
@~roadmap_1344_h2
#Not Planned
@~roadmap_1344_li
#Support for OUT parameters in user-defined procedures.
@~roadmap_1345_h2
#Not Planned
@~roadmap_1345_li
#Integrate tools in H2 Console
@~roadmap_1346_li
#String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
@~roadmap_1347_li
#String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
@~roadmap_1348_li
#SysProperties: change everything to H2_...
@~roadmap_1349_li
#Use FilterIn / FilterOut putStream?
@~roadmap_1350_li
#Access rights: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
@~roadmap_1351_li
#Support NOCACHE table option (Oracle)
@~roadmap_1352_li
#Use ant 'get' to download dependencies
@~roadmap_1353_li
#Index usage for UPDATE ... WHERE .. IN (SELECT...)
@~roadmap_1354_li
#The RunScript tool should support interactive mode (reading from system in). Password using a second thread.
@~roadmap_1355_li
#Add regular javadocs to the homepage.
@~roadmap_1356_li
#The database should be kept open for a longer time when using the server mode.
@~roadmap_1357_li
#Javadocs: for each tool, add a copy &amp; paste sample in the class level.
@~roadmap_1358_li
#Add google site search to web page.
@~roadmap_1359_li
#Javadocs: add @author tags.
@~roadmap_1360_li
#SET LOG_SYSTEM {NATIVE|LOG4J|COMMONS|DRIVER_MANAGER}
@~roadmap_1361_li
#Fluent API for tools: Server.createTcpServer().setPort(9081).setPassword(password).start();
@~roadmap_1362_li
#MySQL compatibility: real SQL statements for SHOW TABLES, DESCRIBE TEST (then remove from Shell)
@~roadmap_1363_li
#Use a default delay of 1 second before closing a database.
@~roadmap_1364_li
#Maven: upload source code and javadocs as well.
@~roadmap_1365_li
#Write (log) to system table before adding to internal data structures.
@~roadmap_1366_li
#Support very large deletes and updates.
@~roadmap_1367_li
#Doclet (javadocs): constructors are not listed.
@~roadmap_1368_li
#Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
@~roadmap_1369_li
#Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
@~roadmap_1370_li
#MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
@~roadmap_1371_li
#Support CREATE TEMPORARY LINKED TABLE.
@~roadmap_1372_li
#MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
@~roadmap_1373_li
#Oracle compatibility: support NLS_DATE_FORMAT.
@~roadmap_1374_li
#Support flashback queries as in Oracle.
@~roadmap_1375_li
#Import / Export of fixed with text files.
@~roadmap_1376_h2
#Not Planned
@~roadmap_1376_li
#Import / Export of fixed with text files.
@~roadmap_1377_h2
#Not Planned
@~roadmap_1377_li
#Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
@~roadmap_1378_li
#HSQLDB (did) support this: select id i from test where i>0 (other databases don't). Supporting it may break compatibility.
@~roadmap_1379_li
#String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
@~roadmap_1380_li
#MySQL compatibility: SELECT @variable := x FROM SYSTEM_RANGE(1, 50);
@~roadmap_1381_li
#Oracle compatibility: support NLS_DATE_FORMAT.
@~roadmap_1382_li
#Support flashback queries as in Oracle.
@~roadmap_1383_h2
#Not Planned
@~roadmap_1384_li
#HSQLDB (did) support this: select id i from test where i>0 (other databases don't). Supporting it may break compatibility.
@~roadmap_1385_li
#String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
@~~roadmap_1345_li
#HSQLDB (did) support this: select id i from test where i>0 (other databases don't). Supporting it may break compatibility.
@~~roadmap_1376_li
#Support for OUT parameters in user-defined procedures.
@~~roadmap_1377_h2
#Not Planned
@~~roadmap_1377_li
#HSQLDB (did) support this: select id i from test where i>0 (other databases don't). Supporting it may break compatibility.
@~~roadmap_1379_li
#String.intern (so that Strings can be compared with ==) will not be used because some VMs have problems when used extensively.
......@@ -2284,39 +2284,39 @@ roadmap_1291_li=Translation\: use ${.} in help.csv
roadmap_1292_li=Translated .pdf
roadmap_1293_li=Cluster\: hot deploy (adding a node on runtime)
roadmap_1294_li=Test with PostgreSQL Version 8.2
roadmap_1295_li=Submit again to http\://www.docjar.com/
roadmap_1296_li=Website\: Don't use frames.
roadmap_1297_li=Try again with Lobo browser (pure Java)
roadmap_1298_li=Recovery tool\: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
roadmap_1299_li=RECOVER\=2 to backup the database, run recovery, open the database
roadmap_1300_li=Recovery should work with encrypted databases
roadmap_1301_li=Corruption\: new error code, add help
roadmap_1302_li=Space reuse\: after init, scan all storages and free those that don't belong to a live database object
roadmap_1303_li=SysProperties\: change everything to H2_...
roadmap_1304_li=Use FilterIn / FilterOut putStream?
roadmap_1305_li=Access rights\: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
roadmap_1306_li=Support NOCACHE table option (Oracle)
roadmap_1307_li=Index usage for UPDATE ... WHERE .. IN (SELECT...)
roadmap_1308_li=Add regular javadocs (using the default doclet, but another css) to the homepage.
roadmap_1309_li=The database should be kept open for a longer time when using the server mode.
roadmap_1310_li=Javadocs\: for each tool, add a copy &amp; paste sample in the class level.
roadmap_1311_li=Javadocs\: add @author tags.
roadmap_1312_li=Fluent API for tools\: Server.createTcpServer().setPort(9081).setPassword(password).start();
roadmap_1313_li=MySQL compatibility\: real SQL statements for SHOW TABLES, DESCRIBE TEST (then remove from Shell)
roadmap_1314_li=Use a default delay of 1 second before closing a database.
roadmap_1315_li=Maven\: upload source code and javadocs as well.
roadmap_1316_li=Write (log) to system table before adding to internal data structures.
roadmap_1317_li=Support very large deletes and updates.
roadmap_1318_li=Doclet (javadocs)\: constructors are not listed.
roadmap_1319_li=Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
roadmap_1320_li=Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
roadmap_1321_li=MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
roadmap_1322_li=Support CREATE TEMPORARY LINKED TABLE.
roadmap_1323_li=MySQL compatibility\: SELECT @variable \:\= x FROM SYSTEM_RANGE(1, 50);
roadmap_1324_li=Oracle compatibility\: support NLS_DATE_FORMAT.
roadmap_1325_li=Support flashback queries as in Oracle.
roadmap_1326_li=Import / Export of fixed with text files.
roadmap_1327_li=Support for OUT parameters in user-defined procedures.
roadmap_1295_li=Website\: Don't use frames.
roadmap_1296_li=Try again with Lobo browser (pure Java)
roadmap_1297_li=Recovery tool\: bad blocks should be converted to INSERT INTO SYSTEM_ERRORS(...), and things should go into the .trace.db file
roadmap_1298_li=RECOVER\=2 to backup the database, run recovery, open the database
roadmap_1299_li=Recovery should work with encrypted databases
roadmap_1300_li=Corruption\: new error code, add help
roadmap_1301_li=Space reuse\: after init, scan all storages and free those that don't belong to a live database object
roadmap_1302_li=SysProperties\: change everything to H2_...
roadmap_1303_li=Use FilterIn / FilterOut putStream?
roadmap_1304_li=Access rights\: add missing features (users should be 'owner' of objects; missing rights for sequences; dropping objects)
roadmap_1305_li=Support NOCACHE table option (Oracle)
roadmap_1306_li=Index usage for UPDATE ... WHERE .. IN (SELECT...)
roadmap_1307_li=Add regular javadocs (using the default doclet, but another css) to the homepage.
roadmap_1308_li=The database should be kept open for a longer time when using the server mode.
roadmap_1309_li=Javadocs\: for each tool, add a copy &amp; paste sample in the class level.
roadmap_1310_li=Javadocs\: add @author tags.
roadmap_1311_li=Fluent API for tools\: Server.createTcpServer().setPort(9081).setPassword(password).start();
roadmap_1312_li=MySQL compatibility\: real SQL statements for SHOW TABLES, DESCRIBE TEST (then remove from Shell)
roadmap_1313_li=Use a default delay of 1 second before closing a database.
roadmap_1314_li=Maven\: upload source code and javadocs as well.
roadmap_1315_li=Write (log) to system table before adding to internal data structures.
roadmap_1316_li=Support very large deletes and updates.
roadmap_1317_li=Doclet (javadocs)\: constructors are not listed.
roadmap_1318_li=Support direct lookup for MIN and MAX when using WHERE (see todo.txt / Direct Lookup).
roadmap_1319_li=Support other array types (String[], double[]) in PreparedStatement.setObject(int, Object);
roadmap_1320_li=MVCC should not be memory bound (uncommitted data is kept in memory in the delta index; maybe using a regular btree index solves the problem).
roadmap_1321_li=Support CREATE TEMPORARY LINKED TABLE.
roadmap_1322_li=MySQL compatibility\: SELECT @variable \:\= x FROM SYSTEM_RANGE(1, 50);
roadmap_1323_li=Oracle compatibility\: support NLS_DATE_FORMAT.
roadmap_1324_li=Support flashback queries as in Oracle.
roadmap_1325_li=Import / Export of fixed with text files.
roadmap_1326_li=Support for OUT parameters in user-defined procedures.
roadmap_1327_li=Support getGeneratedKeys to return multiple rows when used with batch updates. This is supported by MySQL, but not Derby. Both PostgreSQL and HSQLDB don't support getGeneratedKeys. Also support it when using INSERT ... SELECT.
roadmap_1328_h2=Not Planned
roadmap_1329_li=HSQLDB (did) support this\: select id i from test where i>0 (other databases don't). Supporting it may break compatibility.
roadmap_1330_li=String.intern (so that Strings can be compared with \=\=) will not be used because some VMs have problems when used extensively.
......
......@@ -84,7 +84,7 @@ public class Constants {
/**
* The build date is updated for each public release.
*/
private static final String BUILD_DATE = "2008-04-30";
private static final String BUILD_DATE = "2008-05-10";
/**
* The TCP protocol version number 5. This protocol is used by the TCP
......
......@@ -13,6 +13,50 @@ INSERT INTO CHANNEL VALUES('H2 Database Engine' ,
CREATE TABLE ITEM(ID INT PRIMARY KEY, TITLE VARCHAR, ISSUED TIMESTAMP, DESC VARCHAR);
INSERT INTO ITEM VALUES(42,
'New version available: 1.0.72 (2008-05-10)', '2008-05-10 12:00:00',
$$A new version of H2 is available for <a href="http://www.h2database.com">download</a>.
(You may have to click 'Refresh').
<br />
<b>Changes and new functionality:</b>
<ul><li>SLF4J is now supported by using adding TRACE_LEVEL_FILE=4
to the database URL.
</li><li>A subset of the PostgreSQL 'dollar quoting' feature is now supported.
</li><li>Updates made to updatable rows are now visible within the same result set.
DatabaseMetaData.ownUpdatesAreVisible now returns true.
</li><li>ParameterMetaData now returns the correct data
for INSERT and UPDATE statements.
</li><li>Shell tool: DESCRIBE now supports an schema name.
</li><li>The Shell tool now uses java.io.Console to read the password
when using JDK 1.6
</li><li>The Japanese translation of the error messages and the H2 Console
has been completed by Masahiro Ikemoto (Arizona Design Inc.)
</li><li>Statements can now be cancelled remotely
(when using remote connections).
</li><li>Triggers are no longer executed when executing an changing the table
structure (ALTER TABLE).
</li></ul>
<b>Bugfixes:</b>
<ul><li>Some databases could not be opened when appending
;RECOVER=1 to the database URL.
</li><li>The recovery tool did not work if the table name contained spaces
or if there was a comment on the table.
</li><li>When setting BLOB or CLOB values larger than 65 KB using
a remote connection, temporary files were kept on the client
longer than required (until the connection was closed or the
object is garbage collected). Now they are removed as soon
as the PreparedStatement is closed, or when the value is
overwritten.
</li><li>When using read-only databases and setting LOG=2, an exception
was written to the trace file when closing the database. Fixed.
</li></ul>
For details, see the 'Change Log' at
http://www.h2database.com/html/changelog.html
<br />
For future plans, see the 'Roadmap' page at
http://www.h2database.com/html/roadmap.html
$$);
INSERT INTO ITEM VALUES(41,
'New version available: 1.0.71 (2008-04-25)', '2008-04-25 12:00:00',
'A new version of H2 is available for <a href="http://www.h2database.com">download</a>.
......
......@@ -211,18 +211,6 @@ Add where required // TODO: change in version 1.1
http://www.w3schools.com/sql/
History:
When setting BLOB or CLOB values larger than 65 KB using
a remote connection, temporary files were kept on the client
longer than required (until the connection was closed or the
object is garbage collected). Now they are removed as soon
as the PreparedStatement is closed, or when the value is
overwritten.
Statements can now be cancelled remotely
(when using remote connections).
The Shell tool now uses java.io.Console to read the password
when using JDK 1.6
When using read-only databases and setting LOG=2, an exception
was written to the trace file when closing the database. Fixed.
Roadmap:
......
......@@ -25,6 +25,34 @@ public class Build extends BuildBase {
docs();
}
public void benchmark() {
download("ext/hsqldb-1.8.0.7.jar",
"http://repo1.maven.org/maven2/hsqldb/hsqldb/1.8.0.7/hsqldb-1.8.0.7.jar",
"20554954120b3cc9f08804524ec90113a73f3015");
download("ext/derby-10.4.1.3.jar",
"http://repo1.maven.org/maven2/org/apache/derby/derby/10.4.1.3/derby-10.4.1.3.jar",
"01c19aaea2e971203f410c5263214a890f340342");
download("ext/postgresql-8.3-603.jdbc4.jar",
"http://repo1.maven.org/maven2/postgresql/postgresql/8.3-603.jdbc4/postgresql-8.3-603.jdbc4.jar",
"c1545d956cc2013e8623f7cbc4de320be80ac646");
download("ext/mysql-connector-java-5.1.6.jar",
"http://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.6/mysql-connector-java-5.1.6.jar",
"380ef5226de2c85ff3b38cbfefeea881c5fce09d");
String cp = "bin" + File.pathSeparator + "bin/h2.jar" + File.pathSeparator +
"ext/hsqldb-1.8.0.7.jar" + File.pathSeparator +
"ext/derby-10.4.1.3.jar" + File.pathSeparator +
"ext/postgresql-8.3-603.jdbc4.jar" + File.pathSeparator +
"ext/mysql-connector-java-5.1.6.jar";
exec("java", new String[]{"-Xmx128m", "-cp", cp, "org.h2.test.bench.TestPerformance", "-init", "-db", "1"});
exec("java", new String[]{"-Xmx128m", "-cp", cp, "org.h2.test.bench.TestPerformance", "-db", "2"});
exec("java", new String[]{"-Xmx128m", "-cp", cp, "org.h2.test.bench.TestPerformance", "-db", "3", "-out", "pe.html"});
exec("java", new String[]{"-Xmx128m", "-cp", cp, "org.h2.test.bench.TestPerformance", "-init", "-db", "4"});
exec("java", new String[]{"-Xmx128m", "-cp", cp, "org.h2.test.bench.TestPerformance", "-db", "5"});
exec("java", new String[]{"-Xmx128m", "-cp", cp, "org.h2.test.bench.TestPerformance", "-db", "6"});
exec("java", new String[]{"-Xmx128m", "-cp", cp, "org.h2.test.bench.TestPerformance", "-db", "7"});
exec("java", new String[]{"-Xmx128m", "-cp", cp, "org.h2.test.bench.TestPerformance", "-db", "8", "-out", "ps.html"});
}
public void clean() {
delete("temp");
delete("docs");
......@@ -212,14 +240,15 @@ public class Build extends BuildBase {
String pom = new String(readFile(new File("src/installer/pom.xml")));
pom = replaceAll(pom, "@version@", getVersion());
writeFile(new File("bin/pom.xml"), pom.getBytes());
execScript("mvn", "deploy:deploy-file " +
"-Dfile=bin/h2.jar " +
"-Durl=file:///data/h2database/m2-repo " +
"-Dpackaging=jar " +
"-Dversion=" + getVersion() + " " +
"-DpomFile=bin/pom.xml " +
"-DartifactId=h2 " +
"-DgroupId=com.h2database");
execScript("mvn", new String[] {
"deploy:deploy-file",
"-Dfile=bin/h2.jar",
"-Durl=file:///data/h2database/m2-repo",
"-Dpackaging=jar",
"-Dversion=" + getVersion(),
"-DpomFile=bin/pom.xml",
"-DartifactId=h2",
"-DgroupId=com.h2database" });
}
public void mavenInstallLocal() {
......@@ -227,13 +256,14 @@ public class Build extends BuildBase {
String pom = new String(readFile(new File("src/installer/pom.xml")));
pom = replaceAll(pom, "@version@", "1.0-SNAPSHOT");
writeFile(new File("bin/pom.xml"), pom.getBytes());
execScript("mvn", "install:install-file " +
"-Dversion=1.0-SNAPSHOT " +
"-Dfile=bin/h2.jar " +
"-Dpackaging=jar " +
"-DpomFile=bin/pom.xml " +
"-DartifactId=h2 " +
"-DgroupId=com.h2database");
execScript("mvn", new String[] {
"install:install-file",
"-Dversion=1.0-SNAPSHOT",
"-Dfile=bin/h2.jar",
"-Dpackaging=jar",
"-DpomFile=bin/pom.xml",
"-DartifactId=h2",
"-DgroupId=com.h2database" });
}
private void resources(boolean clientOnly) {
......
......@@ -149,12 +149,15 @@ public class BuildBase {
/**
* Execute a script in a separate process.
*
* @param script the script name (for example mvn or ant)
* @param args the command line parameters
* @param commandAndArgs the script name (for example mvn or ant) and the arguments
* @return the exit value
*/
protected int execScript(String script, String args) {
return exec(script + (isWindows() ? ".bat " : " ") + args, null);
protected int execScript(String command, String[] args) {
if (isWindows()) {
command = command + ".bat";
}
return exec(command, args);
}
/**
......@@ -168,16 +171,16 @@ public class BuildBase {
try {
out.print(command);
for (int i = 0; args != null && i < args.length; i++) {
out.print(" ");
out.print(args[i]);
out.print(" " + args[i]);
}
out.println();
Process p;
if (args == null) {
p = Runtime.getRuntime().exec(command);
} else {
p = Runtime.getRuntime().exec(command, args);
String[] cmdArray = new String[1 + (args == null ? 0 : args.length)];
cmdArray[0] = command;
if (args != null) {
System.arraycopy(args, 0, cmdArray, 1, args.length);
}
p = Runtime.getRuntime().exec(cmdArray);
copy(p.getInputStream(), out);
copy(p.getErrorStream(), out);
p.waitFor();
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论