From 9870396ed13b720980957e848e4ce65582fd0d0b Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Sun, 17 Jul 2005 09:52:00 +0000 Subject: Fixed incompatibility in DB2 adapter with the new limit/offset approach #1718 [Maik Schmidt] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1850 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../associations/has_and_belongs_to_many_association.rb | 4 ++-- .../active_record/connection_adapters/abstract_adapter.rb | 2 ++ .../lib/active_record/connection_adapters/db2_adapter.rb | 13 +++++-------- 3 files changed, 9 insertions(+), 10 deletions(-) (limited to 'activerecord/lib/active_record') diff --git a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb index 39a6a7ed5f..9183445d74 100644 --- a/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb +++ b/activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb @@ -122,7 +122,7 @@ module ActiveRecord when @association_foreign_key attributes[column.name] = record.quoted_id else - value = record[column.name] + value = @owner.send(:quote, record[column.name], column) attributes[column.name] = value unless value.nil? end attributes @@ -130,7 +130,7 @@ module ActiveRecord sql = "INSERT INTO #{@join_table} (#{@owner.send(:quoted_column_names, attributes).join(', ')}) " + - "VALUES (#{attributes.values.collect { |value| @owner.send(:quote, value) }.join(', ')})" + "VALUES (#{attributes.values.join(', ')})" @owner.connection.execute(sql) end diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb index 163925df42..6eda3c0624 100755 --- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb @@ -323,6 +323,8 @@ module ActiveRecord when String if column && column.type == :binary "'#{quote_string(column.string_to_binary(value))}'" # ' (for ruby-mode) + elsif column && [:integer, :float].include?(column.type) + value.to_s else "'#{quote_string(value)}'" # ' (for ruby-mode) end diff --git a/activerecord/lib/active_record/connection_adapters/db2_adapter.rb b/activerecord/lib/active_record/connection_adapters/db2_adapter.rb index 232764e37c..a80a227a6d 100644 --- a/activerecord/lib/active_record/connection_adapters/db2_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/db2_adapter.rb @@ -28,7 +28,7 @@ begin end module ConnectionAdapters - # The DB2 adapter works with the C-based CLI driver (http://raa.ruby-lang.org/project/ruby-db2/). + # The DB2 adapter works with the C-based CLI driver (http://rubyforge.org/projects/ruby-dbi/) # # Options: # @@ -91,12 +91,9 @@ begin string.gsub(/'/, "''") # ' (for ruby-mode) end - def add_limit_with_offset!(sql, limit, offset) - raise ArgumentError, 'add_limit_with_offset! not implemented' - end - - def add_limit_without_offset!(sql, limit) - sql << " FETCH FIRST #{limit} ROWS ONLY" + def add_limit_offset!(sql, options) + sql << " FETCH FIRST #{options[:limit]} ROWS ONLY" if options[:limit] and !options[:limit].nil? + raise ArgumentError, 'add_limit_offset! not implemented.' if options[:offset] and !options[:offset].nil? end def columns(table_name, name = nil) @@ -128,7 +125,7 @@ begin stmt = nil log(sql, name) do stmt = DB2::Statement.new(@connection) - stmt.exec_direct("#{sql} with ur") + stmt.exec_direct("#{sql.gsub(/=\s*null/i, 'IS NULL')} with ur") end rows = [] -- cgit v1.2.3