From acdf8b3aaa58631c43cea19b548159527b895ba8 Mon Sep 17 00:00:00 2001 From: Daria Mayorova Date: Wed, 19 Nov 2025 12:10:22 +0100 Subject: [PATCH] Monkey patch ruby-oci8 to fix memory bloat --- config/initializers/oracle.rb | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/config/initializers/oracle.rb b/config/initializers/oracle.rb index a40511a009..842d0ee209 100644 --- a/config/initializers/oracle.rb +++ b/config/initializers/oracle.rb @@ -1,5 +1,23 @@ # frozen_string_literal: true +# Disable array fetching in OCI8 to avoid memory bloat +# This must be patched before any database connections are made +# See: https://github.com/kubo/ruby-oci8/issues/230 +if Gem.loaded_specs.key?('ruby-oci8') + require "oci8" + + module OCI8CursorMemoryPatch + private + + def define_one_column(pos, param) + @fetch_array_size = nil # disable array fetching anytime + super # call original + end + end + + OCI8::Cursor.prepend(OCI8CursorMemoryPatch) +end + ActiveSupport.on_load(:active_record) do if System::Database.oracle? require 'arel/visitors/oracle12_hack'