@Override
    public TListMaterializedViewStatusResult listMaterializedViewStatus(TGetTablesParams params) throws TException {
        LOG.debug("get list table request: {}", params);

        PatternMatcher matcher = null;
        boolean caseSensitive = CaseSensibility.TABLE.getCaseSensibility();
        if (params.isSetPattern()) {
            matcher = PatternMatcher.createMysqlPattern(params.getPattern(), caseSensitive);
        }

        // database privs should be checked in analysis phrase
        long limit = params.isSetLimit() ? params.getLimit() : -1;
        UserIdentity currentUser;
        if (params.isSetCurrent_user_ident()) {
            currentUser = UserIdentity.fromThrift(params.current_user_ident);
        } else {
            currentUser = UserIdentity.createAnalyzedUserIdentWithIp(params.user, params.user_ip);
        }
        Preconditions.checkState(params.isSetType() && TTableType.MATERIALIZED_VIEW.equals(params.getType()));
        return listMaterializedViewStatus(limit, matcher, currentUser, params);
    }
@Test
    public void testGetSpecialColumnForSyncMv() throws Exception {
        starRocksAssert.withDatabase("test_table").useDatabase("test_table")
                .withTable("CREATE TABLE `base1` (\n" +
                        "event_day DATE,\n" +
                        "department_id int(11) NOT NULL COMMENT \"\"\n" +
                        ") ENGINE=OLAP\n" +
                        "DUPLICATE KEY(event_day, department_id)\n" +
                        "DISTRIBUTED BY HASH(department_id) BUCKETS 1\n" +
                        "PROPERTIES (\n" +
                        "\"replication_num\" = \"1\",\n" +
                        "\"in_memory\" = \"false\",\n" +
                        "\"storage_format\" = \"DEFAULT\",\n" +
                        "\"enable_persistent_index\" = \"false\"\n" +
                        ");")
                .withMaterializedView("create materialized view test_table.mv$test as select event_day from base1");

        ConnectContext ctx = starRocksAssert.getCtx();
        String createUserSql = "create user test4";
        DDLStmtExecutor.execute(UtFrameUtils.parseStmtWithNewParser(createUserSql, ctx), ctx);
        String grantSql = "GRANT SELECT ON TABLE test_table.base1 TO USER `test4`@`%`;";
        DDLStmtExecutor.execute(UtFrameUtils.parseStmtWithNewParser(grantSql, ctx), ctx);

        FrontendServiceImpl impl = new FrontendServiceImpl(exeEnv);
        TGetTablesParams request = new TGetTablesParams();
        TUserIdentity userIdentity = new TUserIdentity();
        userIdentity.setUsername("test4");
        userIdentity.setHost("%");
        userIdentity.setIs_domain(false);
        request.setCurrent_user_ident(userIdentity);
        request.setPattern("mv$test");
        request.setDb("test_table");
        request.setType(TTableType.MATERIALIZED_VIEW);
        TListMaterializedViewStatusResult response = impl.listMaterializedViewStatus(request);
        Assert.assertEquals(1, response.materialized_views.size());
    }