public boolean visit(SQLUpdateStatement x) { print0(ucase ? "UPDATE " : "update "); printTableSource(x.getTableSource()); println(); print0(ucase ? "SET " : "set "); for (int i = 0, size = x.getItems().size(); i < size; ++i) { if (i != 0) { print0(", "); } SQLUpdateSetItem item = x.getItems().get(i); visit(item); } SQLExpr where = x.getWhere(); if (where != null) { println(); indentCount++; print0(ucase ? "WHERE " : "where "); printExpr(where); indentCount--; } return false; }
protected SQLUpdateStatement createUpdateStatement() { return new SQLUpdateStatement(getDbType()); }
@Override public void output(StringBuffer buf) { SQLASTOutputVisitor visitor = SQLUtils.createOutputVisitor(buf, dbType); this.accept(visitor); }
@Override public SQLUpdateBuilderImpl whereOr(String expr) { SQLUpdateStatement update = getSQLUpdateStatement(); SQLExpr exprObj = SQLUtils.toSQLExpr(expr, dbType); SQLExpr newCondition = SQLUtils.buildCondition(SQLBinaryOperator.BooleanOr, exprObj, false, update.getWhere()); update.setWhere(newCondition); return this; }
public boolean visit(SQLUpdateStatement x) { if (repository != null && x.getParent() == null) { repository.resolve(x); } setMode(x, Mode.Update); SQLTableSource tableSource = x.getTableSource(); if (tableSource instanceof SQLExprTableSource) { SQLName identName = ((SQLExprTableSource) tableSource).getName(); TableStat stat = getTableStat(identName); stat.incrementUpdateCount(); } else { tableSource.accept(this); } accept(x.getFrom()); accept(x.getItems()); accept(x.getWhere()); return false; }
public static void checkUpdate(WallVisitor visitor, SQLUpdateStatement x) { checkReadOnly(visitor, x.getTableSource()); SQLExpr where = x.getWhere(); if (where == null) { WallContext context = WallContext.current(); SQLName table = x.getTableName(); if (table == null) { return; for (SQLUpdateSetItem item : x.getItems()) { if (item.columnMatch(checkColumn)) { valueExpr = item.getValue();
static void resolve(SchemaResolveVisitor visitor, SQLUpdateStatement x) { SchemaResolveVisitor.Context ctx = visitor.createContext(x); SQLWithSubqueryClause with = x.getWith(); if (with != null) { with.accept(visitor); SQLTableSource table = x.getTableSource(); SQLTableSource from = x.getFrom(); List<SQLUpdateSetItem> items = x.getItems(); for (SQLUpdateSetItem item : items) { SQLExpr column = item.getColumn(); SQLExpr where = x.getWhere(); if (where != null) { where.accept(visitor); SQLOrderBy orderBy = x.getOrderBy(); if (orderBy != null) { orderBy.accept(visitor); for (SQLExpr sqlExpr : x.getReturning()) { sqlExpr.accept(visitor);
public SqlUpdateParser parse(){ String dbType = getDbType(sqlDialectType); SQLStatementParser stmtParser = new SQLStatementParser(sql,dbType); SQLStatement stmt = stmtParser.parseStatement(); SQLUpdateStatement updateStmt = (SQLUpdateStatement)stmt; // SQLTableSource tableSource = updateStmt.getTableSource(); this.table = updateStmt.getTableName().getSimpleName(); List<SQLUpdateSetItem> items = updateStmt.getItems(); for(SQLUpdateSetItem item : items){ SQLExpr column = item.getColumn(); SQLExpr value = item.getValue(); fields.add(new PairBond<String,String[]>(column.toString(),new String[]{value.toString()})); } SQLExpr whereExpr = updateStmt.getWhere(); System.out.println(whereExpr.getClass().getName()); if(whereExpr instanceof SQLBinaryOpExpr){ SQLBinaryOpExpr expr = (SQLBinaryOpExpr)whereExpr; parseWhere(expr); } return this; }
private void confirmShardColumnNotUpdated(SQLUpdateStatement update, SchemaConfig schema, String tableName, String partitionColumn, String joinKey, RouteResultset rrs) throws SQLNonTransientException { List<SQLUpdateSetItem> updateSetItem = update.getItems(); if (updateSetItem != null && updateSetItem.size() > 0) { boolean hasParent = (schema.getTables().get(tableName).getParentTC() != null); canUpdate = ((update.getWhere() != null) && shardColCanBeUpdated(update.getWhere(), partitionColumn, item.getValue(), false));
SQLTableSource tableSource = x.getTableSource(); String alias = null; String matchTableName = null; updateSetItem.setValue(value); x.addItem(updateSetItem); visitor.setSqlModified(true);
if (update.getWhere() == x) { return true; } else {
statementType = StatementType.DELETE; } else if (parent instanceof SQLUpdateStatement) { tableSource = ((SQLUpdateStatement) parent).getTableSource(); statementType = StatementType.UPDATE; } else if (parent instanceof SQLSelectQueryBlock) { } else if (parent instanceof SQLUpdateStatement) { SQLUpdateStatement updateStmt = (SQLUpdateStatement) parent; updateStmt.setWhere(condition); visitor.setSqlModified(true); } else if (parent instanceof SQLSelectQueryBlock) {
/** * confirmChildColumnNotUpdated * * @throws SQLNonTransientException */ private void confirmChildColumnNotUpdated(SQLUpdateStatement update, SchemaConfig schema, String tableName) throws SQLNonTransientException { if (schema.getFkErRelations() == null) { return; } List<SQLUpdateSetItem> updateSetItem = update.getItems(); if (updateSetItem != null && updateSetItem.size() > 0) { for (SQLUpdateSetItem item : updateSetItem) { String column = StringUtil.removeBackQuote(item.getColumn().toString().toUpperCase()); if (isJoinColumn(column, schema, tableName)) { String msg = "child relevant column can't be updated " + tableName + "->" + column; LOGGER.info(msg); throw new SQLNonTransientException(msg); } } } }
if (stmt instanceof SQLUpdateStatement) { SQLUpdateStatement updateStmt = (SQLUpdateStatement) stmt; SQLName table = updateStmt.getTableName(); if (table != null) { String tableName = table.getSimpleName();
public static void checkUpdate(WallVisitor visitor, SQLUpdateStatement x) { checkReadOnly(visitor, x.getTableSource()); SQLExpr where = x.getWhere(); if (where == null) { WallContext context = WallContext.current(); SQLName table = x.getTableName(); if (table == null) { return; for (SQLUpdateSetItem item : x.getItems()) { if (item.columnMatch(checkColumn)) { valueExpr = item.getValue();
static void resolve(SchemaResolveVisitor visitor, SQLUpdateStatement x) { SchemaResolveVisitor.Context ctx = visitor.createContext(x); SQLWithSubqueryClause with = x.getWith(); if (with != null) { with.accept(visitor); SQLTableSource table = x.getTableSource(); SQLTableSource from = x.getFrom(); List<SQLUpdateSetItem> items = x.getItems(); for (SQLUpdateSetItem item : items) { SQLExpr column = item.getColumn(); SQLExpr where = x.getWhere(); if (where != null) { where.accept(visitor); SQLOrderBy orderBy = x.getOrderBy(); if (orderBy != null) { orderBy.accept(visitor); for (SQLExpr sqlExpr : x.getReturning()) { sqlExpr.accept(visitor);
public boolean visit(SQLUpdateStatement x) { if (repository != null && x.getParent() == null) { repository.resolve(x); } setMode(x, Mode.Update); SQLTableSource tableSource = x.getTableSource(); if (tableSource instanceof SQLExprTableSource) { SQLName identName = ((SQLExprTableSource) tableSource).getName(); TableStat stat = getTableStat(identName); stat.incrementUpdateCount(); } else { tableSource.accept(this); } accept(x.getFrom()); accept(x.getItems()); accept(x.getWhere()); return false; }
@Override public SQLUpdateBuilderImpl whereAnd(String expr) { SQLUpdateStatement update = getSQLUpdateStatement(); SQLExpr exprObj = SQLUtils.toSQLExpr(expr, dbType); SQLExpr newCondition = SQLUtils.buildCondition(SQLBinaryOperator.BooleanAnd, exprObj, false, update.getWhere()); update.setWhere(newCondition); return this; }
SQLTableSource tableSource = x.getTableSource(); String alias = null; String matchTableName = null; updateSetItem.setValue(value); x.addItem(updateSetItem); visitor.setSqlModified(true);
if (update.getWhere() == x) { return true; } else {