rsim / oracle-enhanced

Oracle enhaced adapter for ActiveRecord
MIT License
545 stars 307 forks source link

Fix columns_for_distinct when using Rails 6.1 #2249

Closed swamp09 closed 2 years ago

swamp09 commented 2 years ago

Running ARCONN=oracle bundle exec ruby -Itest ./test/cases/finder_test.rb -n test_find_with_order_on_included_associations_with_construct_finder_sql_for_association_limiting_and_is_distinct in Rails 6.1.4.4 will result in an error.

ARCONN=oracle bundle exec ruby -Itest ./test/cases/finder_test.rb -n test_find_with_order_on_included_associations_with_construct_finder_sql_for_association_limiting_and_is_distinct
Using oracle
Warning: NLS_LANG is not set. fallback to US7ASCII.
Run options: -n test_find_with_order_on_included_associations_with_construct_finder_sql_for_association_limiting_and_is_distinct --seed 32511

# Running:

F

Failure:
FinderTest#test_find_with_order_on_included_associations_with_construct_finder_sql_for_association_limiting_and_is_distinct [./test/cases/finder_test.rb:1503]:
Expected: 2
  Actual: 1

rails test ./test/cases/finder_test.rb:1502

Finished in 1.275346s, 0.7841 runs/s, 0.7841 assertions/s.
1 runs, 1 assertions, 1 failures, 0 errors, 0 skips

Fixing the return value of columns_for_distinct causes the test to pass. This is a fix for the change to PostgreSQL and MySQL adapters in Rails 6.0. https://github.com/rails/rails/pull/31966

The reason why the tests for ARCONN=oracle bundle exec ruby -Itest ./test/cases/finder_test.rb -n test_find_with_order_on_included_associations_with_construct_finder_sql_for_association_limiting_and_is_distinct don't pass is because of a fix in finder_methods.rb in Rails 6.1. https://github.com/rails/rails/commit/2ad2425fd3b3a58e937f97b1fa05306c4d3166ae

yahonda commented 2 years ago

Thanks for opening a pull request. Would you make sure this test fails against Rails main branch (7.1.0.alpha) and Oracle enhanced adapter master branch? If so, I'm happy to merge this pull request and backport them to release70 and release61 branches.

swamp09 commented 2 years ago

Tests failed on the Rails main branch and Oracle enhanced adapter master branch. Ruby version is 2.7.2. OracleDB version is Oracle Database 11g Express Edition.

yahonda commented 2 years ago

Thank you for the confirmation. Let me backport it to release70 and release61 branches.