public IcebergMetadataScanNode(PlanNodeId id, TupleDescriptor desc, String planNodeName, TableVersionRange version) {
        super(id, desc, planNodeName);
        this.table = (MetadataTable) desc.getTable();
        this.metadataTableType = table.getMetadataTableType();
        this.version = version;
    }
@Test
    public void testIcebergMetadataScanNode() throws Exception {
        mockedNativeTableC.newAppend().appendFile(FILE_B_1).commit();
        mockedNativeTableC.refresh();

        new MockUp<IcebergMetadata>() {
            @Mock
            public Database getDb(String dbName) {
                return new Database(1, "db");
            }
        };

        new MockUp<IcebergHiveCatalog>() {
            @Mock
            org.apache.iceberg.Table getTable(String dbName, String tableName) throws StarRocksConnectorException {
                return mockedNativeTableC;
            }

            @Mock
            boolean tableExists(String dbName, String tableName) {
                return true;
            }
        };

        long snapshotId = mockedNativeTableC.currentSnapshot().snapshotId();
        String sql = "explain select file_path from iceberg_catalog.db.tc$logical_iceberg_metadata " +
                "for version as of " + snapshotId + ";";
        ExecPlan execPlan = UtFrameUtils.getPlanAndFragment(starRocksAssert.getCtx(), sql).second;
        Assert.assertEquals(1, execPlan.getScanNodes().size());
        Assert.assertTrue(execPlan.getScanNodes().get(0) instanceof IcebergMetadataScanNode);
        IcebergMetadataScanNode scanNode = (IcebergMetadataScanNode) execPlan.getScanNodes().get(0);
        List<TScanRangeLocations> result = scanNode.getScanRangeLocations(0);
        Assert.assertEquals(1, result.size());

        TPlanNode planNode = new TPlanNode();
        scanNode.toThrift(planNode);
        Assert.assertTrue(planNode.isSetHdfs_scan_node());
        THdfsScanNode tHdfsScanNode = planNode.getHdfs_scan_node();
        Assert.assertTrue(tHdfsScanNode.isSetSerialized_table());
        Assert.assertTrue(tHdfsScanNode.isSetSerialized_predicate());
    }