@Override protected Void visitInsert(Insert node, Integer indent) { builder.append("INSERT INTO ") .append(node.getTarget()); if (node.getColumns().isPresent()) { builder.append(" (") .append(Joiner.on(", ").join(node.getColumns().get())) .append(")"); } builder.append("\n"); process(node.getQuery(), indent); return null; }
private Query rewriteInsertQuery(Connection connection, Query query, Insert statement) throws SQLException, QueryRewriteException { QualifiedName temporaryTableName = generateTemporaryTableName(statement.getTarget()); Statement createTemporaryTable = new CreateTable(temporaryTableName, ImmutableList.of(new LikeClause(statement.getTarget(), Optional.of(INCLUDING))), true, ImmutableList.of(), Optional.empty()); String createTemporaryTableSql = formatSql(createTemporaryTable, Optional.empty()); String insertSql = formatSql(new Insert(temporaryTableName, statement.getColumns(), statement.getQuery()), Optional.empty()); String checksumSql = checksumSql(getColumnsForTable(connection, query.getCatalog(), query.getSchema(), statement.getTarget().toString()), temporaryTableName); String dropTableSql = dropTableSql(temporaryTableName); return new Query(query.getCatalog(), query.getSchema(), ImmutableList.of(createTemporaryTableSql, insertSql), checksumSql, ImmutableList.of(dropTableSql), query.getUsername(), query.getPassword(), query.getSessionProperties()); }
assertEquals(insert.getTarget(), createTable.getName()); assertEquals(insert.getColumns(), Optional.of(ImmutableList.of(identifier("b"), identifier("a"), identifier("c"))));
@Override protected R visitInsert(Insert node, C context) { process(node.getQuery(), context); return null; }
@Override public Node visitInsertInto(SqlBaseParser.InsertIntoContext context) { Optional<List<Identifier>> columnAliases = Optional.empty(); if (context.columnAliases() != null) { columnAliases = Optional.of(visit(context.columnAliases().identifier(), Identifier.class)); } return new Insert( getQualifiedName(context.qualifiedName()), columnAliases, (Query) visit(context.query())); }
@Override protected R visitInsert(Insert node, C context) { process(node.getQuery(), context); return null; }
@Override public Node visitInsertInto(SqlBaseParser.InsertIntoContext context) { Optional<List<Identifier>> columnAliases = Optional.empty(); if (context.columnAliases() != null) { columnAliases = Optional.of(visit(context.columnAliases().identifier(), Identifier.class)); } return new Insert( getQualifiedName(context.qualifiedName()), columnAliases, (Query) visit(context.query())); }
@Override protected Void visitInsert(Insert node, Integer indent) { builder.append("INSERT INTO ") .append(node.getTarget()); if (node.getColumns().isPresent()) { builder.append(" (") .append(Joiner.on(", ").join(node.getColumns().get())) .append(")"); } builder.append("\n"); process(node.getQuery(), indent); return null; }
.collect(toImmutableList()); RelationPlan plan = createRelationPlan(analysis, insertStatement.getQuery());
@Test public void testInsertInto() { QualifiedName table = QualifiedName.of("a"); Query query = simpleQuery(selectList(new AllColumns()), table(QualifiedName.of("t"))); assertStatement("INSERT INTO a SELECT * FROM t", new Insert(table, Optional.empty(), query)); assertStatement("INSERT INTO a (c1, c2) SELECT * FROM t", new Insert(table, Optional.of(ImmutableList.of(identifier("c1"), identifier("c2"))), query)); }
@Override protected Scope visitInsert(Insert insert, Optional<Scope> scope) QualifiedObjectName targetTable = createQualifiedObjectName(session, insert, insert.getTarget()); if (metadata.getView(session, targetTable).isPresent()) { throw new SemanticException(NOT_SUPPORTED, insert, "Inserting into views is not supported"); Scope queryScope = process(insert.getQuery(), scope); if (insert.getColumns().isPresent()) { insertColumns = insert.getColumns().get().stream() .map(Identifier::getValue) .map(column -> column.toLowerCase(ENGLISH))
.collect(toImmutableList()); RelationPlan plan = createRelationPlan(analysis, insertStatement.getQuery());
@Override protected Scope visitInsert(Insert insert, Optional<Scope> scope) QualifiedObjectName targetTable = createQualifiedObjectName(session, insert, insert.getTarget()); if (metadata.getView(session, targetTable).isPresent()) { throw new SemanticException(NOT_SUPPORTED, insert, "Inserting into views is not supported"); Scope queryScope = process(insert.getQuery(), scope); if (insert.getColumns().isPresent()) { insertColumns = insert.getColumns().get().stream() .map(Identifier::getValue) .map(column -> column.toLowerCase(ENGLISH))