public static ShowResultSet execute(ShowStmt statement, ConnectContext context) {
        return GlobalStateMgr.getCurrentState().getShowExecutor().showExecutorVisitor.visit(statement, context);
    }
@Test
    public void testShowComputeNodesSharedData(@Mocked StarOSAgent starosAgent) throws AnalysisException, DdlException {
        SystemInfoService clusterInfo = AccessTestUtil.fetchSystemInfoService();

        ComputeNode node = new ComputeNode(1L, "127.0.0.1", 80);
        node.setCpuCores(16);
        node.setMemLimitBytes(100L);
        node.updateResourceUsage(10, 1L, 30);
        TDataCacheMetrics tDataCacheMetrics = new TDataCacheMetrics();
        tDataCacheMetrics.setStatus(TDataCacheStatus.NORMAL);
        tDataCacheMetrics.setDisk_quota_bytes(1024 * 1024 * 1024);
        tDataCacheMetrics.setMem_quota_bytes(1024 * 1024 * 1024);
        node.updateDataCacheMetrics(DataCacheMetrics.buildFromThrift(tDataCacheMetrics));
        node.setAlive(true);
        clusterInfo.addComputeNode(node);

        NodeMgr nodeMgr = new NodeMgr();
        new Expectations(nodeMgr) {
            {
                nodeMgr.getClusterInfo();
                minTimes = 0;
                result = clusterInfo;
            }
        };

        WarehouseManager warehouseManager = new WarehouseManager();
        warehouseManager.initDefaultWarehouse();
        new Expectations(globalStateMgr) {
            {
                globalStateMgr.getNodeMgr();
                minTimes = 0;
                result = nodeMgr;

                globalStateMgr.getStarOSAgent();
                minTimes = 0;
                result = starosAgent;

                globalStateMgr.getWarehouseMgr();
                minTimes = 0;
                result = warehouseManager;
            }
        };

        new MockUp<RunMode>() {
            @Mock
            RunMode getCurrentRunMode() {
                return RunMode.SHARED_DATA;
            }
        };

        long tabletNum = 1024;
        new Expectations() {
            {
                starosAgent.getWorkerTabletNum(anyString);
                minTimes = 0;
                result = tabletNum;
            }
        };

        ShowComputeNodesStmt stmt = new ShowComputeNodesStmt();

        ShowResultSet resultSet = ShowExecutor.execute(stmt, ctx);

        Assert.assertEquals(ComputeNodeProcDir.TITLE_NAMES_SHARED_DATA.size(),
                resultSet.getMetaData().getColumnCount());
        for (int i = 0; i < ComputeNodeProcDir.TITLE_NAMES_SHARED_DATA.size(); ++i) {
            Assert.assertEquals(ComputeNodeProcDir.TITLE_NAMES_SHARED_DATA.get(i),
                    resultSet.getMetaData().getColumn(i).getName());
        }

        Assert.assertTrue(resultSet.next());
        Assert.assertEquals("16", resultSet.getString(13)); // CpuCores
        Assert.assertEquals("100.000B", resultSet.getString(14)); // MemLimit
        Assert.assertEquals("10", resultSet.getString(15));
        Assert.assertEquals("1.00 %", resultSet.getString(16));
        Assert.assertEquals("3.0 %", resultSet.getString(17));
        Assert.assertEquals("Status: Normal, DiskUsage: 0B/1GB, MemUsage: 0B/1GB", resultSet.getString(18));
        Assert.assertEquals("OK", resultSet.getString(20));
        Assert.assertEquals(String.valueOf(tabletNum), resultSet.getString(24));
    }