public static String buildGlueExpression(Map<Column, Domain> partitionPredicates)
    {
        List<String> perColumnExpressions = new ArrayList<>();
        int expressionLength = 0;
        for (Map.Entry<Column, Domain> partitionPredicate : partitionPredicates.entrySet()) {
            String columnName = partitionPredicate.getKey().getName();
            if (JSQL_PARSER_RESERVED_KEYWORDS.contains(columnName.toUpperCase(ENGLISH))) {
                // The column name is a reserved keyword in the grammar of the SQL parser used internally by Glue API
                continue;
            }
            Domain domain = partitionPredicate.getValue();
            if (domain != null && !domain.isAll()) {
                Optional<String> columnExpression = buildGlueExpressionForSingleDomain(columnName, domain);
                if (columnExpression.isPresent()) {
                    int newExpressionLength = expressionLength + columnExpression.get().length();
                    if (expressionLength > 0) {
                        newExpressionLength += CONJUNCT_SEPARATOR.length();
                    }

                    if (newExpressionLength > GLUE_EXPRESSION_CHAR_LIMIT) {
                        continue;
                    }

                    perColumnExpressions.add((columnExpression.get()));
                    expressionLength = newExpressionLength;
                }
            }
        }

        return Joiner.on(CONJUNCT_SEPARATOR).join(perColumnExpressions);
    }
@Test
    public void testDecimalConversion()
    {
        Map<Column, Domain> predicates = new PartitionFilterBuilder(HIVE_TYPE_TRANSLATOR)
                .addDecimalValues("col1", "10.134")
                .build();
        String expression = buildGlueExpression(predicates);
        assertEquals(expression, "((col1 = 10.13400))");
    }