RussellSpitzer commented on code in PR #13137:
URL: https://github.com/apache/iceberg/pull/13137#discussion_r2286074841
##########
api/src/main/java/org/apache/iceberg/expressions/ExpressionUtil.java:
##########
@@ -646,6 +655,95 @@ private static String sanitizeSimpleString(CharSequence
value) {
return String.format(Locale.ROOT, "(hash-%08x)", HASH_FUNC.apply(value));
}
+ private static String sanitizeVariant(Variant value, long now, int today) {
+ return sanitizeVariant(value.value(), now, today);
+ }
+
+ private static String sanitizeVariant(VariantValue value, long now, int
today) {
+ if (value instanceof VariantObject) {
+ return sanitizeVariantObject(value.asObject(), now, today);
+ } else if (value instanceof VariantPrimitive) {
+ return sanitizeVariantValue(value.asPrimitive(), value.type(), now,
today);
+ } else {
+ return sanitizeVariantArray(value.asArray(), now, today);
+ }
+ }
+
+ private static String sanitizeVariantObject(VariantObject value, long now,
int today) {
+ StringBuilder builder = new StringBuilder();
+ builder.append("{");
+ boolean first = true;
+ for (String field : value.fieldNames()) {
+ if (first) {
+ first = false;
+ } else {
+ builder.append(", ");
+ }
+ builder.append(String.format(Locale.ROOT, "(hash-%s)", field)).append(":
");
+ VariantValue fieldValue = value.get(field);
+ PhysicalType fieldType = fieldValue.type();
+ builder.append(sanitizeVariantValue(fieldValue, fieldType, now, today));
+ }
+ builder.append("}");
+ return builder.toString();
+ }
+
+ private static String sanitizeVariantArray(VariantArray value, long now, int
today) {
Review Comment:
Another suggestion
```java
private static String sanitizeVariantArray(VariantArray value, long now, int
today) {
return IntStream.range(0, value.numElements())
.mapToObj(i -> {
VariantValue element = value.get(i);
return sanitizeVariantValue(element, element.type(), now, today);
})
.collect(Collectors.joining(", ", "[", "]"));
}
```
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]