Customer created a custom DataTable with a TSet Property and saw the behavior of allowing duplicate elements within the TSet, which is not allowed. See TSet Documentation for more information.
This is a general problem with sets/maps of Structs, the FPropertyValueImpl::ImportText function does not correctly handle the case of modifying something inside a struct inside a map, the Set code needs to traverse up the property chain further
Repro Ratio: 3/3
Tested in //UE4/Release-4.27 @ CL#18319896 and the issue did occur there, it is not a regression.
This same issue occurs
SIMPLER REPRO
ORIGINAL REPRO
#include "GameplayTagContainer.h" #include "Engine/DataTable.h"
USTRUCT(BlueprintType)
struct FTestStruct_Inner
{
GENERATED_BODY()
UPROPERTY(EditAnywhere)
FGameplayTag myTag;
bool operator==(const FTestStruct_Inner& ftsi){};
bool operator!=(const FTestStruct_Inner& ftsi) {};
friend uint32 GetTypeHash(const FTestStruct_Inner& hash) { return 0; };
};
USTRUCT(BlueprintType)
struct FTestSTruct_Row : public FTableRowBase
{
GENERATED_BODY()
UPROPERTY(EditAnywhere)
TSet<FTestStruct_Inner> mySet;
};
Blueprint Steps
Expected Result: With the TSet property the DataTable should not allow duplicate entries.
Actual Results: Duplicate entries are allowed and no indication within the Editor Console that this is an issue. However, when looking over logs you will see the following error:
Error: UDataTable::GetAllRows : Incorrect type specified for DataTable '/Game/PickUps.PickUps' (UGameplayTagsManager::PopulateTreeFromDataTable)
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-148872 in the post.
| 2 |
| Component | UE - Editor - Workflow Systems |
|---|---|
| Affects Versions | 5.0, 5.1 |
| Created | Apr 12, 2022 |
|---|---|
| Updated | Oct 28, 2025 |