[Bast-commits] r6748 - DBIx-Class/0.08/branches/mssql_top_fixes/t

ribasushi at dev.catalyst.perl.org ribasushi at dev.catalyst.perl.org
Sat Jun 20 22:18:33 GMT 2009


Author: ribasushi
Date: 2009-06-20 22:18:33 +0000 (Sat, 20 Jun 2009)
New Revision: 6748

Modified:
   DBIx-Class/0.08/branches/mssql_top_fixes/t/746mssql.t
Log:
Now really final

Modified: DBIx-Class/0.08/branches/mssql_top_fixes/t/746mssql.t
===================================================================
--- DBIx-Class/0.08/branches/mssql_top_fixes/t/746mssql.t	2009-06-20 22:01:54 UTC (rev 6747)
+++ DBIx-Class/0.08/branches/mssql_top_fixes/t/746mssql.t	2009-06-20 22:18:33 UTC (rev 6748)
@@ -4,13 +4,14 @@
 use Test::More;
 use lib qw(t/lib);
 use DBICTest;
+use DBIC::SqlMakerTest;
 
 my ($dsn, $user, $pass) = @ENV{map { "DBICTEST_MSSQL_ODBC_${_}" } qw/DSN USER PASS/};
 
 plan skip_all => 'Set $ENV{DBICTEST_MSSQL_ODBC_DSN}, _USER and _PASS to run this test'
   unless ($dsn && $user);
 
-plan tests => 21;
+plan tests => 23;
 
 my $schema = DBICTest::Schema->connect($dsn, $user, $pass);
 
@@ -137,7 +138,6 @@
 #
 
 {
-$schema->debug (1);
   # try a ->has_many direction (group_by is not possible on has_many with limit)
   my $owners = $schema->resultset ('Owners')->search ({
       'books.id' => { '!=', undef }
@@ -156,6 +156,27 @@
     is ($owners->page(3)->count, 2, 'has-many prefetch returns correct count');
   }
 
+  # make sure count does not become overly complex FIXME
+  is_same_sql_bind (
+    $owners->page(2)->count_rs->as_query,
+    '(
+      SELECT COUNT( * )
+        FROM (
+          SELECT TOP 3 id
+            FROM (
+              SELECT TOP 6 me.id
+                FROM owners me
+                LEFT JOIN books books ON books.owner = me.id
+              WHERE ( books.id IS NOT NULL )
+              GROUP BY me.id
+              ORDER BY me.id ASC
+            ) AS inner_sel
+          ORDER BY id DESC
+        ) count_subq
+    )',
+    [],
+  );
+
   # try a ->belongs_to direction (no select collapse, group_by should work)
   my $books = $schema->resultset ('BooksInLibrary')->search ({
       'owner.name' => [qw/wiggle woggle/],
@@ -175,6 +196,32 @@
     is ($books->page(2)->all, 1, 'Prefetched grouped search returns correct number of rows');
     is ($books->page(2)->count, 1, 'Prefetched grouped search returns correct count');
   }
+
+  # make sure count does not become overly complex FIXME
+  is_same_sql_bind (
+    $books->page(2)->count_rs->as_query,
+    '(
+      SELECT COUNT( * )
+        FROM (
+          SELECT TOP 2 id
+            FROM (
+              SELECT TOP 4 me.id
+                FROM books me
+                JOIN owners owner ON owner.id = me.owner
+              WHERE ( ( ( owner.name = ? OR owner.name = ? ) AND source = ? ) )
+              GROUP BY me.id, me.source, me.owner, me.title, me.price, owner.id, owner.name
+              ORDER BY me.id ASC
+            ) AS inner_sel
+          ORDER BY id DESC
+        ) count_subq
+    )',
+    [
+      [ 'owner.name' => 'wiggle' ],
+      [ 'owner.name' => 'woggle' ],
+      [ 'source' => 'Library' ],
+    ],
+  );
+
 }
 
 # clean up our mess




More information about the Bast-commits mailing list