提交 0e48726e authored 作者: Thomas Mueller's avatar Thomas Mueller

Prepare release.

上级 8eb0dba2
...@@ -18,7 +18,27 @@ Change Log ...@@ -18,7 +18,27 @@ Change Log
<h1>Change Log</h1> <h1>Change Log</h1>
<h2>Next Version (unreleased)</h2> <h2>Next Version (unreleased)</h2>
<ul><li>When the system property h2.lobInDatabase is set, the lob tables were always <ul><li>-
</li></ul>
<h2>Version 1.3.146 Beta (2010-11-08)</h2>
<ul><li>This is a beta version. The next version will be 1.2.147. The differences between 1.2.x and 1.3.x are:
</li><li>In version 1.3.x, h2.lobInDatabase (store CLOB and BLOB in the database file) is enabled by default.
</li><li>In version 1.3.x, ANALYZE_AUTO is 2000 (automatic ANALYZE).
</li><li>In version 1.3.x, DB_CLOSE_ON_EXIT (the shutdown hook) is disabled by default.
</li><li>In version 1.3.x, DROP_RESTRICT (default action for DROP is RESTRICT) is enabled.
</li><li>In version 1.3.x, FUNCTIONS_IN_SCHEMA (allow to store functions in a schema) is enabled.
</li><li>In version 1.3.x, LARGE_TRANSACTIONS (support for very large transactions) is enabled.
Changes to tables without a primary key can be buffered to disk.
</li><li>In version 1.3.x, MAX_MEMORY_ROWS_DISTINCT is set to a 10000.
</li><li>In version 1.3.x, NESTED_JOINS (nested joins and right outer joins) is enabled.
</li><li>In version 1.3.x, OPTIMIZE_INSERT_FROM_SELECT (speed up CREATE TABLE ... AS SELECT) is enabled.
</li><li>In version 1.3.x, OPTIMIZE_OR (convert OR conditions to IN(..) if possible) is enabled.
</li><li>In version 1.3.x, QUERY_CACHE_SIZE is enabled.
</li><li>In version 1.3.x, SELECT_FOR_UPDATE_MVCC (MVCC and SELECT FOR UPDATE) is enabled.
</li><li>In version 1.3.x, RUNSCRIPT and SCRIPT (commands and tools), use UTF-8 by default (ScriptCommand.charset).
</li><li>In version 1.3.x, Lucene 3 is used by default. Issue 147.
</li><li>When the system property h2.lobInDatabase is set, the lob tables were always
created when closing the database, even if the tables were not needed. created when closing the database, even if the tables were not needed.
</li><li>In the MySQL mode, SHOW TABLES didn't work, and meta data tables were not </li><li>In the MySQL mode, SHOW TABLES didn't work, and meta data tables were not
case insensitive. Updatable result sets didn't work as expected. Issue 249. case insensitive. Updatable result sets didn't work as expected. Issue 249.
...@@ -830,26 +850,5 @@ Change Log ...@@ -830,26 +850,5 @@ Change Log
</li><li>Improved read-only database detection. </li><li>Improved read-only database detection.
</li></ul> </li></ul>
<h2>Version 1.2.123 (2009-11-08)</h2>
<ul><li>Page store: new databases can not be opened with older versions.
</li><li>Page store: updating large rows (rows with more than 2000 bytes of data)
could corrupt the database.
</li><li>Page store: inserting very large rows failed with ArrayIndexOutOfBoundsException.
</li><li>When using multi-threaded kernel mode, setting disabling locking (LOCK_MODE=0)
will now throw an exception. At this time this combination will result in corruption when
multiple threads try to update the same table.
</li><li>The fulltext search methods and fields are now protected instead of private,
to make the classes more easily extensible.
</li><li>The Lucene fulltext search now also returns the score.
</li><li> New function SCOPE_IDENTITY() to avoid problems when inserting
rows in a trigger.
</li><li>Statement.getGeneratedKeys() returned the wrong value if a trigger
changed the identity value after inserting the row.
</li><li>Improved error messages: identifiers and values are now quoted.
</li><li>Improved error message when casting a value failed:
the column name and type is included in the message.
</li><li>Improved support for GAE for Java thanks to Vince Bonfanti.
</li></ul>
<!-- [close] { --></div></td></tr></table><!-- } --><!-- analytics --></body></html> <!-- [close] { --></div></td></tr></table><!-- } --><!-- analytics --></body></html>
...@@ -17,7 +17,7 @@ Downloads ...@@ -17,7 +17,7 @@ Downloads
<h1>Downloads</h1> <h1>Downloads</h1>
<h3>Version ${version} (${versionDate})</h3> <h3>Version ${version} (${versionDate}, Beta)</h3>
<p> <p>
<a href="http://www.h2database.com/h2-setup-${versionDate}.exe">Windows Installer</a> <a href="http://www.h2database.com/h2-setup-${versionDate}.exe">Windows Installer</a>
<!-- sha1Exe --><br /> <!-- sha1Exe --><br />
......
...@@ -35,7 +35,7 @@ Welcome to H2, the Java SQL database. The main features of H2 are: ...@@ -35,7 +35,7 @@ Welcome to H2, the Java SQL database. The main features of H2 are:
<table style="border: 0px; margin: 0px 7px 12px 7px;"> <table style="border: 0px; margin: 0px 7px 12px 7px;">
<tr><td style="border: 0px; background-color: #eee;" colspan="2"> <tr><td style="border: 0px; background-color: #eee;" colspan="2">
<h2 style="margin-top: 1em;">Download</h2> <h2 style="margin-top: 1em;">Download</h2>
Version ${version} (${versionDate}): Version ${version} (${versionDate}) Beta:
</td></tr> </td></tr>
<tr><td style="border: 0px; background-color: #eee;"> <tr><td style="border: 0px; background-color: #eee;">
<a href="http://www.h2database.com/h2-setup-${versionDate}.exe"><img style="border: 1px #00f solid;" src="images/download.png" alt="Download this database" width="22" height="20"/></a> <a href="http://www.h2database.com/h2-setup-${versionDate}.exe"><img style="border: 1px #00f solid;" src="images/download.png" alt="Download this database" width="22" height="20"/></a>
......
...@@ -43,7 +43,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>. ...@@ -43,7 +43,6 @@ See also <a href="build.html#providing_patches">Providing Patches</a>.
</li><li>Disable DB_CLOSE_ON_EXIT (the shutdown hook) by default. </li><li>Disable DB_CLOSE_ON_EXIT (the shutdown hook) by default.
</li><li>For RUNSCRIPT and SCRIPT (commands and tools), use UTF-8 by default </li><li>For RUNSCRIPT and SCRIPT (commands and tools), use UTF-8 by default
(ScriptCommand.charset). (ScriptCommand.charset).
</li><li>Use Lucene 3 by default. </li><li>Use Lucene 3 by default.
</li></ul> </li></ul>
......
...@@ -22,6 +22,8 @@ Initial Developer: H2 Group ...@@ -22,6 +22,8 @@ Initial Developer: H2 Group
} else if (key == 'build') { } else if (key == 'build') {
if (value == 64) { if (value == 64) {
tag = 'tags/version-1.0.' + value; tag = 'tags/version-1.0.' + value;
} else if (value == 146) {
tag = 'tags/version-1.3.' + build + '/h2';
} else if (value >= 120) { } else if (value >= 120) {
tag = 'tags/version-1.2.' + value + '/h2'; tag = 'tags/version-1.2.' + value + '/h2';
} else if (value >= 100) { } else if (value >= 100) {
......
...@@ -68,6 +68,8 @@ function go(file, line) { ...@@ -68,6 +68,8 @@ function go(file, line) {
var tag = 'trunk/h2'; var tag = 'trunk/h2';
if (build == 64) { if (build == 64) {
tag = 'tags/version-1.0.' + build; tag = 'tags/version-1.0.' + build;
} else if (build == 146) {
tag = 'tags/version-1.3.' + build + '/h2';
} else if (build >= 120) { } else if (build >= 120) {
tag = 'tags/version-1.2.' + build + '/h2'; tag = 'tags/version-1.2.' + build + '/h2';
} else if (build >= 100) { } else if (build >= 100) {
......
...@@ -21,17 +21,17 @@ public class Constants { ...@@ -21,17 +21,17 @@ public class Constants {
/** /**
* The build date is updated for each public release. * The build date is updated for each public release.
*/ */
public static final String BUILD_DATE_STABLE = "2010-10-15"; public static final String BUILD_DATE_STABLE = "2010-11-02";
/** /**
* The build id is incremented for each public release. * The build id is incremented for each public release.
*/ */
public static final int BUILD_ID = 145; public static final int BUILD_ID = 146;
/** /**
* The build id of the last stable release. * The build id of the last stable release.
*/ */
public static final int BUILD_ID_STABLE = 144; public static final int BUILD_ID_STABLE = 145;
/** /**
* If H2 is compiled to be included in a product, this should be set to * If H2 is compiled to be included in a product, this should be set to
...@@ -64,7 +64,7 @@ public class Constants { ...@@ -64,7 +64,7 @@ public class Constants {
/** /**
* The minor version of this database. * The minor version of this database.
*/ */
public static final int VERSION_MINOR = 2; public static final int VERSION_MINOR = 3;
// Build.getLuceneVersion() uses an ugly hack to read this value // Build.getLuceneVersion() uses an ugly hack to read this value
/** /**
......
...@@ -39,11 +39,11 @@ import org.h2.util.New; ...@@ -39,11 +39,11 @@ import org.h2.util.New;
import org.h2.util.StatementBuilder; import org.h2.util.StatementBuilder;
import org.h2.util.StringUtils; import org.h2.util.StringUtils;
//## Java 1.4 end ## //## Java 1.4 end ##
//## LUCENE2 begin ## /*## LUCENE2 begin ##
import org.apache.lucene.index.IndexModifier; import org.apache.lucene.index.IndexModifier;
import org.apache.lucene.search.Hits; import org.apache.lucene.search.Hits;
//## LUCENE2 end ## ## LUCENE2 end ##*/
/*## LUCENE3 begin ## //## LUCENE3 begin ##
import java.io.File; import java.io.File;
import org.apache.lucene.search.ScoreDoc; import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs; import org.apache.lucene.search.TopDocs;
...@@ -51,7 +51,7 @@ import org.apache.lucene.store.FSDirectory; ...@@ -51,7 +51,7 @@ import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.Directory; import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Version; import org.apache.lucene.util.Version;
import org.apache.lucene.index.IndexWriter; import org.apache.lucene.index.IndexWriter;
## LUCENE3 end ##*/ //## LUCENE3 end ##
/** /**
* This class implements the full text search based on Apache Lucene. * This class implements the full text search based on Apache Lucene.
...@@ -268,13 +268,13 @@ public class FullTextLucene extends FullText { ...@@ -268,13 +268,13 @@ public class FullTextLucene extends FullText {
IndexAccess access = INDEX_ACCESS.get(path); IndexAccess access = INDEX_ACCESS.get(path);
if (access == null) { if (access == null) {
try { try {
//## LUCENE2 begin ## /*## LUCENE2 begin ##
boolean recreate = !IndexReader.indexExists(path); boolean recreate = !IndexReader.indexExists(path);
Analyzer analyzer = new StandardAnalyzer(); Analyzer analyzer = new StandardAnalyzer();
access = new IndexAccess(); access = new IndexAccess();
access.modifier = new IndexModifier(path, analyzer, recreate); access.modifier = new IndexModifier(path, analyzer, recreate);
//## LUCENE2 end ## ## LUCENE2 end ##*/
/*## LUCENE3 begin ## //## LUCENE3 begin ##
File f = new File(path); File f = new File(path);
Directory indexDir = FSDirectory.open(f); Directory indexDir = FSDirectory.open(f);
boolean recreate = !IndexReader.indexExists(indexDir); boolean recreate = !IndexReader.indexExists(indexDir);
...@@ -286,7 +286,7 @@ public class FullTextLucene extends FullText { ...@@ -286,7 +286,7 @@ public class FullTextLucene extends FullText {
access = new IndexAccess(); access = new IndexAccess();
access.writer = writer; access.writer = writer;
access.searcher = new IndexSearcher(reader); access.searcher = new IndexSearcher(reader);
## LUCENE3 end ##*/ //## LUCENE3 end ##
} catch (IOException e) { } catch (IOException e) {
throw convertException(e); throw convertException(e);
} }
...@@ -360,14 +360,14 @@ public class FullTextLucene extends FullText { ...@@ -360,14 +360,14 @@ public class FullTextLucene extends FullText {
synchronized (INDEX_ACCESS) { synchronized (INDEX_ACCESS) {
try { try {
INDEX_ACCESS.remove(indexPath); INDEX_ACCESS.remove(indexPath);
//## LUCENE2 begin ## /*## LUCENE2 begin ##
access.modifier.flush(); access.modifier.flush();
access.modifier.close(); access.modifier.close();
//## LUCENE2 end ## ## LUCENE2 end ##*/
/*## LUCENE3 begin ## //## LUCENE3 begin ##
access.searcher.close(); access.searcher.close();
access.writer.close(); access.writer.close();
## LUCENE3 end ##*/ //## LUCENE3 end ##
} catch (Exception e) { } catch (Exception e) {
throw convertException(e); throw convertException(e);
} }
...@@ -395,7 +395,7 @@ public class FullTextLucene extends FullText { ...@@ -395,7 +395,7 @@ public class FullTextLucene extends FullText {
} }
try { try {
IndexAccess access = getIndexAccess(conn); IndexAccess access = getIndexAccess(conn);
//## LUCENE2 begin ## /*## LUCENE2 begin ##
access.modifier.flush(); access.modifier.flush();
String path = getIndexPath(conn); String path = getIndexPath(conn);
IndexReader reader = IndexReader.open(path); IndexReader reader = IndexReader.open(path);
...@@ -411,8 +411,8 @@ public class FullTextLucene extends FullText { ...@@ -411,8 +411,8 @@ public class FullTextLucene extends FullText {
for (int i = 0; i < limit && i + offset < max; i++) { for (int i = 0; i < limit && i + offset < max; i++) {
Document doc = hits.doc(i + offset); Document doc = hits.doc(i + offset);
float score = hits.score(i + offset); float score = hits.score(i + offset);
//## LUCENE2 end ## ## LUCENE2 end ##*/
/*## LUCENE3 begin ## //## LUCENE3 begin ##
// take a reference as the searcher may change // take a reference as the searcher may change
Searcher searcher = access.searcher; Searcher searcher = access.searcher;
// reuse the same analyzer; it's thread-safe; // reuse the same analyzer; it's thread-safe;
...@@ -436,7 +436,7 @@ public class FullTextLucene extends FullText { ...@@ -436,7 +436,7 @@ public class FullTextLucene extends FullText {
ScoreDoc sd = docs.scoreDocs[i + offset]; ScoreDoc sd = docs.scoreDocs[i + offset];
Document doc = searcher.doc(sd.doc); Document doc = searcher.doc(sd.doc);
float score = sd.score; float score = sd.score;
## LUCENE3 end ##*/ //## LUCENE3 end ##
String q = doc.get(LUCENE_FIELD_QUERY); String q = doc.get(LUCENE_FIELD_QUERY);
if (data) { if (data) {
int idx = q.indexOf(" WHERE "); int idx = q.indexOf(" WHERE ");
...@@ -459,10 +459,10 @@ public class FullTextLucene extends FullText { ...@@ -459,10 +459,10 @@ public class FullTextLucene extends FullText {
result.addRow(q, score); result.addRow(q, score);
} }
} }
//## LUCENE2 begin ## /*## LUCENE2 begin ##
// TODO keep it open if possible // TODO keep it open if possible
reader.close(); reader.close();
//## LUCENE2 end ## ## LUCENE2 end ##*/
} catch (Exception e) { } catch (Exception e) {
throw convertException(e); throw convertException(e);
} }
...@@ -605,7 +605,7 @@ public class FullTextLucene extends FullText { ...@@ -605,7 +605,7 @@ public class FullTextLucene extends FullText {
* @param row the row * @param row the row
*/ */
protected void insert(Object[] row) throws SQLException { protected void insert(Object[] row) throws SQLException {
//## LUCENE2 begin ## /*## LUCENE2 begin ##
String query = getQuery(row); String query = getQuery(row);
Document doc = new Document(); Document doc = new Document();
doc.add(new Field(LUCENE_FIELD_QUERY, query, doc.add(new Field(LUCENE_FIELD_QUERY, query,
...@@ -637,8 +637,8 @@ public class FullTextLucene extends FullText { ...@@ -637,8 +637,8 @@ public class FullTextLucene extends FullText {
} catch (IOException e) { } catch (IOException e) {
throw convertException(e); throw convertException(e);
} }
//## LUCENE2 end ## ## LUCENE2 end ##*/
/*## LUCENE3 begin ## //## LUCENE3 begin ##
String query = getQuery(row); String query = getQuery(row);
Document doc = new Document(); Document doc = new Document();
doc.add(new Field(LUCENE_FIELD_QUERY, query, doc.add(new Field(LUCENE_FIELD_QUERY, query,
...@@ -675,7 +675,7 @@ public class FullTextLucene extends FullText { ...@@ -675,7 +675,7 @@ public class FullTextLucene extends FullText {
} catch (IOException e) { } catch (IOException e) {
throw convertException(e); throw convertException(e);
} }
## LUCENE3 end ##*/ //## LUCENE3 end ##
} }
/** /**
...@@ -687,12 +687,12 @@ public class FullTextLucene extends FullText { ...@@ -687,12 +687,12 @@ public class FullTextLucene extends FullText {
String query = getQuery(row); String query = getQuery(row);
try { try {
Term term = new Term(LUCENE_FIELD_QUERY, query); Term term = new Term(LUCENE_FIELD_QUERY, query);
//## LUCENE2 begin ## /*## LUCENE2 begin ##
indexAccess.modifier.deleteDocuments(term); indexAccess.modifier.deleteDocuments(term);
//## LUCENE2 end ## ## LUCENE2 end ##*/
/*## LUCENE3 begin ## //## LUCENE3 begin ##
indexAccess.writer.deleteDocuments(term); indexAccess.writer.deleteDocuments(term);
## LUCENE3 end ##*/ //## LUCENE3 end ##
} catch (IOException e) { } catch (IOException e) {
throw convertException(e); throw convertException(e);
} }
...@@ -726,23 +726,23 @@ public class FullTextLucene extends FullText { ...@@ -726,23 +726,23 @@ public class FullTextLucene extends FullText {
/** /**
* The index modified. * The index modified.
*/ */
//## LUCENE2 begin ## /*## LUCENE2 begin ##
IndexModifier modifier; IndexModifier modifier;
//## LUCENE2 end ## ## LUCENE2 end ##*/
/** /**
* The index writer. * The index writer.
*/ */
/*## LUCENE3 begin ## //## LUCENE3 begin ##
IndexWriter writer; IndexWriter writer;
## LUCENE3 end ##*/ //## LUCENE3 end ##
/** /**
* The index searcher. * The index searcher.
*/ */
/*## LUCENE3 begin ## //## LUCENE3 begin ##
Searcher searcher; Searcher searcher;
## LUCENE3 end ##*/ //## LUCENE3 end ##
} }
} }
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
CREATE TABLE VERSION(ID INT PRIMARY KEY, VERSION VARCHAR, CREATED VARCHAR); CREATE TABLE VERSION(ID INT PRIMARY KEY, VERSION VARCHAR, CREATED VARCHAR);
INSERT INTO VERSION VALUES INSERT INTO VERSION VALUES
(96, '1.3.146 Beta', '2010-11-08'),
(95, '1.2.145', '2010-11-02'), (95, '1.2.145', '2010-11-02'),
(94, '1.2.144', '2010-10-15'), (94, '1.2.144', '2010-10-15'),
(93, '1.2.143', '2010-09-18'), (93, '1.2.143', '2010-09-18'),
...@@ -21,7 +22,6 @@ INSERT INTO VERSION VALUES ...@@ -21,7 +22,6 @@ INSERT INTO VERSION VALUES
(84, '1.2.134', '2010-04-23'), (84, '1.2.134', '2010-04-23'),
(83, '1.2.133', '2010-04-10'), (83, '1.2.133', '2010-04-10'),
(82, '1.2.132', '2010-03-21'), (82, '1.2.132', '2010-03-21'),
(81, '1.2.131', '2010-03-05'),
; ;
CREATE TABLE CHANNEL(TITLE VARCHAR, LINK VARCHAR, DESC VARCHAR, CREATE TABLE CHANNEL(TITLE VARCHAR, LINK VARCHAR, DESC VARCHAR,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论