Hi @sudsy, I do want to confirm that your use-case is not affected by this, as that already exhibits the ‘expected’ behavior of fetching the updated thing, and being empty if nothing was updated.
@andrey_li, I can provide an example of how this is a predictability improvement, in the sense that it clarifies the edge case of a step where you updated a thing, but that step did not find anything to update and therefore its ‘result’ was empty.
To be completely clear, you can totally keep on using the results of this step as a way to access the updated item - like you’re saying quite well, that’s still definitely the preferred way to access Things on subsequent steps of a workflow.
Maybe my semantics were unclear actually:
- If you make changes to a Thing that exists, but change no field, results of that step always have and still contain that Thing.
- If you make changes to nothing (a Thing that does not exist) and change one or more fields, the results of that step used to be “mostly nothing” but with ghost updated fields, and will now be “definitely nothing”.
As for the ‘ghost’ behavior I alluded to, that is the following:
setup (using the setup from my example):
- You have a Thing table with no entries at all, and Thing has a Field A of type text.
- You have a ‘Make changes to a thing’ action, that does a search for the first item in the empty Thing table (or any search that does not return a thing)
- This search sets Field A to ‘hey’
In following steps, let’s look at some expressions for Result of Step 1:
Result of Step 1 is empty -> yes
Result of Step 1’s unique id -> (empty)
Result of Step 1’s unique id is empty -> yes
Result of Step 1’s Created Date -> (empty)
… this would also be the case for fields not mentioned in the previous case (everything would be empty)
now before version 9,
Result of Step 1’s Field A -> ‘Hey’
Result of Step 1’s Field A is empty -> no
After version 9,
Result of Step 1’s Field A -> (empty)
Result of Step 1’s Field A is empty -> yes
This is a lot more consistent with what actually was changed, because in essence we don’t want to have any partial Thing exist in limbo during your workflow run like this: the resulting Thing would essentially be something without a unique id, no fields whatsoever, except for a few fields that would have inherited the values from previous steps, which is why I refer to it as a ghost thing. It would also not match anything in the database, so it is safer to make sure that it does not contain any fields.
I hope this clarifies the updated behavior for everyone!
Cheers,