Tangram has some severe issues with inheritance and relationships, given its goals.
It lacks Multiple Inheritance and doesn't provide an alternative. This sucks.
After several days trying to grok what the hell happens to cause it to generate a query with an aliased table missing (i.e. attempting to select t3.foo without specifying what t3 was).
Finally today I discovered that when I removed a layer of inheritance it suddenly worked. so if class A inherited from Class Super, then you can insert objects of Class A nicely into Class C via a relationship and it won't barf horribly. However if you make Class Super inherit from Class SuperSuper then the insert/fetch/etc calls will barf as Tangram gets itself all confused with no hint as to what the problem could be.
In fact the more I use Tangram, the more I think "given a month I could do a shit load better than this", so much so I reckon we (myself, a web designer who has picked up some perl, and our sysadmin) could replace the PoS pretty quickly if we sat down and coded something that meets our needs without trying to be clever and pure and 'elegant'.
Re:Tangram Takes Over
TeeJay on 2004-05-17T17:33:21
Tangram is just not ready for production use.The documentation is sparse, once you leave the trivial parts and it is hugely limiting.
I wouldn't mind it hiding the complexity and details, if it let me choose to be able to at least see what was problematic and why it crashed.
More error checking wouldn't go amiss either - failing to check that all the table aliases it refers to in a query are in there is a stupid loophole and the sql is generated so far from the query that its impossible to find where the problem occured - there ought to be some sanity checking in the sql generation.
If there is another problem - like 2 or more deep inheritance it should complain rather than silently break.
Bah!
Beware of hubris about Tangram -- it does a lot of tricky perl magic in order to provide almost invisible persistence. It is not easy to build something like that.
Re:look at the laternatives before you build your
TeeJay on 2004-05-17T17:35:20
I'm not after hiding stuff - I am after automating stuff - there is an important difference. When something is automated I can still see what is going on - critical in any system AFAIK.The schema and other bits of database behind tangram aren't anything special.
Re:look at the laternatives before you build your
perrin on 2004-05-17T17:46:38
If you're not after hiding stuff, then Tangram is the wrong tool for you. Hiding stuff is most of the point of Tangram.The schema that Tangram generates is simple, but handling the query language and doing all the TIE and proxying in order to make things like arrays work is quite complex.