lsyldliu commented on code in PR #19709: URL: https://github.com/apache/flink/pull/19709#discussion_r873676500
########## flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/codegen/HashCodeGenerator.scala: ########## @@ -75,6 +75,146 @@ object HashCodeGenerator { return $resultTerm; } + @Override + public int hashCode($ARRAY_DATA $inputTerm) { + ${genThrowException("RowData hash function doesn't support to generate hash code for ArrayData.")} + } + + @Override + public int hashCode($MAP_DATA $inputTerm) { + ${genThrowException("RowData hash function doesn't support to generate hash code for MapData.")} + } + + ${ctx.reuseInnerClassDefinitionCode()} + } + """.stripMargin + + new GeneratedHashFunction(className, code, ctx.references.toArray, ctx.tableConfig) + } + + def generateArrayHash( + ctx: CodeGeneratorContext, + elementType: LogicalType, + name: String): GeneratedHashFunction = { + val className = newName(name) + val baseClass = classOf[HashFunction] + val inputTerm = CodeGenUtils.DEFAULT_INPUT1_TERM + + val typeTerm = primitiveTypeTermForType(elementType) + val isNull = newName("isNull") + val fieldTerm = newName("fieldTerm") + val hashIntTerm = CodeGenUtils.newName("hashCode") + val i = newName("i") + + // Generate element hash code firstly + val elementHashBody = hashCodeForType(ctx, elementType, fieldTerm) + val code = + j""" + public class $className implements ${baseClass.getCanonicalName} { + + ${ctx.reuseMemberCode()} + + public $className(Object[] references) throws Exception { + ${ctx.reuseInitCode()} + } + + @Override + public int hashCode($ARRAY_DATA $inputTerm) { + int $hashIntTerm = 0; Review Comment: Here all the local variables are declared explicitly, so it is no need to call ctx.reuseLocalVariableCode() . -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@flink.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org