diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2014-04-09 10:56:42 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2014-04-09 10:56:42 -0700 |
commit | 3321d1a2d1908f25d962169d0a88b55bca3c2370 (patch) | |
tree | a9566884f2d4fd2a06ec0118fd36385232bdc508 /activerecord | |
parent | a38e957f8021bbd9a2fa2fc9f5bcea9d9ba6e7ef (diff) | |
download | rails-3321d1a2d1908f25d962169d0a88b55bca3c2370.tar.gz rails-3321d1a2d1908f25d962169d0a88b55bca3c2370.tar.bz2 rails-3321d1a2d1908f25d962169d0a88b55bca3c2370.zip |
working against arel/collector branch
Diffstat (limited to 'activerecord')
5 files changed, 9 insertions, 7 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb index e56ece0300..fdb6fbeeb4 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb @@ -10,9 +10,10 @@ module ActiveRecord def to_sql(arel, binds = []) if arel.respond_to?(:ast) binds = binds.dup - visitor.accept(arel.ast) do + c = visitor.accept(arel.ast, Arel::Collectors::SQLString.new) do quote(*binds.shift.reverse) end + c.value else arel end diff --git a/activerecord/lib/active_record/relation.rb b/activerecord/lib/active_record/relation.rb index 0ad7c207b3..f1fc7b62e2 100644 --- a/activerecord/lib/active_record/relation.rb +++ b/activerecord/lib/active_record/relation.rb @@ -520,9 +520,10 @@ module ActiveRecord arel = relation.arel binds = arel.bind_values + relation.bind_values - visitor.accept(arel.ast) do + c = visitor.accept(arel.ast, Arel::Collectors::SQLString.new) do connection.quote(*binds.shift.reverse) end + c.value end end diff --git a/activerecord/lib/active_record/sanitization.rb b/activerecord/lib/active_record/sanitization.rb index 5a71c13d91..936f8dba02 100644 --- a/activerecord/lib/active_record/sanitization.rb +++ b/activerecord/lib/active_record/sanitization.rb @@ -92,7 +92,7 @@ module ActiveRecord table = Arel::Table.new(table_name, arel_engine).alias(default_table_name) PredicateBuilder.build_from_hash(self, attrs, table).map { |b| - connection.visitor.accept b + connection.visitor.compile b }.join(' AND ') end alias_method :sanitize_sql_hash, :sanitize_sql_hash_for_conditions diff --git a/activerecord/lib/active_record/statement_cache.rb b/activerecord/lib/active_record/statement_cache.rb index 6090dfeb13..183e795e8f 100644 --- a/activerecord/lib/active_record/statement_cache.rb +++ b/activerecord/lib/active_record/statement_cache.rb @@ -33,7 +33,7 @@ module ActiveRecord end def self.query(visitor, ast) - Query.new visitor.accept(ast) + Query.new visitor.accept(ast, Arel::Collectors::SQLString.new).value end def self.partial_query(visitor, ast) diff --git a/activerecord/test/cases/adapters/sqlite3/explain_test.rb b/activerecord/test/cases/adapters/sqlite3/explain_test.rb index 68169cc7fc..f1d6119d2e 100644 --- a/activerecord/test/cases/adapters/sqlite3/explain_test.rb +++ b/activerecord/test/cases/adapters/sqlite3/explain_test.rb @@ -9,15 +9,15 @@ module ActiveRecord def test_explain_for_one_query explain = Developer.where(:id => 1).explain - assert_match %(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = ?), explain + assert_match %(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = ?), explain assert_match(/(SEARCH )?TABLE developers USING (INTEGER )?PRIMARY KEY/, explain) end def test_explain_with_eager_loading explain = Developer.where(:id => 1).includes(:audit_logs).explain - assert_match %(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = ?), explain + assert_match %(EXPLAIN for: SELECT "developers".* FROM "developers" WHERE "developers"."id" = ?), explain assert_match(/(SEARCH )?TABLE developers USING (INTEGER )?PRIMARY KEY/, explain) - assert_match %(EXPLAIN for: SELECT "audit_logs".* FROM "audit_logs" WHERE "audit_logs"."developer_id" IN (1)), explain + assert_match %(EXPLAIN for: SELECT "audit_logs".* FROM "audit_logs" WHERE "audit_logs"."developer_id" IN (1)), explain assert_match(/(SCAN )?TABLE audit_logs/, explain) end end |