Return changeset with constraint error from nested transaction

Welcome to the forum. :tada:

Few things come to mind:

  • Do you have actual DB CHECK CONSTRAINTs? They might be getting in the way.
  • Does the StayPolicyPeriod code touch a changeset where maybe the constraint itself is not mentioned and is only in the DB? You seem to imply that’s not the case, I would double check though (and I don’t have your context, hence the broad suggestion).
  • This might take you a bit of time but I would attempt to make a second variant of the code that utilizes Ecto.Multi and see if the error manifests the same way there.
  • I tried searching for {:error, :rollback}, even as a global GitHub search. Not many helpful leads but DBConnection’s docs have this to say about that return value:

All transaction/3 calls will return {:error, :rollback} if the transaction failed or connection closed and rollback/2 is not called for that transaction/3.

…which, does not help much, does it.

Interesting problem. Hope you keep us posted.