Changeset: 9dc910c06aab for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/9dc910c06aab
Added Files:
        sql/test/Tests/limit_offset_fetchfirst.test
Modified Files:
        sql/ChangeLog
        sql/test/Tests/All
Branch: default
Log Message:

Add tests for new SQL syntax [ OFFSET pos_lng [ {ROW|ROWS} ] ]  [ FETCH 
{FIRST|NEXT} nonzero_lng {ROW|ROWS} ONLY ]
Also added entry to ChangeLog


diffs (226 lines):

diff --git a/sql/ChangeLog b/sql/ChangeLog
--- a/sql/ChangeLog
+++ b/sql/ChangeLog
@@ -1,3 +1,18 @@
 # ChangeLog file for sql
 # This file is updated with Maddlog
 
+* Fri Jul 7 2023 Niels Nes <niels....@monetdbsolutions.com>
+- Added SQL support for: <result offset clause> and <fetch first clause>
+  in  <query expression> ::=
+      [ <with clause> ] <query expression body>
+      [ <order by clause> ]
+      [ <result offset clause> ]
+      [ <fetch first clause> ]
+      [ <sample clause> ]
+
+  <result offset clause> ::=
+     OFFSET <offset row count> [ {ROW|ROWS} ]
+
+  <fetch first clause> ::=
+     FETCH {FIRST|NEXT} <fetch first row count> {ROW|ROWS} ONLY
+
diff --git a/sql/test/Tests/All b/sql/test/Tests/All
--- a/sql/test/Tests/All
+++ b/sql/test/Tests/All
@@ -70,6 +70,7 @@ create_in_schema
 null-byte-hang
 orderby_limit
 orderby_non_selection_column
+limit_offset_fetchfirst
 
 psm
 
diff --git a/sql/test/Tests/limit_offset_fetchfirst.test 
b/sql/test/Tests/limit_offset_fetchfirst.test
new file mode 100644
--- /dev/null
+++ b/sql/test/Tests/limit_offset_fetchfirst.test
@@ -0,0 +1,188 @@
+-- tests  [ LIMIT y ]  [ OFFSET x ]
+
+statement ok
+drop table if exists limittest
+
+statement ok
+create table limittest as select * from "sys"."generate_series"(1, 221)
+
+query I nosort
+select * from limittest LIMIT 5
+----
+1
+2
+3
+4
+5
+
+statement error
+select * from limittest LIMIT +5
+
+statement error
+select * from limittest LIMIT 0
+
+statement error
+select * from limittest LIMIT -5
+
+statement error
+select * from limittest LIMIT 20, 50
+
+statement error
+select * from limittest LIMIT OFFSET 20, 50
+
+statement error
+select * from limittest OFFSET 20 LIMIT 50
+
+query I rowsort
+select * from limittest LIMIT 5 OFFSET 20
+----
+21
+22
+23
+24
+25
+
+statement error
+select * from limittest LIMIT 5 OFFSET 20 ROWS
+
+statement error
+select * from limittest LIMIT 5 ROWS OFFSET 20
+
+
+-- tests  [ OFFSET pos_lng [ {ROW|ROWS} ] ]  [ FETCH {FIRST|NEXT} nonzero_lng 
{ROW|ROWS} ONLY ]
+
+statement error
+select * from limittest OFFSET 
+
+statement error
+select * from limittest OFFSET ROW
+
+query I rowsort
+select * from limittest OFFSET 218
+----
+219
+220
+
+query I rowsort
+select * from limittest OFFSET 219 ROW
+----
+220
+
+query I rowsort
+select * from limittest OFFSET 218 ROWS
+----
+219
+220
+
+statement error
+select * from limittest OFFSET (200 + 18) ROWS
+
+statement error
+select * from limittest FETCH ROWS
+
+statement error
+select * from limittest FETCH ROWS ONLY
+
+statement error
+select * from limittest FETCH 0 ROWS ONLY
+
+query I rowsort
+select * from limittest FETCH NEXT ROW ONLY
+----
+1
+
+query I rowsort
+select * from limittest FETCH FIRST 4 ROWS ONLY
+----
+1
+2
+3
+4
+
+query I rowsort
+select * from limittest OFFSET 5 FETCH FIRST 4 ROWS ONLY
+----
+6
+7
+8
+9
+
+query I rowsort
+select * from limittest OFFSET 5 FETCH NEXT 4 ROWS ONLY
+----
+6
+7
+8
+9
+
+query I rowsort
+select * from limittest FETCH FIRST ROW ONLY
+----
+1
+
+query I rowsort
+select * from limittest FETCH FIRST 3 ROWS ONLY
+----
+1
+2
+3
+
+query I rowsort
+select * from limittest OFFSET 10 FETCH FIRST 3 ROWS ONLY
+----
+11
+12
+13
+
+query I rowsort
+select * from limittest OFFSET 218
+----
+219
+220
+
+query I rowsort
+select * from limittest OFFSET 220
+----
+
+query I rowsort
+select * from limittest OFFSET 222
+----
+
+
+statement error
+select * from limittest LIMIT 6 OFFSET 5 FETCH NEXT 4 ROWS ONLY
+
+statement error
+select * from limittest LIMIT 6 FETCH NEXT 4 ROWS ONLY
+
+statement error
+select * from limittest FETCH NEXT 4 ROWS ONLY LIMIT 6
+
+statement error
+select * from limittest FETCH NEXT 4 ROWS ONLY OFFSET 5
+
+query I rowsort
+select * from limittest FETCH FIRST 3 ROWS ONLY
+----
+1
+2
+3
+
+query I rowsort
+select * from (select * from limittest OFFSET 50 ROWS FETCH FIRST 10 ROWS 
ONLY) t OFFSET 5 ROW FETCH FIRST 4 ROWS ONLY
+----
+56
+57
+58
+59
+
+query I rowsort
+select * from (select * from limittest order by 1 desc OFFSET 50 ROWS FETCH 
FIRST 10 ROWS ONLY) t order by 1 asc OFFSET 5 ROW FETCH FIRST 4 ROWS ONLY
+----
+166
+167
+168
+169
+
+statement ok
+drop table if exists limittest
_______________________________________________
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org

Reply via email to