IMPALA-3533: fix Tuple::CodegenMaterializeExprs() The args[] buffer was too small. I also reverted to the usual style of commenting out each unused argument Value*, which makes it slightly easier to spot this kind of bug.
Change-Id: Ic2546b8f42ac0a4e0715b134c384ccf311f663c2 Reviewed-on: http://gerrit.cloudera.org:8080/3051 Reviewed-by: Tim Armstrong <[email protected]> Reviewed-by: Dan Hecht <[email protected]> Tested-by: Internal Jenkins Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/1aeda141 Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/1aeda141 Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/1aeda141 Branch: refs/heads/master Commit: 1aeda141aab3406c3df177dbbd05c887a190ca7a Parents: 3649ff8 Author: Skye Wanderman-Milne <[email protected]> Authored: Thu May 12 14:05:37 2016 -0700 Committer: Tim Armstrong <[email protected]> Committed: Fri May 13 15:52:53 2016 -0700 ---------------------------------------------------------------------- be/src/runtime/tuple.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/1aeda141/be/src/runtime/tuple.cc ---------------------------------------------------------------------- diff --git a/be/src/runtime/tuple.cc b/be/src/runtime/tuple.cc index 4142241..fe85948 100644 --- a/be/src/runtime/tuple.cc +++ b/be/src/runtime/tuple.cc @@ -348,13 +348,16 @@ Status Tuple::CodegenMaterializeExprs(RuntimeState* state, bool collect_string_v prototype.AddArgument("num_non_null_string_values", int_ptr_type); LlvmCodeGen::LlvmBuilder builder(context); - Value* args[7]; + Value* args[8]; *fn = prototype.GeneratePrototype(&builder, args); Value* opaque_tuple_arg = args[0]; Value* row_arg = args[1]; + // Value* desc_arg = args[2]; // unused Value* expr_ctxs_arg = args[3]; - // 'desc', 'pool', 'non_null_string_values', 'total_string_lengths', and - // 'num_non_null_string_values' are unused + // Value* pool_arg = args[4]; // unused + // Value* non_null_string_values_arg = args[5]; // unused + // Value* total_string_lengths_arg = args[6]; // unused + // Value* num_non_null_string_values_arg = args[7]; // unused // Cast the opaque Tuple* argument to the generated struct type Type* tuple_struct_type = desc.GetLlvmStruct(codegen);
