1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

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
This commit is contained in:
David Heinemeier Hansson 2005-07-17 09:52:00 +00:00
parent bb62568cc3
commit 9870396ed1
6 changed files with 14 additions and 11 deletions

View file

@ -1,5 +1,7 @@
*SVN*
* Fixed incompatibility in DB2 adapter with the new limit/offset approach #1718 [Maik Schmidt]
* Added :select option to find which can specify a different value than the default *, like find(:all, :select => "first_name, last_name"), if you either only want to select part of the columns or exclude columns otherwise included from a join #1338 [Stefan Kaes]

View file

@ -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

View file

@ -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

View file

@ -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 = []

View file

@ -347,7 +347,7 @@ class BasicsTest < Test::Unit::TestCase
end
def test_update_many
topic_data = { "1" => { "content" => "1 updated" }, "2" => { "content" => "2 updated" } }
topic_data = { 1 => { "content" => "1 updated" }, 2 => { "content" => "2 updated" } }
updated = Topic.update(topic_data.keys, topic_data.values)
assert_equal 2, updated.size

View file

@ -21,4 +21,6 @@ DROP TABLE authors;
DROP TABLE tasks;
DROP TABLE categories;
DROP TABLE categories_posts;
DROP TABLE fk_test_has_pk;
DROP TABLE fk_test_has_fk;