private JobSpecification rewriteCompileInsertUpsert(IClusterInfoCollector clusterInfoCollector, MetadataProvider metadataProvider, InsertStatement insertUpsert, Map<String, IAObject> stmtParams, IStatementRewriter stmtRewriter) throws AlgebricksException, ACIDException { SourceLocation sourceLoc = insertUpsert.getSourceLocation(); String dataverseName = getActiveDataverse(rewrittenInsertUpsert.getDataverseName()); String datasetName = rewrittenInsertUpsert.getDatasetName().getValue(); CompiledInsertStatement clfrqs; switch (insertUpsert.getKind()) { case INSERT: clfrqs = new CompiledInsertStatement(dataverseName, datasetName, rewrittenInsertUpsert.getQuery(), rewrittenInsertUpsert.getVarCounter(), rewrittenInsertUpsert.getVar(), rewrittenInsertUpsert.getReturnExpression()); clfrqs.setSourceLocation(insertUpsert.getSourceLocation()); break; case UPSERT: clfrqs = new CompiledUpsertStatement(dataverseName, datasetName, rewrittenInsertUpsert.getQuery(), rewrittenInsertUpsert.getVarCounter(), rewrittenInsertUpsert.getVar(), rewrittenInsertUpsert.getReturnExpression()); clfrqs.setSourceLocation(insertUpsert.getSourceLocation()); break; default: throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Unsupported statement type " + rewrittenInsertUpsert.getKind()); return apiFramework.compileQuery(clusterInfoCollector, metadataProvider, rewrittenInsertUpsert.getQuery(), rewrittenResult.second, datasetName, sessionOutput, clfrqs, externalVars);
@Override public Expression visit(InsertStatement insertStatement, ILangExpression arg) throws CompilationException { scopeChecker.createNewScope(); // Visits the body query. insertStatement.getQuery().accept(this, insertStatement); // Registers the (inserted) data item variable. VariableExpr bindingVar = insertStatement.getVar(); if (bindingVar != null) { addNewVarSymbolToScope(scopeChecker.getCurrentScope(), bindingVar.getVar(), bindingVar.getSourceLocation()); } // Visits the expression for the returning expression. Expression returningExpr = insertStatement.getReturnExpression(); if (returningExpr != null) { insertStatement.setReturnExpression(visit(returningExpr, insertStatement)); } return null; }
@Override public Boolean visit(InsertStatement insert, List<FunctionDecl> arg) throws CompilationException { boolean changed = false; Expression returnExpression = insert.getReturnExpression(); if (returnExpression != null) { Pair<Boolean, Expression> rewrittenReturnExpr = inlineUdfsInExpr(returnExpression, arg); insert.setReturnExpression(rewrittenReturnExpr.second); changed |= rewrittenReturnExpr.first; } Pair<Boolean, Expression> rewrittenBodyExpression = inlineUdfsInExpr(insert.getBody(), arg); insert.setBody(rewrittenBodyExpression.second); return changed || rewrittenBodyExpression.first; }
@Override public Expression visit(InsertStatement insertStatement, ILangExpression arg) throws CompilationException { Expression returnExpr = insertStatement.getReturnExpression(); if (returnExpr != null) { insertStatement.setReturnExpression(visit(returnExpr, arg)); } Query bodyQuery = insertStatement.getQuery(); bodyQuery.accept(this, arg); return null; }
@Override public Void visit(InsertStatement insert, Integer step) throws CompilationException { out.print(skip(step) + "insert into " + datasetSymbol + generateFullName(insert.getDataverseName(), insert.getDatasetName()) + "\n"); insert.getQuery().accept(this, step); out.println(SEMICOLON); return null; }
@Override public Void visit(InsertStatement wc, Void arg) throws CompilationException { wc.getQuery().accept(this, arg); Expression returnExpression = wc.getReturnExpression(); if (returnExpression != null) { returnExpression.accept(this, arg); } return null; }
Map<String, IAObject> stmtParams, IStatementRewriter stmtRewriter) throws Exception { InsertStatement stmtInsertUpsert = (InsertStatement) stmt; String dataverseName = getActiveDataverse(stmtInsertUpsert.getDataverseName()); final IMetadataLocker locker = new IMetadataLocker() { @Override if (stmtInsertUpsert.getReturnExpression() != null) { deliverResult(hcc, resultSet, compiler, metadataProvider, locker, resultDelivery, outMetadata, stats, clientContextId, NoOpStatementExecutorContext.INSTANCE);
InsertStatement stmt = new InsertStatement(nameComponents.first, nameComponents.second, query, getVarCounter(), var, returnExpression); {if (true) return addSourceLocation(stmt, startToken);}
case INSERT: InsertStatement insertStmt = (InsertStatement) stmt; if (insertStmt.getDataverseName() != null) { dataverse = insertStmt.getDataverseName().getValue();
private static JobSpecification getConnectionJob(MetadataProvider metadataProvider, FeedConnection feedConn, IStatementExecutor statementExecutor, IHyracksClientConnection hcc, Boolean insertFeed) throws AlgebricksException, RemoteException, ACIDException { metadataProvider.getConfig().put(FeedActivityDetails.FEED_POLICY_NAME, feedConn.getPolicyName()); Query feedConnQuery = makeConnectionQuery(feedConn); CompiledStatements.ICompiledDmlStatement clfrqs; if (insertFeed) { InsertStatement stmtUpsert = new InsertStatement(new Identifier(feedConn.getDataverseName()), new Identifier(feedConn.getDatasetName()), feedConnQuery, -1, null, null); clfrqs = new CompiledStatements.CompiledInsertStatement(feedConn.getDataverseName(), feedConn.getDatasetName(), feedConnQuery, stmtUpsert.getVarCounter(), null, null); } else { UpsertStatement stmtUpsert = new UpsertStatement(new Identifier(feedConn.getDataverseName()), new Identifier(feedConn.getDatasetName()), feedConnQuery, -1, null, null); clfrqs = new CompiledStatements.CompiledUpsertStatement(feedConn.getDataverseName(), feedConn.getDatasetName(), feedConnQuery, stmtUpsert.getVarCounter(), null, null); } return statementExecutor.rewriteCompileQuery(hcc, metadataProvider, feedConnQuery, clfrqs, null, null); }
@Override public void lock() throws AlgebricksException { MetadataLockUtil.insertDeleteUpsertBegin(lockManager, metadataProvider.getLocks(), dataverseName + "." + stmtInsertUpsert.getDatasetName()); }
case INSERT: case UPSERT: if (((InsertStatement) stmt).getReturnExpression() != null) { metadataProvider.setResultSetId(new ResultSetId(resultSetIdCounter++)); metadataProvider.setResultAsyncMode(resultDelivery == ResultDelivery.ASYNC
@Override public Void visit(InsertStatement insert, Integer step) throws CompilationException { out.print(skip(step) + "insert into " + datasetSymbol + generateFullName(insert.getDataverseName(), insert.getDatasetName())); out.print("("); insert.getQuery().accept(this, step + 2); out.print(")"); out.println(SEMICOLON); return null; }
{if (true) return new InsertStatement(nameComponents.first, nameComponents.second, query, getVarCounter(), var, returnExpression);} throw new Error("Missing return statement in function");
@Override public Void visit(InsertStatement insert, Integer step) throws CompilationException { out.print(skip(step) + "insert into " + generateFullName(insert.getDataverseName(), insert.getDatasetName()) + "\n"); insert.getQuery().accept(this, step); out.println(SEMICOLON); return null; }
{if (true) return new InsertStatement(nameComponents.first, nameComponents.second, query, getVarCounter(), var, returnExpression);} throw new Error("Missing return statement in function");