Sha256: bb0128bcadd8e74dcd7865b3c9b1d91231d2f34b511b44f7fe74e734997bab08

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

require 'active_support/concern'

module ActiverecordMysqlSqlCache
  module Patches
    module Arel
      module Visitors
        module MySQL
          extend ActiveSupport::Concern

          included do
            alias_method_chain :visit_Arel_Nodes_SelectCore, :sql_cache
          end

          def visit_Arel_Nodes_SelectCore_with_sql_cache(o, collector)
            result = visit_Arel_Nodes_SelectCore_without_sql_cache(o, collector)
            case result
            when String
              distinct = ' DISTINCT '
              select = 'SELECT '
              if result =~ /^#{select}/
                if idx = result.index(distinct)
                  result.insert(idx + distinct.length, o.mysql_sql_cache.to_s)
                else
                  result.insert(select.length, o.mysql_sql_cache.to_s)
                end
              end
            else # Arel 6.0+
              if idx = result.value.index('DISTINCT')
                result.value.insert(idx + 1, o.mysql_sql_cache.to_s)
              else
                result.value.insert(1, o.mysql_sql_cache.to_s)
              end
            end
            result
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activerecord-mysql-sql-cache-0.1.1 lib/activerecord-mysql-sql-cache/patches/arel/visitors/mysql.rb
activerecord-mysql-sql-cache-0.1.0 lib/activerecord-mysql-sql-cache/patches/arel/visitors/mysql.rb