I have pulled the last mercurial version and get this new exception in a query. This behavior is new, older versions of web2py don't return this error:
Note: the app is a wxPython application that queries a PostgreSQL database with web2py and gui2py: http://code.google.com/p/gestionlibre.gui .... File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in options self.options() # File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in options self.options() # File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in options self.options() # File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in options self.options() # File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 469, in options self.options() # File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 463, in options self.build_set() File "/home/alan/web2py/web2py-hg/gluon/validators.py", line 451, in build_set records = self.dbset.select(*fields, **dd) File "/home/alan/web2py/web2py-hg/gluon/dal.py", line 7379, in select return adapter.select(self.query,fields,attributes) File "/home/alan/web2py/web2py-hg/gluon/dal.py", line 1301, in select sql = self._select(query, fields, attributes) File "/home/alan/web2py/web2py-hg/gluon/dal.py", line 1265, in _select sql_t = ', '.join(alias(t) for t in tablenames) File "/home/alan/web2py/web2py-hg/gluon/dal.py", line 1265, in <genexpr> sql_t = ', '.join(alias(t) for t in tablenames) RuntimeError: maximum recursion depth exceeded while calling a Python object Here is a part of the model wich I suppose is relevant # Source Document (transactions records) db.define_table('operation', Field('operation_id', 'id', label = T("id")), Field('code', unique = True, label = T("code")), Field('description', label = T("description")), Field('customer_id', 'reference customer', label = T("customer")), # reference Field('supplier_id', 'reference supplier', label = T("supplier")), # reference Field('detail', type='string', length=60, comment=T('Observations'), label = T("detail")), Field('payment_terms_id', 'reference payment_terms', comment=T('Terms of payment'), label = T("payment terms")), # reference Field('term', type='string', length=50, label = T("term")), Field('amount', type='double', label = T("amount")), Field('balance', type='double', label = T("balance")), Field('posted', type='datetime', default = now, label = T("posted")), Field('issue', type='datetime', label = T("issue")), Field('document_id', 'reference document', comment=T('Points to order / invoice / packingslips'), label = T("document")), # reference Field('branch', label = T("branch")), Field('number', type='integer', default=0, label = T("number")), Field('due_date', type='datetime', label = T("due date")), Field('type', type='string', length=1, requires=IS_IN_SET({'T': 'Stock','S': 'Sales','P': 'Purchases'}), label = T("type")), # reference? types: T: Stock, S: Sales, P: Purchases Field('canceled', type='boolean', default=False, comment=T('False if deferred payment (df), True if paid with cash, ch (check) or current account'), label = T("canceled")), Field('processed', type='boolean', default=False, label = T("processed")), Field('voided', type='boolean', default=False, label = T("voided")), # ¿anulado? Field('fund_id', 'reference fund', label = T("fund")), # reference Field('cost_center_id', 'reference cost_center', label = T("cost center")), # reference Field('module', type='integer', default=0, comment=T('Referenced table'), label = T("module")), # reference? Field('observations', type='string', length=50, label = T("observations")), Field('cancellation', type='boolean', default=False, label = T("cancellation")), Field('avoidance', type='boolean', default=False, label = T("avoidance")), # ¿anulación? Field('file_id', 'reference file', label = T("file")), # ¿legajo? # reference Field('payroll_id', 'reference payroll', label = T("payroll")), # reference Field('user_id', 'reference auth_user', label = T("user")), # reference Field('hour', type='datetime', label = T("hour")), Field('replicated', type='datetime', label = T("replicated")), Field('subcustomer_id', 'reference subcustomer', label = T("subcustomer")), # reference Field('salesperson_id', 'reference salesperson', label = T("salesperson")), # reference Field('printed', type='boolean', default=False, label = T("printed")), Field('jurisdiction_id', 'reference jurisdiction', label = T("jurisdiction")), # reference Field('replica', type='boolean', default=False, label = T("replica")), format=operation_format, sequence_name = "operation_operation_id_Seq", migrate=migrate, fake_migrate=fake_migrate) Is it possible that a change in the framework code can be producing the error in the app query?

