You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@drill.apache.org by "Taras Supyk (JIRA)" <ji...@apache.org> on 2016/02/23 16:01:18 UTC

[jira] [Comment Edited] (DRILL-4374) Drill rewrites Postgres query with ambiguous column references

    [ https://issues.apache.org/jira/browse/DRILL-4374?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15158949#comment-15158949 ] 

Taras Supyk edited comment on DRILL-4374 at 2/23/16 3:00 PM:
-------------------------------------------------------------

I've tried different jdbc drive and reproduced this bug. So now I have these versions:

drill 1.4
postgresql 9.3.11
jdbc-driver postgresql-9.4-1205.jdbc41.jar 

And this query:

create sequence user_ids;
create sequence group_ids;
create sequence book_ids;

create table users (id integer primary key default nextval('user_ids'), login char(64), password char(64), group_id integer, book_id integer);
create table groups (id integer primary key default nextval('group_ids'), name char(64));
create table books (id integer primary key default nextval('book_ids'), name char(64));

select u.id from psql.drill.users u 
join psql.drill.groups g on g.id = u.group_id
join psql.drill.books b on b.id = u.book_id
group by g.id, u.id;

And all this returns me DATA_READ ERROR: The JDBC storage plugin failed while trying setup the SQL query.

And this query:

select u.id from public.users u 
join public.groups g on g.id = u.group_id
join public.books b on b.id = u.book_id
group by g.id, u.id; 

I have tried earlier and works good even in current jdbc driver version




was (Author: dr-wolf):
I've tried different jdbc drive and reproduced this bug. So now I have these versions:

drill 1.4
postgresql 9.3.11
jdbc-driver postgresql-9.4-1205.jdbc41.jar 

And this query:

create sequence user_ids;
create sequence group_ids;
create sequence book_ids;

create table users (id integer primary key default nextval('user_ids'), login char(64), password char(64), group_id integer, book_id integer);
create table groups (id integer primary key default nextval('group_ids'), name char(64));
create table books (id integer primary key default nextval('book_ids'), name char(64));

select u.id from psql.drill.users u 
join psql.drill.groups g on g.id = u.group_id
join psql.drill.books b on b.id = u.book_id
group by g.id, u.id;

And all this returns me DATA_READ ERROR: The JDBC storage plugin failed while trying setup the SQL query.



> Drill rewrites Postgres query with ambiguous column references
> --------------------------------------------------------------
>
>                 Key: DRILL-4374
>                 URL: https://issues.apache.org/jira/browse/DRILL-4374
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: Query Planning & Optimization
>    Affects Versions: 1.4.0
>            Reporter: Justin Bradford
>            Assignee: Taras Supyk
>
> Drill drops table references when rewriting this query, resulting in ambiguous column references.
> This query: 
> {code:sql}
> select s.uuid as site_uuid, psc.partner_id, 
>   sum(psc.net_revenue_dollars) as revenue 
> from app.public.partner_site_clicks psc 
> join app.public.sites s on psc.site_id = s.id 
> join app.public.partner_click_days pcd on pcd.id = psc.partner_click_day_id 
> where s.generate_revenue_report is true and pcd.`day` = '2016-02-07' 
> group by s.uuid, psc.partner_id; 
> {code} 
> Results in this error: 
> {quote} 
> DATA_READ ERROR: The JDBC storage plugin failed while trying setup the SQL query. 
> {quote}
> Trying to run this re-written query:
> {code:sql}
> SELECT "site_uuid", "partner_id", SUM("net_revenue_dollars") AS "revenue" FROM (
>   SELECT "uuid" AS "site_uuid", "partner_id", "net_revenue_dollars" 
>   FROM "public"."partner_site_clicks" 
>   INNER JOIN "public"."sites" ON "partner_site_clicks"."site_id" = "sites"."id"
>   INNER JOIN "public"."partner_click_days" ON "partner_site_clicks"."partner_click_day_id" = "partner_click_days"."id" 
>   WHERE "sites"."generate_revenue_report" IS TRUE AND "partner_click_days"."day" = '2016-02-07'
> ) AS "t0" GROUP BY "site_uuid", "partner_id" 
> {code}
> That query fails due to an ambiguous "partner_id" reference as two of the tables have that column.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)