Comment by 6gvONxR4sf7o
7 years ago
I always wished SQL had a better handle on sum types. If I have a user whose favorite story is an instance of Either[Movie, Book], then it's already a pain to deal with in a nice simple way. And that's as simple as sum types get.
You can do that in EdgeDB:
Can you tell me whether I'm understanding this correctly?
Would this query result in, e.g. [(director: Null, author: J.K Rowling), (director: Spielberg, Null), ...] or would it be [author: J.K. Rowling, director: Spielberg, ...] or just plain strings: [J.K. Rowling, Spielberg, ...]? I still don't totally get the model here.
If fetched as JSON: {"favories": [{"director": null, "author": "J.K Rowling"}, {"director": "Spielberg", "author": null}, ...]}
You can also query the actual object type by referring to the __type__ link:
1 reply →
This struck me just yesterday. You're left with using nulls (which is a sin punishable by poor data quality) or multiple tables for each sum type. Annoying.
Tables should be lightweight. It's the cruft the language and implementation that makes you avoid them.
That is an acute observation and something I might consider dumping SQL for, or rather, I feel SQL could be upgraded to include