Repository navigation
Conversation
Test case column validation, tag inheritance and the CSV FQN round-trip all resolved the entityLink's column against top-level Table.columns only, so nested paths like <#E::table::...::columns::address.city> were rejected at creation and silently lost tags. Resolve the column by walking Column.children with a quoted-aware dotted path (case-exact first, case-insensitive fallback; a dotted literal column name arriving unquoted still resolves). Route validateColumnTestCase, dimensionColumns and both tag-resolution sites through it, and serialize the full remaining FQN path on CSV export instead of truncating to the first column segment. Executing against the nested column remains per-dialect and is scoped to PRs 2/2b (ingestion). ADR:2026-10-27-nested-column-dq-tests-address-nested-paths Fixes open-metadata#36381
✅ PR checks passedThe linked issue has a description and all required Shipping project fields set. Thanks! |
- [high] Nested types bypass the check (G-899c8c22f5) - [medium] Nested-column test cases bypass the supported-data-type conformance check (F-1157ac5f81) - [medium] resolveColumnByPath throws ParseCancellationException (HTTP 500) for legal column names that are not valid FQN paths (F-fcd10649ba) - [medium] In TestCaseDefinitionConformance, resolve the column with the same nested-aware walk: (G-6763b25abc) - [medium] Server errors pass this test (G-912bd95bae) - [medium] Case variants never compete (G-dd0482246d) Automated by pr-supervisor using glm-5.3-flash:cloud via ollama; reviewed by gpt-6.1-sol.
- [high] Nested tests are accepted but the ingestion runner raises StopIteration (F-0c43f7ed4f) - [medium] CSV export fallback serializes a nested path as one quoted segment (F-4ae4313b5f) - [medium] Package paths break Java style (G-d2d7790587) Automated by pr-supervisor using glm-5.3-flash:cloud via ollama; reviewed by gpt-6.1-sol.
- [high] Nested-column test cases bypass PII masking (F-4817a6607f) - [high] Missing-column test crashes (G-0f7298a958) - [medium] New missing-column unit test crashes on a null fullyQualifiedName (F-19a6678346) - [medium] Nested dimensionColumns are accepted but can never be evaluated by the ingestion runner (F-4902d80c56) Automated by pr-supervisor using glm-5.3-flash:cloud via ollama; reviewed by gpt-6.1-sol.
- [medium] Fail-closed column-profile masking can be skipped with a non-normalized column FQN (F-ce67264fb2) Automated by pr-supervisor using glm-5.3-flash:cloud via ollama; reviewed by gpt-6.1-sol.
- [high] New masking test fails (G-fd489e8a8d) - [medium] Unauthorized for the first two calls, and query the PII column's own quoted FQN: (G-2843829498) Automated by pr-supervisor using glm-5.3-flash:cloud via ollama; reviewed by gpt-6.1-sol.
|
The tested worktree changes are now committed as Local Java test run: PASSED — details
Tests run locally
Per-class counts come from the test reports, which can credit a test to the wrong class when classes run concurrently, and keep only the last run of a nested class that several test classes inherit. The summary's step totals are Maven's own counts. Why these tests
Commandsmvn -B verify -pl :openmetadata-integration-tests -am -Dspring-boot.repackage.skip=true -Pmysql-elasticsearch -DintegrationTests.lane=parallel -Dit.test=TestCaseResourceIT -Dfailsafe.failIfNoSpecifiedTests=false -Dtest=NoUnitTestsInThisRun -Dsurefire.failIfNoSpecifiedTests=falseFocused verification also passed: |
Code Review ✅ Approved 4 closed / 4 findings🔴 High risk · Expanding PII masking to nested profiles and test cases changes sensitive-data access decisions; a path-resolution error could expose tagged data or hide permitted data. Adds nested-column support for DQ test cases, so entityLinks like ✅ 4 closed✅ Bug: Data-type conformance check is silently skipped for nested columns
✅ Quality: Top-level dimensionColumns contradicts the PR's own Accepted ADR
✅ Security: Ancestor PII tag masks the column but not its nested children
✅ Bug: New test's PII-masking assertion cannot pass: wrong FQN and stub order
VerificationRules No rules evaluated Functional validation Not enabledAuto-approval Not enabledFor more verification details, comment OptionsDisplay: compact → Showing compact verification results. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source |
|



