In order to be type safe, any SQL expression must be converted into a Scala defined type, Squeryl does this using implicit type conversion that are designed to ensure the following :
In plain english these rule say that conversions are designed to not cause loss of numerical precision,
that floating point absorb (or dominate) as they do in mathematics, and that the existence of an
unknown (None) value in an expression, causes it’s result to become unknown (None)
Here are some examples :
Note how in query q4 the presence of a single Option[] element causes the result to become an Option[],
this is consistent with the SQL92 standard. The & function is explained here .