diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2006-07-05 02:54:19 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2006-07-05 02:54:19 +0000 |
commit | 784165e03b8d297916edd23060a0f6b5c79b7ba1 (patch) | |
tree | 5b6766f5db1390bd2441f0f5d1cecfa897e47d35 | |
parent | e8504877c0659f437cf294c6bca3471e025226d2 (diff) | |
download | rails-784165e03b8d297916edd23060a0f6b5c79b7ba1.tar.gz rails-784165e03b8d297916edd23060a0f6b5c79b7ba1.tar.bz2 rails-784165e03b8d297916edd23060a0f6b5c79b7ba1.zip |
Fixed a few Oracle issues: Allows Oracle's odd date handling to still work consistently within #to_xml, Passes test that hardcode insert statement by dropping the :id column, Updated RUNNING_UNIT_TESTS with Oracle instructions, Corrects method signature for #exec #5294 [schoenm@earthlink.net]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4552 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r-- | activerecord/CHANGELOG | 2 | ||||
-rw-r--r-- | activerecord/RUNNING_UNIT_TESTS | 17 | ||||
-rwxr-xr-x | activerecord/lib/active_record/base.rb | 5 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/oracle_adapter.rb | 4 | ||||
-rwxr-xr-x | activerecord/test/base_test.rb | 2 | ||||
-rw-r--r-- | activerecord/test/migration_test.rb | 2 |
6 files changed, 26 insertions, 6 deletions
diff --git a/activerecord/CHANGELOG b/activerecord/CHANGELOG index 50bc80cef3..ecf5a42b16 100644 --- a/activerecord/CHANGELOG +++ b/activerecord/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed a few Oracle issues: Allows Oracle's odd date handling to still work consistently within #to_xml, Passes test that hardcode insert statement by dropping the :id column, Updated RUNNING_UNIT_TESTS with Oracle instructions, Corrects method signature for #exec #5294 [schoenm@earthlink.net] + * Added :group to available options for finds done on associations #5516 [mike@michaeldewey.org] * Minor tweak to improve performance of ActiveRecord::Base#to_param. diff --git a/activerecord/RUNNING_UNIT_TESTS b/activerecord/RUNNING_UNIT_TESTS index a995bf3bab..17d9b1aa26 100644 --- a/activerecord/RUNNING_UNIT_TESTS +++ b/activerecord/RUNNING_UNIT_TESTS @@ -44,3 +44,20 @@ This gives a very large speed boost. With rake: Or, by hand: AR_TX_FIXTURES=yes ruby -I connections/native_sqlite3 base_test.rb + +== Testing with Oracle + +In order to allow for testing against Oracle using an "arunit" schema within an existing +Oracle database, the database name and tns connection string must be set in environment +variables prior to running the unit tests. + + $ export ARUNIT_DB_NAME=MYDB + $ export ARUNIT_DB=MYDB + +The ARUNIT_DB_NAME variable should be set to the name by which the database knows +itself, ie., what will be returned by the query: + + select sys_context('userenv','db_name') db from dual + +And the ARUNIT_DB variable should be set to the tns connection string. + diff --git a/activerecord/lib/active_record/base.rb b/activerecord/lib/active_record/base.rb index 812f30c773..fba17bd917 100755 --- a/activerecord/lib/active_record/base.rb +++ b/activerecord/lib/active_record/base.rb @@ -1646,8 +1646,9 @@ module ActiveRecord #:nodoc: def ==(comparison_object) comparison_object.equal?(self) || (comparison_object.instance_of?(self.class) && - comparison_object.id == id && - !comparison_object.new_record?) + ((!comparison_object.new_record? && comparison_object.id == id) || + (comparison_object.new_record? && comparison_object.attributes == attributes)) + ) end # Delegates to == diff --git a/activerecord/lib/active_record/connection_adapters/oracle_adapter.rb b/activerecord/lib/active_record/connection_adapters/oracle_adapter.rb index e4c9c411b3..cef3c9f6c9 100644 --- a/activerecord/lib/active_record/connection_adapters/oracle_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/oracle_adapter.rb @@ -635,11 +635,11 @@ begin # Adds auto-recovery functionality. # # See: http://www.jiubao.org/ruby-oci8/api.en.html#label-11 - def exec(sql, *bindvars) + def exec(sql, *bindvars, &block) should_retry = self.class.auto_retry? && autocommit? begin - @connection.exec(sql, *bindvars) + @connection.exec(sql, *bindvars, &block) rescue OCIException => e raise unless LOST_CONNECTION_ERROR_CODES.include?(e.code) @active = false diff --git a/activerecord/test/base_test.rb b/activerecord/test/base_test.rb index 15605d779a..9299fd998a 100755 --- a/activerecord/test/base_test.rb +++ b/activerecord/test/base_test.rb @@ -1239,7 +1239,7 @@ class BasicsTest < Test::Unit::TestCase assert xml.include?(%(<content>Have a nice day</content>)) assert xml.include?(%(<author-email-address>david@loudthinking.com</author-email-address>)) assert xml.match(%(<parent-id type="integer"></parent-id>)) - if current_adapter?(:SybaseAdapter) or current_adapter?(:SQLServerAdapter) + if current_adapter?(:SybaseAdapter) or current_adapter?(:SQLServerAdapter) or current_adapter?(:OracleAdapter) assert xml.include?(%(<last-read type="datetime">#{last_read_in_current_timezone}</last-read>)) else assert xml.include?(%(<last-read type="date">2004-04-15</last-read>)) diff --git a/activerecord/test/migration_test.rb b/activerecord/test/migration_test.rb index 88a94d8710..2e6868b7e2 100644 --- a/activerecord/test/migration_test.rb +++ b/activerecord/test/migration_test.rb @@ -170,7 +170,7 @@ if ActiveRecord::Base.connection.supports_migrations? end def test_add_column_not_null_with_default - Person.connection.create_table :testings do |t| + Person.connection.create_table :testings, :id => false do |t| t.column :foo, :string end Person.connection.execute "insert into testings (foo) values ('hello')" |