In PostgreSQL, the exporting transaction must stay open to keep the snapshot valid when it's imported into another transaction. This is because the snapshot "freezes" a view of which transactions were committed at that specific moment. PostgreSQL needs the exporting transaction to remain active to keep that view stable and prevent any inconsistencies. If the exporting transaction were to close, PostgreSQL might clean up the transaction IDs it used, which would make the snapshot unusable or unreliable. When the exporting transaction is closed, other transactions are free to modify the data, and this can change what the snapshot would show, leading to data drift and inconsistencies. Keeping the transaction open acts like a steady "anchor" that prevents any unexpected changes in what data the importing transaction sees. So, PostgreSQL requires the exporting transaction to stay open to maintain a stable, reliable view of data across transactions.