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

Thibaud Faurie resolved IGNITE-14906.
-------------------------------------
    Release Note: Missclick : Duplicate of IGNITE-14905
      Resolution: Duplicate

> SQL GROUP BY Column not found issue
> -----------------------------------
>
>                 Key: IGNITE-14906
>                 URL: https://issues.apache.org/jira/browse/IGNITE-14906
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache, sql, thin client
>    Affects Versions: 2.10
>         Environment: Ignite server nodes on linux docker containers.
> Application executed in linux docker container.
> Windows 10 pro : DBeaver, VSCode
> My application language : Scala with Apache Ignite Java official library
>            Reporter: Thibaud Faurie
>            Priority: Major
>
> I have a query that I want to execute through SQL API.
> I have no issue when I run my Query with DBeaver (via Ignite thin client).
> But as soon as I use it in my code with SQL API, it throws an error saying 
> that column permission_id is not found.
> More stranger thing, if I pause execution of my code (which generates an 
> instance of client node in my cluster) at the SqlFieldsQuery execution step, 
> the same error can be thrown by DBeaver sometimes (not 100% accurate)
> However, I figured out this error only occurs when I use the GROUP BY clause 
> and some aggregation functions such as GROUP_CONCAT. As soon as I remove 
> those, it works like a charm. I suspect some bug with H2 and distributed 
> caches.
> Here is my SQL query :
> SELECT app_id, app_label, app_version, app_universal_id, app_status, 
> app_manifest_url, app_store_url, app_created_at, app_updated_at,
> CONCAT_WS('||', permission_id, GROUP_CONCAT(content SEPARATOR ';'), code, 
> language_id, label, GROUP_CONCAT(text_id SEPARATOR ';')) AS info_data, 
> 'PERMISSION_LANG_VARIANT' AS type_data
> FROM (
>     SELECT APP.id AS app_id, APP.label AS app_label, PERMISSION.id AS 
> permission_id, TEXT.content, LANG.code, TEXT.language_id, LANG.label, TEXT.id 
> AS text_id, APP.version AS app_version, APP.app_universal_id AS 
> app_universal_id, APP.status AS app_status, APP.manifest_url AS 
> app_manifest_url, APP.store_url AS app_store_url, APP.created_at AS 
> app_created_at, APP.updated_at AS app_updated_at
>     FROM FUSION.APPLICATION AS APP
>     INNER JOIN FUSION.PERMISSION AS PERMISSION ON APP.id = 
> PERMISSION.application_id
>     INNER JOIN FUSION.TEXT AS TEXT ON TEXT.id = PERMISSION.label_text_id
>     INNER JOIN FUSION.LANGUAGE AS LANG ON TEXT.language_id = LANG.id
>     UNION ALL
>     SELECT APP.id AS app_id, APP.label AS app_label, PERMISSION.id AS 
> permission_id, TEXT.content, LANG.code, TEXT.language_id, LANG.label, TEXT.id 
> AS text_id, APP.version AS app_version, APP.app_universal_id AS 
> app_universal_id, APP.status AS app_status, APP.manifest_url AS 
> app_manifest_url, APP.store_url AS app_store_url, APP.created_at AS 
> app_created_at, APP.updated_at AS app_updated_at
>     FROM FUSION.APPLICATION AS APP
>     INNER JOIN FUSION.PERMISSION AS PERMISSION ON APP.id = 
> PERMISSION.application_id
>     INNER JOIN FUSION.TEXT AS TEXT ON TEXT.id = PERMISSION.description_text_id
>     INNER JOIN FUSION.LANGUAGE AS LANG ON TEXT.language_id = LANG.id
> )
> GROUP BY permission_id, language_id
> Here is the code I use to execute:
> var igniteQuery = new SqlFieldsQuery(queryString)
> var query = igniteCache.query(igniteQuery)
> query.getAll()



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to