Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Jan 13, 2026

Why make this change?

Addresses review feedback on #3051 where dollar-prefixed column names in ForeignKeyDefinition objects within SourceEntityRelationshipMap were not being escaped/unescaped during serialization/deserialization, causing inconsistencies in relationship metadata.

What is this change?

Extended the existing dollar-prefix escaping logic to handle relationship metadata:

  • EscapeDollaredColumns/UnescapeDollaredColumns: Now traverse SourceEntityRelationshipMap → RelationshipMetadata → ForeignKeyDefinition and process ReferencedColumns and ReferencingColumns lists
  • EscapeColumnList/UnescapeColumnList: New helper methods to handle List<string> collections with null safety
  • Write method: Immediately restores original state after serialization (escape → serialize → unescape) to prevent mutation issues with circular references when using ReferenceHandler.Preserve

The escaping pattern remains unchanged: $ColumnNameDAB_ESCAPE$ColumnName during serialization, reversed during deserialization.

How was this tested?

  • Unit Tests

Added TestSourceDefinitionRelationshipMapSerializationDeserialization_WithDollarColumn to verify dollar-prefixed columns in relationship metadata are properly escaped/unescaped. All 12 existing serialization/deserialization tests continue to pass.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 2 commits January 13, 2026 23:16
…ization

Co-authored-by: Alekhya-Polavarapu <67075378+Alekhya-Polavarapu@users.noreply.github.com>
Co-authored-by: Alekhya-Polavarapu <67075378+Alekhya-Polavarapu@users.noreply.github.com>
Copilot AI changed the title [WIP] Fix serialization/deserialization issue with $ prefix columns Handle dollar-prefixed columns in SourceEntityRelationshipMap during serialization Jan 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.

2 participants