Merge branch 'master' into topic/constructor_rewrite
[dbsrgits/DBIx-Class.git] / t / sqlmaker / limit_dialects / torture.t
index 3b72154..9c998a5 100644 (file)
@@ -39,7 +39,7 @@ my $tests = {
           JOIN owners owner
             ON owner.id = me.owner
         WHERE source != ? AND me.title = ? AND source = ?
-        GROUP BY avg(me.id / ?)
+        GROUP BY AVG(me.id / ?), MAX(owner.id)
         HAVING ?
         ORDER BY ? / ?, ?
         LIMIT ?
@@ -65,7 +65,6 @@ my $tests = {
           ) me
           LEFT JOIN books books
             ON books.owner = me.id
-        ORDER BY me.id
       )',
       [
         [ { sqlt_datatype => 'integer' } => 3 ],
@@ -82,7 +81,7 @@ my $tests = {
           JOIN owners owner
             ON owner.id = me.owner
         WHERE source != ? AND me.title = ? AND source = ?
-        GROUP BY avg(me.id / ?)
+        GROUP BY AVG(me.id / ?), MAX(owner.id)
         HAVING ?
         ORDER BY ? / ?, ?
         LIMIT ?, ?
@@ -107,7 +106,6 @@ my $tests = {
           ) me
           LEFT JOIN books books
             ON books.owner = me.id
-        ORDER BY me.id
       )',
       [
         [ { sqlt_datatype => 'integer' } => 1 ],
@@ -124,7 +122,7 @@ my $tests = {
           JOIN owners owner
             ON owner.id = me.owner
         WHERE source != ? AND me.title = ? AND source = ?
-        GROUP BY avg(me.id / ?)
+        GROUP BY AVG(me.id / ?), MAX(owner.id)
         HAVING ?
         ORDER BY ? / ?, ?
       )',
@@ -147,7 +145,6 @@ my $tests = {
           ) me
           LEFT JOIN books books
             ON books.owner = me.id
-        ORDER BY me.id
       )',
       [
         [ { sqlt_datatype => 'integer' } => 1 ],
@@ -164,7 +161,7 @@ my $tests = {
           JOIN owners owner
             ON owner.id = me.owner
         WHERE source != ? AND me.title = ? AND source = ?
-        GROUP BY avg(me.id / ?)
+        GROUP BY AVG(me.id / ?), MAX(owner.id)
         HAVING ?
         ORDER BY ? / ?, ?
       )',
@@ -187,7 +184,6 @@ my $tests = {
           ) me
           LEFT JOIN books books
             ON books.owner = me.id
-        ORDER BY me.id
       )',
       [
         [ { sqlt_datatype => 'integer' } => 3 ],
@@ -207,7 +203,7 @@ my $tests = {
                 JOIN owners owner
                   ON owner.id = me.owner
               WHERE source != ? AND me.title = ? AND source = ?
-              GROUP BY avg(me.id / ?)
+              GROUP BY AVG(me.id / ?), MAX(owner.id)
               HAVING ?
             ) me
       ) me
@@ -225,7 +221,7 @@ my $tests = {
                 JOIN owners owner
                   ON owner.id = me.owner
               WHERE source != ? AND me.title = ? AND source = ?
-              GROUP BY avg(me.id / ?)
+              GROUP BY AVG(me.id / ?), MAX(owner.id)
               HAVING ?
             ) me
       ) me
@@ -290,7 +286,6 @@ my $tests = {
             ) me
             LEFT JOIN books books
               ON books.owner = me.id
-          ORDER BY me.id
         )',
         [
           [ { sqlt_datatype => 'integer' } => 2 ],
@@ -310,7 +305,7 @@ my $tests = {
               JOIN owners owner
                 ON owner.id = me.owner
             WHERE source != ? AND me.title = ? AND source = ?
-            GROUP BY avg(me.id / ?)
+            GROUP BY AVG(me.id / ?), MAX(owner.id)
             HAVING ?
             %s
           ) me
@@ -339,7 +334,7 @@ my $tests = {
                     JOIN owners owner
                       ON owner.id = me.owner
                   WHERE source != ? AND me.title = ? AND source = ?
-                  GROUP BY avg(me.id / ?)
+                  GROUP BY AVG(me.id / ?), MAX(owner.id)
                   HAVING ?
                 ) me
             ) me
@@ -375,7 +370,7 @@ my $tests = {
                     JOIN owners owner
                       ON owner.id = me.owner
                   WHERE source != ? AND me.title = ? AND source = ?
-                  GROUP BY avg(me.id / ?)
+                  GROUP BY AVG(me.id / ?), MAX(owner.id)
                   HAVING ?
                   ORDER BY ? / ?, ?
                 ) me
@@ -408,7 +403,6 @@ my $tests = {
             ) me
             LEFT JOIN books books
               ON books.owner = me.id
