Steven Jacobs created ASTERIXDB-2427:
----------------------------------------

             Summary: Plan with two instances of create-query-uid() optimizing 
groupby incorrectly.
                 Key: ASTERIXDB-2427
                 URL: https://issues.apache.org/jira/browse/ASTERIXDB-2427
             Project: Apache AsterixDB
          Issue Type: Bug
            Reporter: Steven Jacobs


The groupby ends up grouping by nothing when it should group by the top 
create-query-uid()

 

Repro:

drop dataverse channels if exists;
create dataverse channels;
use channels;

create type UserLocation as {
 location: circle,
 userName: string
};


create type EmergencyReport as {
 reportId: uuid,
 Etype: string,
 location: circle
};


create type EmergencyShelter as {
 shelterName: string,
 location: point
};

create dataset UserLocations(UserLocation)
primary key userName;
create dataset Shelters(EmergencyShelter)
primary key shelterName;
create dataset Reports(EmergencyReport)
primary key reportId autogenerated;

create index u_location on UserLocations(location) type RTREE;

create type result as {
 resultId:uuid
};
create type channelSub as {
 channelSubId:uuid
};
create type brokerSub as {
 channelSubId:uuid,
 brokerSubId:uuid
};
create type broke as {
 DataverseName: string,
 BrokerName: string,
 BrokerEndpoint: string
};

create dataset EmergenciesNearMeChannelResults(result) primary key resultId 
autogenerated;
create dataset EmergenciesNearMeChannelChannelSubscriptions(channelSub) primary 
key channelSubId;
create dataset EmergenciesNearMeChannelBrokerSubscriptions(brokerSub) primary 
key channelSubId,brokerSubId;
create dataset Broker(broke) primary key DataverseName,BrokerName;


create function RecentEmergenciesNearUser(userName) {
 (
 select report, shelters from
 ( select value r from Reports r)report,
 UserLocations u
 let shelters = (select s.location from Shelters s where 
spatial_intersect(s.location,u.location))
 where u.userName = userName
 and spatial_intersect(report.location,u.location)
 )
};

SET inline_with "false";
insert into channels.EmergenciesNearMeChannelResults as a (
with channelExecutionTime as current_datetime() 
select result, channelExecutionTime, sub.channelSubId as 
channelSubId,current_datetime() as deliveryTime,
(select b.BrokerEndPoint, bs.brokerSubId from
channels.EmergenciesNearMeChannelBrokerSubscriptions bs,
channels.Broker b
where bs.BrokerName = b.BrokerName
and bs.DataverseName = b.DataverseName
and bs.channelSubId = sub.channelSubId
) as brokerSubIds
from channels.EmergenciesNearMeChannelChannelSubscriptions sub,
channels.RecentEmergenciesNearUser(sub.param0) result 
) returning (select a.channelExecutionTime group by a.channelExecutionTime);



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to