morningman commented on a change in pull request #2573: implements create drop show index syntax for bitmap index [#2487] URL: https://github.com/apache/incubator-doris/pull/2573#discussion_r361889726
########## File path: fe/src/main/java/org/apache/doris/analysis/AlterTableStmt.java ########## @@ -61,7 +68,49 @@ public void analyze(Analyzer analyzer) throws AnalysisException, UserException { ErrorReport.reportAnalysisException(ErrorCode.ERR_NO_ALTER_OPERATION); } for (AlterClause op : ops) { - op.analyze(analyzer); + if (op instanceof CreateIndexClause) { + Table table = Catalog.getInstance().getDb(tbl.getDb()).getTable(tbl.getTbl()); + if (table instanceof OlapTable) { + op.analyze(analyzer); + List<Index> indexes = ((OlapTable) table).getIndexes(); + IndexDef indexDef = ((CreateIndexClause) op).getIndexDef(); + Set<String> newColset = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + newColset.addAll(indexDef.getColumns()); + for (Index idx : indexes) { + if (idx.getIndexName().equalsIgnoreCase(indexDef.getIndexName())) { + throw new AnalysisException("index `" + indexDef.getIndexName() + "` already exist."); + } + Set<String> idxSet = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + idxSet.addAll(idx.getColumns()); + if (newColset.equals(idxSet)) { + throw new AnalysisException("index for columns (" + String + .join(",", indexDef.getColumns()) + " ) already exist."); + } + } + } + } else if (op instanceof DropIndexClause) { + Table table = Catalog.getInstance().getDb(tbl.getDb()).getTable(tbl.getTbl()); + if (table instanceof OlapTable) { + op.analyze(analyzer); + String indexName = ((DropIndexClause) op).getIndexName(); + List<Index> indexes = ((OlapTable) table).getIndexes(); + if (CollectionUtils.isEmpty(indexes)) { + throw new AnalysisException("index " + indexName + " does not exist"); + } + Index found = null; + for (Index idx: indexes) { + if (idx.getIndexName().equalsIgnoreCase(indexName)) { + found = idx; + break; + } + } + if (found == null) { + throw new AnalysisException("index " + indexName + " does not exist"); + } + } + } else { + op.analyze(analyzer); + } } if (!Catalog.getCurrentCatalog().getAuth().checkTblPriv(ConnectContext.get(), tbl.getDb(), tbl.getTbl(), Review comment: Move this privilege check at the frontend of `analyze()` ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org With regards, Apache Git Services --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org