SQL: Table aliases not supported for SqlQuery

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

SQL: Table aliases not supported for SqlQuery

Andrey Mashenkov
Hi Igniters,

H2Indexing.generateQuery() generates wrong sql query. It is used in
SqlQuery class for queries like this:
     new SqlQuery(Person.class. "from Person p where p.salary > ? and
p.salary <= ?")
This query produce next sql query string:
    "SELECT "".Person._key, ""Person"._val FROM Person p where p.salary > ?
and p.salary <= ?"
We should use table alias instead on table name in "SELECT" query part. It
looks like we can't automatically determine correct alias, as we can have
multiple aliases for one table or even subquery in "FROM" part.

The solution is to provide table alias SqlQuery object to generate correct
query. SqlQuery is ignite public class.

Is it ok, if I add new constructor in SqlQuery class?
Reply | Threaded
Open this post in threaded view
|

Re: SQL: Table aliases not supported for SqlQuery

Sergi
I don't mind to have an alias in SqlQuery, but it is better to add setter
method setAlias instead of having an additional constructor with signature
(String,String,String).

Sergi

2016-11-30 17:55 GMT+03:00 Andrey Mashenkov <[hidden email]>:

> Hi Igniters,
>
> H2Indexing.generateQuery() generates wrong sql query. It is used in
> SqlQuery class for queries like this:
>      new SqlQuery(Person.class. "from Person p where p.salary > ? and
> p.salary <= ?")
> This query produce next sql query string:
>     "SELECT "".Person._key, ""Person"._val FROM Person p where p.salary > ?
> and p.salary <= ?"
> We should use table alias instead on table name in "SELECT" query part. It
> looks like we can't automatically determine correct alias, as we can have
> multiple aliases for one table or even subquery in "FROM" part.
>
> The solution is to provide table alias SqlQuery object to generate correct
> query. SqlQuery is ignite public class.
>
> Is it ok, if I add new constructor in SqlQuery class?
>