Description

The user has come across various issues with using nested blueprint structs within a data table.
The first issue relates to changing a variable in a child struct and setting it back then saving, causing a compilation error.
The second issue is data from the data table being wiped after deleting the inner-most child struct, and then changing the middle struct's variables.
Licensee has provided repro steps to be used with the attached sample project.

Steps to Reproduce

Steps to Reproduce:

1. Open DT_Example: Note that values for the MiddleStruct (housed inside the row ST_Outer) are populated, or populate them with your own values.
2. Create a new struct anywhere (I'm calling it ST_Inner)
3. Open ST_Middle and change one of the variable types to be ST_Inner.
4. Open ST_Inner and add a variable.
5. Save both.
6. Open ST_Outer and note it has no compilation issues.
7. Change the variable of ST_Inner on ST_Middle to something else, then swap it back.
8. Look at ST_Outer and notice it has a compilation issue that can only be resolved by adding/removing a variable.

This is the first issue we've encountered, and we've had this issue with compiling structs come up in other contexts but this was one of the most consistent. A bigger issue stemming from this follows:
Do all of the above, including fixing ST_Outer's compilation by adding/removing a variable (don't remove the ST_Middle variable)

1. Delete the ST_Inner struct (Force delete).
2. Note that this causes ST_Middle to have a "fallback struct" where ST_Inner once was.
3. Add a variable to ST_Middle. This will generate a warning on the fallback struct.
4. Note that ST_Outer has the same warning on its member variable of ST_Middle.
5. Now no matter what, even after fixing the structs, DT_Example will have all data pertaining to ST_Middle, even data unrelated to ST_inner, wiped.

Again, this issue of data table wiping has been happening in a few different contexts, this is just one which is consistent. The issue has always cropped up related to nested blueprint structs.

Simpler steps;

  1. Open DT_Example
  2. Open ST_Middle
  3. Make a new struct - ST_Inner
  4. Add ST_Inner to ST_Middle
  5. Change ST_Inner's variable to String
  6. Note dataloss in DT_Example

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-222101 in the post.

2
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint Compiler
Affects Versions5.45.3
Target Fix5.5
Fix Commit36443159
CreatedAug 19, 2024
ResolvedSep 19, 2024
UpdatedSep 26, 2024
View Jira Issue