I see the problem now, thanks for pointing it out. I'll post a fix later today.
Paolo 2015-06-08 22:11 GMT+02:00 Donatas Burba <[email protected]>: > This is failing example: > > db=DAL('sqlite:memory') > > db.define_table('tt', > Field('vv', 'integer'), > Field.Virtual('x', lambda row: row.tt.vv * 10)) > > db.define_table('tt2', > Field('ttref', 'reference tt'), > Field('vv2', 'integer')) > > tt1 = db.tt.insert(vv='1') > tt2 = db.tt.insert(vv='3') > db.tt2.insert(ttref=tt1, vv2='3') > db.tt2.insert(ttref=tt2, vv2='4') > > records = db(db.tt).select( > db.tt.ALL, db.tt2.ALL, > join=[db.tt2.on(db.tt2.ttref == db.tt.id)] > ) > for r in records: > print r > > Result: > > <Row {'tt2': {'ttref': 1L, 'id': 1L, 'vv2': 3L}, 'tt': {'id': 1L, 'vv': > 1L}}> > <Row {'tt2': {'ttref': 2L, 'id': 2L, 'vv2': 4L}, 'tt': {'id': 2L, 'vv': > 3L}}> > > As you can see virtual field 'x' (in table 'tt') is missing. As I > understand this occurs when selecting records from more than one table. In > my case (with PostgreSQL) every time I use db(...).select(db.table.ALL, > TOTAL_ROWS, ...) where TOTAL_ROWS = 'COUNT(*) OVER()'. > > -- > Resources: > - http://web2py.com > - http://web2py.com/book (Documentation) > - http://github.com/web2py/web2py (Source code) > - https://code.google.com/p/web2py/issues/list (Report Issues) > --- > You received this message because you are subscribed to a topic in the > Google Groups "web2py-users" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/web2py/l8V3nAzE4Hs/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

