[ https://issues.apache.org/jira/browse/HIVE-23818?focusedWorklogId=456677&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-456677 ]
ASF GitHub Bot logged work on HIVE-23818: ----------------------------------------- Author: ASF GitHub Bot Created on: 09/Jul/20 15:02 Start Date: 09/Jul/20 15:02 Worklog Time Spent: 10m Work Description: kgyrtkirk commented on a change in pull request #1229: URL: https://github.com/apache/hive/pull/1229#discussion_r452284974 ########## File path: ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java ########## @@ -1252,78 +1254,88 @@ public static long getSizeOfComplexTypes(HiveConf conf, ObjectInspector oi) { } /** - * Get size of fixed length primitives - * @param colType - * - column type + * Get size of fixed length primitives. + * + * @param colType column type * @return raw data size + * @throws NullPointerException if colType is {@code null} */ - public static long getAvgColLenOfFixedLengthTypes(String colType) { - String colTypeLowerCase = colType.toLowerCase(); - if (colTypeLowerCase.equals(serdeConstants.TINYINT_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.SMALLINT_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.INT_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.VOID_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.BOOLEAN_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.FLOAT_TYPE_NAME)) { + public static long getAvgColLenOfFixedLengthTypes(final String colType) { + String colTypeLowerCase = Objects.requireNonNull(colType).toLowerCase(); + switch (colTypeLowerCase) { + case serdeConstants.TINYINT_TYPE_NAME: + case serdeConstants.SMALLINT_TYPE_NAME: + case serdeConstants.INT_TYPE_NAME: + case serdeConstants.VOID_TYPE_NAME: + case serdeConstants.BOOLEAN_TYPE_NAME: + case serdeConstants.FLOAT_TYPE_NAME: return JavaDataModel.get().primitive1(); - } else if (colTypeLowerCase.equals(serdeConstants.DOUBLE_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.BIGINT_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.INTERVAL_YEAR_MONTH_TYPE_NAME) - || colTypeLowerCase.equals("long")) { + case serdeConstants.DOUBLE_TYPE_NAME: + case serdeConstants.BIGINT_TYPE_NAME: + case serdeConstants.INTERVAL_YEAR_MONTH_TYPE_NAME: + case "long": return JavaDataModel.get().primitive2(); - } else if (colTypeLowerCase.equals(serdeConstants.TIMESTAMP_TYPE_NAME) || - colTypeLowerCase.equals(serdeConstants.TIMESTAMPLOCALTZ_TYPE_NAME)) { + case serdeConstants.TIMESTAMP_TYPE_NAME: + case serdeConstants.TIMESTAMPLOCALTZ_TYPE_NAME: return JavaDataModel.get().lengthOfTimestamp(); - } else if (colTypeLowerCase.equals(serdeConstants.DATE_TYPE_NAME)) { + case serdeConstants.DATE_TYPE_NAME: return JavaDataModel.get().lengthOfDate(); - } else if (colTypeLowerCase.startsWith(serdeConstants.DECIMAL_TYPE_NAME)) { + case serdeConstants.DECIMAL_TYPE_NAME: return JavaDataModel.get().lengthOfDecimal(); - } else if (colTypeLowerCase.equals(serdeConstants.INTERVAL_DAY_TIME_TYPE_NAME)) { + case serdeConstants.INTERVAL_DAY_TIME_TYPE_NAME: return JavaDataModel.JAVA32_META; - } else { - //TODO: support complex types + default: + // TODO: support complex types // for complex type we simply return 0 return 0; } } /** - * Get the size of arrays of primitive types + * Get the size of arrays of primitive types. + * + * @param colType The column type + * @param length The length of the column type + * @param maxLength The maximum length of the field * @return raw data size + * @throws NullPointerException if colType is {@code null} */ - public static long getSizeOfPrimitiveTypeArraysFromType(String colType, int length, HiveConf conf) { - String colTypeLowerCase = colType.toLowerCase(); - if (colTypeLowerCase.equals(serdeConstants.TINYINT_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.SMALLINT_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.INT_TYPE_NAME) - || colTypeLowerCase.equals(serdeConstants.FLOAT_TYPE_NAME)) { + public static long getSizeOfPrimitiveTypeArraysFromType(final String colType, final int length, final int maxLength) { + String colTypeLowerCase = Objects.requireNonNull(colType).toLowerCase(); + if (colTypeLowerCase.startsWith(serdeConstants.VARCHAR_TYPE_NAME) + || colTypeLowerCase.startsWith(serdeConstants.CHAR_TYPE_NAME)) { + int charTypeLen = JavaDataModel.get().lengthForStringOfLength(maxLength); + return JavaDataModel.get().lengthForPrimitiveArrayOfSize(charTypeLen, length); + } + switch (colTypeLowerCase) { + case serdeConstants.TINYINT_TYPE_NAME: + case serdeConstants.SMALLINT_TYPE_NAME: + case serdeConstants.INT_TYPE_NAME: + case serdeConstants.FLOAT_TYPE_NAME: return JavaDataModel.get().lengthForIntArrayOfSize(length); - } else if (colTypeLowerCase.equals(serdeConstants.DOUBLE_TYPE_NAME)) { + case serdeConstants.DOUBLE_TYPE_NAME: return JavaDataModel.get().lengthForDoubleArrayOfSize(length); - } else if (colTypeLowerCase.equals(serdeConstants.BIGINT_TYPE_NAME) - || colTypeLowerCase.equals("long")) { + case serdeConstants.BIGINT_TYPE_NAME: + case "long": Review comment: yes; it's unrelated - opened HIVE-23828 ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org Issue Time Tracking ------------------- Worklog Id: (was: 456677) Time Spent: 1h (was: 50m) > Use String Switch-Case Statement in StatUtils > --------------------------------------------- > > Key: HIVE-23818 > URL: https://issues.apache.org/jira/browse/HIVE-23818 > Project: Hive > Issue Type: Improvement > Reporter: David Mollitor > Assignee: David Mollitor > Priority: Minor > Labels: pull-request-available > Time Spent: 1h > Remaining Estimate: 0h > > switch-case statements with Java is now available. -- This message was sent by Atlassian Jira (v8.3.4#803005)