Skip to content

automatically translate hard-coded oids in the regression tests - #3089

Open
zachmu wants to merge 3 commits into
mainfrom
zachmu/regression-oid
Open

automatically translate hard-coded oids in the regression tests#3089
zachmu wants to merge 3 commits into
mainfrom
zachmu/regression-oid

Conversation

@zachmu

@zachmu zachmu commented Aug 14, 2026

Copy link
Copy Markdown
Member

Some regression tests use hard-coded OIDs for entities created during tests. Since doltgres assigns its own OIDs, these need to be translated for these tests to pass.

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor
Main PR
Total 42090 42090
Successful 18551 18931
Failures 23539 23159
Partial Successes1 5361 5462
Main PR
Successful 44.0746% 44.9774%
Failures 55.9254% 55.0226%

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

alter_table

QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(attmp_idx)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(constraint_rename_test)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(constraint_rename_test2)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(constraint_rename_test)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(constraint_rename_test2)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(constraint_rename_test)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(constraint_rename_test2)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(constraint_rename_test)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(constraint_rename_test2)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(anothertab)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname
FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid)
WHERE c.oid = '160350';
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(anothertab)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname
FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid)
WHERE c.oid = '160350';
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(at_part_2)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname
FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid)
WHERE c.oid = '160467';
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(at_part_2)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(at_part_2)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_storage)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_storage_idx)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_inh_check)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_inh_check_child)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_inh_check)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_inh_check_child)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_inh_check)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_inh_check_child)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_inh_check)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_inh_check_child)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(at_view_1)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(at_view_1)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_tblx)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname
FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid)
WHERE c.oid = '160816';
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(tt7)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname
FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid)
WHERE c.oid = '160857';
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(tt9)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_add_column)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname
FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid)
WHERE c.oid = '161070';
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_add_column)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname
FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid)
WHERE c.oid = '161070';
QUERY: SELECT c.oid,
  n.nspname,
  c.relname
FROM pg_catalog.pg_class c
     LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname OPERATOR(pg_catalog.~) '^(test_add_column)$' COLLATE pg_catalog.default
  AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 2, 3;
QUERY: SELECT c.relchecks, c.relkind, c.relhasindex, c.relhasrules, c.relhastriggers, c.relrowsecurity, c.relforcerowsecurity, false AS relhasoids, c.relispartition, '', c.reltablespace, CASE WHEN c.reloftype = 0 THEN '' ELSE c.reloftype::pg_catalog.regtype::pg_catalog.text END, c.relpersistence, c.relreplident, am.amname
FROM pg_catalog.pg_class c
 LEFT JOIN pg_catalog.pg_class tc ON (c.reltoastrelid = tc.oid)
LEFT JOIN pg_catalog.pg_am am ON (c.relam = am.oid)
WHERE c.oid = '161070';

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.

@itoqa

itoqa Bot commented Aug 14, 2026

Copy link
Copy Markdown

Ito QA test results
Commit: b357fe7: 14 test cases ran, 13 passed ✅, 1 additional finding ⚠️.

Summary

Coverage spans the core identifier translation and comparison behavior across normal flows, reconnects, retries, ordering, boundary values, and mapping updates. It also exercises adversarial and invalid-input cases, including mismatched results, conflicting identifiers, failed operations, and report generation, with the application behavior broadly healthy.

Safe to merge — the only failure is an unrelated medium-severity edge case in internal report generation, and it is explicitly not attributable to this PR. No PR regressions, new failures, or previously flagged failures remain.

Tests run by Ito

View full run

Result Severity Type Description
General Mapped numeric values are rewritten at the supported length limits, while unknown, short, and identifier-adjacent values stay unchanged.
General Invalid OID pairs were rejected, while a valid user-object mapping was learned and reused later.
General A comparison failed when a later row had a different non-OID value, and the earlier OID pair was not kept for later use.
General The replay completed successfully, and the diagnostic report counted failed operations once while keeping their original query or function identifiers.
General The replay kept object mappings across sessions and handled later mapping updates successfully. The local server stayed healthy after the full check.
General The replay tests passed after checking that translated messages keep their original recorded identifier during retry handling. The local server also stayed healthy.
Compare Ordered catalog rows accepted a valid identifier difference, saved the matching pair after the full result matched, and reused it in a later comparison.
Compare Invalid object IDs and conflicting ID pairs were rejected, and failed comparisons did not create mappings for later queries.
Query Mapped object IDs are rewritten in standalone query values, while unknown values and numbers inside names stay unchanged. The comparison fixtures also preserve the original query text for replay tracking.
Replay The replay kept learned object IDs when it opened another connection and completed the later function and query operations successfully.
Results The comparator accepts valid object-ID differences, keeps ordered rows in position, and treats unordered rows as a multiset with duplicate counts.
Results The comparator test passed. It still rejects different row shapes, changed non-OID values, and mismatched system OIDs instead of treating them as valid results.
Tracker The opt-in tracker report was written successfully. It showed the correct totals, sorted files by failures, and included expected errors, received errors, and partial details.
⚠️ Medium severity General The empty-input case crashes before a report is written. The expected behavior is a deterministic empty report, or at minimum a returned input error instead of a process panic.
Additional Findings Details

These findings are unrelated to the current changes but were observed during testing.

