use min dbms_version for ::Replicated
[dbsrgits/DBIx-Class.git] / t / 746mssql.t
index f73f5ff..ca92a41 100644 (file)
@@ -33,6 +33,12 @@ isa_ok( $schema->storage, 'DBIx::Class::Storage::DBI::ODBC::Microsoft_SQL_Server
   ok (! $schema2->storage->connected, 'a re-connected cloned schema starts unconnected');
 }
 
+$schema->storage->_dbh->disconnect;
+
+lives_ok {
+  $schema->storage->dbh_do(sub { $_[1]->do('select 1') })
+} '_ping works';
+
 $schema->storage->dbh_do (sub {
     my ($storage, $dbh) = @_;
     eval { $dbh->do("DROP TABLE artist") };
@@ -258,11 +264,11 @@ lives_ok ( sub {
 # plain ordered subqueries throw
 throws_ok (sub {
   $schema->resultset('Owners')->search ({}, { order_by => 'name' })->as_query
-}, qr/ordered subquery encountered/, 'Ordered Subquery detection throws ok');
+}, qr/ordered subselect encountered/, 'Ordered Subselect detection throws ok');
 
 # make sure ordered subselects *somewhat* work
 {
-  my $owners = $schema->resultset ('Owners')->search ({}, { order_by => 'name', offset => 2, rows => 3, unsafe_subquery => 1 });
+  my $owners = $schema->resultset ('Owners')->search ({}, { order_by => 'name', offset => 2, rows => 3, unsafe_subselect_ok => 1 });
 
   my $al = $owners->current_source_alias;
   my $sealed_owners = $owners->result_source->resultset->search (
@@ -288,7 +294,7 @@ TODO: {
   local $TODO = "This porbably will never work, but it isn't critical either afaik";
 
   my $book_owner_ids = $schema->resultset ('BooksInLibrary')
-                               ->search ({}, { join => 'owner', distinct => 1, order_by => 'owner.name', unsafe_subquery => 1 })
+                               ->search ({}, { join => 'owner', distinct => 1, order_by => 'owner.name', unsafe_subselect_ok => 1 })
                                 ->get_column ('owner');
 
   my $book_owners = $schema->resultset ('Owners')->search ({
@@ -304,7 +310,7 @@ TODO: {
 
 # This is known not to work - thus the negative test
 {
-  my $owners = $schema->resultset ('Owners')->search ({}, { order_by => 'name', offset => 2, rows => 3, unsafe_subquery => 1 });
+  my $owners = $schema->resultset ('Owners')->search ({}, { order_by => 'name', offset => 2, rows => 3, unsafe_subselect_ok => 1 });
   my $corelated_owners = $owners->result_source->resultset->search (
     {
       id => { -in => $owners->get_column('id')->as_query },
@@ -320,6 +326,13 @@ TODO: {
     join ("\x00", map { $_->name } ($owners->all) ),
     'Sadly sort not preserved from within a corelated subquery',
   );
+
+  cmp_ok (
+    join ("\x00", sort map { $_->name } ($corelated_owners->all) ),
+      'ne',
+    join ("\x00", sort map { $_->name } ($owners->all) ),
+    'Which in fact gives a completely wrong dataset',
+  );
 }
 
 
@@ -344,7 +357,7 @@ TODO: {
     'Rows were properly ordered'
   );
 
-  my $limited_rs = $rs->search ({}, {rows => 7, offset => 2, unsafe_subquery => 1});
+  my $limited_rs = $rs->search ({}, {rows => 7, offset => 2, unsafe_subselect_ok => 1});
   is ($limited_rs->count, 6, 'Correct count of limited right-sorted joined resultset');
   is ($limited_rs->count_rs->next, 6, 'Correct count_rs of limited right-sorted joined resultset');
 
@@ -390,7 +403,7 @@ $schema->storage->_sql_maker->{name_sep} = '.';
       prefetch => 'books',
       order_by => { -asc => \['name + ?', [ test => 'xxx' ]] }, # test bindvar propagation
       rows     => 3,  # 8 results total
-      unsafe_subquery => 1,
+      unsafe_subselect_ok => 1,
     },
   );
 
@@ -418,8 +431,8 @@ $schema->storage->_sql_maker->{name_sep} = '.';
       having => \['1 = ?', [ test => 1 ] ], #test having propagation
       prefetch => 'owner',
       rows     => 2,  # 3 results total
-      order_by => { -desc => 'owner' },
-      unsafe_subquery => 1,
+      order_by => { -desc => 'me.owner' },
+      unsafe_subselect_ok => 1,
     },
   );