Optimize BigDecimal zero value handling to reduce memory footprint #117
+5
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What was done:
When using MySQL JDBC driver to process result sets containing BigDecimal values (including zero values), the application retrieves numeric fields that evaluate to 0 (e.g., SELECT amount FROM orders WHERE amount = 0).
What was expected:
Following the behavior of the Oracle JDBC driver, which reuses the same
BigDecimal
instance for zero values to minimize memory allocation and optimize memory footprint. This ensures consistent reference equality (i.e.,object1 == object2
for zero values) and reduces redundant object creation.What actually happened:
The MySQL JDBC driver creates a new BigDecimal instance for each zero value encountered in the result set, even when the value is logically identical to BigDecimal.ZERO.