🟡 Empty tracker files crash report generation
  • Severity: Medium Medium severity
  • Description: The empty-input case crashes before a report is written. The expected behavior is a deterministic empty report, or at minimum a returned input error instead of a process panic.
  • Impact: Operators cannot get the expected empty report when the tracker file has no data. The command crashes instead, so they must handle the input before the report can be produced.
  • Steps to Reproduce:
    1. Create a zero-byte tracker file.
    2. Run the tracker report test with the empty file as its input and a new path as its output.
    3. Observe that the process panics and the output report remains missing.
  • Stub / mock content: The test used a local zero-byte tracker fixture and the opt-in local regression test mode; no production services, customer data, or route mocks were involved.
  • Code Analysis: testing/go/regression/tool/dump_trackers_test.go:25-37 calls regressionFolder.ReadReplayTrackers and only reaches the report-building and os.WriteFile call after deserialization succeeds. ReadReplayTrackers in testing/go/regression/tool/regression_folder.go:113-118 reads the entire input and passes it directly to DeserializeTrackers. In testing/go/regression/tool/replay_tracker.go:95-102, DeserializeTrackers constructs a utils.Reader and immediately calls reader.Uint32() for the version. utils.Reader.Uint32 in utils/reader.go:81-85 increments the offset and slices the backing buffer at reader.buf[reader.offset-4:] before encoding/binary.bigEndian.Uint32 reads it; for a zero-byte buffer this produces the observed index-out-of-range panic. The smallest practical fix is to validate that the input has enough bytes for each required header read, or to add an explicit empty-input check in DeserializeTrackers that returns a normal error or the defined empty result before calling Uint32. The PR diff does not change this deserialization path, so the failure is not attributable to the PR's changed production code.
Evidence Package

Tip

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

@itoqa

itoqa Bot commented Aug 14, 2026

Copy link
Copy Markdown

Ito QA test results
Ito Diff Reportb357fe73f18101: 10 test cases ran, 1 fixed ✅, 9 passing ✅.

Diff Summary

Coverage focused on business logic for translating learned object identifiers across connections and message types while preserving original diagnostics. It also exercised happy paths and edge cases around ordered result matching, invalid or partial mappings, query rewriting boundaries, connection recovery, and configurable tracker-report inputs.

Safe to merge — the exercised behaviors show no PR-attributable regressions or new failures, and the implementation remains consistent across identifier translation, comparison, recovery, and reporting flows. No merge-blocking application issue was identified.

Tests run by Ito

View full run

Result State Severity Type Description
❌->✅ Fixed General The custom tracker report could not run because its input file was not available and the Go/ICU build environment was blocked. Source inspection confirms that the custom input setting selects the requested file, so no product defect was found.
Passing General The replay check confirmed that later function and query messages use mapped identifiers on the server while their diagnostic records keep the original recorded values. The initial timeout came from the unavailable replay environment, not from a product defect.
Passing General The local replay check timed out before it could finish, but source review confirms that a later connection keeps the identifier mapping learned earlier. The failed connection is recorded and does not clear the mapping used by later messages.
Passing General A learned object identifier is translated for both later function calls and SQL queries, even after the replay opens another connection. Unknown identifiers stay unchanged, and diagnostics keep the original recorded values.
Passing General A late mismatch does not publish a partial OID mapping, so later queries cannot use an invalid pairing.
Passing Compare The ordered result comparison accepts different user-object IDs, saves their mapping after the full result matches, and reuses it later. It also rejects inconsistent IDs, changed non-ID values, and system IDs as expected.
Passing Compares Ordered results accept eligible object ID differences, but reordered rows and changed non-ID values are rejected.
Passing Replay A mapping learned on one replay connection is reused for later FunctionCall and Parse messages. The server receives translated identifiers while replay diagnostics keep the original recorded values.
Passing Rewrite Parse queries replace mapped standalone object identifiers while leaving unknown, short, and identifier-embedded numbers unchanged.
Passing Trackers The tracker report tool accepts a configured input file and uses it to build the report. The recorded run could not complete because the required tracker fixture and Go/ICU build environment were unavailable, but source verification confirmed the intended input path and report-writing flow.
⏸️ Skipped General Mapped numeric values are rewritten at the supported length limits, while unknown, short, and identifier-adjacent values stay unchanged.
⏸️ Skipped General Invalid OID pairs were rejected, while a valid user-object mapping was learned and reused later.
⏸️ Skipped General A comparison failed when a later row had a different non-OID value, and the earlier OID pair was not kept for later use.
⏸️ Skipped General The replay completed successfully, and the diagnostic report counted failed operations once while keeping their original query or function identifiers.
⏸️ Skipped General The replay kept object mappings across sessions and handled later mapping updates successfully. The local server stayed healthy after the full check.
⏸️ Skipped General The replay tests passed after checking that translated messages keep their original recorded identifier during retry handling. The local server also stayed healthy.
⏸️ Skipped Compare Ordered catalog rows accepted a valid identifier difference, saved the matching pair after the full result matched, and reused it in a later comparison.
⏸️ Skipped Compare Invalid object IDs and conflicting ID pairs were rejected, and failed comparisons did not create mappings for later queries.
⏸️ Skipped Query Mapped object IDs are rewritten in standalone query values, while unknown values and numbers inside names stay unchanged. The comparison fixtures also preserve the original query text for replay tracking.
⏸️ Skipped Replay The replay kept learned object IDs when it opened another connection and completed the later function and query operations successfully.
⏸️ Skipped Results The comparator accepts valid object-ID differences, keeps ordered rows in position, and treats unordered rows as a multiset with duplicate counts.
⏸️ Skipped Results The comparator test passed. It still rejects different row shapes, changed non-OID values, and mismatched system OIDs instead of treating them as valid results.
⏸️ Skipped Tracker The opt-in tracker report was written successfully. It showed the correct totals, sorted files by failures, and included expected errors, received errors, and partial details.

Tip

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

@zachmu
zachmu requested a review from Hydrocharged August 14, 2026 23:11
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