Skip to content

Migration conversions #882

Description

@ldhasson

Add a new capability to handle more complex migrations that require some expression for a complex type change that cannot be automatically migrated.

For example, let's take the table column definition:

         ,{ "name":"componentType"  , "type":"SHORT"         , "nullable": false, "description": "Type of agentic component called"
                                    , "values": [ { "name":"Tool" , "value":"1" , "description":"Tool"   }
                                                 ,{ "name":"Agent", "value":"2" , "description":"Agent"  }
                                                ]
          }

We want to change to:

         ,{ "name":"componentType"  , "type":"CHAR"          , "nullable": false, "description": "Type of agentic component called"
                                    , "values": [ { "name":"Tool"   , "value":"T", "description":"Tool"   }
                                                 ,{ "name":"Agent"  , "value":"A", "description":"Agent"  }
                                                 ,{ "name":"Unkbown", "value":"X", "description":"Unknown"  }
                                                ]
          }

This is not a migration that can be automated: not only the type change from SHORT to CHAR could lose data (so Tilda wouldn't do that), but we also have semantic changes in value mapping.

We propose to add a new feature to "migrations" to handle that:

 ,"migrations":{
      "conversions":[
         { "object":"AgenticAccessLog", "column":"componentType"   , "conversion":"case when componentType=1 then 'T' when componentType=2 then 'A' else 'X' end" }
       ]
     ,"renames":[
       ]
   }

Tilda will automatically handle dependencies so that if there is a view that depends on that change, either it will fail with a clear message that the view needs to be updated, or Tilda will manage the DDL Dependency tree appropriately.

Metadata

Metadata

Assignees

No one assigned

    Projects

    Status
    Released

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions