Code review comment: I think it is better to use a local variable other than changing the member variable.

Code under review:
public void analyze(Analyzer analyzer) throws AnalysisException, UserException {
        dbTableName.analyze(analyzer);

        if (!Catalog.getCurrentCatalog().getAuth().checkTblPriv(ConnectContext.get(), dbTableName.getDb(),
                dbTableName.getTbl(), PrivPredicate.SHOW)) {
            ErrorReport.reportAnalysisException(ErrorCode.ERR_TABLEACCESS_DENIED_ERROR, "DESCRIBE",
                    ConnectContext.get().getQualifiedUser(),
                    ConnectContext.get().getRemoteIP(),
                    dbTableName.getTbl());
        }

        Database db = Catalog.getCurrentCatalog().getDb(dbTableName.getDb());
        if (db == null) {
            ErrorReport.reportAnalysisException(ErrorCode.ERR_BAD_DB_ERROR, dbTableName.getDb());
        }
        db.readLock();
        try {
            Table table = db.getTable(dbTableName.getTbl());
            
            if (table == null) {
                for (Table tb : db.getTables()) {
                    if (tb.getType() == Table.TableType.OLAP) {
                        OlapTable olapTable = (OlapTable) tb;
                        for (MaterializedIndex mvIdx : olapTable.getVisibleIndex()) {
                            if (olapTable.getIndexNameById(mvIdx.getId()).equalsIgnoreCase(dbTableName.getTbl())) {
                                List<Column> columns = olapTable.getIndexIdToSchema().get(mvIdx.getId());
                                for (int j = 0; j < columns.size(); ++j) {
                                    Column column = columns.get(j);

                                    
                                    List<String> extras = Lists.newArrayList();
                                    if (column.getAggregationType() != null && olapTable.getKeysType() != KeysType.PRIMARY_KEYS) {
                                        extras.add(column.getAggregationType().name());
                                    }
                                    String extraStr = StringUtils.join(extras, ",");
                                    List<String> row = Arrays.asList(
                                            column.getDisplayName(),
                                            column.getType().toString(),
                                            column.isAllowNull() ? "Yes" : "No",
                                            ((Boolean) column.isKey()).toString(),
                                            column.getDefaultValue() == null
                                                    ? FeConstants.null_string : column.getDefaultValue(),
                                            extraStr);
                                    totalRows.add(row);
                                }
                                isMaterializedView = true;
                                return;
                            }
                        }
                    }
                }
                ErrorReport.reportAnalysisException(ErrorCode.ERR_BAD_TABLE_ERROR, dbTableName.getTbl());
            }

            if (table.getType() == TableType.HIVE) {
                
                isAllTables = false;
            }

            if (!isAllTables) {
                
                String procString = "/dbs/" + db.getId() + "/" + table.getId() + "/" + TableProcDir.INDEX_SCHEMA
                        + "/";
                if (table.getType() == TableType.OLAP) {
                    procString += ((OlapTable) table).getBaseIndexId();
                } else {
                    procString += table.getId();
                }

                node = ProcService.getInstance().open(procString);
                if (node == null) {
                    throw new AnalysisException("Describe table[" + dbTableName.getTbl() + "] failed");
                }
            } else {
                if (table.getType() == TableType.OLAP) {
                    isOlapTable = true;
                    OlapTable olapTable = (OlapTable) table;
                    Set<String> bfColumns = olapTable.getCopiedBfColumns();
                    Map<Long, List<Column>> indexIdToSchema = olapTable.getIndexIdToSchema();

                    
                    List<Long> indices = Lists.newArrayList();
                    indices.add(olapTable.getBaseIndexId());
                    for (Long indexId : indexIdToSchema.keySet()) {
                        if (indexId != olapTable.getBaseIndexId()) {
                            indices.add(indexId);
                        }
                    }

                    
                    for (int i = 0; i < indices.size(); ++i) {
                        long indexId = indices.get(i);
                        List<Column> columns = indexIdToSchema.get(indexId);
                        String indexName = olapTable.getIndexNameById(indexId);
                        MaterializedIndexMeta indexMeta = olapTable.getIndexMetaByIndexId(indexId);
                        for (int j = 0; j < columns.size(); ++j) {
                            Column column = columns.get(j);

                            
                            List<String> extras = Lists.newArrayList();
                            if (column.getAggregationType() != null && olapTable.getKeysType() != KeysType.PRIMARY_KEYS) {
                                extras.add(column.getAggregationType().name());
                            }
                            if (bfColumns != null && bfColumns.contains(column.getName())) {
                                extras.add("BLOOM_FILTER");
                            }
                            String extraStr = StringUtils.join(extras, ",");

                            List<String> row = Arrays.asList("",
                                    "",
                                    column.getDisplayName(),
                                    column.getType().toString(),
                                    column.isAllowNull() ? "Yes" : "No",
                                    ((Boolean) column.isKey()).toString(),
                                    column.getDefaultValue() == null
                                            ? FeConstants.null_string : column.getDefaultValue(),
                                    extraStr);

                            if (j == 0) {
                                row.set(0, indexName);
                                row.set(1, indexMeta.getKeysType().name());
                            }

                            totalRows.add(row);
                        } 

                        if (i != indices.size() - 1) {
                            totalRows.add(EMPTY_ROW);
                        }
                    } 
                } else if (table.getType() == TableType.MYSQL) {
                    isOlapTable = false;
                    MysqlTable mysqlTable = (MysqlTable) table;
                    List<String> row = Arrays.asList(mysqlTable.getHost(),
                            mysqlTable.getPort(),
                            mysqlTable.getUserName(),
                            mysqlTable.getPasswd(),
                            mysqlTable.getMysqlDatabaseName(),
                            mysqlTable.getMysqlTableName());
                    totalRows.add(row);
                } else {
                    ErrorReport.reportAnalysisException(ErrorCode.ERR_UNKNOWN_STORAGE_ENGINE, table.getType());
                }
            }
        } finally {
            db.readUnlock();
        }
    }

