Skip to content

feat(QueryBuilder): add whereInBulk - #319

Merged
elpete merged 5 commits into
nextfrom
agent/issue-109-where-in-bulk
Aug 12, 2026
Merged

feat(QueryBuilder): add whereInBulk#319
elpete merged 5 commits into
nextfrom
agent/issue-109-where-in-bulk

Conversation

@elpete

@elpete elpete commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • add whereInBulk and whereNotInBulk, including dynamic andWhere... and orWhere... shortcuts
  • serialize bulk values into one LONGVARCHAR binding
  • infer a common SQL type from raw values or matching typed query parameters
  • translate inferred types to native SQL Server, PostgreSQL, MySQL/MariaDB, Oracle, and SQLite types
  • preserve an explicit third-argument sqlType override for database-specific or precision-sensitive columns
  • keep Derby explicitly unsupported for non-empty bulk collections
  • document database feature and version requirements

Why

Large whereIn collections create one database parameter per value. SQL Server rejects statements above its 2,100-parameter limit. whereInBulk provides an explicit opt-in path that uses one serialized binding, so regular whereIn behavior and performance remain unchanged.

Refs #109.

Validation

  • added the inference contract and per-grammar expectations first and confirmed they failed before implementation
  • box testbox run on Lucee 6: 2,762 passed, 0 failed, 3 skipped
  • GitHub Actions: all 18 checks passed, including native BoxLang with full-null on and off
  • box run-script format:check
  • git diff --check
  • executed the emitted SQLite JSON_EACH form directly against SQLite

@elpete
elpete marked this pull request as ready for review August 12, 2026 06:29
@elpete
elpete merged commit 5128c7d into next Aug 12, 2026
18 checks passed
@elpete
elpete deleted the agent/issue-109-where-in-bulk branch August 12, 2026 06:29
elpete added a commit that referenced this pull request Aug 12, 2026
elpete added a commit that referenced this pull request Aug 13, 2026
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.

1 participant