add slice_subquery method for DBIC introspection
[dbsrgits/Data-Query.git] / lib / Data / Query / Renderer / SQL / Slice / RowNum.pm
index c14790a..06e46e7 100644 (file)
@@ -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},