Bug #16721 ERROR 1062 (23000): Duplicate entry in a view (GROUP BY)
Submitted: 23 Jan 2006 10:15 Modified: 24 Jan 2006 15:12
Reporter: jo soares Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server Severity:S1 (Critical)
Version:5.0.16-Debian_1-log OS:Linux (Linux debian 2.6.15 sarge)
Assigned to: CPU Architecture:Any

[23 Jan 2006 10:15] jo soares
Description:
Mysql goes in error when I try a query in a view using the GROUP BY clause on a field with NULL values.

This is the query:

SELECT *,COUNT(*) AS q  FROM test1
GROUP by fatt_id_fiscale,azienda,tipo_ordine,tipologia, orecchio_ristampa;

and this is the error message:

ERROR 1062 (23000): Duplicate entry '0029298036-O002-N-1-NULL' for key 1

I tried without orecchio_ristampa column and it works (this field has NULL values)
I tried also to assign a value to orecchio_ristampa and then it worked.

The same query in the sorce table works perfectly.

How to repeat:
create table test (
 marca                 character varying(15),
 orecchio_ristampa     character(1),
 tipo_ordine           character(1),
 libro_genealogico     character(1),
 azienda               character varying(10) not null,
 id_fiscale            character varying(16),
 fatt_ragione_sociale  character varying(40),
 fatt_id_fiscale       character varying(16),
 fatt_indirizzo        character varying(60),
 fatt_localita         character varying(60),
 fatt_comune           character varying(60),
 fatt_cap              character varying(5),
 fatt_provincia        character varying(2),
 cons_ragione_sociale  character varying(40),
 cons_indirizzo        character varying(60),
 cons_localita         character varying(60),
 cons_comune           character varying(60),
 cons_cap              character varying(5),
 cons_provincia        character varying(2),
 tipologia             character varying(3),
 data_lotto            date,
 old_cod               character varying(4),
 data_consegna_maior   date,
 data_fattura          date DEFAULT '0000-00-00',
 from_file             integer,
 data_invio_teramo     date DEFAULT '0000-00-00',
 produttore            character(3),
 numero_fattura        integer DEFAULT 0,
 progr_sostituzione    character(3),
 specie_allevata       character(4),
 nome_proprietario     character(40),
 id_proprietario       character(16),
 nome_detentore        character(40),
 id_detentore          character(16),
 data_pagamento        date,
 vettore               varchar(50),
 stato_spedizione      varchar(30),
 data_spedizione_maior date,
 note                  varchar(100),
 bolla                 integer,
 importo_fattura       decimal(10,3),
 destinatario          varchar(4),
 priorita              integer DEFAULT 0,
 id                    integer AUTO_INCREMENT PRIMARY KEY
 );

create view test1 as select * from test;

