De release van SQLite 3.46 is gepubliceerd, een lichtgewicht RDBMS gepresenteerd als een te integreren bibliotheek. De code van SQLite is vrijgegeven als publieke domein (public domain), wat betekent dat het onbeperkt en kosteloos voor alle doeleinden kan worden gebruikt. De financiële ondersteuning voor de ontwikkelaars van SQLite wordt verleend door een speciaal opgerichte consortia.
Belangrijkste wijzigingen:
- Er is de mogelijkheid toegevoegd om het scheidingsteken '_' in getallen te gebruiken voor een duidelijkere presentatie van numerieke literalen (bijvoorbeeld, 1_234_567).
- De SQL-functie json_pretty() is toegevoegd voor het genereren van leesbaardere uitvoer in JSON-formaat, geformatteerd met behulp van inspringen.
- De mogelijkheden van de 'PRAGMA optimize'-operatie zijn uitgebreid, die de database en alle dataschema's optimaliseert voor de beste prestaties van query's. Er is een automatisch toepasbare limiet geïmplementeerd voor de duur van de database-analyse, om te voorkomen dat grote databases te veel tijd kosten voor verwerking. Een nieuwe bitmasker 'PRAGMA optimize(0x10000)' is toegevoegd voor afzonderlijke controle van updates in alle tabellen. Er is automatische heranalyse voorzien voor tabellen zonder records in sqlite_stat1.
- Ondersteuning voor de placeholders %G, %g, %U en %V is toegevoegd aan de SQL-functie strftime().
- Nieuwe modifiers ceiling en floor zijn toegevoegd aan de SQL-functies voor het werken met data en tijd, om ambiguïteiten bij datums te beheersen die ontstaan bij het verschuiven van datums met een bepaald aantal maanden of jaren. Modifiers utc en localtime worden genegeerd als SQLite weet dat de tijd al in UTC- of localtime-weergave is.
- Er zijn optimalisaties aangebracht in de queryscheduler. Voor INSERT-expressies met duizenden waarden in de VALUES-sectie is de 'VALUES-as-coroutine'-optimalisatie standaard ingeschakeld, wat de parsing van dergelijke expressies ongeveer verdubbelt en het geheugenverbruik halveert. Voor queries zoals 'SELECT count(DISTINCT col) FROM ...' is het gebruik van indexen toegestaan, zelfs als de recordgrootte in de index niet kleiner is dan die in de tabel. De logica voor het bepalen van situaties waarbij constanten in de argumenten van SQL-functies worden opgegeven, is verbeterd. Er wordt push-down optimalisatie toegepast voor WHERE-expressies die niet-gerelateerde subquery's bevatten.
- De logica voor het verwerken van stack overflow is gewijzigd – bij het detecteren van onvoldoende geheugen voor de stack probeert de parser nu extra geheugen van de heap toe te wijzen, in plaats van een foutmelding "parser stack overflow" weer te geven.
- In JSON is het toegestaan om control characters op te geven in string literals van JSON5. De logica voor de operators "->" en "->>" is gewijzigd, wanneer de rechter operand een string bevat die alleen cijfers bevat (analogisch met PostgreSQL worden dergelijke operanden nu behandeld als een string).
- In de DEFAULT-waarde van tabelkolommen is het toegestaan om grote hexadecimale literals op te geven.
Bron: opennet.ru
