X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FData%2FQuery%2FRenderer%2FSQL%2FSlice%2FRowNum.pm;h=06e46e760e5589c5ad0b24297b9fc2861a02f833;hb=fbf38b8eca52ee815784a98be806e0d7d0050e8b;hp=c14790a23b94f483426392a8c9bd66c2a5788b35;hpb=98994ccc7c2b4526d76f0c3c67f4466eb7cfe3c8;p=dbsrgits%2FData-Query.git diff --git a/lib/Data/Query/Renderer/SQL/Slice/RowNum.pm b/lib/Data/Query/Renderer/SQL/Slice/RowNum.pm index c14790a..06e46e7 100644 --- a/lib/Data/Query/Renderer/SQL/Slice/RowNum.pm +++ b/lib/Data/Query/Renderer/SQL/Slice/RowNum.pm @@ -5,6 +5,14 @@ use Moo::Role; with 'Data::Query::Renderer::SQL::Slice::SubqueryRemap'; +sub slice_subquery { + (limit => 1, offset => 1); +} + +sub slice_stability { + (offset => 'check'); +} + sub _render_slice { my ($self, $dq) = @_; die "Slice's inner is not a Select" @@ -45,7 +53,7 @@ sub _render_slice { Where( Operator( { 'SQL.Naive' => '>=' }, - [ Identifier($rownum_name), $limit_plus_offset, ] + [ Identifier($rownum_name), $offset_plus ] ), Alias( $remapped{default_inside_alias}, @@ -55,7 +63,7 @@ sub _render_slice { Where( Operator( { 'SQL.Naive' => '<=' }, - [ Literal(SQL => 'ROWNUM'), $offset_plus ] + [ Literal(SQL => 'ROWNUM'), $limit_plus_offset ] ), $inside_select, ) @@ -71,7 +79,7 @@ sub _render_slice { Where( Operator( { 'SQL.Naive' => 'BETWEEN' }, - [ Identifier($rownum_name), $limit_plus_offset, $offset_plus ] + [ Identifier($rownum_name), $offset_plus, $limit_plus_offset ] ), Alias( $remapped{default_inside_alias},