insert into test values('090990074180',NULL,'N','N','S003','0176130090','LU MARIOTTIO','0176130090','LOC.SALMAR','ALMARIN','RZACHEN','07021','SS','ALU MARIOTTI1','LOC.SAL','ALMARIN','HENA EE','07021','SS','1','2004-11-12','02','2004-11-12','0000-00-00',1149,'2004-11-15','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'S.D.A',NULL,'2004-11-16',NULL,15502 ,NULL ,'D02',1, 1);
insert into test values('036990023324',NULL,'N','N','O002','0029298036','RTOLOTTI MAR','0029298036','COMUNAGLIE','ORRE MA','ARANELL','41053','MO','SL DI MODENA1','SASSUOL','ASSUOLO','OLO EEE','41049','MO','1','2003-03-04','17','2003-03-04','0000-00-00', 321,'2003-03-04','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'NULL ',NULL,'2003-03-04',NULL, NULL ,NULL ,'E17',1, 2);
insert into test values('036990023323',NULL,'N','N','O002','0029298036','RTOLOTTI MAR','0029298036','COMUNAGLIE','ORRE MA','ARANELL','41053','MO','SL DI MODENA1','SASSUOL','ASSUOLO','OLO EEE','41049','MO','1','2003-03-04','17','2003-03-04','0000-00-00', 321,'2003-03-04','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'NULL ',NULL,'2003-03-04',NULL, NULL ,NULL ,'E17',1, 3);
insert into test values('036990023322',NULL,'N','N','O002','0029298036','RTOLOTTI MAR','0029298036','COMUNAGLIE','ORRE MA','ARANELL','41053','MO','SL DI MODENA1','SASSUOL','ASSUOLO','OLO EEE','41049','MO','1','2003-03-04','17','2003-03-04','0000-00-00', 321,'2003-03-04','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'NULL ',NULL,'2003-03-04',NULL, NULL ,NULL ,'E17',1, 4);
insert into test values('034990145606',NULL,'N','N','R093','SPGBRO49A2','AGGIARI OBER','SPGBRO49A2','VIA MONZAT','ZZZZZZZ','RAVERSE','43029','PR','PAGGIARI OBER','VIA MON','_______','RSETOLO','43029','PR','1','2004-09-01','07','2004-09-01','0000-00-00',1077,'2004-09-02','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'S.D.A',NULL,'2004-09-03',NULL,14064 ,NULL ,'E07',1, 5);
insert into test values('034990145605',NULL,'N','N','R093','SPGBRO49A2','AGGIARI OBER','SPGBRO49A2','VIA MONZAT','XXXXXXX','RAVERSE','43029','PR','PAGGIARI OBER','VIA MON','_______','RSETOLO','43029','PR','1','2004-09-01','07','2004-09-01','0000-00-00',1077,'2004-09-02','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'S.D.A',NULL,'2004-09-03',NULL,14064 ,NULL ,'E07',1, 6);
insert into test values('034990145604',NULL,'N','N','R093','SPGBRO49A2','AGGIARI OBER','SPGBRO49A2','VIA MONZAT','XXXXXXX','RAVERSE','43029','PR','PAGGIARI OBER','VIA MON','_______','RSETOLO','43029','PR','1','2004-09-01','07','2004-09-01','0000-00-00',1077,'2004-09-02','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'S.D.A',NULL,'2004-09-03',NULL,14064 ,NULL ,'E07',1, 7);
insert into test values('034990145603',NULL,'N','N','R093','SPGBRO49A2','AGGIARI OBER','SPGBRO49A2','VIA MONZAT','XXXXXXX','RAVERSE','43029','PR','PAGGIARI OBER','VIA MON','_______','RSETOLO','43029','PR','1','2004-09-01','07','2004-09-01','0000-00-00',1077,'2004-09-02','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'S.D.A',NULL,'2004-09-03',NULL,14064 ,NULL ,'E07',1, 8);
insert into test values('034990145602',NULL,'N','N','R093','SPGBRO49A2','AGGIARI OBER','SPGBRO49A2','VIA MONZAT','XXXXXXX','RAVERSE','43029','PR','PAGGIARI OBER','VIA MON','_______','RSETOLO','43029','PR','1','2004-09-01','07','2004-09-01','0000-00-00',1077,'2004-09-02','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'S.D.A',NULL,'2004-09-03',NULL,14064 ,NULL ,'E07',1, 9);
insert into test values('034990145601',NULL,'N','N','R093','SPGBRO49A2','AGGIARI OBER','SPGBRO49A2','VIA MONZAT','XXXXXXX','RAVERSE','43029','PR','PAGGIARI OBER','VIA MON','_______','RSETOLO','43029','PR','1','2004-09-01','07','2004-09-01','0000-00-00',1077,'2004-09-02','017',-1,0,NULL,NULL, NULL,NULL,NULL,NULL,'S.D.A',NULL,'2004-09-03',NULL,14064 ,NULL ,'E07',1,10);

SELECT *,COUNT(*) AS q  FROM test1
GROUP by fatt_id_fiscale,azienda,tipo_ordine,tipologia, orecchio_ristampa;
[24 Jan 2006 15:12] Valeriy Kravchuk
Thank you for a problem report. Sorry, but I was not able to repeat the behaviour you described using latest 5.0.19-BK build on Linux:

mysql> SELECT *,COUNT(*) AS q  FROM test1 GROUP by fatt_id_fiscale,azienda,tipo_ordine,tipologia, orecchio_ristampa\G
*************************** 1. row ***************************
                marca: 036990023324
    orecchio_ristampa: NULL
          tipo_ordine: N
    libro_genealogico: N
              azienda: O002
           id_fiscale: 0029298036
 fatt_ragione_sociale: RTOLOTTIMAR
      fatt_id_fiscale: 0029298036
       fatt_indirizzo: COMUNAGLIE
        fatt_localita: ORRE MA
          fatt_comune: ARANELL
             fatt_cap: 41053
       fatt_provincia: MO
 cons_ragione_sociale: SL DIMODENA1
       cons_indirizzo: SASSUOL
        cons_localita: ASSUOLO
          cons_comune: OLOEEE
             cons_cap: 41049
       cons_provincia: MO
            tipologia: 1
           data_lotto: 2003-03-04
              old_cod: 17
  data_consegna_maior: 2003-03-04
         data_fattura: 0000-00-00
            from_file: 321
    data_invio_teramo: 2003-03-04
           produttore: 017
       numero_fattura: -1
   progr_sostituzione: 0
      specie_allevata: NULL
    nome_proprietario: NULL
      id_proprietario: NULL
       nome_detentore: NULL
         id_detentore: NULL
       data_pagamento: NULL
              vettore: NULL
     stato_spedizione: NULL
data_spedizione_maior: 2003-03-04
                 note: NULL
                bolla: NULL
      importo_fattura: NULL
         destinatario: E17
             priorita: 1
                   id: 2
                    q: 3
*************************** 2. row ***************************
                marca: 090990074180
    orecchio_ristampa: NULL
          tipo_ordine: N
    libro_genealogico: N
              azienda: S003
           id_fiscale: 0176130090
 fatt_ragione_sociale: LUMARIOTTIO
      fatt_id_fiscale: 0176130090
       fatt_indirizzo: LOC.SALMAR
        fatt_localita: ALMARIN
          fatt_comune: RZACHEN
             fatt_cap: 07021
       fatt_provincia: SS
 cons_ragione_sociale: ALUMARIOTTI1
       cons_indirizzo: LOC.SAL
        cons_localita: ALMARIN
          cons_comune: HENAEE
             cons_cap: 07021
       cons_provincia: SS
            tipologia: 1
           data_lotto: 2004-11-12
              old_cod: 02
  data_consegna_maior: 2004-11-12
         data_fattura: 0000-00-00
            from_file: 1149
    data_invio_teramo: 2004-11-15
           produttore: 017
       numero_fattura: -1
   progr_sostituzione: 0
      specie_allevata: NULL
    nome_proprietario: NULL
      id_proprietario: NULL
       nome_detentore: NULL
         id_detentore: NULL
       data_pagamento: NULL
              vettore: S.D.A
     stato_spedizione: NULL
data_spedizione_maior: 2004-11-16
                 note: NULL
                bolla: 15502
      importo_fattura: NULL
         destinatario: D02
             priorita: 1
                   id: 1
                    q: 1
*************************** 3. row ***************************
                marca: 034990145606
    orecchio_ristampa: NULL
          tipo_ordine: N
    libro_genealogico: N
              azienda: R093
           id_fiscale: SPGBRO49A2
 fatt_ragione_sociale: AGGIARIOBER
      fatt_id_fiscale: SPGBRO49A2
       fatt_indirizzo: VIA MONZAT
        fatt_localita: ZZZZZZZ
          fatt_comune: RAVERSE
             fatt_cap: 43029
       fatt_provincia: PR
 cons_ragione_sociale: PAGGIARIOBER
       cons_indirizzo: VIAMON
        cons_localita: _______
          cons_comune: RSETOLO
             cons_cap: 43029
       cons_provincia: PR
            tipologia: 1
           data_lotto: 2004-09-01
              old_cod: 07
  data_consegna_maior: 2004-09-01
         data_fattura: 0000-00-00
            from_file: 1077
    data_invio_teramo: 2004-09-02
           produttore: 017
       numero_fattura: -1
   progr_sostituzione: 0
      specie_allevata: NULL
    nome_proprietario: NULL
      id_proprietario: NULL
       nome_detentore: NULL
         id_detentore: NULL
       data_pagamento: NULL
              vettore: S.D.A
     stato_spedizione: NULL
data_spedizione_maior: 2004-09-03
                 note: NULL
                bolla: 14064
      importo_fattura: NULL
         destinatario: E07
             priorita: 1
                   id: 5
                    q: 6
3 rows in set (0.01 sec)

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.19    |
+-----------+
1 row in set (0.00 sec)

So, please, try to use newer version of MySQL, 5.0.18.