diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveIn.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveIn.java index 138332aedc..213625567c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveIn.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/reloperators/HiveIn.java @@ -17,8 +17,15 @@ */ package org.apache.hadoop.hive.ql.optimizer.calcite.reloperators; +import java.util.List; + +import org.apache.calcite.sql.SqlCall; import org.apache.calcite.sql.SqlKind; +import org.apache.calcite.sql.SqlNode; import org.apache.calcite.sql.SqlSpecialOperator; +import org.apache.calcite.sql.SqlWriter; +import org.apache.calcite.sql.SqlWriter.Frame; +import org.apache.calcite.sql.SqlWriter.FrameTypeEnum; import org.apache.calcite.sql.type.InferTypes; import org.apache.calcite.sql.type.ReturnTypes; @@ -38,4 +45,24 @@ private HiveIn() { null); } + @Override + public void unparse( + SqlWriter writer, + SqlCall call, + int leftPrec, + int rightPrec) { + List opList = call.getOperandList(); + assert (opList.size() >= 1); + + SqlNode sqlNode = opList.get(0); + sqlNode.unparse(writer, leftPrec, getLeftPrec()); + writer.sep("IN"); + Frame frame = writer.startList(FrameTypeEnum.SETOP, "(", ")"); + for (SqlNode op : opList.subList(1, opList.size())) { + writer.sep(","); + op.unparse(writer, 0, 0); + } + writer.endList(frame); + + } }