diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSortLimitPullUpConstantsRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSortLimitPullUpConstantsRule.java index ebfabac..cc318db 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSortLimitPullUpConstantsRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSortLimitPullUpConstantsRule.java @@ -154,7 +154,9 @@ public void onMatch(RelOptRuleCall call) { relBuilder.fields(RelCollations.of(fieldCollations)); relBuilder.sortLimit(sort.offset == null ? -1 : RexLiteral.intValue(sort.offset), sort.fetch == null ? -1 : RexLiteral.intValue(sort.fetch), sortFields); + // Create top Project fixing nullability of fields relBuilder.project(topChildExprs, topChildExprsFields); + relBuilder.convert(sort.getRowType(), false); call.transformTo(parent.copy(parent.getTraitSet(), ImmutableList.of(relBuilder.build()))); } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionPullUpConstantsRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionPullUpConstantsRule.java index f071ddd..8333982 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionPullUpConstantsRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveUnionPullUpConstantsRule.java @@ -131,7 +131,9 @@ public void onMatch(RelOptRuleCall call) { relBuilder.project(Pair.left(newChildExprs), Pair.right(newChildExprs)); } relBuilder.union(union.all, union.getInputs().size()); + // Create top Project fixing nullability of fields relBuilder.project(topChildExprs, topChildExprsFields); + relBuilder.convert(union.getRowType(), false); call.transformTo(relBuilder.build()); }