SQLite 3.51.3 me korrigjimin për mundësinë e dëmtimit të bazës së të dhënave në modalitetin WAL

SQLite 3.51.3 me korrigjimin për mundësinë e dëmtimit të bazës së të dhënave në modalitetin WAL

Më 13 mars, u realizua një version korrigjues 3.51.3 të databazës kompakte të integruar. SQLite. Kodi i projektit është shkruar në gjuhën C dhe shpërndahet si pronë publike (public domain).

Në lidhje me problemet e ndërsjelljes, që lidhen me disa funksione të reja, versioni 3.52.0 (i dalë më 6 mars) u tërhoq.

Lista e ndryshimeve për versionin 3.51.3:

  • MĂ« 3 mars, njĂ« nga zhvilluesit e SQLite (Dan) zbuloi dhe rregulloi njĂ« gabim, i cili nĂ« raste tĂ« rralla mund tĂ« çonte nĂ« dĂ«mtimin e databazĂ«s dhe quhej «gabimi WAL-reset»:
    • Ky gabim ndodh vetĂ«m nĂ« databaza qĂ« punojnĂ« nĂ« modalitetin WAL, nĂ«se pĂ«r njĂ« skedĂ« tĂ« njĂ«jtĂ« janĂ« hapur dy ose mĂ« shumĂ« lidhje nĂ« procese ose tela tĂ« ndryshme, dhe nĂ«se kĂ«to dy lidhje pĂ«rpiqen tĂ« kryejnĂ« njĂ« shkresĂ« ose tĂ« krijojnĂ« njĂ« pikĂ« kontrolli nĂ« tĂ« njĂ«jtĂ«n kohĂ«.
    • Gabimi lidhet me njĂ« konflikt aksesesh nĂ« tĂ« dhĂ«na nĂ«n kufij tĂ« fortĂ« temporalĂ«. NĂ«n kushte normale pĂ«rdorimi, ai ndodh shumĂ« rrallĂ«. Zhvilluesit nuk arritĂ«n kurrĂ« ta riprodhonin kĂ«tĂ« gabim nĂ« kushte natyrore dhe duhej tĂ« shtonin nĂ« SQLite njĂ« logjikĂ« tĂ« veçantĂ« testuese, e cila krijonte me qĂ«llim kushte pĂ«r shfaqjen e gabimit, pĂ«r t'u siguruar se problemi ishte zgjidhur.
    • Gabimi ndodh kur:
      1. Një lidhje ekzekuton verifikimin e pikës kontrolli. Kjo verifikues e parë duhet të përfundojë. Me fjalë të tjera, gjatë verifikimit duhet të kopjohet me sukses të gjithë përmbajtja e skedës WAL prapa në databazë dhe të vendoset skeda WAL në një gjendje ku mund të rivendoset.
      2. Menjëherë pas përfundimit të veprimit të parë të kontrollit, fillon i dyti.
      3. Ndërsa fillon pikë kontrolli e dytë nga hapi 2, një lidhje tjetër me databazën regjistron një transaksion që rivendos skedën WAL dhe shënjon përmbajtje të re në fillim të skedës WAL.
      4. Për shkak të konfliktit të aksesit në të dhëna, pika e dytë e kontrollit nga hapi 2 nuk e merr parasysh se skeda WAL është rivendosur si rezultat i regjistrimit të transaksionit në hapin 3. Pika e dytë e kontrollit vendos një vlerë të gabuar për një nga fushat në titullin e indeksit WAL. Kjo fushë tregon se një pjesë e skedës WAL tashmë është regjistruar në pikën e kontrollit, kur në fakt kjo nuk është e vërtetë.
      5. Regjistrimi i transaksioneve të tjera çon në rritjen e numrit të faqeve në skedën WAL, e cila kalon numrin e faqeve ekzistues në momentin e pikës së kontrollit të parë nga hapi 1.
      6. Më vonë, kur shfaqet pikë kontrolli e tretë, ajo kalon tërë ose pjesërisht transaksionin e regjistruar në fazën 3. Kështu, pjesët e transaksionit nga faza 3 nuk arrijnë kurrë në skedarin e bazës së të dhënave, duke rezultuar në dëmtimin e skedarit të bazës së të dhënave.
    • Gabimi Ă«shtĂ« me tĂ« theksuar se Ă«shtĂ« i pranishĂ«m nĂ« tĂ« gjitha versionet e SQLite, duke filluar nga 3.7.0 (21.07.2010) dhe duke pĂ«rfunduar nĂ« 3.51.2. JanĂ« publikuar gjithashtu rregullime pĂ«r disa versione mĂ« tĂ« hershme: 3.44.6 dhe 3.50.7.
  • Rregullime tĂ« tjera tĂ« vogla.

Burimi: linux.org.ru

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster