module ActiveRecord::ConnectionAdapters::Trilogy::DatabaseStatements

def affected_rows(result)

def affected_rows(result)
  result.affected_rows
end

def cast_result(result)

def cast_result(result)
  if result.fields.empty?
    ActiveRecord::Result.empty
  else
    ActiveRecord::Result.new(result.fields, result.rows)
  end
end

def exec_insert(sql, name, binds, pk = nil, sequence_name = nil, returning: nil) # :nodoc:

:nodoc:
def exec_insert(sql, name, binds, pk = nil, sequence_name = nil, returning: nil) # :nodoc:
  sql, _binds = sql_for_insert(sql, pk, binds, returning)
  internal_execute(sql, name)
end

def execute_batch(statements, name = nil, **kwargs)

def execute_batch(statements, name = nil, **kwargs)
  combine_multi_statements(statements).each do |statement|
    raw_execute(statement, name, batch: true, **kwargs)
  end
end

def last_inserted_id(result)

def last_inserted_id(result)
  if supports_insert_returning?
    super
  else
    result.last_insert_id
  end
end

def perform_query(raw_connection, sql, binds, type_casted_binds, prepare:, notification_payload:, batch: false)

def perform_query(raw_connection, sql, binds, type_casted_binds, prepare:, notification_payload:, batch: false)
  reset_multi_statement = if batch && !@config[:multi_statement]
    raw_connection.set_server_option(::Trilogy::SET_SERVER_MULTI_STATEMENTS_ON)
    true
  end
  # Make sure we carry over any changes to ActiveRecord.default_timezone that have been
  # made since we established the connection
  if default_timezone == :local
    raw_connection.query_flags |= ::Trilogy::QUERY_FLAGS_LOCAL_TIMEZONE
  else
    raw_connection.query_flags &= ~::Trilogy::QUERY_FLAGS_LOCAL_TIMEZONE
  end
  result = raw_connection.query(sql)
  while raw_connection.more_results_exist?
    raw_connection.next_result
  end
  verified!
  handle_warnings(sql)
  notification_payload[:row_count] = result.count
  result
ensure
  if reset_multi_statement && active?
    raw_connection.set_server_option(::Trilogy::SET_SERVER_MULTI_STATEMENTS_OFF)
  end
end