Merge pull request #16 from stanislas/oracle-limit-offset

alternative oracle limit implementation.
This commit is contained in:
Lukas Eder 2012-05-24 23:57:20 -07:00
commit 38592d92c8

View File

@ -393,25 +393,37 @@ implements
toSQLReference0(local);
String enclosed = local.render();
String subqueryName = "limit_" + Util.hash(enclosed);
String innerSubqueryName = "inner_" + Util.hash(enclosed);
String outerSubqueryName = "outer_" + Util.hash(enclosed);
String rownumName = "rownum_" + Util.hash(enclosed);
context.keyword("select * from (")
.formatIndentStart()
.formatNewLine()
.keyword("select ")
.sql(subqueryName)
.sql(outerSubqueryName)
.keyword(".*, rownum as ")
.sql(rownumName)
.formatSeparator()
.keyword("from (")
.formatIndentStart()
.formatNewLine()
.keyword("select ")
.sql(innerSubqueryName)
.keyword(".*")
.formatSeparator()
.keyword("from (")
.formatIndentStart()
.formatNewLine()
.sql(enclosed)
.formatIndentEnd()
.formatNewLine()
.sql(") ")
.sql(subqueryName)
.sql(innerSubqueryName)
.formatSeparator()
.keyword("where rownum <=")
.sql(getLimit().getUpperRownum())
.sql(outerSubqueryName)
.formatIndentEnd()
.formatNewLine()
.keyword(")")
@ -419,12 +431,7 @@ implements
.keyword("where ")
.sql(rownumName)
.sql(" > ")
.sql(getLimit().getLowerRownum())
.formatSeparator()
.keyword("and ")
.sql(rownumName)
.sql(" <= ")
.sql(getLimit().getUpperRownum());
.sql(getLimit().getLowerRownum());
}
/**