My only concern about the variable is adding addition checks to performance. We have significant overhead going on during slot access already. One thought would be to make this a compilation option for high safety settings. I've recorded a Trac ticket for this issue.
Ian On Oct 2, 2009, at 3:21 PM, Alain Picard wrote: > "Leslie P. Polzer" > <s...@viridian-project.de> writes: > >> Would you propose that Elephant check the type as well >> when serializing slots? > > I'm a bit of two minds about it. I might be jaundiced in my > view because the systems I've used before was an O-R mapping > system, and there it made sense to assert in lisp---if you > didn't you eventually failed to store you data because of > a mismatch between the lisp type and the SQL column type. > > Hyperspec 7.5.3 states: >> * The contents of a slot will always be of type (and T1 ... Tn) where >> T1 ...Tn are the values of the :type slot options contained in all of >> the slot specifiers. If no slot specifier contains the :type slot >> option, the contents of the slot will always be of type t. The >> consequences of attempting to store in a slot a value that does not >> satisfy the type of the slot are undefined. > > So, the current "undefined" behaviour of Elephant is to "do the right > thing". Another valid undefined behaviour might be to assert. > > I think I hadn't analyzed this through before reporting the "bug". > Now that I realize it's a lisp semantics issue (rather than a > DB type safety issue) I'm inclined to think maybe the way to handle > it is as SBCL does (which I didn't know about - thanks for the tip!) > and let the user choose the correct behaviour. So we could have > a flag *ELEPHANT-ENFORCE-SLOT-TYPE-SAFETY-P* (defaulting to nil) > to catch such violations and turn them into asserts, on both > serialization and deserialization. > > This is, obviously, a very low priority matter, and truthfully, I'm > not sure I'd use it, at least not until my application was fully > debugged. Also, I think it would make migration issues when classes > are redefined even hairier than they currently are. > > So, no --- I'm not proposing it. :-) > > --Alain > > > > _______________________________________________ > elephant-devel site list > elephant-devel@common-lisp.net > http://common-lisp.net/mailman/listinfo/elephant-devel _______________________________________________ elephant-devel site list elephant-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/elephant-devel