From b8a4dabab94bfaa73ec031337ce9ef9abd798383 Mon Sep 17 00:00:00 2001 From: Nick Kallen Date: Sat, 5 Jan 2008 16:04:41 -0800 Subject: quoting --- lib/sql_algebra/extensions/object.rb | 2 +- lib/sql_algebra/relations/inner_join_relation.rb | 1 + lib/sql_algebra/relations/join_relation.rb | 2 +- lib/sql_algebra/relations/left_outer_join_relation.rb | 1 + lib/sql_algebra/sql_builder/equals_condition_builder.rb | 2 +- lib/sql_algebra/sql_builder/join_builder.rb | 2 +- lib/sql_algebra/sql_builder/order_builder.rb | 2 +- lib/sql_algebra/sql_builder/select_builder.rb | 2 +- lib/sql_algebra/sql_builder/selects_builder.rb | 2 +- lib/sql_algebra/sql_builder/sql_builder.rb | 7 +++++++ 10 files changed, 16 insertions(+), 7 deletions(-) (limited to 'lib') diff --git a/lib/sql_algebra/extensions/object.rb b/lib/sql_algebra/extensions/object.rb index 6ea66d7484..c241581f86 100644 --- a/lib/sql_algebra/extensions/object.rb +++ b/lib/sql_algebra/extensions/object.rb @@ -6,7 +6,7 @@ class Object def to_sql(builder = EqualsConditionBuilder.new) me = self builder.call do - value me + value me.to_s end end end \ No newline at end of file diff --git a/lib/sql_algebra/relations/inner_join_relation.rb b/lib/sql_algebra/relations/inner_join_relation.rb index 6b932e3b21..5e58f241f8 100644 --- a/lib/sql_algebra/relations/inner_join_relation.rb +++ b/lib/sql_algebra/relations/inner_join_relation.rb @@ -1,4 +1,5 @@ class InnerJoinRelation < JoinRelation + protected def join_type :inner_join end diff --git a/lib/sql_algebra/relations/join_relation.rb b/lib/sql_algebra/relations/join_relation.rb index 6dd63ad117..79c8a915b8 100644 --- a/lib/sql_algebra/relations/join_relation.rb +++ b/lib/sql_algebra/relations/join_relation.rb @@ -12,7 +12,7 @@ class JoinRelation < Relation end def qualify - JoinRelation.new(relation1.qualify, relation2.qualify, *predicates.collect(&:qualify)) + self.class.new(relation1.qualify, relation2.qualify, *predicates.collect(&:qualify)) end protected diff --git a/lib/sql_algebra/relations/left_outer_join_relation.rb b/lib/sql_algebra/relations/left_outer_join_relation.rb index f4ece43861..6d13d8da07 100644 --- a/lib/sql_algebra/relations/left_outer_join_relation.rb +++ b/lib/sql_algebra/relations/left_outer_join_relation.rb @@ -1,4 +1,5 @@ class LeftOuterJoinRelation < JoinRelation + protected def join_type :left_outer_join end diff --git a/lib/sql_algebra/sql_builder/equals_condition_builder.rb b/lib/sql_algebra/sql_builder/equals_condition_builder.rb index 016395556a..70067c20ca 100644 --- a/lib/sql_algebra/sql_builder/equals_condition_builder.rb +++ b/lib/sql_algebra/sql_builder/equals_condition_builder.rb @@ -5,7 +5,7 @@ class EqualsConditionBuilder < SqlBuilder end def column(table, column, aliaz = nil) - @operands << (aliaz ? aliaz : "#{table}.#{column}") + @operands << (aliaz ? quote(aliaz) : "#{quote_table_name(table)}.#{quote_column_name(column)}") end def value(value) diff --git a/lib/sql_algebra/sql_builder/join_builder.rb b/lib/sql_algebra/sql_builder/join_builder.rb index 28f4437dec..ef63d1fcb1 100644 --- a/lib/sql_algebra/sql_builder/join_builder.rb +++ b/lib/sql_algebra/sql_builder/join_builder.rb @@ -8,6 +8,6 @@ class JoinBuilder < SqlBuilder delegate :call, :to => :@conditions def to_s - "#{join_type} #{@table} ON #{@conditions}" + "#{join_type} #{quote_table_name(@table)} ON #{@conditions}" end end \ No newline at end of file diff --git a/lib/sql_algebra/sql_builder/order_builder.rb b/lib/sql_algebra/sql_builder/order_builder.rb index 4eea40fa36..43f705faf0 100644 --- a/lib/sql_algebra/sql_builder/order_builder.rb +++ b/lib/sql_algebra/sql_builder/order_builder.rb @@ -5,7 +5,7 @@ class OrderBuilder < SqlBuilder end def column(table, column, aliaz = nil) - @orders << (aliaz ? aliaz : "#{table}.#{column}") + @orders << (aliaz ? quote(aliaz) : "#{quote_table_name(table)}.#{quote_column_name(column)}") end def to_s diff --git a/lib/sql_algebra/sql_builder/select_builder.rb b/lib/sql_algebra/sql_builder/select_builder.rb index 68df68db93..9a85ad7eec 100644 --- a/lib/sql_algebra/sql_builder/select_builder.rb +++ b/lib/sql_algebra/sql_builder/select_builder.rb @@ -41,7 +41,7 @@ class SelectBuilder < SqlBuilder end def from_clause - "FROM #{@table} #{@joins}" unless @table.blank? + "FROM #{quote_table_name(@table)} #{@joins}" unless @table.blank? end def where_clause diff --git a/lib/sql_algebra/sql_builder/selects_builder.rb b/lib/sql_algebra/sql_builder/selects_builder.rb index 72f6f52397..ce6ee1eb67 100644 --- a/lib/sql_algebra/sql_builder/selects_builder.rb +++ b/lib/sql_algebra/sql_builder/selects_builder.rb @@ -13,7 +13,7 @@ class SelectsBuilder < SqlBuilder end def column(table, column, aliaz = nil) - @selects << "#{table}.#{column}" + (aliaz ? " AS #{aliaz}" : '') + @selects << "#{quote_table_name(table)}.#{quote_column_name(column)}" + (aliaz ? " AS #{quote(aliaz)}" : '') end delegate :blank?, :to => :@selects diff --git a/lib/sql_algebra/sql_builder/sql_builder.rb b/lib/sql_algebra/sql_builder/sql_builder.rb index 5cfbe578d5..c984444e41 100644 --- a/lib/sql_algebra/sql_builder/sql_builder.rb +++ b/lib/sql_algebra/sql_builder/sql_builder.rb @@ -25,4 +25,11 @@ class SqlBuilder end end end + + private + delegate :quote_table_name, :quote_column_name, :quote, :to => :connection + + def connection + ActiveRecord::Base.connection + end end \ No newline at end of file -- cgit v1.2.3