<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/pseudo_sql_parser.rb</filename>
    </added>
    <added>
      <filename>lib/pseudo_sql_parser.rl</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,6 +1,6 @@
 = QueryBuilder
 
-* http://github.com/zena/querybuilder/tree/master
+* http://zenadmin.org/524
 
 == DESCRIPTION:
 </diff>
      <filename>README.rdoc</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,7 @@
 $:.unshift(File.dirname(__FILE__)) unless
   $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
 
+require 'pseudo_sql_parser'
 require 'yaml'
 
 =begin rdoc
@@ -219,7 +220,6 @@ class QueryBuilder
     end
   
     def parse_part(part, is_last)
-      
       rest,   context = part.split(' in ')
       clause, filters = rest.split(/\s+where\s+/)
       </diff>
      <filename>lib/QueryBuilder.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,11 +1,14 @@
 empty:
   src: &quot;&quot;
+  sxp: &quot;[:query]&quot;
   res: &quot;[\&quot;SELECT objects.* FROM objects WHERE objects.parent_id = ?\&quot;, id]&quot;
 
 objects:
+  sxp: '[:query, [:relation, &quot;objects&quot;]]'
   res: &quot;[\&quot;SELECT objects.* FROM objects WHERE objects.parent_id = ?\&quot;, id]&quot;
 
 objects_in_project:
+  sxp: '[:query, [:scope, [:relation, &quot;objects&quot;], &quot;project&quot;]]'
   res: &quot;[\&quot;SELECT objects.* FROM objects WHERE objects.project_id = ?\&quot;, project_id]&quot;
 
 objects_in_site:</diff>
      <filename>test/QueryBuilder/basic.yml</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 simple:
   src: &quot;objects where name = 'foo' in site&quot;
+  sxp: '[:query, [:scope, [:filter, [:relation, &quot;objects&quot;], [:&quot;=&quot;, [:field, &quot;name&quot;], [:string, &quot;foo&quot;]]], &quot;site&quot;]]'
   res: &quot;[\&quot;SELECT objects.* FROM objects WHERE objects.name = ?\&quot;, \&quot;foo\&quot;]&quot;
 
 recipients_that_are_clients:
@@ -28,6 +29,7 @@ custom_query_having:
 
 equation_in_filter:
   src: &quot;objects where event_at &gt; REF_DATE + custom_a months&quot;
+  sxp: '[:query, [:filter, [:relation, &quot;objects&quot;], [:&gt;, [:field, &quot;event_at&quot;], [:+, [:field, &quot;REF_DATE&quot;], [:field, &quot;custom_a&quot;]]]]]'
   res: &quot;[\&quot;SELECT objects.* FROM objects WHERE objects.parent_id = ? AND objects.event_at &gt; now() + INTERVAL objects.custom_a MONTH\&quot;, id]&quot;
 
 equation_in_filter_date:</diff>
      <filename>test/QueryBuilder/filters.yml</filename>
    </modified>
    <modified>
      <diff>@@ -1,7 +1,11 @@
 
 icons_from_recipients:
+  sxp: '[:query, [:from, [:relation, &quot;icons&quot;], [:relation, &quot;recipients&quot;]]]'
   res: &quot;[\&quot;SELECT ob1.* FROM objects,links,objects AS ob1,links AS li1 WHERE ob1.id = li1.source_id AND li1.relation_id = 5 AND li1.target_id = objects.id AND objects.id = links.target_id AND links.relation_id = 4 AND links.source_id = ? GROUP BY ob1.id\&quot;, id]&quot;
 
+icons_from_recipients_from_letters:
+  sxp: '[:query, [:from, [:relation, &quot;icons&quot;], [:from, [:relation, &quot;recipients&quot;], [:relation, &quot;letters&quot;]]]]'
+
 letters_from_recipients:
   res: &quot;[\&quot;SELECT ob1.* FROM objects,links,objects AS ob1 WHERE ob1.kpath LIKE 'NNL%' AND ob1.parent_id = objects.id AND objects.id = links.target_id AND links.relation_id = 4 AND links.source_id = ? GROUP BY ob1.id\&quot;, id]&quot;
 </diff>
      <filename>test/QueryBuilder/joins.yml</filename>
    </modified>
    <modified>
      <diff>@@ -21,6 +21,9 @@ class DummyQueryBuilder &lt; Test::Unit::TestCase
       else
         query.errors.join(&quot;, &quot;)
       end
+    when 'sxp'
+      # s-expression
+      PseudoSQLParser.parse(source).inspect
     when 'sql'
       query.sql(binding)
     when 'count'</diff>
      <filename>test/test_QueryBuilder.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,7 @@
 require 'stringio'
 require 'test/unit'
 require File.dirname(__FILE__) + '/../lib/QueryBuilder'
+require File.dirname(__FILE__) + '/../lib/pseudo_sql_parser'
 require File.dirname(__FILE__) + '/mock/dummy_query'
 require File.dirname(__FILE__) + '/mock/user_query'
 require 'rubygems'</diff>
      <filename>test/test_helper.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>dce150a7cf1137a5b260c4922de0422f0465145c</id>
    </parent>
  </parents>
  <author>
    <name>Gaspard Bucher</name>
    <email>gaspard@teti.ch</email>
  </author>
  <url>http://github.com/zena/querybuilder/commit/6771494b043c38bd1e241c8451cf6026ae382177</url>
  <id>6771494b043c38bd1e241c8451cf6026ae382177</id>
  <committed-date>2009-06-06T08:00:08-07:00</committed-date>
  <authored-date>2009-06-06T08:00:08-07:00</authored-date>
  <message>Started to change the pseudo_sql compilation into a two step process (s-expression compilation with ragel + compilation) in order to enable better query introspection.</message>
  <tree>e703707703f81ab60a3a2150d49684231d6b8228</tree>
  <committer>
    <name>Gaspard Bucher</name>
    <email>gaspard@teti.ch</email>
  </committer>
</commit>
