DISTINCT query is returning duplicate rows
------------------------------------------

         Key: DERBY-251
         URL: http://issues.apache.org/jira/browse/DERBY-251
     Project: Derby
        Type: Bug
  Components: SQL  
    Versions: 10.1.0.0    
    Reporter: Mamta A. Satoor
 Assigned to: Mamta A. Satoor 


Following query on a table with primary key returns duplicate rows
select  distinct  q1."NO1" from IDEPT q1, IDEPT q2 
where  ( q2."DISCRIM_DEPT" = 'HardwareDept') 
 and  ( q1."DISCRIM_DEPT" = 'SoftwareDept')  and  ( q1."NO1" 
<> ALL  ( select  q3."NO1" from IDEPT q3 where  (  q3."REPORTTO_NO" =  
q2."NO1") ) )  ;

The sql script to create the table and load data into it is as follows
CREATE TABLE "APP"."IDEPT" ("DISCRIM_DEPT" VARCHAR(32), "NO1" INTEGER NOT NULL, 
"NAME" VARCHAR(50), "AUDITOR_NO" INTEGER, "REPORTTO_NO" INTEGER, "HARDWAREASSET"
 VARCHAR(15), "SOFTWAREASSET" VARCHAR(15));
-- primary/unique
ALTER TABLE "APP"."IDEPT" ADD CONSTRAINT "PK_IDEPT" PRIMARY KEY ("NO1");
insert into idept values ('Dept', 1, 'Department1', null, null, null, null);
insert into idept values ('HardwareDept', 2, 'Department2', 25, 1, 
'hardwareaset2', null);
insert into idept values ('HardwareDept', 3, 'Department3', 25, 2, 
'hardwareaset3', null);
insert into idept values ('SoftwareDept', 4, 'Department4', 25, 1, null, 
'softwareasset4');
insert into idept values ('SoftwareDept', 5, 'Department5', 30, 4, null, 
'softwareasset5');


The problem appears to be in 
org.apache.derby.impl.sql.compile.FromList.returnsAtMostSingleRow() method. 
This method along with other things tries to determine if the DISTINCT can be 
dropped without causing duplicate rows. For the query in question, this method 
decides that DISTINCT is not necessary which I think is incorrect.

If the table above is created with no primary key, the DISTINCT query does not 
return duplicate rows. That is because one of the several criterias for 
dropping DISTINCT is that there should be a unique index on the columns in the 
where clause.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to