Can you show us the web2py dal expression that caused the invalid
query? Thanks!

On Apr 3, 8:19 am, fuga <[email protected]> wrote:
> web2py generate SQL that PostgreSQL doesn't accept.
>
> For instance,
>
> SELECT DISTINCT a.id, a.uid, a.name FROM a, b WHERE ((((a.deleted <>
> 'T') AND (a.id > 0)) AND (((b.deleted <> 'T') AND (b.id > 0)) AND
> (b.id = 1))) AND (b.uid = a.uid)) ORDER BY b.id, a.id LIMIT 1 OFFSET
> 0;
>
> It fails because select list is not contain "b.id".
>
> I change gluon/dal.py(Version 1.94.5) as follows.
> It is work well.
> But I am not sure that it is a good practice.
>
> === modified file 'gluon/dal.py'   Version 1.94.5
> @@ -1039,2 +1039,6 @@
> --------------------------------------------------------------
> if not orderby and tablenames:
> -    sql_o +=  ['%s.%s'%(t,x) for t in tablenames for x in
> ((hasattr(self.db[t],'_primarykey') and self.db[t]._primarykey) or
> [self.db[t]._id.name])]
> +    orderby_fields = ['%s.%s'%(t,x) for t in tablenames for x in
> ((hasattr(self.db[t],'_primarykey') and self.db[t]._primarykey) or
> [self.db[t]._id.name])]
> +    sql_o += ' ORDER BY %s' % ', '.join(orderby_fields)
> +    for orderby_field in orderby_fields:
> +        if orderby_field not in self._colnames:
> +            sql_f += ', %s' % orderby_field
>
> Your opinion will be much appreciated,
> Cheers,

Reply via email to