Hello,

I have a regression to report, that seems to have been introduced between 
SQLite 3.8.6 and the newest 3.8.8 (at least our test case worked in 3.8.6 and 
stopped working somewhere in 3.8.7.x; we were hoping it got fixed in 3.8.8 but 
eventually it wasn’t).

In our application we can have SQLite databases with more than 100 tables, and 
we can generate queries automatically; one of these automatically generated 
queries is the following:


SELECT EB_DocumentiFiscali__00.CAP, EB_RigheUnitaMisura__01.Abbreviazione, 
EB_DocumentiFiscali__00.OraInizioTrasp, EB_ClientiFornitori__03.Codice, 
EB_RigheDocFiscali.ValoreUnitarioNetto, EB_DocumentiFiscali__00.id, 
EB_RigheDocFiscali.Sconto, EB_DocumentiFiscali__00.PartitaIVA, 
EB_TipologieDocumenti__08.Codice, EB_DocumentiFiscali__00.Note, 
EB_DocumentiFiscali__00.RagSoc_Dest, EB_TipologieDocumenti__08.id, 
EB_Valute__12.Abbreviazione, EB_DocumentiFiscali__00.ScontoGlobale, 
EB_DocumentiFiscali__00.DataDocumento, EB_Agenti__15.RagioneSociale, 
EB_RigheDocFiscali.DescArticolo, EB_Articoli__17.Codice, 
EB_DocumentiFiscali__00.NumeroColli, EB_DocumentiFiscali__00.CAP_Dest, 
EB_RigheDocFiscali.ValoreUnitario, EB_AliquoteIVA__21.tra_Descrizione, 
EB_DocumentiFiscali__00.Indirizzo_Dest, EB_RigheDocFiscali.NumeroRiga, 
EB_DocumentiFiscali__00.NumeroProgressivo, 
EB_DocumentiFiscali__00.val_NazioneDest, EB_Vettori__26.Descrizione, 
EB_DocumentiFiscali__00.val_ModalitaInvio, EB_DocumentiFiscali__00.AspettoBeni, 
EB_DocumentiFiscali__00.Peso, EB_RigheDocFiscali.id, 
EB_DocumentiFiscali__00.RagioneSociale, EB_Banche__32.Descrizione, 
EB_AliquoteIVA__21.PercentualeIVA, EB_CondizioniConsegna__34.Descrizione, 
EB_TipologieDocumenti__08.tra_Descrizione, 
EB_DocumentiFiscali__00.NumeroInterno, EB_BancheAzienda__37.Descrizione, 
EB_DocumentiFiscali__00.Localita_Dest, EB_CondizioniPagamento__39.Codice, 
EB_DocumentiFiscali__00.Email, EB_DocumentiFiscali__00.Indirizzo, 
EB_Valute__12.Codice, EB_DocumentiFiscali__00.val_Nazione, 
EB_DocumentiFiscali__00.DataInizioTrasp, 
EB_DocumentiFiscali__00.CausaleTrasporto, 
EB_DocumentiFiscali__00.Provincia_Dest, 
EB_CondizioniPagamento__39.tra_Descrizione, EB_RigheDocFiscali.Quantita, 
EB_DocumentiFiscali__00.Provincia, EB_RigheDocFiscali.FlagsStato, 
EB_DocumentiFiscali__00.Localita, EB_DocumentiFiscali__00.CodiceFiscale, 
EB_RigheDocFiscali.ref_RigaDdT, EB_AliquoteIVA__21.Codice, 
EB_DocumentiFiscali__00.Suffisso, EB_Articoli__17.val_GestioneLotti, 
EB_CausaliContabili__57.val_TipoGestIVA, 
EB_DocumentiFiscali__00.val_AddettoTrasporto, EB_BancheAzienda__37.IBAN FROM 
EB_RigheDocFiscali LEFT JOIN EB_DocumentiFiscali AS EB_DocumentiFiscali__00 ON 
(EB_RigheDocFiscali.ref_DocumentoFiscale = EB_DocumentiFiscali__00.id) LEFT 
JOIN EB_RigheUnitaMisura AS EB_RigheUnitaMisura__01 ON 
(EB_RigheDocFiscali.ref_RigheUnitaMisura = EB_RigheUnitaMisura__01.id) LEFT 
JOIN EB_ClientiFornitori AS EB_ClientiFornitori__03 ON 
(EB_DocumentiFiscali__00.ref_Cliente = EB_ClientiFornitori__03.id) LEFT JOIN 
EB_TipologieDocumenti AS EB_TipologieDocumenti__08 ON 
(EB_DocumentiFiscali__00.ref_Tipologia = EB_TipologieDocumenti__08.id) LEFT 
JOIN EB_Valute AS EB_Valute__12 ON (EB_DocumentiFiscali__00.ref_Valuta = 
EB_Valute__12.id) LEFT JOIN EB_Agenti AS EB_Agenti__15 ON 
(EB_DocumentiFiscali__00.ref_Agente = EB_Agenti__15.id) LEFT JOIN EB_Articoli 
AS EB_Articoli__17 ON (EB_RigheDocFiscali.ref_Articolo = EB_Articoli__17.id) 
LEFT JOIN EB_AliquoteIVA AS EB_AliquoteIVA__21 ON 
(EB_RigheDocFiscali.ref_AliquotaIVA = EB_AliquoteIVA__21.id) LEFT JOIN 
EB_Vettori AS EB_Vettori__26 ON (EB_DocumentiFiscali__00.ref_Vettore1 = 
EB_Vettori__26.id) LEFT JOIN EB_Banche AS EB_Banche__32 ON 
(EB_DocumentiFiscali__00.ref_Banca = EB_Banche__32.id) LEFT JOIN 
EB_CondizioniConsegna AS EB_CondizioniConsegna__34 ON 
(EB_DocumentiFiscali__00.ref_CondizioneConsegna = EB_CondizioniConsegna__34.id) 
LEFT JOIN EB_BancheAzienda AS EB_BancheAzienda__37 ON 
(EB_DocumentiFiscali__00.ref_BancaAzienda = EB_BancheAzienda__37.id) LEFT JOIN 
EB_CondizioniPagamento AS EB_CondizioniPagamento__39 ON 
(EB_DocumentiFiscali__00.ref_CondizionePagamento = 
EB_CondizioniPagamento__39.id) LEFT JOIN EB_CausaliContabili AS 
EB_CausaliContabili__57 ON (EB_DocumentiFiscali__00.ref_CausContabile = 
EB_CausaliContabili__57.id) WHERE ((EB_DocumentiFiscali__00.id = 258) )  ORDER 
BY EB_DocumentiFiscali__00.NumeroInterno ASC , EB_RigheDocFiscali.NumeroRiga 
ASC  LIMIT 0, 200

The query worked correctly with SQLite 3.8.6, returning for our test-case 
database 5 records with the same EB_DocumentiFiscali__00.NumeroInterno, ordered 
by EB_RigheDocFiscali.NumeroRiga in ascending order.
With 3.8.7 and 3.8.8 however, the very same query returns the same 5 records 
but in the wrong order, as if it was ordered by NumeroRiga DESC (instead of 
ASC). What’s even more strange is the fact that if you remove the LIMIT clause, 
the records are returned in the correct order even with 3.8.7 and 3.8.8.

For reference, the test-case database can be downloaded from here:

http://download.easybyte.it/tmp/TESTCASE.edb.zip

It’s about 64 MB zipped and 110 MB unzipped file, so be warned.

I’m sorry I can’t give a smaller test case; I hope it can be useful in 
discovering what’s going wrong anyway.

Thanks


--
Ing. Angelo Mottola
Software architect
Converge SpA
a.mott...@converge.it<mailto:a.mott...@converge.it>



_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to