@Override public void contributeRuntimeOperator( IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema) throws AlgebricksException { ScriptOperator scriptOp = (ScriptOperator) op; IScriptDescription scriptDesc = scriptOp.getScriptDescription(); if (scriptDesc.getKind() != ScriptKind.STRING_STREAMING) { throw new IllegalStateException(); } StringStreamingScriptDescription sssd = (StringStreamingScriptDescription) scriptDesc; StringStreamingRuntimeFactory runtime = new StringStreamingRuntimeFactory( sssd.getCommand(), sssd.getPrinterFactories(), sssd.getFieldDelimiter(), sssd.getParserFactory()); RecordDescriptor recDesc = JobGenHelper.mkRecordDescriptor(op, propagatedSchema, context); builder.contributeMicroOperator(scriptOp, runtime, recDesc); // and contribute one edge from its child ILogicalOperator src = scriptOp.getInputs().get(0).getValue(); builder.contributeGraphEdge(src, 0, scriptOp, 0); }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) { ScriptOperator s = (ScriptOperator) op; computeDeliveredPropertiesForUsedVariables(s, s.getInputVariables()); }