Oracle 11g LIMIT 10000 OFFSET 0 (ActiveRecord::StatementInvalid)
Opened this issue · 1 comments
Trying to connect to Oracle 11g database using following Gemfile:
source 'https://rubygems.org'
gem 'mongify', '~> 1.3.1'
gem 'ruby-oci8'
gem 'activerecord-oracle_enhanced-adapter'
My translation looks like following:
table "pcm_customer" do
column "id", :key
column "customerid", :key
column "customertype", :string
column "created_at", :datetime
column "updated_at", :datetime
end
table "pcm_custidcard", :embed_in => :customers, :on => :customerid do
column "id", :key
column "customerid", :integer, :references => :customers
column "published_at", :datetime
column "created_at", :datetime
column "updated_at", :datetime
end
Running the following command:
mongify pr database.config translation.rb
and I get the following error:
stmt.c:243:in oci8lib_230.bundle: OCIError: ORA-00933: SQL command not properly ended: SELECT * FROM pcm_customer LIMIT 10000 OFFSET 0 (ActiveRecord::StatementInvalid)
Oracle 11g does not support LIMIT / OFFSET like above, so the error is understandable. However, I looked a lot suspecting that I was using some wrong version of the oracle-enhanced-adapter or something. But turns out, its hardcoded here: in mongify-1.3.1/lib/mongify/database/sql_connection.rb:103
Since you are using ActiveRecord to handle database queries etc, is there a particular reason why you are not letting ActiveRecord to also make the statement as well? Because this implementation is
very specific and will not work in situations like this.
Also, in the meanwhile, is there a way that I can override it?
@sanjusoftware Currently you'd have to fork the project, modify the code and run it from your own fork.