Skip to content

Fix integer out of range in mt_quick_append_events and mt_get_next_hi SQL functions#4248

Merged
jeremydmiller merged 1 commit intoJasperFx:masterfrom
vicmaeg:fix/4246-integer-out-of-range
Apr 14, 2026
Merged

Fix integer out of range in mt_quick_append_events and mt_get_next_hi SQL functions#4248
jeremydmiller merged 1 commit intoJasperFx:masterfrom
vicmaeg:fix/4246-integer-out-of-range

Conversation

@vicmaeg
Copy link
Copy Markdown
Contributor

@vicmaeg vicmaeg commented Apr 13, 2026

The mt_quick_append_events function declared its return type and internal variables as int/int[] while the underlying sequence (mt_events_sequence) and seq_id column use bigint. This causes integer overflow when sequence IDs exceed ~2.1 billion, which was observed in production.

Changed in mt_quick_append_events:

  • RETURNS int[] → bigint[]
  • event_version int → bigint
  • seq int → bigint
  • return_value int[] → bigint[]

Also fixed mt_get_next_hi which declared RETURNS integer despite its hi_value column being bigint and its internal variables being bigint.

C# consumers already read these values as long/long[], so no client-side changes are needed. A test is added that advances the event sequence past int.MaxValue and verifies quick append still works correctly.

This fixes bug: #4246

… SQL functions

The mt_quick_append_events function declared its return type and internal
variables as int/int[] while the underlying sequence (mt_events_sequence)
and seq_id column use bigint. This causes integer overflow when sequence
IDs exceed ~2.1 billion, which was observed in production.

Changed in mt_quick_append_events:
- RETURNS int[] → bigint[]
- event_version int → bigint
- seq int → bigint
- return_value int[] → bigint[]

Also fixed mt_get_next_hi which declared RETURNS integer despite its
hi_value column being bigint and its internal variables being bigint.

C# consumers already read these values as long/long[], so no client-side
changes are needed. A test is added that advances the event sequence past
int.MaxValue and verifies quick append still works correctly.
@jeremydmiller jeremydmiller merged commit 4b5e16c into JasperFx:master Apr 14, 2026
6 checks passed
jeremydmiller added a commit that referenced this pull request Apr 14, 2026
The Bug_4246 test from PR #4248 sets the sequence above int32 max but
didn't enable EnableBigIntEvents, causing the mt_quick_append_events
function to overflow with its default int types.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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