You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Leng Sheng Hong (Jira)" <ji...@apache.org> on 2020/04/04 10:23:00 UTC

[jira] [Created] (IGNITE-12862) Subquery Limit

Leng Sheng Hong created IGNITE-12862:
----------------------------------------

             Summary: Subquery Limit
                 Key: IGNITE-12862
                 URL: https://issues.apache.org/jira/browse/IGNITE-12862
             Project: Ignite
          Issue Type: Bug
          Components: sql
    Affects Versions: 2.8
         Environment: Mac OS 10.15.1

Run on a single node and also tried a cluster of 3 server nodes

SQL is being executed with JDBC thin client and also DBeaver with distributedJoins=true
            Reporter: Leng Sheng Hong


I am trying to test a query involving SQL distributed joins with subquery. However it seems to have some bugs when I have Limit clause in the subquery. (user <-> role has a many to many relationship)

Without LIMIT clause it works:
{code:java}
SELECT 
	"user".id, "user".name,
	"role".id as "role_id", "role".role_name as "role_name", 
	"address".id as "address_id", "address".street1 as "address_street1", 
	"address".street2 as "address_street2"
FROM (SELECT * FROM "user" ORDER BY "user".id ASC) AS "user"
LEFT JOIN "address" on "address".user_id = "user".id
LEFT JOIN "user_has_role" on  "user_has_role".user_id = "user".id
LEFT JOIN "role" on "role".id = "user_has_role".role_id
ORDER BY "user".id ASC
{code}
However With Limit clause:
{code:java}
SELECT 
	"user".id, "user".name,
	"role".id as "role_id", "role".role_name as "role_name", 
	"address".id as "address_id", "address".street1 as "address_street1", 
	"address".street2 as "address_street2"
FROM (SELECT * FROM "user" ORDER BY "user".id ASC LIMIT 10) AS "user"
LEFT JOIN "address" on "address".user_id = "user".id
LEFT JOIN "user_has_role" on  "user_has_role".user_id = "user".id
LEFT JOIN "role" on "role".id = "user_has_role".role_id
ORDER BY "user".id ASC
{code}
The server will return an error:
{code:java}
SQL Error [1001] [42000]: Failed to parse query. Column "user__Z1.ID" not found; SQL statement:
SELECT
"__Z2"."USER_ID" "__C1_0",
"__Z2"."ID" "__C1_1",
"__Z4"."ROLE_NAME" "__C1_2",
"__Z4"."ID" "__C1_3",
"__Z2"."STREET2" "__C1_4",
"__Z2"."STREET1" "__C1_5"
FROM "PUBLIC"."address" "__Z2" 
 LEFT OUTER JOIN "PUBLIC"."user_has_role" "__Z3" 
 ON "__Z3"."USER_ID" = "user__Z1"."ID" 
 LEFT OUTER JOIN "PUBLIC"."role" "__Z4" 
 ON "__Z4"."ID" = "__Z3"."ROLE_ID"
ORDER BY 1 [42122-199]
{code}
The tables are created with partitioned template with backups of 2, except for the role table which is created with template=replicated

 



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