aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activerecord/CHANGELOG2
-rw-r--r--activerecord/RUNNING_UNIT_TESTS17
-rwxr-xr-xactiverecord/lib/active_record/base.rb5
-rw-r--r--activerecord/lib/active_record/connection_adapters/oracle_adapter.rb4
-rwxr-xr-xactiverecord/test/base_test.rb2
-rw-r--r--activerecord/test/migration_test.rb2
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')"