[ https://issues.apache.org/jira/browse/HIVE-9596?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Pivovarov updated HIVE-9596: -------------------------------------- Description: 54 GenericUDF derived classes have very similar getDisplayString impl which returns "fname(child1, child2, childn)" instr() and locate() have bugs in their implementation (no comma btw children) Instead of having 54 implementations of the same method it's better to move standard implementation to the base class. affected UDF classes: {code} contrib/src/java/org/apache/hadoop/hive/contrib/genericudf/example/GenericUDFDBOutput.java itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEvaluateNPE.java itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTestGetJavaBoolean.java itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTestGetJavaString.java itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTestTranslate.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFReflect.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAddMonths.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFArray.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAssertTrue.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBasePad.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseTrim.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCoalesce.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFConcat.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFConcatWS.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDate.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDateAdd.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDateDiff.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDateSub.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDecode.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEWAHBitmapEmpty.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFElt.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEncode.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFField.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFloorCeilBase.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFormatNumber.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFGreatest.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFHash.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIf.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInFile.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInitCap.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInstr.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLastDay.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLeadLag.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLocate.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLower.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMacro.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMapKeys.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMapValues.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFNamedStruct.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPower.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPrintf.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSentences.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSize.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSortArray.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSplit.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFStringToMap.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFStruct.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTranslate.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFUpper.java {code} was: 54 GenericUDF derived classes have very similar getDisplayString impl which returns "fname(child1, child2, childn)" instr() and locate() have bugs in their implementation (no comma btw child) Instead of having 54 implementations of the same method it's better to move standard implementation to the base class. affected UDF classes: {code} contrib/src/java/org/apache/hadoop/hive/contrib/genericudf/example/GenericUDFDBOutput.java itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEvaluateNPE.java itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTestGetJavaBoolean.java itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTestGetJavaString.java itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTestTranslate.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFReflect.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAddMonths.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFArray.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAssertTrue.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBasePad.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseTrim.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCoalesce.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFConcat.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFConcatWS.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDate.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDateAdd.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDateDiff.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDateSub.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDecode.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEWAHBitmapEmpty.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFElt.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEncode.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFField.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFloorCeilBase.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFormatNumber.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFGreatest.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFHash.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIf.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInFile.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInitCap.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInstr.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLastDay.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLeadLag.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLocate.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLower.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMacro.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMapKeys.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMapValues.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFNamedStruct.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPower.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPrintf.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSentences.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSize.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSortArray.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSplit.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFStringToMap.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFStruct.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTranslate.java ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFUpper.java {code} > move standard getDisplayString impl to GenericUDF > ------------------------------------------------- > > Key: HIVE-9596 > URL: https://issues.apache.org/jira/browse/HIVE-9596 > Project: Hive > Issue Type: Improvement > Components: UDF > Reporter: Alexander Pivovarov > Assignee: Alexander Pivovarov > Priority: Minor > Attachments: HIVE-9596.1.patch, HIVE-9596.2.patch, HIVE-9596.3.patch > > > 54 GenericUDF derived classes have very similar getDisplayString impl which > returns "fname(child1, child2, childn)" > instr() and locate() have bugs in their implementation (no comma btw children) > Instead of having 54 implementations of the same method it's better to move > standard implementation to the base class. > affected UDF classes: > {code} > contrib/src/java/org/apache/hadoop/hive/contrib/genericudf/example/GenericUDFDBOutput.java > itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEvaluateNPE.java > itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTestGetJavaBoolean.java > itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTestGetJavaString.java > itests/util/src/main/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTestTranslate.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFEWAHBitmapBop.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/AbstractGenericUDFReflect.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAddMonths.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFArray.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAssertTrue.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseNumeric.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBasePad.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFBaseTrim.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFCoalesce.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFConcat.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFConcatWS.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDate.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDateAdd.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDateDiff.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDateSub.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFDecode.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEWAHBitmapEmpty.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFElt.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFEncode.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFField.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFloorCeilBase.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFFormatNumber.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFGreatest.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFHash.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFIf.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInFile.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInitCap.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFInstr.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLastDay.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLeadLag.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLocate.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFLower.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMacro.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMapKeys.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFMapValues.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFNamedStruct.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPower.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFPrintf.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSentences.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSize.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSortArray.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSplit.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFStringToMap.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFStruct.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFTranslate.java > ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFUpper.java > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)