aboutsummaryrefslogtreecommitdiffstats
path: root/lib/sql_algebra
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sql_algebra')
-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
14 files changed, 45 insertions, 0 deletions
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