@Nullable private Function rewriteAndValidateFields(Function function, Context context) { if (function.arguments().size() == 2) { Symbol left = function.arguments().get(0); Symbol right = function.arguments().get(1); if (left.symbolType() == SymbolType.REFERENCE && right.symbolType().isValueSymbol()) { Reference ref = (Reference) left; if (ref.info().ident().columnIdent().equals(DocSysColumns.ID)) { function.setArgument( 0, new Reference(DocSysColumns.forTable(ref.ident().tableIdent(), DocSysColumns.UID))); function.setArgument( 1, Literal.newLiteral( Uid.createUid( Constants.DEFAULT_MAPPING_TYPE, ValueSymbolVisitor.STRING.process(right)))); } else { String unsupportedMessage = context.unsupportedMessage(ref.info().ident().columnIdent().name()); if (unsupportedMessage != null) { throw new UnsupportedFeatureException(unsupportedMessage); } } } } return function; }
@Override public Collection<CrateCollector> getCollectors( CollectPhase collectPhase, RowDownstream downstream, JobCollectContext jobCollectContext) { FileCollectInputSymbolVisitor.Context context = fileInputSymbolVisitor.extractImplementations(collectPhase); FileUriCollectPhase fileUriCollectPhase = (FileUriCollectPhase) collectPhase; String[] readers = fileUriCollectPhase .executionNodes() .toArray(new String[fileUriCollectPhase.executionNodes().size()]); Arrays.sort(readers); return ImmutableList.<CrateCollector>of( new FileReadingCollector( ValueSymbolVisitor.STRING.process(fileUriCollectPhase.targetUri()), context.topLevelInputs(), context.expressions(), downstream, fileUriCollectPhase.fileFormat(), fileUriCollectPhase.compression(), ImmutableMap.<String, FileInputFactory>of(), fileUriCollectPhase.sharedStorage(), readers.length, Arrays.binarySearch(readers, clusterService.state().nodes().localNodeId()))); }