Documented use of cursor->next for fast but uncomfortable data fetches
Nigel Metheringham [Wed, 2 May 2007 14:58:45 +0000 (14:58 +0000)]
lib/DBIx/Class/Cursor.pm
lib/DBIx/Class/Manual/Cookbook.pod
lib/DBIx/Class/Storage/DBI/Cursor.pm

index 3c55b69..ded8b56 100644 (file)
@@ -38,7 +38,8 @@ sub new {
 
 =head2 next
 
-Virtual method. Advances the cursor to the next row.
+Virtual method. Advances the cursor to the next row. Returns an array of
+column values (the result of L<DBI/fetchrow_array> method).
 
 =cut
 
index 6d5b67d..b3dff9c 100644 (file)
@@ -1145,6 +1145,22 @@ C<inflate_result>:
      }
   }
 
+=head2 Get raw data for blindingly fast results
+
+If the C<inflate_result> solution above is not fast enough for you, you
+can use a DBIx::Class to return values exactly as they come out of the
+data base with none of the convenience methods wrapped round them.
+
+This is used like so:-
+
+  my $cursor = $rs->cursor
+  while (my @vals = $cursor->next) {
+      # use $val[0..n] here
+  }
+
+You will need to map the array offsets to particular columns (you can
+use the I<select> attribute of C<search()> to force ordering).
+
 =head2 Want to know if find_or_create found or created a row?
 
 Just use C<find_or_new> instead, then check C<in_storage>:
index 770608c..d2aa347 100644 (file)
@@ -61,7 +61,8 @@ sub new {
 
 =back
 
-Advances the cursor to the next row and returns an arrayref of column values.
+Advances the cursor to the next row and returns an array of column
+values (the result of L<DBI/fetchrow_array> method).
 
 =cut