Aggarwal-Raghav commented on code in PR #5943: URL: https://github.com/apache/hive/pull/5943#discussion_r2228675187
########## standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/utils/MetaStoreServerUtils.java: ########## @@ -255,31 +253,44 @@ public static double decimalToDouble(Decimal decimal) { return new BigDecimal(new BigInteger(decimal.getUnscaled()), decimal.getScale()).doubleValue(); } - public static void validatePartitionNameCharacters(List<String> partVals, - Pattern partitionValidationPattern) throws MetaException { - - String invalidPartitionVal = getPartitionValWithInvalidCharacter(partVals, partitionValidationPattern); - if (invalidPartitionVal != null) { - throw new MetaException("Partition value '" + invalidPartitionVal + - "' contains a character " + "not matched by whitelist pattern '" + - partitionValidationPattern.toString() + "'. " + "(configure with " + - MetastoreConf.ConfVars.PARTITION_NAME_WHITELIST_PATTERN.getVarname() + ")"); + public static Pattern getPartitionValidationRegex(Configuration conf) { + String partitionValidationRegex = + MetastoreConf.getVar(conf, MetastoreConf.ConfVars.PARTITION_NAME_WHITELIST_PATTERN); + if (partitionValidationRegex != null && !partitionValidationRegex.isEmpty()) { + return Pattern.compile(partitionValidationRegex); } + return null; } - private static String getPartitionValWithInvalidCharacter(List<String> partVals, - Pattern partitionValidationPattern) { - if (partitionValidationPattern == null) { - return null; - } + public static void validatePartitionNameCharacters(List<String> partVals, Configuration conf) + throws MetaException { - for (String partVal : partVals) { - if (!partitionValidationPattern.matcher(partVal).matches()) { - return partVal; - } + Pattern partitionValidationPattern = getPartitionValidationRegex(conf); + String invalidPartitionVal = + getPartitionValWithInvalidCharacter(partVals, partitionValidationPattern); + if (invalidPartitionVal != null) { + throw new MetaException( + ("Partition value '%s' contains a character not matched by whitelist pattern '%s'. Configure with %s for " + + "dynamic partitioning otherwise use metaconf:%s") + .formatted( + invalidPartitionVal, + partitionValidationPattern.toString(), + MetastoreConf.ConfVars.PARTITION_NAME_WHITELIST_PATTERN.getHiveName(), + MetastoreConf.ConfVars.PARTITION_NAME_WHITELIST_PATTERN.getVarname())); } + } - return null; + public static String getPartitionValWithInvalidCharacter( Review Comment: Ack. Let me check. -- 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: gitbox-unsubscr...@hive.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: gitbox-unsubscr...@hive.apache.org For additional commands, e-mail: gitbox-h...@hive.apache.org