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

--no commit message

--no commit message
上级 451fcbd4
......@@ -16,7 +16,14 @@ Change Log
<h1>Change Log</h1>
<h2>Next Version (unreleased)</h2>
<ul><li>ORDER BY on tableName.columnName didn't work correctly if the column
<ul><li>ResultSetMetaData.getColumnClassName now returns the correct
class name for BLOB and CLOB.
</li><li>Fixed the Oracle mode: Oracle allows multiple rows only where
all columns of the unique index are NULL.
</li><li>There is a problem with Hibernate when using Boolean columns.
A patch for Hibernate has been submitted at
http://opensource.atlassian.com/projects/hibernate/browse/HHH-3401
</li><li>ORDER BY on tableName.columnName didn't work correctly if the column
name was also used as an alias.
</li><li>H2 Console: The progress display when opening a database has been improved.
</li><li>The error message when the server doesn't start has been improved.
......
......@@ -338,9 +338,11 @@ To stop remote server, remote connections must be enabled on the server.
<h2>Using Hibernate</h2>
<p>
This database supports Hibernate version 3.1 and newer. You can use the HSQLDB Dialect,
or the native H2 Dialect that is available in the file src/tools/org/h2/tools/hibernate/H2Dialect.txt.
The H2 dialect is included in newer version of Hibernate. For versions where the dialect is missing, you need to copy the file
into the folder src\org\hibernate\dialect (Hibernate 3.1), rename it to H2Dialect.java and re-compile hibernate.
or the native H2 Dialect. Unfortunately the H2 Dialect included in Hibernate is buggy. A
<a href="http://opensource.atlassian.com/projects/hibernate/browse/HHH-3401">patch
for Hibernate</a> has been submitted. The dialect for the newest version of Hibernate
is also available at src/tools/org/hibernate/dialect/H2Dialect.java.txt.
You can rename it to H2Dialect.java and include this as a patch in your application.
</p>
<br /><a name="web_applications"></a>
......
......@@ -1355,32 +1355,32 @@ public class Parser {
currentSelect = oldSelect;
}
int test;
if (database.getMode().supportOffsetFetch) {
if (readIf("OFFSET")) {
Select temp = currentSelect;
// make sure aggregate functions will not work here
currentSelect = null;
command.setOffset(readExpression().optimize(session));
if (!readIf("ROW")) {
read("ROWS");
}
currentSelect = temp;
}
if (readIf("FETCH")) {
Select temp = currentSelect;
// make sure aggregate functions will not work here
currentSelect = null;
if (readIf("FIRST")) {
Expression limit = readExpression().optimize(session);
command.setLimit(limit);
if (!readIf("ROW")) {
read("ROWS");
}
readIf("ONLY");
}
currentSelect = temp;
}
}
// if (database.getMode().supportOffsetFetch) {
// if (readIf("OFFSET")) {
// Select temp = currentSelect;
// // make sure aggregate functions will not work here
// currentSelect = null;
// command.setOffset(readExpression().optimize(session));
// if (!readIf("ROW")) {
// read("ROWS");
// }
// currentSelect = temp;
// }
// if (readIf("FETCH")) {
// Select temp = currentSelect;
// // make sure aggregate functions will not work here
// currentSelect = null;
// if (readIf("FIRST")) {
// Expression limit = readExpression().optimize(session);
// command.setLimit(limit);
// if (!readIf("ROW")) {
// read("ROWS");
// }
// readIf("ONLY");
// }
// currentSelect = temp;
// }
// }
if (readIf("LIMIT")) {
Select temp = currentSelect;
// make sure aggregate functions will not work here
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论