Skip to content

Fix null element handling in array bind parameters - #1692

Open
adityaanikam wants to merge 1 commit into
eclipse-vertx:masterfrom
adityaanikam:fix-array-null-element-1690
Open

Fix null element handling in array bind parameters#1692
adityaanikam wants to merge 1 commit into
eclipse-vertx:masterfrom
adityaanikam:fix-array-null-element-1690

Conversation

@adityaanikam

Copy link
Copy Markdown

PgParamDesc.prepare() applied the array element type's preEncoder function unconditionally to every array element, including nulls. For NUMERIC[] parameters this causes prepareNumeric() to be invoked on a null element, and the bound query never completes.

Skip the preEncoder call for null elements so they are preserved as SQL NULL, matching how non-array parameters already handle null.

Closes #1690

Motivation:

Binding a NUMERIC[] parameter containing a null element causes the query to hang indefinitely instead of completing, because PgParamDesc.prepare() calls the NUMERIC preEncoder on every array element without checking for null first. Added a regression test that reproduces this with a real Postgres instance, confirmed via a negative control that it fails with a TimeoutException without the fix, and confirmed the fix makes it pass.

Conformance:

The commit is signed off (git commit -s). Ran mvn -pl vertx-pg-client clean test (NumericTypesExtendedCodecTest: 42/42 passing) and mvn -pl vertx-pg-client spotless:check (clean).

PgParamDesc.prepare() applied the array element type's preEncoder function unconditionally to every array element, including nulls. For NUMERIC[] parameters this causes prepareNumeric() to be invoked on a null element, and the bound query never completes.

Skip the preEncoder call for null elements so they are preserved as SQL NULL, matching how non-array parameters already handle null.

Closes eclipse-vertx#1690

Signed-off-by: adityaanikam <adityanikam9502@gmail.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.

Null elements of an array bind parameter are broken since 5.0 (numeric[] throws / hangs, jsonb[] stores json null)

1 participant