presto-iceberg/src/main/java/io/prestosql/plugin/iceberg/IcebergSplitManager.java/IcebergSplitManager/getSplits
class IcebergSplitManager:    @Override
    public ConnectorSplitSource getSplits(ConnectorTransactionHandle transaction, ConnectorSession session, ConnectorTableHandle handle, SplitSchedulingStrategy splitSchedulingStrategy)
    {
        IcebergTableHandle table = (IcebergTableHandle) handle;

        HiveMetastore metastore = transactionManager.get(transaction).getMetastore();
        Table icebergTable = getIcebergTable(metastore, hdfsEnvironment, session, table.getSchemaTableName());

        TableScan tableScan = getTableScan(session, table.getPredicate(), table.getSnapshotId(), icebergTable);

        // TODO Use residual. Right now there is no way to propagate residual to presto but at least we can
        //      propagate it at split level so the parquet pushdown can leverage it.
        IcebergSplitSource splitSource = new IcebergSplitSource(tableScan.planTasks(), table.getPredicate());

        return new ClassLoaderSafeConnectorSplitSource(splitSource, Thread.currentThread().getContextClassLoader());
    }