@Override public Boolean visitDataScanOperator(DataSourceScanOperator op, ILogicalOperator arg) throws AlgebricksException { AbstractLogicalOperator aop = (AbstractLogicalOperator) arg; if (aop.getOperatorTag() != LogicalOperatorTag.DATASOURCESCAN) { return Boolean.FALSE; } DataSourceScanOperator argScan = (DataSourceScanOperator) arg; if (!argScan.getDataSource().toString().equals(op.getDataSource().toString())) { return Boolean.FALSE; } DataSourceScanOperator scanOpArg = (DataSourceScanOperator) copyAndSubstituteVar(op, arg); boolean isomorphic = VariableUtilities.varListEqualUnordered(op.getVariables(), scanOpArg.getVariables()) && op.getDataSource().toString().equals(scanOpArg.getDataSource().toString()); return isomorphic; }
private void fillPKVars(DataSourceScanOperator dataScan, List<LogicalVariable> pkVars) { pkVars.clear(); DatasetDataSource datasetDataSource = (DatasetDataSource) dataScan.getDataSource(); pkVars.clear(); if (datasetDataSource.getDataset().getDatasetDetails() instanceof InternalDatasetDetails) { int numPKs = datasetDataSource.getDataset().getPrimaryKeys().size(); for (int i = 0; i < numPKs; i++) { pkVars.add(dataScan.getVariables().get(i)); } } }
for (int i = 0; i < pkVars.size() - 1; i++) { for (int j = i + 1; j < pkVars.size(); j++) { IDataSource<?> leftSource = ((DataSourceScanOperator) (varOpMap.get(pkVars.get(i)))).getDataSource(); IDataSource<?> rightSource = ((DataSourceScanOperator) (varOpMap.get(pkVars.get(j)))).getDataSource(); if (leftSource.getId().toString().equals(rightSource.getId().toString())) { mapVariablesTopDown(varOpMap.get(pkVars.get(i)), varOpMap.get(pkVars.get(j)), variableMapping);
@Override public String visitDataScanOperator(DataSourceScanOperator op, Boolean showDetails) throws AlgebricksException { stringBuilder.setLength(0); stringBuilder.append("data-scan ").append(op.getProjectVariables()).append("<-").append(op.getVariables()) .append(" <- ").append(op.getDataSource()); appendFilterInformation(op.getMinFilterVars(), op.getMaxFilterVars()); appendSelectConditionInformation(op.getSelectCondition()); appendLimitInformation(op.getOutputLimit()); appendSchema(op, showDetails); appendAnnotations(op, showDetails); appendPhysicalOperatorInfo(op, showDetails); return stringBuilder.toString(); }
@Override public ILogicalOperator visitDataScanOperator(DataSourceScanOperator op, Void arg) throws AlgebricksException { ArrayList<LogicalVariable> newInputList = new ArrayList<>(); newInputList.addAll(op.getVariables()); Mutable<ILogicalExpression> newSelectCondition = op.getSelectCondition() != null ? deepCopyExpressionRef(op.getSelectCondition()) : null; DataSourceScanOperator newOp = new DataSourceScanOperator(newInputList, op.getDataSource(), newSelectCondition, op.getOutputLimit()); return newOp; }
private boolean isScanPushable(DataSourceScanOperator op, Set<LogicalVariable> selectedVariables) { if (op.getOutputLimit() >= 0) { return false; } if (!op.getInputs().isEmpty() && op.getInputs().get(0).getValue().getOperatorTag() != LogicalOperatorTag.EMPTYTUPLESOURCE) { return false; } if (((DataSource) op.getDataSource()).getDatasourceType() != DataSource.Type.INTERNAL_DATASET) { return false; } if (!op.getScanVariables().containsAll(selectedVariables)) { return false; } return true; }
@Override public Void visitDataScanOperator(DataSourceScanOperator op, IOptimizationContext ctx) throws AlgebricksException { ILogicalOperator inp1 = op.getInputs().get(0).getValue(); Map<LogicalVariable, EquivalenceClass> eqClasses = getOrCreateEqClasses(op, ctx); Map<LogicalVariable, EquivalenceClass> propagatedEqClasses = getOrComputeEqClasses(inp1, ctx); eqClasses.putAll(propagatedEqClasses); ctx.putEquivalenceClassMap(op, eqClasses); List<FunctionalDependency> fds = new ArrayList<FunctionalDependency>(getOrComputeFDs(inp1, ctx)); ctx.putFDList(op, fds); op.getDataSource().computeFDs(op.getVariables(), fds); return null; }
private boolean descOrSelfIsLeafSourceScan(ILogicalOperator op, ILogicalOperator bottomOp) { if (op == bottomOp) { return false; } if (op.getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN) { DataSourceScanOperator dataSourceScanOperator = (DataSourceScanOperator) op; return dataSourceScanOperator.getDataSource().isScanAccessPathALeaf(); } for (Mutable<ILogicalOperator> cRef : op.getInputs()) { if (descOrSelfIsLeafSourceScan(cRef.getValue(), bottomOp)) { return true; } } return false; }
DatasetDataSource prevAqlDataSource = (DatasetDataSource) dataScans.get(i - 1).getDataSource(); DatasetDataSource currAqlDataSource = (DatasetDataSource) dataScans.get(i).getDataSource(); if (!prevAqlDataSource.getDataset().equals(currAqlDataSource.getDataset())) { return -1;
@Override public Void visitDataScanOperator(DataSourceScanOperator op, Integer indent) throws AlgebricksException { AlgebricksAppendable plan = addIndent(indent).append( "data-scan " + op.getProjectVariables() + "<-" + op.getVariables() + " <- " + op.getDataSource()); appendFilterInformation(plan, op.getMinFilterVars(), op.getMaxFilterVars()); appendSelectConditionInformation(plan, op.getSelectCondition(), indent); appendLimitInformation(plan, op.getOutputLimit()); return null; }
@Override public ILogicalOperator visitDataScanOperator(DataSourceScanOperator op, ILogicalOperator arg) throws AlgebricksException { Mutable<ILogicalExpression> newSelectCondition = op.getSelectCondition() != null ? exprDeepCopyVisitor.deepCopyExpressionReference(op.getSelectCondition()) : null; DataSourceScanOperator opCopy = new DataSourceScanOperator(deepCopyVariableList(op.getVariables()), op.getDataSource(), newSelectCondition, op.getOutputLimit()); deepCopyInputsAnnotationsAndExecutionMode(op, arg, opCopy); return opCopy; }
DataSourceScanOperator scanOp = (DataSourceScanOperator) op; ILogicalExpressionReferenceTransformWithCondition inputTransformer = visit(op.getInputs().get(0)); DataSource dataSource = (DataSource) scanOp.getDataSource(); List<ILogicalExpressionReferenceTransformWithCondition> transformers = null; List<LogicalVariable> allVars = scanOp.getVariables();
DataSource ds = (DataSource) dataSourceScanOp.getDataSource(); if (dataset.getDatasetName().compareTo(((DatasetDataSource) ds).getDataset().getDatasetName()) == 0) { List<LogicalVariable> minFilterVars = new ArrayList<>();
@Override public Void visitDataScanOperator(DataSourceScanOperator op, Integer indent) throws AlgebricksException { AlgebricksAppendable plan = addIndent(indent).append("\"operator\": \"data-scan\""); if (!op.getProjectVariables().isEmpty()) { addIndent(0).append(",\n"); addIndent(indent).append("\"project-variables\": ["); appendVars(op.getProjectVariables()); buffer.append("]"); } variablePrintHelper(op.getVariables(), indent); if (op.getDataSource() != null) { addIndent(0).append(",\n"); addIndent(indent).append("\"data-source\": \"" + op.getDataSource() + "\""); } appendFilterInformation(plan, op.getMinFilterVars(), op.getMaxFilterVars(), indent); appendSelectConditionInformation(plan, op.getSelectCondition(), indent); appendLimitInformation(plan, op.getOutputLimit(), indent); return null; }
VXQueryCollectionDataSource ds = (VXQueryCollectionDataSource) datascan.getDataSource(); if (!updateDataSource(ds, unnest.getExpressionRef())) { return false;
DataSource ds = (DataSource) dataSourceScanOp.getDataSource(); if ((ds.getDatasourceType() == Type.INTERNAL_DATASET || ds.getDatasourceType() == Type.EXTERNAL_DATASET) && ((DatasetDataSource) ds).getDataset().getDatasetName().compareTo(insertDatasetName) == 0) {
if (descendantOp.getOperatorTag() == LogicalOperatorTag.DATASOURCESCAN) { DataSourceScanOperator dataSourceScanOp = (DataSourceScanOperator) descendantOp; DataSource ds = (DataSource) dataSourceScanOp.getDataSource(); if (ds.getDatasourceType() != DataSource.Type.INTERNAL_DATASET) { return null;
DataSource ds = (DataSource) dss.getDataSource(); if (ds.getDatasourceType() != DataSource.Type.INTERNAL_DATASET) { return null;
DataSourceId asid = ((IDataSource<DataSourceId>) scan.getDataSource()).getId();
DataSource dataSource = (DataSource) scanOp.getDataSource(); if (dataSource.getDatasourceType() != DataSource.Type.FEED) { return false;