Source:
<code>public static Block createMap( MapType mapType, MethodHandle keyEqual, MethodHandle keyHashCode, MethodHandle keyIndeterminate, State state, ConnectorSession session, Block keyBlock, Block valueBlock) { checkCondition(keyBlock.getPositionCount() == valueBlock.getPositionCount(), INVALID_FUNCTION_ARGUMENT, "Key and value arrays must be the same length"); PageBuilder pageBuilder = state.getPageBuilder(); if (pageBuilder.isFull()) { pageBuilder.reset(); } MapBlockBuilder mapBlockBuilder = (MapBlockBuilder) pageBuilder.getBlockBuilder(0); BlockBuilder blockBuilder = mapBlockBuilder.beginBlockEntry(); for (int i = 0; i < keyBlock.getPositionCount(); i++) { if (keyBlock.isNull(i)) { mapBlockBuilder.closeEntry(); throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "map key cannot be null"); } if (isIndeterminate(keyIndeterminate, mapType.getKeyType(), keyBlock, i)) { mapBlockBuilder.closeEntry(); <START> throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "map key cannot be indeterminate"); <END> } mapType.getKeyType().appendTo(keyBlock, i, blockBuilder); mapType.getValueType().appendTo(valueBlock, i, blockBuilder); } try { mapBlockBuilder.closeEntryStrict(); } catch (DuplicateMapKeyException e) { throw new PrestoException(INVALID_FUNCTION_ARGUMENT, e.getDetailedMessage(mapType.getKeyType(), session), e); } finally { pageBuilder.declarePosition(); } return mapType.getObject(mapBlockBuilder, mapBlockBuilder.getPositionCount() - 1); }</code><technical_language>type.getObjectValue print indeterminate in error message user debugging: java throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "map key indeterminate: " + mapType.getvalueType.getObjectValue(session, keyBlock, i));</technical_language>

Target:
public static Block createMap( MapType mapType, MethodHandle keyEqual, MethodHandle keyHashCode, MethodHandle keyIndeterminate, State state, ConnectorSession session, Block keyBlock, Block valueBlock) { checkCondition(keyBlock.getPositionCount() == valueBlock.getPositionCount(), INVALID_FUNCTION_ARGUMENT, "Key and value arrays must be the same length"); PageBuilder pageBuilder = state.getPageBuilder(); if (pageBuilder.isFull()) { pageBuilder.reset(); } MapBlockBuilder mapBlockBuilder = (MapBlockBuilder) pageBuilder.getBlockBuilder(0); BlockBuilder blockBuilder = mapBlockBuilder.beginBlockEntry(); for (int i = 0; i < keyBlock.getPositionCount(); i++) { if (keyBlock.isNull(i)) { mapBlockBuilder.closeEntry(); throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "map key cannot be null"); } Object keyObject = readNativeValue(mapType.getKeyType(), keyBlock, i); try { if ((boolean) keyIndeterminate.invoke(keyObject, false)) { throw new PrestoException(INVALID_FUNCTION_ARGUMENT, "map key cannot be indeterminate: " + mapType.getKeyType().getObjectValue(session, keyBlock, i)); } } catch (Throwable t) { mapBlockBuilder.closeEntry(); throw internalError(t); } mapType.getKeyType().appendTo(keyBlock, i, blockBuilder); mapType.getValueType().appendTo(valueBlock, i, blockBuilder); } try { mapBlockBuilder.closeEntryStrict(); } catch (DuplicateMapKeyException e) { throw new PrestoException(INVALID_FUNCTION_ARGUMENT, e.getDetailedMessage(mapType.getKeyType(), session), e); } finally { pageBuilder.declarePosition(); } return mapType.getObject(mapBlockBuilder, mapBlockBuilder.getPositionCount() - 1); }