Document the internal hook to build a result

Also change the arguments to be keyword arguments to make easier to
evolve this method if we need to.
上级 2562d133
......@@ -739,7 +739,11 @@ def arel_visitor
def build_statement_pool
end
def build_result(columns, rows, column_types = {})
# Builds the result object.
#
# This is an internal hook to make possible connection adapters to build
# custom result objects with connection-specific data.
def build_result(columns:, rows:, column_types: {})
ActiveRecord::Result.new(columns, rows, column_types)
end
end
......
......@@ -54,17 +54,17 @@ def exec_query(sql, name = "SQL", binds = [], prepare: false)
if without_prepared_statement?(binds)
execute_and_free(sql, name) do |result|
if result
build_result(result.fields, result.to_a)
build_result(columns: result.fields, rows: result.to_a)
else
build_result([], [])
build_result(columns: [], rows: [])
end
end
else
exec_stmt_and_free(sql, name, binds, cache_stmt: prepare) do |_, result|
if result
build_result(result.fields, result.to_a)
build_result(columns: result.fields, rows: result.to_a)
else
build_result([], [])
build_result(columns: [], rows: [])
end
end
end
......
......@@ -103,7 +103,7 @@ def exec_query(sql, name = "SQL", binds = [], prepare: false)
fmod = result.fmod i
types[fname] = get_oid_type(ftype, fmod, fname)
end
build_result(fields, result.values, types)
build_result(columns: fields, rows: result.values, column_types: types)
end
end
......
......@@ -63,7 +63,7 @@ def exec_query(sql, name = nil, binds = [], prepare: false)
records = stmt.to_a
end
build_result(cols, records)
build_result(columns: cols, rows: records)
end
end
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册