Description:
Accesses to Blob columns cause NdbApi to insert extra 'internal' operations into the user transaction's operation lists for retrieving/maintaining the Blob head and the Blob part table rows.
This can cause problems :
1) When scanning a table with Blobs, each nextResult() call issues read operations for the Blob part table(s). These operations are not automatically freed. (Bug # 52313)
2) Implicit execute() calls can break expected Blob state transitions (bug#50310). Where some user operations are defined which access Blobs, then a separate scan of a Blob containing table is advanced with nextResult(), the implicit execute() within the nextResult() can cause the Blob-accessing user operations to be executed without correct state transitions.
3) When iterating through completed operations, internal operations which the user is conceptually unaware of, are visible.
How to repeat:
See above bug numbers.
Suggested fix:
Improve the encapsulation of the Blob internal operations :
- Make the 'internal' nature of the Blob operations explicit.
- Manage them separately from the user's operations.
- Execute them only when expected.
- Free them after they have been processed.