ignite-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vladimir Ozerov (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (IGNITE-6190) SQL query fails silently if Set is passed as a parameter
Date Wed, 13 Sep 2017 08:24:00 GMT

     [ https://issues.apache.org/jira/browse/IGNITE-6190?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Vladimir Ozerov updated IGNITE-6190:
------------------------------------
    Component/s: sql

> SQL query fails silently if Set is passed as a parameter
> --------------------------------------------------------
>
>                 Key: IGNITE-6190
>                 URL: https://issues.apache.org/jira/browse/IGNITE-6190
>             Project: Ignite
>          Issue Type: Bug
>          Components: sql
>            Reporter: Denis Magda
>            Assignee: Roman Shtykh
>         Attachments: TestIgniteQuery.zip
>
>
> Seems like the SqlQuery API does not like {{Set<?>}} as the input parameter. While
this query doesn't work (the Set is used as an input):
> {code}
> public Map<String, Account> getAccountsForLe(Set<String> leId) {
>     SqlQuery<String, Account> query =
>             new SqlQuery<String, Account>(Account.class, "from Account join table(id
varchar = ?) i on Account.clientLegalEntityId = i.id")
>                     .setArgs(leId);
>     Map<String, Account> results = new HashMap<>();
>     _cache.query(query).getAll().stream().forEach(e -> results.put(e.getKey(), e.getValue()));
>     return results;
> }
> {code}
> This one works well (the Set is converted to Array explicitly):
> {code}
> public Map<String, Account> getAccountsForLe(Set<String> leId) {
>     SqlQuery<String, Account> query =
>             new SqlQuery<String, Account>(Account.class, "from Account join table(id
varchar = ?) i on Account.clientLegalEntityId = i.id")
>                     .setArgs(leId.toArray());
>     Map<String, Account> results = new HashMap<>();
>     _cache.query(query).getAll().stream().forEach(e -> results.put(e.getKey(), e.getValue()));
>     return results;
> }
> {code}
> The fact that it fails silently is an issue. IMHO there should be some validation to
alert the calling code that the type specified is not valid or the set has to be transformed
to the array on the fly.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message