Changeset 6365
- Timestamp:
- 03/09/07 03:25:37 (1 year ago)
- Files:
-
- branches/1-2-stable/activerecord/CHANGELOG (modified) (1 diff)
- branches/1-2-stable/activerecord/lib/active_record/base.rb (modified) (6 diffs)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/db2.drop.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/db2.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/firebird.drop.sql (modified) (2 diffs)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/firebird.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/frontbase.drop.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/frontbase.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/mysql.drop.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/mysql.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/openbase.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/oracle.drop.sql (modified) (2 diffs)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/oracle.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/postgresql.drop.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/postgresql.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/sqlite.drop.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/sqlite.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/sqlserver.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/sybase.drop.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/db_definitions/sybase.sql (modified) (1 diff)
- branches/1-2-stable/activerecord/test/fixtures/mixed_case_monkey.rb (added)
- branches/1-2-stable/activerecord/test/fixtures/mixed_case_monkeys.yml (added)
- branches/1-2-stable/activerecord/test/pk_test.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
branches/1-2-stable/activerecord/CHANGELOG
r6361 r6365 1 1 *SVN* 2 3 * Consistently quote primary key column names. #7763 [toolmantim] 2 4 3 5 * Fixtures: fix YAML ordered map support. #2665 [Manuel Holtgrewe, nfbuckley] branches/1-2-stable/activerecord/lib/active_record/base.rb
r6122 r6365 480 480 # are deleted. 481 481 def delete(id) 482 delete_all([ "#{ primary_key} IN (?)", id ])482 delete_all([ "#{connection.quote_column_name(primary_key)} IN (?)", id ]) 483 483 end 484 484 … … 527 527 # that needs to list both the number of posts and comments. 528 528 def increment_counter(counter_name, id) 529 update_all "#{co unter_name} = #{counter_name} + 1", "#{primary_key} = #{quote_value(id)}"529 update_all "#{connection.quote_column_name(counter_name)} = #{connection.quote_column_name(counter_name)} + 1", "#{connection.quote_column_name(primary_key)} = #{quote_value(id)}" 530 530 end 531 531 532 532 # Works like increment_counter, but decrements instead. 533 533 def decrement_counter(counter_name, id) 534 update_all "#{co unter_name} = #{counter_name} - 1", "#{primary_key} = #{quote_value(id)}"534 update_all "#{connection.quote_column_name(counter_name)} = #{connection.quote_column_name(counter_name)} - 1", "#{connection.quote_column_name(primary_key)} = #{quote_value(id)}" 535 535 end 536 536 … … 1021 1021 def find_one(id, options) 1022 1022 conditions = " AND (#{sanitize_sql(options[:conditions])})" if options[:conditions] 1023 options.update :conditions => "#{table_name}.#{ primary_key} = #{quote_value(id,columns_hash[primary_key])}#{conditions}"1023 options.update :conditions => "#{table_name}.#{connection.quote_column_name(primary_key)} = #{quote_value(id,columns_hash[primary_key])}#{conditions}" 1024 1024 1025 1025 # Use find_every(options).first since the primary key condition … … 1036 1036 conditions = " AND (#{sanitize_sql(options[:conditions])})" if options[:conditions] 1037 1037 ids_list = ids.map { |id| quote_value(id,columns_hash[primary_key]) }.join(',') 1038 options.update :conditions => "#{table_name}.#{ primary_key} IN (#{ids_list})#{conditions}"1038 options.update :conditions => "#{table_name}.#{connection.quote_column_name(primary_key)} IN (#{ids_list})#{conditions}" 1039 1039 1040 1040 result = find_every(options) … … 1559 1559 connection.delete <<-end_sql, "#{self.class.name} Destroy" 1560 1560 DELETE FROM #{self.class.table_name} 1561 WHERE #{ self.class.primary_key} = #{quoted_id}1561 WHERE #{connection.quote_column_name(self.class.primary_key)} = #{quoted_id} 1562 1562 end_sql 1563 1563 end … … 1798 1798 "UPDATE #{self.class.table_name} " + 1799 1799 "SET #{quoted_comma_pair_list(connection, attributes_with_quotes(false))} " + 1800 "WHERE #{ self.class.primary_key} = #{quote_value(id)}",1800 "WHERE #{connection.quote_column_name(self.class.primary_key)} = #{quote_value(id)}", 1801 1801 "#{self.class.name} Update" 1802 1802 ) branches/1-2-stable/activerecord/test/fixtures/db_definitions/db2.drop.sql
r4596 r6365 30 30 DROP TABLE legacy_things; 31 31 DROP TABLE numeric_data; 32 DROP TABLE mixed_case_monkeys; branches/1-2-stable/activerecord/test/fixtures/db_definitions/db2.sql
r4596 r6365 225 225 decimal_number_with_default DECIMAL(3,2) DEFAULT 2.78 226 226 ); 227 228 CREATE TABLE mixed_case_monkeys ( 229 monkeyID INT NOT NULL PRIMARY KEY, 230 fleaCount INT 231 ); branches/1-2-stable/activerecord/test/fixtures/db_definitions/firebird.drop.sql
r4596 r6365 31 31 DROP TABLE legacy_things; 32 32 DROP TABLE numeric_data; 33 DROP TABLE mixed_case_monkeys; 33 34 34 35 DROP DOMAIN D_BOOLEAN; … … 60 61 DROP GENERATOR legacy_things_seq; 61 62 DROP GENERATOR numeric_data_seq; 63 DROP GENERATOR mixed_case_monkeys_seq; branches/1-2-stable/activerecord/test/fixtures/db_definitions/firebird.sql
r4596 r6365 296 296 CREATE GENERATOR numeric_data_seq; 297 297 SET GENERATOR numeric_data_seq TO 10000; 298 299 CREATE TABLE mixed_case_monkeys ( 300 "monkeyID" BIGINT NOT NULL, 301 "fleaCount" INTEGER 302 ); 303 CREATE GENERATOR mixed_case_monkeys_seq; 304 SET GENERATOR mixed_case_monkeys_seq TO 10000; branches/1-2-stable/activerecord/test/fixtures/db_definitions/frontbase.drop.sql
r4596 r6365 30 30 DROP TABLE legacy_things CASCADE; 31 31 DROP TABLE numeric_data CASCADE; 32 DROP TABLE mixed_case_monkeys CASCADE; branches/1-2-stable/activerecord/test/fixtures/db_definitions/frontbase.sql
r4596 r6365 261 261 ); 262 262 SET UNIQUE FOR numeric_data(id); 263 264 CREATE TABLE mixed_case_monkeys ( 265 "monkeyID" integer DEFAULT unique, 266 "fleaCount" integer 267 ); 268 SET UNIQUE FOR mixed_case_monkeys("monkeyID"); branches/1-2-stable/activerecord/test/fixtures/db_definitions/mysql.drop.sql
r4596 r6365 30 30 DROP TABLE legacy_things; 31 31 DROP TABLE numeric_data; 32 DROP TABLE mixed_case_monkeys; branches/1-2-stable/activerecord/test/fixtures/db_definitions/mysql.sql
r5752 r6365 227 227 `decimal_number_with_default` decimal(3,2) DEFAULT 2.78 228 228 ) TYPE=InnoDB; 229 230 CREATE TABLE mixed_case_monkeys ( 231 `monkeyID` int(11) NOT NULL auto_increment, 232 `fleaCount` int(11), 233 PRIMARY KEY (`monkeyID`) 234 ) TYPE=InnoDB; branches/1-2-stable/activerecord/test/fixtures/db_definitions/openbase.sql
r4596 r6365 293 293 CREATE PRIMARY KEY numeric_data (id) 294 294 go 295 296 CREATE TABLE mixed_case_monkeys ( 297 monkeyID INTEGER NOT NULL DEFAULT _rowid, 298 fleaCount INTEGER 299 ); 300 go 301 CREATE PRIMARY KEY mixed_case_monkeys (monkeyID) 302 go branches/1-2-stable/activerecord/test/fixtures/db_definitions/oracle.drop.sql
r4596 r6365 31 31 drop table legacy_things; 32 32 drop table numeric_data; 33 drop table mixed_case_monkeys; 33 34 34 35 drop sequence accounts_seq; … … 62 63 drop sequence legacy_things_seq; 63 64 drop sequence numeric_data_seq; 65 drop sequence mixed_case_monkeys_seq; branches/1-2-stable/activerecord/test/fixtures/db_definitions/oracle.sql
r5934 r6365 318 318 ); 319 319 create sequence numeric_data_seq minvalue 10000; 320 321 CREATE TABLE mixed_case_monkeys ( 322 "monkeyID" INTEGER NOT NULL PRIMARY KEY, 323 "fleaCount" INTEGER 324 ); 325 create sequence mixed_case_monkeys_seq minvalue 10000; branches/1-2-stable/activerecord/test/fixtures/db_definitions/postgresql.drop.sql
r4596 r6365 35 35 DROP TABLE numeric_data; 36 36 DROP TABLE column_data; 37 DROP TABLE mixed_case_monkeys; branches/1-2-stable/activerecord/test/fixtures/db_definitions/postgresql.sql
r5599 r6365 257 257 decimal_number_with_default decimal(3,2) default 2.78 258 258 ); 259 260 CREATE TABLE mixed_case_monkeys ( 261 "monkeyID" INTEGER PRIMARY KEY, 262 "fleaCount" INTEGER 263 ); branches/1-2-stable/activerecord/test/fixtures/db_definitions/sqlite.drop.sql
r4596 r6365 30 30 DROP TABLE legacy_things; 31 31 DROP TABLE numeric_data; 32 DROP TABLE mixed_case_monkeys; branches/1-2-stable/activerecord/test/fixtures/db_definitions/sqlite.sql
r5661 r6365 209 209 'decimal_number_with_default' DECIMAL(3,2) DEFAULT 2.78 210 210 ); 211 212 CREATE TABLE mixed_case_monkeys ( 213 'monkeyID' INTEGER NOT NULL PRIMARY KEY, 214 'fleaCount' INTEGER 215 ); branches/1-2-stable/activerecord/test/fixtures/db_definitions/sqlserver.drop.sql
r5892 r6365 32 32 DROP TABLE numeric_data; 33 33 DROP TABLE [order]; 34 DROP TABLE mixed_case_monkeys; branches/1-2-stable/activerecord/test/fixtures/db_definitions/sqlserver.sql
r5892 r6365 237 237 flavor varchar(255) 238 238 ); 239 240 CREATE TABLE mixed_case_monkeys ( 241 [monkeyID] int NOT NULL IDENTITY(1, 1), 242 [fleaCount] int default NULL 243 ); branches/1-2-stable/activerecord/test/fixtures/db_definitions/sybase.drop.sql
r5840 r6365 30 30 DROP TABLE legacy_things 31 31 DROP TABLE numeric_data 32 DROP TABLE mixed_case_monkeys 32 33 DROP TABLE schema_info 33 34 go branches/1-2-stable/activerecord/test/fixtures/db_definitions/sybase.sql
r5840 r6365 211 211 ) 212 212 213 CREATE TABLE mixed_case_monkeys ( 214 [monkeyID] numeric(9,0) IDENTITY PRIMARY KEY, 215 [fleaCount] numeric(9,0) 216 ); 217 213 218 go branches/1-2-stable/activerecord/test/pk_test.rb
r4291 r6365 5 5 require 'fixtures/movie' 6 6 require 'fixtures/keyboard' 7 require 'fixtures/mixed_case_monkey' 7 8 8 9 class PrimaryKeysTest < Test::Unit::TestCase 9 fixtures :topics, :subscribers, :movies 10 fixtures :topics, :subscribers, :movies, :mixed_case_monkeys 10 11 11 12 def test_integer_key … … 79 80 assert_equal "id", Topic.primary_key 80 81 end 82 83 def test_delete_should_quote_pkey 84 assert_nothing_raised { MixedCaseMonkey.delete(1) } 85 end 86 def test_increment_counter_should_quote_pkey_and_quote_counter_columns 87 assert_nothing_raised { MixedCaseMonkey.increment_counter(:fleaCount, 1) } 88 end 89 def test_decrement_counter_should_quote_pkey_and_quote_counter_columns 90 assert_nothing_raised { MixedCaseMonkey.decrement_counter(:fleaCount, 1) } 91 end 92 def test_find_with_one_id_should_quote_pkey 93 assert_nothing_raised { MixedCaseMonkey.find(1) } 94 end 95 def test_find_with_multiple_ids_should_quote_pkey 96 assert_nothing_raised { MixedCaseMonkey.find([1,2]) } 97 end 98 def test_instance_update_should_quote_pkey 99 assert_nothing_raised { MixedCaseMonkey.find(1).save } 100 end 101 def test_instance_destry_should_quote_pkey 102 assert_nothing_raised { MixedCaseMonkey.find(1).destroy } 103 end 81 104 end