-
Notifications
You must be signed in to change notification settings - Fork 330
Closed
Description
Probably related to the change by #2008.
Steps to reproduce
# frozen_string_literal: true
require "bundler/inline"
gemfile(true) do
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
gem "rails", github: "rails/rails", branch: "master"
gem "activerecord-oracle_enhanced-adapter", github: "rsim/oracle-enhanced", branch: "master"
gem "minitest"
platforms :ruby do
gem "ruby-oci8"
end
end
require "active_record"
require "minitest/autorun"
require "logger"
require "active_record/connection_adapters/oracle_enhanced_adapter"
# Set Oracle enhanced adapter specific connection parameters
DATABASE_NAME = ENV["DATABASE_NAME"] || "orcl"
DATABASE_HOST = ENV["DATABASE_HOST"]
DATABASE_PORT = ENV["DATABASE_PORT"]
DATABASE_USER = ENV["DATABASE_USER"] || "oracle_enhanced"
DATABASE_PASSWORD = ENV["DATABASE_PASSWORD"] || "oracle_enhanced"
DATABASE_SYS_PASSWORD = ENV["DATABASE_SYS_PASSWORD"] || "admin"
CONNECTION_PARAMS = {
adapter: "oracle_enhanced",
database: DATABASE_NAME,
host: DATABASE_HOST,
port: DATABASE_PORT,
username: DATABASE_USER,
password: DATABASE_PASSWORD
}
ActiveRecord::Base.establish_connection(CONNECTION_PARAMS)
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Schema.define do
create_table :posts, force: true do |t|
end
create_table :comments, force: true do |t|
t.integer :post_id
end
end
class Post < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
end
class BugTest < Minitest::Test
def test_association_stuff
post = Post.create!
post.comments << Comment.create!
assert_equal 1, Comment.where(post_id: Post.select(:id))
end
endExpected behavior
No errors.
Actual behavior
Error:
BugTest#test_association_stuff:
NoMethodError: undefined method `length' for #<Arel::Nodes::SelectStatement:0x00007f1640044518>
/home/vagrant/.rvm/gems/ruby-2.7.2/bundler/gems/oracle-enhanced-662f543d1567/lib/arel/visitors/oracle.rb:144:in `visit_Arel_Nodes_In'
/home/vagrant/.rvm/gems/ruby-2.7.2/bundler/gems/rails-75a65a905a5d/activerecord/lib/arel/visitors/visitor.rb:30:in `visit'
/home/vagrant/.rvm/gems/ruby-2.7.2/bundler/gems/rails-75a65a905a5d/activerecord/lib/arel/visitors/to_sql.rb:779:in `block in inject_join'
/home/vagrant/.rvm/gems/ruby-2.7.2/bundler/gems/rails-75a65a905a5d/activerecord/lib/arel/visitors/to_sql.rb:777:in `each'
/home/vagrant/.rvm/gems/ruby-2.7.2/bundler/gems/rails-75a65a905a5d/activerecord/lib/arel/visitors/to_sql.rb:777:in `each_with_index'
/home/vagrant/.rvm/gems/ruby-2.7.2/bundler/gems/rails-75a65a905a5d/activerecord/lib/arel/visitors/to_sql.rb:777:in `inject_join'
/home/vagrant/.rvm/gems/ruby-2.7.2/bundler/gems/rails-75a65a905a5d/activerecord/lib/arel/visitors/to_sql.rb:177:in `collect_nodes_for'
/home/vagrant/.rvm/gems/ruby-2.7.2/bundler/gems/rails-75a65a905a5d/activerecord/lib/arel/visitors/to_sql.rb:157:in `visit_Arel_Nodes_SelectCore'
/home/vagrant/.rvm/gems/ruby-2.7.2/bundler/gems/rails-75a65a905a5d/activerecord/lib/arel/visitors/to_sql.rb:124:in `block in visit_Arel_Nodes_SelectStatement'System configuration
6.1.0.rc1 (master)
rails/rails@75a65a9
Oracle enhanced adapter version:
6.1.0.alpha (master)
662f543
Ruby version:
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]Oracle Database version:
As far as I can see, this error reproduced on Oracle 11g and 19c.
- Oracle XE 11.2.0-1.0
- Oracle Database 19c Enterprise Edition Release 19.0.0.0.0
Metadata
Metadata
Assignees
Labels
No labels