SQLite 3.35-release

De release van SQLite 3.35, een lichtgewicht DBMS ontworpen als een plug-in-bibliotheek, is gepubliceerd. De SQLite-code wordt gedistribueerd in het publieke domein, d.w.z. kan zonder beperkingen en gratis voor elk doel worden gebruikt. Financiële ondersteuning voor SQLite-ontwikkelaars wordt geleverd door een speciaal opgericht consortium, waaronder bedrijven als Adobe, Oracle, Mozilla, Bentley en Bloomberg.

Grote veranderingen:

  • Ingebouwde wiskundige functies toegevoegd (log2(), cos(), tg(), exp(), ln(), pow(), enz.) die in SQL kunnen worden gebruikt. Voor het inschakelen van ingebouwde functies is bouwen met de optie "-DSQLITE_ENABLE_MATH_FUNCTIONS" vereist.
  • Ondersteuning geïmplementeerd voor de expressie “ALTER TABLE DROP COLUMN” om kolommen uit een tabel te verwijderen en gegevens te wissen die eerder in een bepaalde kolom waren opgeslagen.
  • De implementatie van de UPSERT-bewerking (add-or-modify) is uitgebreid, waardoor expressies als “INSERT ... ON CONFLICT DO NOTHING/UPDATE” een fout kunnen negeren of een update kunnen uitvoeren in plaats van invoegen als het onmogelijk is om toe te voegen gegevens via “INSERT” (als er bijvoorbeeld al een record bestaat, kunt u UPDATE uitvoeren in plaats van INSERT). Met de nieuwe versie kunt u meerdere ON CONFLICT-blokken opgeven, die in volgorde worden verwerkt. Met het laatste "ON CONFLICT"-blok kan de conflictdefinitieparameter worden weggelaten om "DO UPDATE" te kunnen gebruiken.
  • De bewerkingen DELETE, INSERT en UPDATE ondersteunen de RETURNING-expressie, die kan worden gebruikt om de inhoud van een verwijderde, ingevoegde of gewijzigde record weer te geven. De uitdrukking "insert into... return id" retourneert bijvoorbeeld de ID van de toegevoegde regel, en "update... set price = price * 1.10 return price" retourneert de gewijzigde prijswaarde.
  • Voor Common Table Expressions (CTE), die het gebruik van tijdelijke benoemde resultaatsets toestaan ​​die zijn gespecificeerd met behulp van de WITH-instructie, is de keuze uit de modi “MATERIALIZED” en “NOT MATERIALIZED” toegestaan. “MATERIALIZED” houdt in dat de zoekopdracht die in de weergave is gespecificeerd in een aparte fysieke tabel wordt opgeslagen en vervolgens gegevens uit deze tabel worden opgehaald, en met “NOT MATERIALIZED” worden herhaalde zoekopdrachten uitgevoerd elke keer dat de weergave wordt geopend. SQLite was oorspronkelijk standaard ingesteld op "NOT GEMATERIALIZED", maar is nu gewijzigd naar "MATERIALIZED" voor CTE's die meer dan eens worden gebruikt.
  • Verminderd geheugengebruik bij het uitvoeren van een VACUUM-bewerking op databases die zeer grote TEXT- of BLOB-waarden bevatten.
  • Er is gewerkt om de prestaties van de optimizer en queryplanner te verbeteren:
    • Er zijn optimalisaties toegevoegd bij het gebruik van de min- en max-functies met de "IN"-expressie.
    • De uitvoering van de EXISTS-instructie is versneld.
    • Uitbreiding van subquery's geïmplementeerd van UNION ALL-expressies die worden gebruikt als onderdeel van JOIN.
    • De index wordt gebruikt voor IS NOT NULL-expressies.
    • Zorgt ervoor dat "x IS NULL" en "x IS NOT NULL" worden geconverteerd naar FALSE of TRUE voor kolommen met het kenmerk "NOT NULL".
    • Sla het controleren van externe sleutels in UPDATE over als de bewerking de kolommen die aan de externe sleutel zijn gekoppeld niet wijzigt.
    • Het is toegestaan ​​om delen van een WHERE-blok te verplaatsen naar subquery's die vensterfuncties bevatten, zolang die delen beperkt zijn tot het werken met constanten en kopieën van uitdrukkingen uit PARTITION BY-blokken die in vensterfuncties worden gebruikt.
  • Wijzigingen in de opdrachtregelinterface:
    • Opdracht ".filectrl data_version" toegevoegd.
    • De commando's ".once" en ".output" ondersteunen nu het doorgeven van uitvoer aan een handler die wordt aangeroepen met behulp van naamloze pipelines ("|").
    • De argumenten “stmt” en “vmstep” zijn toegevoegd aan de opdracht “.stats” om statistieken weer te geven over expressies en tellers van virtuele machines.

Bron: opennet.ru

Voeg een reactie