Line commented on: isAllTables = false;

Revised code:
public void analyze(Analyzer analyzer) throws AnalysisException, UserException {
        dbTableName.analyze(analyzer);

        if (!Catalog.getCurrentCatalog().getAuth().checkTblPriv(ConnectContext.get(), dbTableName.getDb(),
                dbTableName.getTbl(), PrivPredicate.SHOW)) {
            ErrorReport.reportAnalysisException(ErrorCode.ERR_TABLEACCESS_DENIED_ERROR, "DESCRIBE",
                    ConnectContext.get().getQualifiedUser(),
                    ConnectContext.get().getRemoteIP(),
                    dbTableName.getTbl());
        }

        Database db = Catalog.getCurrentCatalog().getDb(dbTableName.getDb());
        if (db == null) {
            ErrorReport.reportAnalysisException(ErrorCode.ERR_BAD_DB_ERROR, dbTableName.getDb());
        }
        db.readLock();
        try {
            Table table = db.getTable(dbTableName.getTbl());
            
            if (table == null) {
                for (Table tb : db.getTables()) {
                    if (tb.getType() == Table.TableType.OLAP) {
                        OlapTable olapTable = (OlapTable) tb;
                        for (MaterializedIndex mvIdx : olapTable.getVisibleIndex()) {
                            if (olapTable.getIndexNameById(mvIdx.getId()).equalsIgnoreCase(dbTableName.getTbl())) {
                                List<Column> columns = olapTable.getIndexIdToSchema().get(mvIdx.getId());
                                for (int j = 0; j < columns.size(); ++j) {
                                    Column column = columns.get(j);

                                    
                                    List<String> extras = Lists.newArrayList();
                                    if (column.getAggregationType() != null && olapTable.getKeysType() != KeysType.PRIMARY_KEYS) {
                                        extras.add(column.getAggregationType().name());
                                    }
                                    String extraStr = StringUtils.join(extras, ",");
                                    List<String> row = Arrays.asList(
                                            column.getDisplayName(),
                                            column.getType().toString(),
                                            column.isAllowNull() ? "Yes" : "No",
                                            ((Boolean) column.isKey()).toString(),
                                            column.getDefaultValue() == null
                                                    ? FeConstants.null_string : column.getDefaultValue(),
                                            extraStr);
                                    totalRows.add(row);
                                }
                                isMaterializedView = true;
                                return;
                            }
                        }
                    }
                }
                ErrorReport.reportAnalysisException(ErrorCode.ERR_BAD_TABLE_ERROR, dbTableName.getTbl());
            }

            if (table.getType() == TableType.HIVE) {
                
                isAllTables = false;
            }

            if (!isAllTables) {
                
                String procString = "/dbs/" + db.getId() + "/" + table.getId() + "/" + TableProcDir.INDEX_SCHEMA
                        + "/";
                if (table.getType() == TableType.OLAP) {
                    procString += ((OlapTable) table).getBaseIndexId();
                } else {
                    procString += table.getId();
                }

                node = ProcService.getInstance().open(procString);
                if (node == null) {
                    throw new AnalysisException("Describe table[" + dbTableName.getTbl() + "] failed");
                }
            } else {
                if (table.getType() == TableType.OLAP) {
                    isOlapTable = true;
                    OlapTable olapTable = (OlapTable) table;
                    Set<String> bfColumns = olapTable.getCopiedBfColumns();
                    Map<Long, List<Column>> indexIdToSchema = olapTable.getIndexIdToSchema();

                    
                    List<Long> indices = Lists.newArrayList();
                    indices.add(olapTable.getBaseIndexId());
                    for (Long indexId : indexIdToSchema.keySet()) {
                        if (indexId != olapTable.getBaseIndexId()) {
                            indices.add(indexId);
                        }
                    }

                    
                    for (int i = 0; i < indices.size(); ++i) {
                        long indexId = indices.get(i);
                        List<Column> columns = indexIdToSchema.get(indexId);
                        String indexName = olapTable.getIndexNameById(indexId);
                        MaterializedIndexMeta indexMeta = olapTable.getIndexMetaByIndexId(indexId);
                        for (int j = 0; j < columns.size(); ++j) {
                            Column column = columns.get(j);

                            
                            List<String> extras = Lists.newArrayList();
                            if (column.getAggregationType() != null && olapTable.getKeysType() != KeysType.PRIMARY_KEYS) {
                                extras.add(column.getAggregationType().name());
                            }
                            if (bfColumns != null && bfColumns.contains(column.getName())) {
                                extras.add("BLOOM_FILTER");
                            }
                            String extraStr = StringUtils.join(extras, ",");

                            List<String> row = Arrays.asList("",
                                    "",
                                    column.getDisplayName(),
                                    column.getType().toString(),
                                    column.isAllowNull() ? "Yes" : "No",
                                    ((Boolean) column.isKey()).toString(),
                                    column.getDefaultValue() == null
                                            ? FeConstants.null_string : column.getDefaultValue(),
                                    extraStr);

                            if (j == 0) {
                                row.set(0, indexName);
                                row.set(1, indexMeta.getKeysType().name());
                            }

                            totalRows.add(row);
                        } 

                        if (i != indices.size() - 1) {
                            totalRows.add(EMPTY_ROW);
                        }
                    } 
                } else if (table.getType() == TableType.MYSQL) {
                    isOlapTable = false;
                    MysqlTable mysqlTable = (MysqlTable) table;
                    List<String> row = Arrays.asList(mysqlTable.getHost(),
                            mysqlTable.getPort(),
                            mysqlTable.getUserName(),
                            mysqlTable.getPasswd(),
                            mysqlTable.getMysqlDatabaseName(),
                            mysqlTable.getMysqlTableName());
                    totalRows.add(row);
                } else {
                    ErrorReport.reportAnalysisException(ErrorCode.ERR_UNKNOWN_STORAGE_ENGINE, table.getType());
                }
            }
        } finally {
            db.readUnlock();
        }
    }