Issue Details (XML | Word | Printable)

Key: DERBY-4079
Type: Improvement Improvement
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Dag H. Wanvik
Reporter: Dag H. Wanvik
Votes: 1
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Derby

Add support for SQL:2008 <result offset clause> and <fetch first clause> to limit result set cardinality

Created: 03/Mar/09 03:12 AM   Updated: 21/Aug/09 10:00 PM
Component/s: SQL
Affects Version/s: None
Fix Version/s: 10.5.1.1

Time Tracking:
Not Specified

File Attachments:
  Size
File Licensed for inclusion in ASF works derby-4079-1.diff 2009-03-04 01:50 AM Dag H. Wanvik 60 kB
File Licensed for inclusion in ASF works derby-4079-1.stat 2009-03-04 01:50 AM Dag H. Wanvik 1 kB
File Licensed for inclusion in ASF works derby-4079-2.diff 2009-03-05 05:27 AM Dag H. Wanvik 80 kB
File Licensed for inclusion in ASF works derby-4079-2.stat 2009-03-05 05:27 AM Dag H. Wanvik 1 kB
File Licensed for inclusion in ASF works derby-4079-3.diff 2009-03-06 01:00 AM Dag H. Wanvik 64 kB
File Licensed for inclusion in ASF works derby-4079-3.stat 2009-03-06 01:00 AM Dag H. Wanvik 1 kB
File Licensed for inclusion in ASF works derby-4079-docs-1.diff 2009-03-04 02:57 AM Dag H. Wanvik 6 kB
File Licensed for inclusion in ASF works derby-4079-docs-1.stat 2009-03-04 02:57 AM Dag H. Wanvik 0.1 kB
Zip Archive Licensed for inclusion in ASF works derby-4079-docs-1.zip 2009-03-04 02:57 AM Dag H. Wanvik 6 kB
File Licensed for inclusion in ASF works DERBY-4079-docs-2.diff 2009-03-20 03:30 PM Kim Haase 0.6 kB
File Licensed for inclusion in ASF works derby-4079-docs-2.diff 2009-03-05 05:49 AM Dag H. Wanvik 6 kB
File Licensed for inclusion in ASF works derby-4079-docs-2.stat 2009-03-05 05:49 AM Dag H. Wanvik 0.1 kB
Zip Archive Licensed for inclusion in ASF works derby-4079-docs-2.zip 2009-03-05 05:49 AM Dag H. Wanvik 6 kB
File Licensed for inclusion in ASF works derby-4079-fixRtStatsTest.diff 2009-03-17 12:49 AM Dag H. Wanvik 1.0 kB
File Licensed for inclusion in ASF works derby-4079-fixRtStatsTest.stat 2009-03-17 12:49 AM Dag H. Wanvik 0.1 kB
Zip Archive Licensed for inclusion in ASF works ref.zip 2009-03-03 03:28 AM Dag H. Wanvik 5 kB
HTML File Licensed for inclusion in ASF works rrefsqljoffsetfetch.html 2009-03-20 03:30 PM Kim Haase 4 kB
Issue Links:
Reference

Resolution Date: 20/Mar/09 06:10 PM


 Description  « Hide
SQL 2008 has added new syntax to support a direct way to limit the
returned set of rows in a result set. This allows an application to
retrieve only some rows of an otherwise larger result set, similar to
the popular LIMIT clauses use in some databases.

Up till now, in Derby (and SQL) we have had to use the ROW_NUMBER()
function in a nested subquery to achieve the effect of the <fetch
first clause>, cf. DERBY-2998, a method which is rather more indirect
and still not efficient (DERBY-3505), and primarily intended for OLAP
functionality, perhaps.

There has been no direct way to achieve the effect of the <result
offset clause> via SQL.

Syntax (cf. SQL 2008, section 7.13):
       <result offset clause> ::= OFFSET <n> {ROW | ROWS}
       <fetch first clause> ::= FETCH {FIRST | NEXT} [<n>] {ROW | ROWS} ONLY

where <n> is an integer. The two clauses syntactically follow the ORDER BY
clause in the grammar.

