@Override protected void doPrepare() { String tableName = prepared.getTableName(); String indexName = prepared.getIndexName(); TableMate table = getTableMate(tableName); IndexColumn.mapColumns(prepared.getIndexColumns(), table); RoutingResult rr = routingHandler.doRoute(table); ObjectNode[] selectNodes = rr.getSelectNodes(); workers = New.arrayList(selectNodes.length); for (ObjectNode tableNode : selectNodes) { ObjectNode indexNode = new ObjectNode(tableNode.getShardName(), tableNode.getCatalog(), tableNode.getSchema(), indexName, tableNode.getSuffix()); UpdateWorker worker = queryHandlerFactory.createUpdateWorker(prepared, indexNode, tableNode); workers.add(worker); } }
@Override public UpdateWorker createUpdateWorker(CreateIndex prepared, ObjectNode indexNode, ObjectNode tableNode) { SQLTranslated translated = repo.getSQLTranslator().translate(prepared, indexNode, tableNode); JdbcUpdateWorker handler = new JdbcUpdateWorker(prepared.getSession(), indexNode.getShardName(), translated.sql, translated.params); return handler; }
String tableName = readIdentifierWithSchema(); checkSchema(oldSchema); CreateIndex command = new CreateIndex(session, getSchema()); command.setIfNotExists(ifNotExists); command.setHash(hash); command.setSpatial(spatial); command.setPrimaryKey(primaryKey); command.setTableName(tableName); command.setUnique(unique); command.setIndexName(indexName); command.setComment(readCommentIf()); read("("); command.setIndexColumns(parseIndexColumnList()); return command;
StatementBuilder sql = new StatementBuilder(); sql.append("CREATE "); if (prepared.isUnique()) { sql.append(" UNIQUE"); } else if(prepared.isSpatial()) { sql.append(" SPATIAL"); sql.append(" ON ").append(identifier(forTable)); sql.append('('); for (IndexColumn c : prepared.getIndexColumns()) { sql.appendExceptFirst(", "); sql.append(identifier(c.column.getName())); if (prepared.isHash()) { sql.append(" USING HASH"); String comment = prepared.getComment(); if(comment != null) { sql.append(" COMMENT ").append(StringUtils.quoteStringSQL(comment));
return null; CreateIndex command = new CreateIndex(session, schema); command.setComment(comment); command.setTableName(tableName); if (!readIf("(")) { command.setIndexName(readUniqueIdentifier()); read("("); command.setIndexColumns(parseIndexColumnList());
if (stmt.isSpatial()) { buff.append(" SPATIAL INDEX"); } else { buff.append(" INDEX"); if (stmt.isHash()) { buff.append(" USING HASH"); for (IndexColumn c : stmt.getIndexColumns()) { buff.appendExceptFirst(", "); buff.append(identifier(c.columnName));
@Override public int doUpdate() { String tableName = prepared.getTableName(); TableMate table = getTableMate(tableName); int affectRows = invokeUpdateWorker(workers); table.loadMataData(session); return affectRows; }