@Massimo So I'm not crazy, at least. Perhaps you can just add the Query and Table methods, leaving Set "deprecated" but never removed. Isn't this the current policy anyway? New learners would have a more sensical API while existing users could stick with what they know. Learnability is one of web2py's greatest strengths, and this would mitigate some significant confusion in the DAL, one of web2py's most complicated and conceptually hard to understand features.
@Anthony > Though I believe it joins tables by using the WHERE clause (as opposed to > JOIN, which is used when you pass the "join" or "left" argument to one of > Set's methods). When SQL does that, it itself is doing an implicit JOIN. It's really just a syntax convenience. The JOIN is logically there in the SQL, just unstated. @Alan Etkin Actually, (db.mytable.id == 3) is neither a tuple or a bool. The == operator used on a field returns a Query object.