protected void accept0(MySqlASTVisitor visitor) { if (visitor.visit(this)) { this.acceptChild(visitor, getTableSource()); this.acceptChild(visitor, getColumns()); this.acceptChild(visitor, getValuesList()); this.acceptChild(visitor, getQuery()); this.acceptChild(visitor, getDuplicateKeyUpdate()); } visitor.endVisit(this); }
@Override public boolean visit(MySqlInsertStatement x) { if (repository != null && x.getParent() == null) { repository.resolve(x); } setMode(x, Mode.Insert); TableStat stat = getTableStat(x.getTableSource()); if (stat != null) { stat.incrementInsertCount(); } accept(x.getColumns()); accept(x.getValuesList()); accept(x.getQuery()); accept(x.getDuplicateKeyUpdate()); return false; }
protected void accept0(MySqlASTVisitor visitor) { if (visitor.visit(this)) { this.acceptChild(visitor, getTableSource()); this.acceptChild(visitor, getColumns()); this.acceptChild(visitor, getValuesList()); this.acceptChild(visitor, getQuery()); this.acceptChild(visitor, getDuplicateKeyUpdate()); } visitor.endVisit(this); }
@Override public boolean visit(MySqlInsertStatement x) { if (repository != null && x.getParent() == null) { repository.resolve(x); } setMode(x, Mode.Insert); TableStat stat = getTableStat(x.getTableSource()); if (stat != null) { stat.incrementInsertCount(); } accept(x.getColumns()); accept(x.getValuesList()); accept(x.getQuery()); accept(x.getDuplicateKeyUpdate()); return false; }
/** * 是否为批量插入:insert into ...values (),()...或 insert into ...select..... * @param insertStmt * @return */ private boolean isMultiInsert(MySqlInsertStatement insertStmt) { return (insertStmt.getValuesList() != null && insertStmt.getValuesList().size() > 1) || insertStmt.getQuery() != null; }
private boolean parserNoSharding(ServerConnection sc, String contextSchema, SchemaInfo schemaInfo, RouteResultset rrs, MySqlInsertStatement insert) throws SQLException { String noShardingNode = RouterUtil.isNoSharding(schemaInfo.getSchemaConfig(), schemaInfo.getTable()); if (noShardingNode != null) { StringPtr noShardingNodePr = new StringPtr(noShardingNode); Set<String> schemas = new HashSet<>(); if (insert.getQuery() != null) { SQLSelectStatement selectStmt = new SQLSelectStatement(insert.getQuery()); if (!SchemaUtil.isNoSharding(sc, insert.getQuery().getQuery(), insert, selectStmt, contextSchema, schemas, noShardingNodePr)) { return false; } } routeToNoSharding(schemaInfo.getSchemaConfig(), rrs, schemas, noShardingNodePr); return true; } return false; }
if (insert.getQuery() != null) {