<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -4,16 +4,20 @@ module Koios
 
     attr_reader :engine
 
-    def call(&amp;blk)
-      engine.read(self, &amp;blk)
+    def eval
+      @rows ||= engine.read(self)
+      @rows
     end
 
     def reload
-      # NOOP
+      @rows = nil
+      true
     end
 
-    def each(&amp;blk)
-      engine.read(self, &amp;blk)
+    def each
+      eval.each do |r|
+        yield r
+      end
     end
 
     def where(query = nil)
@@ -57,16 +61,16 @@ module Koios
     end
 
     def length
-      engine.read(self).length
+      eval.length
     end
 
     def [](i)
-      engine.read(self)[i]
+      eval[i]
     end
 
     def first(query = nil)
-      return engine.read(self).first unless query
-      all(query).first
+      return all(query).first if query
+      eval.first
     end
 
     def empty?</diff>
      <filename>lib/koios/algebra/relation.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,6 +6,10 @@ module Koios
 
     delegate :join?, :engine, :properties, :name, :externalizable?, :to =&gt; :relation
 
+    def initialize(relation)
+      @relation = relation
+    end
+
     def properties
       @properties ||= relation.properties.bind(self)
     end</diff>
      <filename>lib/koios/algebra/relations/compound.rb</filename>
    </modified>
    <modified>
      <diff>@@ -41,9 +41,6 @@ module Koios
         begin
           while reader.next!
             rows &lt;&lt; (obj = relation.load(reader.values))
-            if block_given?
-              yield obj
-            end
           end
         ensure
           reader.close</diff>
      <filename>lib/koios/engines/sql.rb</filename>
    </modified>
    <modified>
      <diff>@@ -62,6 +62,10 @@ module Koios
       def create(attrs = {})
         new(attrs).tap { |i| i.save }
       end
+
+      def eval
+        Compound.new(self).eval
+      end
     end
 
     def model</diff>
      <filename>lib/koios/resource.rb</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,7 @@ Spec::Runner.configure do |config|
     def empty!
       before :all do
         @relation.each { |resource| resource.destroy }
+        @relation.reload
       end
     end
   end)</diff>
      <filename>spec/spec_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>a26db7e8ec0299ddaa9fc5a155658b9ec0bccfa7</id>
    </parent>
  </parents>
  <author>
    <name>Carl Lerche</name>
    <email>carllerche@mac.com</email>
  </author>
  <url>http://github.com/carllerche/koios/commit/4d8be0714cc677cd3b43662b13e36706468018f9</url>
  <id>4d8be0714cc677cd3b43662b13e36706468018f9</id>
  <committed-date>2009-11-02T10:05:30-08:00</committed-date>
  <authored-date>2009-11-02T10:05:30-08:00</authored-date>
  <message>Change up relations to call eval to fetch records</message>
  <tree>3918af89990ee2287d31379355ef630d00c5ad83</tree>
  <committer>
    <name>Carl Lerche</name>
    <email>carllerche@mac.com</email>
  </committer>
</commit>
