List:General Discussion« Previous MessageNext Message »
From:Przemyslaw Popielarski Date:November 12 2004 5:19pm
Subject:long update query does not replicate correctly
View as plain text  
I'm executing on master a long and complicated query such:
UPDATE (lots of tables, lots of LEFT JOIN)  SET ... WHERE .

The query updates i.e. 3816 rows.

The query DOES replicate do master's and slave's binary log. 
But it DOES NOT execute on slave. 3816 rows are not updated on slave 
and slave behaves like there was nothing more to execute.

I do `mysqlbinlog slave-log` on slave and see this query in log. 
Next, I copy & paste to MySQL client and execute this query manualy 
on slave. And...  3816 rows affected.

I'm trying to isolate problem. MySQL 4.1.7-standard-binary, Linux 
x86. In MySQL 4.0 everything this was for sure okey!


The query:

UPDATE tKsidata, tKsiabeksiazki 
LEFT JOIN tKsiabeautorzy as a1 ON (tKsiabeksiazki.KSI=a1.KSI AND 
a1.LP='1' AND a1.GR='0') 
LEFT JOIN tKsiabeautorzy as a2 ON (tKsiabeksiazki.KSI=a2.KSI AND 
a2.LP='2' AND a2.GR='0') 
LEFT JOIN tKsiabeautorzy as a3 ON (tKsiabeksiazki.KSI=a3.KSI AND 
a3.LP='3' AND a3.GR='0') 
LEFT JOIN tKsigdanskksiazki ON 
tKsiabeksiazki.KSI=tKsigdanskksiazki.KSI 
LEFT JOIN tKsigliwiceksiazki ON 
tKsiabeksiazki.KSI=tKsigliwiceksiazki.KSI 
LEFT JOIN tKsikrakowksiazki ON 
tKsiabeksiazki.KSI=tKsikrakowksiazki.KSI 
LEFT JOIN tKsiwysksiazki ON tKsiabeksiazki.KSI=tKsiwysksiazki.KSI 
LEFT JOIN tKsikolejowaksiazki ON 
tKsiabeksiazki.KSI=tKsikolejowaksiazki.KSI 
LEFT JOIN tBooksextra ON tKsiabeksiazki.KSI=tBooksextra.KSI 
LEFT JOIN tUnits ON tKsiabeksiazki.DZIAL=tUnits.DZIAL 
LEFT JOIN tSeries ON tKsiabeksiazki.SERIA=tSeries.SERIA 
LEFT JOIN tCovers ON tKsiabeksiazki.KSI=tCovers.KSI, tGrupy 
SET tKsidata.KSI=LCASE(tKsiabeksiazki.KSI), 
tKsidata.PKW=tKsiabeksiazki.PKW, 
tKsidata.TYTUL=tKsiabeksiazki.TYTUL, 
tKsidata.WYD=LCASE(tKsiabeksiazki.WYD), 
tKsidata.ROK=tKsiabeksiazki.ROK, 
tKsidata.NRW=tKsiabeksiazki.NRW, 
tKsidata.STRON=tKsiabeksiazki.STRON, 
tKsidata.ISBN=tKsiabeksiazki.ISBN, 
tKsidata.D_POCZ=tKsiabeksiazki.D_POCZ, 
tKsidata.VAT_REALNY=CASE tKsiabeksiazki.SVAT 
WHEN 1 THEN 0 WHEN 2 THEN 0 WHEN 3 THEN 2 WHEN 4 THEN 7 WHEN 5 THEN 
22 WHEN 6 THEN 12 WHEN 7 THEN 17 WHEN 8 THEN 3 ELSE NULL END, 
tKsidata.CENA_REALNA=IF(tKsiabeksiazki.C_ZAOK0,TRUNCATE(((tKsiabeksiaz
ki.C_DET-
tKsiabeksiazki.C_DET*tKsiabeksiazki.RABAT/100)/tKsiabeksiazki.C_ZAOK0)
+0.5,0)*tKsiabeksiazki.C_ZAOK0,tKsiabeksiazki.C_DET-
tKsiabeksiazki.C_DET*tKsiabeksiazki.RABAT/100), 
tKsidata.C_DET=IF(tKsiabeksiazki.C_ZAOK0,TRUNCATE(tKsiabeksiazki.C_DET
/tKsiabeksiazki.C_ZAOK0+0.5,0)*tKsiabeksiazki.C_ZAOK0, 
tKsiabeksiazki.C_DET), 
tKsidata.C_WAL0=tKsiabeksiazki.C_WAL0, 
tKsidata.RABAT=tKsiabeksiazki.RABAT, 
tKsidata.STAN_REALNY= IF(tKsiabeksiazki.STAN-tKsiabeksiazki.S_BLK 
+IFNULL(tKsigdanskksiazki.STAN,0) -IFNULL(tKsigdanskksiazki.S_BLK,0) 
+IFNULL(tKsigliwiceksiazki.STAN,0) -
IFNULL(tKsigliwiceksiazki.S_BLK,0) +IFNULL(tKsikrakowksiazki.STAN,0) -
IFNULL(tKsikrakowksiazki.S_BLK,0) +IFNULL(tKsiwysksiazki.STAN,0) -
IFNULL(tKsiwysksiazki.S_BLK,0) +IFNULL(tKsikolejowaksiazki.STAN,0) -
IFNULL(tKsikolejowaksiazki.S_BLK,0) < 0, 0, tKsiabeksiazki.STAN-
tKsiabeksiazki.S_BLK +IFNULL(tKsigdanskksiazki.STAN,0) -
IFNULL(tKsigdanskksiazki.S_BLK,0) +IFNULL(tKsigliwiceksiazki.STAN,0) -
IFNULL(tKsigliwiceksiazki.S_BLK,0) +IFNULL(tKsikrakowksiazki.STAN,0) -
IFNULL(tKsikrakowksiazki.S_BLK,0) +IFNULL(tKsiwysksiazki.STAN,0) -
IFNULL(tKsiwysksiazki.S_BLK,0) +IFNULL(tKsikolejowaksiazki.STAN,0) -
IFNULL(tKsikolejowaksiazki.S_BLK,0) ), 
tKsidata.STAN_WAW=IF(tKsiabeksiazki.STAN-tKsiabeksiazki.S_BLK <= 0, 
0, tKsiabeksiazki.STAN-tKsiabeksiazki.S_BLK), 
tKsidata.NAZWISKO_1=a1.NAZW, 
tKsidata.IMIE1_1=IF(CHAR_LENGTH(a1.IM1)=1,CONCAT(a1.IM1,'.'),a1.IM1), 