-          ORDER BY me.id
         )',
         [
           [ { sqlt_datatype => 'integer' } => 2 ],
@@ -426,7 +420,7 @@ my $tests = {
           JOIN owners owner
             ON owner.id = me.owner
         WHERE source != ? AND me.title = ? AND source = ?
-        GROUP BY avg(me.id / ?)
+        GROUP BY AVG(me.id / ?), MAX(owner.id)
         HAVING ?
         FETCH FIRST 4 ROWS ONLY
       )',
@@ -446,7 +440,7 @@ my $tests = {
               JOIN owners owner
                 ON owner.id = me.owner
             WHERE source != ? AND me.title = ? AND source = ?
-            GROUP BY avg(me.id / ?)
+            GROUP BY AVG(me.id / ?), MAX(owner.id)
             HAVING ?
             ORDER BY me.id
             FETCH FIRST 7 ROWS ONLY
@@ -468,7 +462,7 @@ my $tests = {
           JOIN owners owner
             ON owner.id = me.owner
         WHERE source != ? AND me.title = ? AND source = ?
-        GROUP BY avg(me.id / ?)
+        GROUP BY AVG(me.id / ?), MAX(owner.id)
         HAVING ?
         ORDER BY ? / ?, ?
         FETCH FIRST 4 ROWS ONLY
@@ -492,7 +486,7 @@ my $tests = {
                   JOIN owners owner
                     ON owner.id = me.owner
                 WHERE source != ? AND me.title = ? AND source = ?
-                GROUP BY avg(me.id / ?)
+                GROUP BY AVG(me.id / ?), MAX(owner.id)
                 HAVING ?
                 ORDER BY ? / ?, ?
                 FETCH FIRST 7 ROWS ONLY
@@ -527,7 +521,6 @@ my $tests = {
           ) me
           LEFT JOIN books books
             ON books.owner = me.id
-        ORDER BY me.id
       )',
       [],
     ],
@@ -541,7 +534,7 @@ my $tests = {
           JOIN owners owner
             ON owner.id = me.owner
         WHERE source != ? AND me.title = ? AND source = ?
-        GROUP BY avg(me.id / ?)
+        GROUP BY AVG(me.id / ?), MAX(owner.id)
         HAVING ?
       )',
       [
@@ -560,7 +553,7 @@ my $tests = {
               JOIN owners owner
                 ON owner.id = me.owner
             WHERE source != ? AND me.title = ? AND source = ?
-            GROUP BY avg(me.id / ?)
+            GROUP BY AVG(me.id / ?), MAX(owner.id)
             HAVING ?
             ORDER BY me.id
           ) me
@@ -580,7 +573,7 @@ my $tests = {
           JOIN owners owner
             ON owner.id = me.owner
         WHERE source != ? AND me.title = ? AND source = ?
-        GROUP BY avg(me.id / ?)
+        GROUP BY AVG(me.id / ?), MAX(owner.id)
         HAVING ?
         ORDER BY ? / ?, ?
       )',
@@ -603,7 +596,7 @@ my $tests = {
                   JOIN owners owner
                     ON owner.id = me.owner
                 WHERE source != ? AND me.title = ? AND source = ?
-                GROUP BY avg(me.id / ?)
+                GROUP BY AVG(me.id / ?), MAX(owner.id)
                 HAVING ?
                 ORDER BY ? / ?, ?
               ) me
@@ -634,63 +627,11 @@ my $tests = {
           ) me
           LEFT JOIN books books
             ON books.owner = me.id
-        ORDER BY me.id
       )',
       [],
     ],
   },
 
-  RowCountOrGenericSubQ => {
-    limit => [
-      '(
-        SET ROWCOUNT 4
-        SELECT me.id, owner.id, owner.name, ? * ?, ?
-          FROM books me
-          JOIN owners owner
-            ON owner.id = me.owner
-        WHERE source != ? AND me.title = ? AND source = ?
-        GROUP BY avg(me.id / ?)
-        HAVING ?
-        ORDER BY me.id
-        SET ROWCOUNT 0
-      )',
-      [
-        @select_bind,
-        @where_bind,
-        @group_bind,
-        @having_bind,
-      ],
-    ],
-    limit_offset => [
-      '(
-        SELECT me.id, owner__id, owner__name, bar, baz
-          FROM (
-            SELECT me.id, owner.id AS owner__id, owner.name AS owner__name, ? * ? AS bar, ? AS baz
-              FROM books me
-              JOIN owners owner
-                ON owner.id = me.owner
-            WHERE source != ? AND me.title = ? AND source = ?
-            GROUP BY avg( me.id / ? )
-            HAVING ?
-          ) me
-        WHERE (
-          SELECT COUNT( * )
-            FROM books rownum__emulation
-          WHERE rownum__emulation.id < me.id
-        ) BETWEEN ? AND ?
-        ORDER BY me.id
-      )',
-      [
-        @select_bind,
-        @where_bind,
-        @group_bind,
-        @having_bind,
-        [ { sqlt_datatype => 'integer' } => 3 ],
-        [ { sqlt_datatype => 'integer' } => 6 ],
-      ],
-    ],
-  },
-
   GenericSubQ => {
     limit => [
       '(
@@ -701,7 +642,7 @@ my $tests = {
               JOIN owners owner
                 ON owner.id = me.owner
             WHERE source != ? AND me.title = ? AND source = ?
-            GROUP BY avg( me.id / ? )
+            GROUP BY AVG(me.id / ?), MAX(owner.id)
             HAVING ?
           ) me
         WHERE (
@@ -728,7 +669,7 @@ my $tests = {
               JOIN owners owner
                 ON owner.id = me.owner
             WHERE source != ? AND me.title = ? AND source = ?
-            GROUP BY avg( me.id / ? )
+            GROUP BY AVG(me.id / ?), MAX(owner.id)
             HAVING ?
           ) me
         WHERE (
@@ -787,7 +728,7 @@ for my $limtype (sort keys %$tests) {
     join => 'owner',  # single-rel manual prefetch
     rows => 4,
     '+columns' => { bar => \['? * ?', [ $attr => 11 ], [ $attr => 12 ]], baz => \[ '?', [ $attr => 13 ]] },
-    group_by => \[ 'avg(me.id / ?)', [ $attr => 21 ] ],
+    group_by => \[ 'AVG(me.id / ?), MAX(owner.id)', [ $attr => 21 ] ],
     having => \[ '?', [ $attr => 31 ] ],
     ($limtype =~ /GenericSubQ/ ? ( order_by => 'me.id' ) : () ),  # needs a simple-column stable order to be happy
   });