aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorNick Kallen <nkallen@nick-kallens-computer-2.local>2007-12-30 13:22:31 -0800
committerNick Kallen <nkallen@nick-kallens-computer-2.local>2007-12-30 13:22:31 -0800
commitf9cc8bba39b1deb6b3f70cecb96beaf988054915 (patch)
treede8bc118ee34c5870f0175c05298f9ab39250617 /lib
parent960bbcb3ce4a82cf4f031d1c6682ce4c1a04474d (diff)
downloadrails-f9cc8bba39b1deb6b3f70cecb96beaf988054915.tar.gz
rails-f9cc8bba39b1deb6b3f70cecb96beaf988054915.tar.bz2
rails-f9cc8bba39b1deb6b3f70cecb96beaf988054915.zip
various
Diffstat (limited to 'lib')
-rw-r--r--lib/sql_algebra.rb24
-rw-r--r--lib/sql_algebra/predicates/binary_predicate.rb (renamed from lib/sql_algebra/relations/predicates/binary_predicate.rb)0
-rw-r--r--lib/sql_algebra/predicates/equality_predicate.rb (renamed from lib/sql_algebra/relations/predicates/equality_predicate.rb)0
-rw-r--r--lib/sql_algebra/predicates/greater_than_or_equal_to_predicate.rb (renamed from lib/sql_algebra/relations/predicates/greater_than_or_equal_to_predicate.rb)0
-rw-r--r--lib/sql_algebra/predicates/greater_than_predicate.rb (renamed from lib/sql_algebra/relations/predicates/greater_than_predicate.rb)0
-rw-r--r--lib/sql_algebra/predicates/less_than_or_equal_to_predicate.rb (renamed from lib/sql_algebra/relations/predicates/less_than_or_equal_to_predicate.rb)0
-rw-r--r--lib/sql_algebra/predicates/less_than_predicate.rb (renamed from lib/sql_algebra/relations/predicates/less_than_predicate.rb)0
-rw-r--r--lib/sql_algebra/predicates/match_predicate.rb (renamed from lib/sql_algebra/relations/predicates/match_predicate.rb)0
-rw-r--r--lib/sql_algebra/predicates/predicate.rb (renamed from lib/sql_algebra/relations/predicates/predicate.rb)0
-rw-r--r--lib/sql_algebra/predicates/range_inclusion_predicate.rb (renamed from lib/sql_algebra/relations/predicates/range_inclusion_predicate.rb)0
-rw-r--r--lib/sql_algebra/predicates/relation_inclusion_predicate.rb (renamed from lib/sql_algebra/relations/predicates/relation_inclusion_predicate.rb)0
-rw-r--r--lib/sql_algebra/relations/order_relation.rb11
-rw-r--r--lib/sql_algebra/relations/projection_relation.rb11
-rw-r--r--lib/sql_algebra/relations/range_relation.rb11
-rw-r--r--lib/sql_algebra/relations/selection_relation.rb12
15 files changed, 59 insertions, 10 deletions
diff --git a/lib/sql_algebra.rb b/lib/sql_algebra.rb
index b1816844e4..7407dc264b 100644
--- a/lib/sql_algebra.rb
+++ b/lib/sql_algebra.rb
@@ -7,17 +7,21 @@ require 'sql_algebra/relations/table_relation'
require 'sql_algebra/relations/join_operation'
require 'sql_algebra/relations/join_relation'
require 'sql_algebra/relations/attribute'
+require 'sql_algebra/relations/projection_relation'
+require 'sql_algebra/relations/selection_relation'
+require 'sql_algebra/relations/order_relation'
+require 'sql_algebra/relations/range_relation'
-require 'sql_algebra/relations/predicates/predicate'
-require 'sql_algebra/relations/predicates/binary_predicate'
-require 'sql_algebra/relations/predicates/equality_predicate'
-require 'sql_algebra/relations/predicates/less_than_predicate'
-require 'sql_algebra/relations/predicates/less_than_or_equal_to_predicate'
-require 'sql_algebra/relations/predicates/greater_than_predicate'
-require 'sql_algebra/relations/predicates/greater_than_or_equal_to_predicate'
-require 'sql_algebra/relations/predicates/range_inclusion_predicate'
-require 'sql_algebra/relations/predicates/relation_inclusion_predicate'
-require 'sql_algebra/relations/predicates/match_predicate'
+require 'sql_algebra/predicates/predicate'
+require 'sql_algebra/predicates/binary_predicate'
+require 'sql_algebra/predicates/equality_predicate'
+require 'sql_algebra/predicates/less_than_predicate'
+require 'sql_algebra/predicates/less_than_or_equal_to_predicate'
+require 'sql_algebra/predicates/greater_than_predicate'
+require 'sql_algebra/predicates/greater_than_or_equal_to_predicate'
+require 'sql_algebra/predicates/range_inclusion_predicate'
+require 'sql_algebra/predicates/relation_inclusion_predicate'
+require 'sql_algebra/predicates/match_predicate'
require 'sql_algebra/extensions/range'
diff --git a/lib/sql_algebra/relations/predicates/binary_predicate.rb b/lib/sql_algebra/predicates/binary_predicate.rb
index d7f4cb20e7..d7f4cb20e7 100644
--- a/lib/sql_algebra/relations/predicates/binary_predicate.rb
+++ b/lib/sql_algebra/predicates/binary_predicate.rb
diff --git a/lib/sql_algebra/relations/predicates/equality_predicate.rb b/lib/sql_algebra/predicates/equality_predicate.rb
index 2d206e6c12..2d206e6c12 100644
--- a/lib/sql_algebra/relations/predicates/equality_predicate.rb
+++ b/lib/sql_algebra/predicates/equality_predicate.rb
diff --git a/lib/sql_algebra/relations/predicates/greater_than_or_equal_to_predicate.rb b/lib/sql_algebra/predicates/greater_than_or_equal_to_predicate.rb
index 49127c312c..49127c312c 100644
--- a/lib/sql_algebra/relations/predicates/greater_than_or_equal_to_predicate.rb
+++ b/lib/sql_algebra/predicates/greater_than_or_equal_to_predicate.rb
diff --git a/lib/sql_algebra/relations/predicates/greater_than_predicate.rb b/lib/sql_algebra/predicates/greater_than_predicate.rb
index 03aecaed62..03aecaed62 100644
--- a/lib/sql_algebra/relations/predicates/greater_than_predicate.rb
+++ b/lib/sql_algebra/predicates/greater_than_predicate.rb
diff --git a/lib/sql_algebra/relations/predicates/less_than_or_equal_to_predicate.rb b/lib/sql_algebra/predicates/less_than_or_equal_to_predicate.rb
index fee6ea7f35..fee6ea7f35 100644
--- a/lib/sql_algebra/relations/predicates/less_than_or_equal_to_predicate.rb
+++ b/lib/sql_algebra/predicates/less_than_or_equal_to_predicate.rb
diff --git a/lib/sql_algebra/relations/predicates/less_than_predicate.rb b/lib/sql_algebra/predicates/less_than_predicate.rb
index 03cbdcf000..03cbdcf000 100644
--- a/lib/sql_algebra/relations/predicates/less_than_predicate.rb
+++ b/lib/sql_algebra/predicates/less_than_predicate.rb
diff --git a/lib/sql_algebra/relations/predicates/match_predicate.rb b/lib/sql_algebra/predicates/match_predicate.rb
index 90a13090d4..90a13090d4 100644
--- a/lib/sql_algebra/relations/predicates/match_predicate.rb
+++ b/lib/sql_algebra/predicates/match_predicate.rb
diff --git a/lib/sql_algebra/relations/predicates/predicate.rb b/lib/sql_algebra/predicates/predicate.rb
index 4c395a3fdc..4c395a3fdc 100644
--- a/lib/sql_algebra/relations/predicates/predicate.rb
+++ b/lib/sql_algebra/predicates/predicate.rb
diff --git a/lib/sql_algebra/relations/predicates/range_inclusion_predicate.rb b/lib/sql_algebra/predicates/range_inclusion_predicate.rb
index e69de29bb2..e69de29bb2 100644
--- a/lib/sql_algebra/relations/predicates/range_inclusion_predicate.rb
+++ b/lib/sql_algebra/predicates/range_inclusion_predicate.rb
diff --git a/lib/sql_algebra/relations/predicates/relation_inclusion_predicate.rb b/lib/sql_algebra/predicates/relation_inclusion_predicate.rb
index 5881a85d99..5881a85d99 100644
--- a/lib/sql_algebra/relations/predicates/relation_inclusion_predicate.rb
+++ b/lib/sql_algebra/predicates/relation_inclusion_predicate.rb
diff --git a/lib/sql_algebra/relations/order_relation.rb b/lib/sql_algebra/relations/order_relation.rb
new file mode 100644
index 0000000000..8d07c58d64
--- /dev/null
+++ b/lib/sql_algebra/relations/order_relation.rb
@@ -0,0 +1,11 @@
+class OrderRelation < Relation
+ attr_reader :relation, :attributes
+
+ def initialize(relation, *attributes)
+ @relation, @attributes = relation, attributes
+ end
+
+ def ==(other)
+ relation == other.relation and attributes.eql?(other.attributes)
+ end
+end \ No newline at end of file
diff --git a/lib/sql_algebra/relations/projection_relation.rb b/lib/sql_algebra/relations/projection_relation.rb
new file mode 100644
index 0000000000..caebfc1b62
--- /dev/null
+++ b/lib/sql_algebra/relations/projection_relation.rb
@@ -0,0 +1,11 @@
+class ProjectionRelation < Relation
+ attr_reader :relation, :attributes
+
+ def initialize(relation, *attributes)
+ @relation, @attributes = relation, attributes
+ end
+
+ def ==(other)
+ relation == other.relation and attributes.eql?(other.attributes)
+ end
+end \ No newline at end of file
diff --git a/lib/sql_algebra/relations/range_relation.rb b/lib/sql_algebra/relations/range_relation.rb
new file mode 100644
index 0000000000..fd7e2898fa
--- /dev/null
+++ b/lib/sql_algebra/relations/range_relation.rb
@@ -0,0 +1,11 @@
+class RangeRelation < Relation
+ attr_reader :relation, :range
+
+ def initialize(relation, range)
+ @relation, @range = relation, range
+ end
+
+ def ==(other)
+ relation == other.relation and range == other.range
+ end
+end \ No newline at end of file
diff --git a/lib/sql_algebra/relations/selection_relation.rb b/lib/sql_algebra/relations/selection_relation.rb
new file mode 100644
index 0000000000..5654d8de31
--- /dev/null
+++ b/lib/sql_algebra/relations/selection_relation.rb
@@ -0,0 +1,12 @@
+class SelectionRelation < Relation
+ attr_reader :relation, :predicate
+
+ def initialize(relation, *predicates)
+ @predicate = predicates.shift
+ @relation = predicates.empty?? relation : SelectionRelation.new(relation, *predicates)
+ end
+
+ def ==(other)
+ relation == other.relation and predicate == other.predicate
+ end
+end \ No newline at end of file