@Override public void contributeRuntimeOperator( IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema) throws AlgebricksException { RecordDescriptor recDesc = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), propagatedSchema, context); int[] primaryKeyFields = JobGenHelper.variablesToFieldIndexes(primaryKeyLogicalVars, inputSchemas[0]); AqlMetadataProvider metadataProvider = (AqlMetadataProvider) context.getMetadataProvider(); CommitRuntimeFactory runtime = new CommitRuntimeFactory( jobId, datasetId, primaryKeyFields, metadataProvider.isTemporaryDatasetWriteJob(), metadataProvider.isWriteTransaction()); builder.contributeMicroOperator(op, runtime, recDesc); ILogicalOperator src = op.getInputs().get(0).getValue(); builder.contributeGraphEdge(src, 0, op, 0); }
@Override public void contributeRuntimeOperator( IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op, IOperatorSchema opSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema) throws AlgebricksException { RunningAggregateOperator ragg = (RunningAggregateOperator) op; List<LogicalVariable> variables = ragg.getVariables(); List<Mutable<ILogicalExpression>> expressions = ragg.getExpressions(); int[] outColumns = new int[variables.size()]; for (int i = 0; i < outColumns.length; i++) { outColumns[i] = opSchema.findVariable(variables.get(i)); } IRunningAggregateEvaluatorFactory[] runningAggFuns = new IRunningAggregateEvaluatorFactory[expressions.size()]; IExpressionRuntimeProvider expressionRuntimeProvider = context.getExpressionRuntimeProvider(); for (int i = 0; i < runningAggFuns.length; i++) { StatefulFunctionCallExpression expr = (StatefulFunctionCallExpression) expressions.get(i).getValue(); runningAggFuns[i] = expressionRuntimeProvider.createRunningAggregateFunctionFactory( expr, context.getTypeEnvironment(op.getInputs().get(0).getValue()), inputSchemas, context); } // TODO push projections into the operator int[] projectionList = JobGenHelper.projectAllVariables(opSchema); RunningAggregateRuntimeFactory runtime = new RunningAggregateRuntimeFactory(outColumns, runningAggFuns, projectionList); // contribute one Asterix framewriter RecordDescriptor recDesc = JobGenHelper.mkRecordDescriptor(context.getTypeEnvironment(op), opSchema, context); builder.contributeMicroOperator(ragg, runtime, recDesc); // and contribute one edge from its child ILogicalOperator src = ragg.getInputs().get(0).getValue(); builder.contributeGraphEdge(src, 0, ragg, 0); }
@Override public void contributeRuntimeOperator( IHyracksJobBuilder builder, JobGenContext context, ILogicalOperator op, IOperatorSchema propagatedSchema, IOperatorSchema[] inputSchemas, IOperatorSchema outerPlanSchema) throws AlgebricksException { IndexInsertDeleteUpsertOperator indexInsertDeleteOp = (IndexInsertDeleteUpsertOperator) op; assert indexInsertDeleteOp.getOperation() == Kind.INSERT; assert indexInsertDeleteOp.isBulkload(); IMetadataProvider mp = context.getMetadataProvider(); IVariableTypeEnvironment typeEnv = context.getTypeEnvironment(op); JobSpecification spec = builder.getJobSpec(); RecordDescriptor inputDesc = JobGenHelper.mkRecordDescriptor( context.getTypeEnvironment(op.getInputs().get(0).getValue()), inputSchemas[0], context); Pair<IOperatorDescriptor, AlgebricksPartitionConstraint> runtimeAndConstraints = mp.getIndexInsertRuntime( dataSourceIndex, propagatedSchema, inputSchemas, typeEnv, primaryKeys, secondaryKeys, additionalFilteringKeys, filterExpr, inputDesc, context, spec, true); builder.contributeHyracksOperator(indexInsertDeleteOp, runtimeAndConstraints.first); builder.contributeAlgebricksPartitionConstraint( runtimeAndConstraints.first, runtimeAndConstraints.second); ILogicalOperator src = indexInsertDeleteOp.getInputs().get(0).getValue(); builder.contributeGraphEdge(src, 0, indexInsertDeleteOp, 0); }
private void standardLayout(ILogicalOperator op) throws AlgebricksException { for (Mutable<ILogicalOperator> c : op.getInputs()) { VariableUtilities.getLiveVariables(c.getValue(), schemaVariables); } VariableUtilities.getProducedVariables(op, schemaVariables); }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); deliveredProperties = (StructuralPropertiesVector) op2.getDeliveredPhysicalProperties().clone(); }
@Override public void computeDeliveredProperties(ILogicalOperator op, IOptimizationContext context) throws AlgebricksException { AbstractLogicalOperator op2 = (AbstractLogicalOperator) op.getInputs().get(0).getValue(); deliveredProperties = op2.getDeliveredPhysicalProperties().clone(); }