I think the most recent update to trunk I've found a spot in sql.py where functionality is different though it might be intended.
In the last stable release you could make a call: auth.add_permission(group.id,'name','table_name') You could do this with out first checking for it's existence already. A new entry was created and no errors thrown. Now if you try to do the above call and that same permission is already defined you get: ----------New Error------------ raise SyntaxError, 'Object exists and cannot be redefined: %s' % key SyntaxError: Object exists and cannot be redefined: _last_reference ----------/New Error------------ While it's good that this points out that I wasn't checking for these permissions before, it's bad that you find out by an error which didn't previously exist. I can wrap my add_permission calls in a try: block, or i could check for the permission before adding. But is that something that should just be included in web2py by default? It's how I assumed it worked originally :)