From baa12f2fa6604d27d07c299aaf591250d9a5021c Mon Sep 17 00:00:00 2001 From: Josh Susser Date: Tue, 29 Apr 2008 22:08:40 -0700 Subject: [PATCH] quote table name in update_with_lock --- .../lib/active_record/locking/optimistic.rb | 2 +- activerecord/test/cases/locking_test.rb | 9 ++++++++- activerecord/test/schema/schema.rb | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/activerecord/lib/active_record/locking/optimistic.rb b/activerecord/lib/active_record/locking/optimistic.rb index f2c2c5f..65f88cf 100644 --- a/activerecord/lib/active_record/locking/optimistic.rb +++ b/activerecord/lib/active_record/locking/optimistic.rb @@ -78,7 +78,7 @@ module ActiveRecord begin affected_rows = connection.update(<<-end_sql, "#{self.class.name} Update with optimistic locking") - UPDATE #{self.class.table_name} + UPDATE #{self.class.quoted_table_name} SET #{quoted_comma_pair_list(connection, attributes_with_quotes(false, false, attribute_names))} WHERE #{self.class.primary_key} = #{quote_value(id)} AND #{self.class.quoted_locking_column} = #{quote_value(previous_value)} diff --git a/activerecord/test/cases/locking_test.rb b/activerecord/test/cases/locking_test.rb index e80f902..7db6c57 100644 --- a/activerecord/test/cases/locking_test.rb +++ b/activerecord/test/cases/locking_test.rb @@ -2,6 +2,7 @@ require "cases/helper" require 'models/person' require 'models/reader' require 'models/legacy_thing' +require 'models/reference' class LockWithoutDefault < ActiveRecord::Base; end @@ -15,7 +16,7 @@ class ReadonlyFirstNamePerson < Person end class OptimisticLockingTest < ActiveRecord::TestCase - fixtures :people, :legacy_things + fixtures :people, :legacy_things, :references # need to disable transactional fixtures, because otherwise the sqlite3 # adapter (at least) chokes when we try and change the schema in the middle @@ -138,6 +139,12 @@ class OptimisticLockingTest < ActiveRecord::TestCase end end end + + def test_quote_table_name + ref = references(:michael_magician) + ref.favourite = !ref.favourite + assert ref.save + end private diff --git a/activerecord/test/schema/schema.rb b/activerecord/test/schema/schema.rb index a9b2073..e22b787 100644 --- a/activerecord/test/schema/schema.rb +++ b/activerecord/test/schema/schema.rb @@ -206,6 +206,7 @@ ActiveRecord::Schema.define do t.integer :person_id t.integer :job_id t.boolean :favourite + t.integer :lock_version, :default => 0 end create_table :minimalistics, :force => true do |t| -- 1.5.3.7