Skip to content

Enforce thresholds in explicit representation handling#174

Merged
codeforall merged 1 commit into
masterfrom
feature/hll-explicit-threshold-enforcement
May 26, 2026
Merged

Enforce thresholds in explicit representation handling#174
codeforall merged 1 commit into
masterfrom
feature/hll-explicit-threshold-enforcement

Conversation

@colm-mchugh
Copy link
Copy Markdown
Contributor

DESCRIPTION: Enforce thresholds in explicit representation handling.

Cap expthresh_value() auto-calculated threshold to mse_nelem_max() so the explicit-to-compressed promotion fires before exceeding capacity.

Validate deserialized parameters in multiset_unpack() via check_modifiers() to reject binary with out-of-range log2m or regwidth values that bypass parameter validation. Prevents possible crash in edge case scenarios.

Additional guards:

  • explicit_union(): add mse_nelem_max() check alongside expval
  • multiset_add(): use >= instead of == and add mse_nelem_max() fallback
  • multiset_add(): replace Assert with runtime ereport(ERROR)

Includes regression tests covering rejection of a binary with out-of-range parameters, valid parameter no-regression, and promotion boundary behavior.

Cap expthresh_value() auto-calculated threshold to mse_nelem_max() so
the explicit-to-compressed promotion fires before exceeding capacity.

Validate deserialized parameters in multiset_unpack() via
check_modifiers() to reject crafted binary with out-of-range log2m
or regwidth values that bypass parameter validation.

Additional guards:
- explicit_union(): add mse_nelem_max() check alongside expval
- multiset_add(): use >= instead of == and add mse_nelem_max() fallback
- multiset_add(): replace Assert with runtime ereport(ERROR)
- serialize()/deserialize(): sanity check input does not exceed multiset
  size

Includes regression tests covering rejection of crafted binary with
out-of-range parameters, valid parameter no-regression, and
promotion boundary behavior.
@colm-mchugh colm-mchugh force-pushed the feature/hll-explicit-threshold-enforcement branch from 5a44202 to 2efb492 Compare May 26, 2026 15:27
Copy link
Copy Markdown
Contributor

@codeforall codeforall left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@codeforall codeforall merged commit 87a98e4 into master May 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants