module Ridgepole::ExecuteExpander::ConnectionAdapterExt

Public Instance Methods

execute(*args) click to toggle source
Calls superclass method
# File lib/ridgepole/execute_expander.rb, line 16
def execute(*args)
  sql = args.fetch(0)
  name = args[1]

  if Ridgepole::ExecuteExpander.noop
    if (callback = Ridgepole::ExecuteExpander.callback)
      sql = append_alter_extra(sql)
      callback.call(sql, name)
    end

    if /\A(SELECT|SHOW)\b/i.match?(sql)
      begin
        super(sql, name)
      rescue StandardError
        Stub.new
      end
    else
      Stub.new
    end
  elsif Ridgepole::ExecuteExpander.use_script
    if /\A(SELECT|SHOW)\b/i.match?(sql)
      super(sql, name)
    else
      sql = append_alter_extra(sql)
      Ridgepole::ExecuteExpander.sql_executer.execute(sql)
      nil
    end
  else
    sql = append_alter_extra(sql)
    super(sql, name)
  end
end

Private Instance Methods

append_alter_extra(sql) click to toggle source
# File lib/ridgepole/execute_expander.rb, line 51
def append_alter_extra(sql)
  if Ridgepole::ExecuteExpander.alter_extra
    case sql
    when /\AALTER\b/i
      sql += ',' + Ridgepole::ExecuteExpander.alter_extra
    when /\A(CREATE|DROP)\s+((ONLINE|OFFLINE)\s+)?((UNIQUE|FULLTEXT|SPATIAL)\s+)?INDEX\b/i
      # https://dev.mysql.com/doc/refman/5.6/en/create-index.html
      # https://dev.mysql.com/doc/refman/5.6/en/drop-index.html
      sql += ' ' + Ridgepole::ExecuteExpander.alter_extra.tr(',', ' ')
    end
  end

  sql
end