Skip to content

Add regression tests for bindvar type inference with #>> operator - #3018

Merged
fulghum merged 2 commits into
mainfrom
fulghum/doltgres-3012
Aug 3, 2026
Merged

Add regression tests for bindvar type inference with #>> operator#3018
fulghum merged 2 commits into
mainfrom
fulghum/doltgres-3012

Conversation

@fulghum

@fulghum fulghum commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Fixes: #3012

Depends on: dolthub/go-mysql-server#3663

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor
Main PR
covering_index_scan_postgres 2668.92/s 2607.36/s -2.4%
groupby_scan_postgres 162.47/s 157.89/s -2.9%
index_join_postgres 723.09/s 718.17/s -0.7%
index_join_scan_postgres 930.75/s 924.05/s -0.8%
index_scan_postgres 40.76/s 40.41/s -0.9%
oltp_delete_insert_postgres 432.46/s ${\color{lightgreen}515.78/s}$ ${\color{lightgreen}+19.2\%}$
oltp_insert 456.39/s ${\color{red}332.81/s}$ ${\color{red}-27.1\%}$
oltp_point_select 4891.01/s 4859.50/s -0.7%
oltp_read_only 4157.23/s 4271.56/s +2.7%
oltp_read_write 2151.42/s ${\color{red}1743.65/s}$ ${\color{red}-19.0\%}$
oltp_update_index 540.19/s ${\color{red}326.93/s}$ ${\color{red}-39.5\%}$
oltp_update_non_index 465.13/s ${\color{red}328.95/s}$ ${\color{red}-29.3\%}$
oltp_write_only 1008.61/s ${\color{lightgreen}1583.20/s}$ ${\color{lightgreen}+56.9\%}$
select_random_points 2209.69/s 2267.92/s +2.6%
select_random_ranges 1755.48/s 1825.52/s +3.9%
table_scan_postgres 40.60/s 41.04/s +1.0%
types_delete_insert_postgres 526.93/s ${\color{red}399.35/s}$ ${\color{red}-24.3\%}$
types_table_scan_postgres 17.89/s 19.09/s +6.7%

@itoqa

itoqa Bot commented Aug 3, 2026

Copy link
Copy Markdown

Ito QA test results
Commit: 1e1ceb0: 16 test cases ran, 16 passed ✅.

Summary

Coverage spans database-backed JSON filtering and value extraction, including matching and nonmatching text, nested and missing fields, null handling, scalar paths, and non-text values. It also exercises parameter type inference and round-trip behavior across inserts, reads, updates, conflict updates, mixed values, and neighboring operations, with both normal flows and edge cases behaving correctly.

Safe to merge — the exercised application behaviors are healthy, with no regressions, new failures, or previously flagged failures attributable to this PR. No merge-blocking risk was identified.

Tests run by Ito

View full run

Result Severity Type Description
Operator Comparing the stored name with a different value returned one result row with count 0, so the filter did not report a false match.
Operator The nested profile.name value was read as Alice, and the matching row count was 1 without query or protocol errors.
Operator The filter matched Alice once and returned zero matches for a missing path, JSON null, and SQL NULL.
Operator Shallow, nested, empty, and missing paths returned the expected matches without errors or false matches.
Operator The Alice value matched once. Bob, numbers, booleans, objects, arrays, and NULL values did not match.
Path The parameterized JSONB lookup ran successfully and found the row with name Alice.
Path A missing JSON path correctly returned zero matches when compared with Alice. The query completed successfully without treating the missing value as text.
Path A JSON null value did not match the text value Alice, and the query returned zero matches without an error.
Path The JSON field filter returned one matching row with count 1 and no execution or result-decoding error. The recorded check used the text wire format, so it does not demonstrate the separate binary-format path described in the test plan.
Path The JSONB filter accepted an unspecified parameter and returned the expected count of 1 without an execution error.
Path The filtered JSON record was found and the database returned one row with count 1 through the client connection.
Planner Insert and SELECT queries kept the right parameter types when the client sent an unspecified type. The expected rows were stored and read back without conversion errors.
Planner Updating an existing row and changing a conflicting insert both kept the expected value 42 and the SQL NULL flag.
Planner The insert accepted unspecified, explicitly typed, and NULL values together. The saved numbers, decimal value, and NULL value were all returned as expected.
Planner The database kept mixed parameter values in the correct positions, handled a short type list, and matched the expected JSON value. The cleanup warning did not affect the successful results.
Planner The dependency revision passed JSONB filtering and the neighboring INSERT, UPDATE, conflict-update, mixed-parameter, short-metadata, and NULL-handling checks.

Tip

Reply with @itoqa to send us feedback on this test run.

@zachmu zachmu left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM!

@fulghum
fulghum enabled auto-merge August 3, 2026 22:31
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor
Main PR
Total 42090 42090
Successful 18862 18863
Failures 23228 23227
Partial Successes1 5583 5583
Main PR
Successful 44.8135% 44.8159%
Failures 55.1865% 55.1841%

${\color{lightgreen}Progressions (1)}$

copyselect

QUERY: drop table test3;

Footnotes

  1. These are tests that we're marking as Successful, however they do not match the expected output in some way. This is due to small differences, such as different wording on the error messages, or the column names being incorrect while the data itself is correct.

@fulghum
fulghum merged commit b56f1fb into main Aug 3, 2026
28 checks passed
@fulghum
fulghum deleted the fulghum/doltgres-3012 branch August 3, 2026 22:39
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.

Parameter compared to jsonb #>> text[] is inferred as json; PostgreSQL infers text

2 participants