in calcite-adapter/src/main/java/software/amazon/documentdb/jdbc/calcite/adapter/DocumentDbRules.java [634:668]
private static boolean hasObjectIdAndLiteral(
final RexCall call,
final List<Operand> strings) {
final Operand objectIdOperand = strings.stream()
.filter(operand -> operand.getColumn() != null
&& operand.getColumn().getDbType() == BsonType.OBJECT_ID)
.findFirst().orElse(null);
if (objectIdOperand == null) {
return false;
}
for (int index = 0; index < strings.size(); index++) {
final Operand operand = strings.get(index);
if (operand == objectIdOperand || !(call.operands.get(index) instanceof RexLiteral)) {
continue;
}
final RexLiteral literal = (RexLiteral) call.operands.get(index);
switch (literal.getTypeName()) {
case BINARY:
case VARBINARY:
final byte[] valueAsByteArray = getValueAs(literal, byte[].class);
if (valueAsByteArray.length == 12) {
return true;
}
break;
case CHAR:
case VARCHAR:
final String valueAsString = getValueAs(literal, String.class);
if (OBJECT_ID_PATTERN.matcher(valueAsString).matches()) {
return true;
}
break;
}
}
return false;
}