Description
Fixes #36381 Backend slice of #36278: the API rejected column-level test cases on nested columns (
<#E::table::…::columns::address.city>) withInvalid column name, because every test-case resolution site matched the entityLink's array field against top-levelTable.columnsonly — while the storage format itself (nestedColumn.fullyQualifiedNamedotted paths,FullyQualifiedName.getTableFQN, the UI'sFqnPart.NestedColumnlink writer) is already nested-aware.What changed
ColumnUtil.resolveColumnByPath/validateColumnPath(new): resolve a dotted path by walkingColumn.children. FQN-split so a column literally nameda.barriving as"a.b"stays one segment; case-exact match first, case-insensitive fallback; a dotted literal column name arriving unquoted (legacy links) still resolves as a whole name when the segment walk fails;allkeeps its meaning.TestCaseRepository.validateColumnTestCaseandvalidateDimensionColumnsroute through the new validation, so nested links attach via the API and a truly missing nested path still returns 400.fetchAndSetTestSuiteTagsbulk site +inheritTags) resolves nested columns, so tags on nested sub-columns now surface on their test cases.convertFQNToEntityLink): exports the full quoted remaining FQN path (address.city, per-segmentquoteName) instead of truncating nested FQNs to their first column segment.ADR:2026-10-27-nested-column-dq-tests-address-nested-paths— segment-walk representation + per-dialect executability boundary.Scope
Executing a test against a nested column is per-dialect and lands separately: ingestion (#36382: BigQuery/Databricks/Unity Catalog/Athena), Snowflake (#36383, needs structured-type ingestion first), UI picker (#36384).
How Has This Been Tested?
ColumnUtilTest(11 tests): nested walk, multi-level nesting, case-insensitive + exact-case preference, quoted/unquoted dotted-name disambiguation, missing segments,all, and the 400 message. All green locally.TestCaseRepositoryTest,TestSuiteRepositoryTest,ColumnRepositoryValidationTest— all green locally.TestCaseResourceITpassed locally on MySQL + Elasticsearch: 360 passed, 16 skipped, no failures. The nested-column test now verifies tag inheritance through GET/list and programmatic result submission, history, and latest-result retrieval. The focused method also passed independently.mvn spotless:applyclean;.github/java-tests/impact-map.jsoncheck passes.Checklist
🤖 Generated with Claude Code
Summary by Gitar
This will update automatically on new commits.


Confidence Score: 5/5
The PR appears safe to merge; the previously reported test failure is fixed.Summary
The PR lets the API attach test cases to nested columns.
Diagram
%%{init: {'theme': 'neutral'}}%% flowchart LR A[Column test case link] --> B[Resolve quoted column path] B --> C[Walk column children] C --> D[Validate column and supported type] C --> E[Read column tags] E --> F[Mask sensitive profiles and test cases] D --> G[Save test case]Reviews (12) · Last reviewed commit: "fix: address automated review findings (..." · Reviewed by Greptile
Follow-up integration verification
The tested worktree changes are now committed as
71da0c1370b01864502e615a2c08769a0766ffaf(no source changes after the run began). The planner captured the previous HEAD while the commit hooks were finishing, hence the generated report's uncommitted-changes notation. This run covers the follow-up test-only delta frome4e0fa01ce7e, not all production changes in the PR.Local Java test run: PASSED
e4e0fa01ce7e(basee4e0fa01ce7e754d5a3b53b5a1fc6dd67378d85f) — uncommitted changes were presentFull local test details
Self-review:
71da0c1370b01864502e615a2c08769a0766ffaf, follow-up test-only delta reviewed againstREVIEW.md; no substantive findings. Spotless and commit/push hooks passed.