Note that both ORDER BY and the new clauses above are allowed also in
subqueries in the new version of the SQL standard (section 7.13). I
only propose to include this at the top level in DERBY for now. (ORDER
BY is presently also not allowed in subqueries in Derby since SQL
didn't allow for this until SQL 2008 either).




 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Repository Revision Date User Message
ASF #754558 Sat Mar 14 23:45:04 UTC 2009 dag DERBY-4079 Add support for SQL:2008 <result offset clause> and <fetch first clause> to limit result set cardinality

Added this new feature, corresponding to patch DERBY-4079-3. Documentation is committed separately.
Files Changed
ADD /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RowCountResultSet.java
MODIFY /db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/compile/C_NodeTypes.java
ADD /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OffsetFetchNextTest.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/C_NodeNames.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/NodeFactoryImpl.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/loc/messages.xml
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/ScrollInsensitiveResultSet.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/RealResultSetStatisticsFactory.java
MODIFY /db/derby/code/trunk/tools/jar/DBMSnodes.properties
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/sqlgrammar.jj
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/CursorNode.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/GenericResultSetFactory.java
ADD /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/RowCountNode.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/NoPutResultSetImpl.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/ResultColumn.java
ADD /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/execute/rts/RealRowCountStatistics.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/iapi/sql/execute/ResultSetFactory.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/DMLStatementNode.java

Repository Revision Date User Message
ASF #754559 Sat Mar 14 23:53:38 UTC 2009 dag DERBY-4079 Add support for SQL:2008 <result offset clause> and <fetch first clause> to limit result set cardinality

Add documentation for this feature, corresponding to patch DERBY-4079-DOCS-2.
Files Changed
ADD /db/derby/docs/trunk/src/ref/rrefsqljoffsetfetch.dita
MODIFY /db/derby/docs/trunk/src/ref/rrefsqlj41360.dita
MODIFY /db/derby/docs/trunk/src/ref/refderby.ditamap

Repository Revision Date User Message
ASF #754583 Sun Mar 15 01:43:19 UTC 2009 dag DERBY-4079 Add support for SQL:2008 <result offset clause> and <fetch first clause> to limit result set cardinality

Added the new test, OffsetFetchNextTest, to lang/_Suite.java.
Files Changed
MODIFY /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/_Suite.java

Repository Revision Date User Message
ASF #755058 Tue Mar 17 00:59:37 UTC 2009 dag DERBY-4079 Add support for SQL:2008 <result offset clause> and <fetch first clause> to limit result set cardinality

Patch DERBY-4079-fixRtStatsTest fixes a end-of-line problem on the Windows platform.
Files Changed
MODIFY /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OffsetFetchNextTest.java

Repository Revision Date User Message
ASF #755070 Tue Mar 17 01:39:55 UTC 2009 dag DERBY-4079 Add support for SQL:2008 <result offset clause> and <fetch first clause> to limit result set cardinality

Backported patch DERBY-4079-fixRtStatsTest as:

svn merge -c 755058 https://svn.apache.org/repos/asf/db/derby/code/trunk
Files Changed
MODIFY /db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/lang/OffsetFetchNextTest.java

Repository Revision Date User Message
ASF #756695 Fri Mar 20 18:09:36 UTC 2009 dag DERBY-4079 Add support for SQL:2008 <result offset clause> and <fetch first clause> to limit result set cardinality

Follow-up documentation patch, DERBY-4079-DOCS-2; fixed erroneous
<refsyn> usage. Contributed by Kim Haase.
Files Changed
MODIFY /db/derby/docs/trunk/src/ref/rrefsqljoffsetfetch.dita

Repository Revision Date User Message
ASF #756713 Fri Mar 20 19:06:18 UTC 2009 dag DERBY-4079 Add support for SQL:2008 <result offset clause> and <fetch first clause> to limit result set cardinality

Backported DERBY-4079-DOCS-2 from trunk to 10.5 branch as:

svn merge -c 756695 https://svn.apache.org/repos/asf/db/derby/docs/trunk
Files Changed
MODIFY /db/derby/docs/branches/10.5/src/ref/rrefsqljoffsetfetch.dita