tKsidata.IMIE2_1=IF(CHAR_LENGTH(a1.IM2)=1,CONCAT(a1.IM2,'.'),a1.IM2), 

tKsidata.NAZWISKO_2=a2.NAZW, 
tKsidata.IMIE1_2=IF(CHAR_LENGTH(a2.IM1)=1,CONCAT(a2.IM1,'.'),a2.IM1), 

tKsidata.IMIE2_2=IF(CHAR_LENGTH(a2.IM2)=1,CONCAT(a2.IM2,'.'),a2.IM2), 

tKsidata.NAZWISKO_3=a3.NAZW, 
tKsidata.IMIE1_3=IF(CHAR_LENGTH(a3.IM1)=1,CONCAT(a3.IM1,'.'),a3.IM1), 

tKsidata.IMIE2_3=IF(CHAR_LENGTH(a3.IM2)=1,CONCAT(a3.IM2,'.'),a3.IM2), 

tKsidata.BIT=tKsiabeksiazki.BIT, tKsidata.GRKOD=tGrupy.GRKOD, 
tKsidata.DZIALID=tUnits.DZIALID, tKsidata.SERIAID=tSeries.SERIAID, 
tKsidata.KSIDESCPL=CONCAT_WS('<p></p>',IF(tBooksextra.BOOKCOMMENT1PL,t
Booksextra.BOOKCOMMENT1PL,tBooksextra.BOOKCOMMENT1EN),IF(tBooksextra.B
OOKCOMMENT2PL,tBooksextra.BOOKCOMMENT2PL,tBooksextra.BOOKCOMMENT2EN),I
F(tBooksextra.BOOKCOMMENT3PL,tBooksextra.BOOKCOMMENT3PL,tBooksextra.BO
OKCOMMENT3EN)), 
tKsidata.KSIDESCEN=CONCAT_WS('<p></p>',tBooksextra.BOOKCOMMENT1EN,tBoo
ksextra.BOOKCOMMENT2EN,tBooksextra.BOOKCOMMENT3EN), 
tKsidata.TOC=tBooksextra.TOC, 
tKsidata.MIESIAC=tBooksextra.MIESIAC, 
tKsidata.BINDING=tBooksextra.BINDING, 
tKsidata.STATUS=tBooksextra.STATUS, 
tKsidata.COVER=IF(tCovers.KSI,'1','0'), 
tKsidata.SHOWPRICE=IFNULL(tBooksextra.SHOWPRICE,1), 
tKsidata.VISIBLE=IFNULL(tBooksextra.VISIBLE,1) 
WHERE tKsidata.KSI=tKsiabeksiazki.KSI 
AND tKsiabeksiazki.ID1=tGrupy.ID1 AND tKsiabeksiazki.ID2=tGrupy.ID2;


./ premax
./ premax@stripped
./ koniec i bomba, a kto czytal ten traba. w.g.

Thread
long update query does not replicate correctlyPrzemyslaw Popielarski12 Nov
  • Re: long update query does not replicate correctly (cont.)Przemyslaw Popielarski12 Nov
    • Re: long update query does not replicate correctly (cont.)Sasha Pachev13 Nov
    • Re: long update query does not replicate correctly (cont.)Przemyslaw Popielarski14 Nov
      • Re: long update query does not replicate correctly (cont.)Sasha Pachev18 Nov