create_composite_data_table
Create or re-converge a UCompositeDataTable by merging parent DataTables, letting a fork extend upstream rows instead of replacing them; validates parent row structs to prevent editor hangs.
Instructions
Create (or re-converge) a UCompositeDataTable whose row map is the merge of its parent DataTables, so a fork can EXTEND an upstream table instead of replacing it. The parent list is SET, not appended (re-running with a different list rewrites it), the row struct of every parent is validated BEFORE assignment (a mismatch or a cyclic parent chain would make the engine open a modal dialog and hang the editor), and the merge is verified by re-reading the live row map.
Returns: { table_name, package_path, table_path, table_class, row_struct, created, already_existed, requested_parent_tables, missing_parents, parents_applied, saved, save_error, parent_tables, parent_count, contributing_parent_count, merged_row_count, sum_parent_row_counts, expected_merged_row_count, merged_row_count_matches_parents, parent_row_struct_mismatch, shadowed_rows, shadowed_row_count, row_sources_included, row_sources? }
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| row_struct | No | Optional UScriptStruct name for the composite rows. Defaults to the row struct of the first resolved parent (or, on an existing composite, to the one it already has -- which cannot be changed in place). | |
| table_name | Yes | Name of the composite DataTable asset to create or converge. | |
| package_path | No | Target content package path where the asset lives (check the body for the default). | |
| parent_tables | Yes | Array of full asset paths of the parent DataTables, LOW precedence first: a row present in several parents is won by the one with the HIGHEST index. | |
| include_row_sources | No | Optional bool (default false): also return the winning parent for EVERY merged row. Expensive on large tables. |