SQLite 3.35 version

Utgivningen av SQLite 3.35, ett lätt DBMS designat som ett plugin-bibliotek, har publicerats. SQLite-koden distribueras i den offentliga domänen, d.v.s. kan användas utan begränsningar och gratis för alla ändamål. Ekonomiskt stöd till SQLite-utvecklare tillhandahålls av ett speciellt skapat konsortium, som inkluderar företag som Adobe, Oracle, Mozilla, Bentley och Bloomberg.

Huvudändringar:

  • Lade till inbyggda matematiska funktioner (log2(), cos(), tg(), exp(), ln(), pow(), etc.) som kan användas i SQL. Aktivering av inbyggda funktioner kräver att du bygger med alternativet "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Implementerat stöd för uttrycket "ALTER TABLE DROP COLUMN" för att ta bort kolumner från en tabell och rensa data som tidigare lagrats i en given kolumn.
  • Implementeringen av UPSERT (lägg till eller modifiera)-operationen har utökats, vilket gör det möjligt att genom uttryck som "INSERT ... ON CONFLICT DO NOTHING/UPDATE" ignorera ett fel eller utföra en uppdatering istället för att infoga om det är omöjligt att lägga till data genom "INSERT" (till exempel, om en post redan finns, kan du göra UPPDATERA istället för INFOGA). Den nya versionen låter dig ange flera ON CONFLICT-block, som kommer att behandlas i ordning. Det sista "ON CONFLICT"-blocket tillåter att konfliktdefinitionsparametern utelämnas för att kunna använda "DO UPDATE".
  • Operationerna DELETE, INSERT och UPDATE stöder uttrycket RETURNING, som kan användas för att visa innehållet i en raderad, infogat eller modifierad post. Till exempel kommer uttrycket "insert into ... returning id" returnera identifieraren för den tillagda raden, och "update ... set price = price * 1.10 returning price" returnerar det ändrade prisvärdet.
  • För Common Table Expressions (CTE), som tillåter användning av temporära namngivna resultatuppsättningar specificerade med hjälp av WITH-satsen, är valet av lägena "MATERIALIZED" och "NOT MATERIALIZED" tillåtet. "MATERIALISERAD" innebär cachning av frågan som anges i vyn i en separat fysisk tabell och sedan hämta data från denna tabell, och med "NOT MATERIALISED" kommer upprepade frågor att utföras varje gång vyn öppnas. SQLite hade ursprungligen som standard "NOT MATERIALIZED", men har nu ändrats till "MATERIALIZED" för CTE som används mer än en gång.
  • Minskad minnesförbrukning när du utför en VAKUUM-operation på databaser som innehåller mycket stora TEXT- eller BLOB-värden.
  • Arbete har gjorts för att öka prestandan för optimeraren och frågeplaneraren:
    • Lade till optimeringar när du använder min- och max-funktionerna med uttrycket "IN".
    • Exekveringen av EXISTS-satsen har påskyndats.
    • Implementerad expansion av underfrågor från UNION ALL-uttryck som används som en del av JOIN.
    • Indexet används för IS NOT NULL-uttryck.
    • Säkerställer att "x ÄR NULL" och "x ÄR INTE NULL" konverteras till FALSE eller TRUE för kolumner som har attributet "NOT NULL".
    • Hoppa över att kontrollera främmande nycklar i UPDATE om operationen inte ändrar kolumnerna som är associerade med den främmande nyckeln.
    • Det är tillåtet att flytta delar av ett WHERE-block till underfrågor som innehåller fönsterfunktioner, så länge som dessa delar är begränsade till att arbeta med konstanter och kopior av uttryck från PARTITION BY-block som används i fönsterfunktioner.
  • Ändringar i kommandoradsgränssnittet:
    • Lade till kommandot ".filectrl data_version".
    • Kommandona ".once" och ".output" stöder nu överföring av utdata till en hanterare som kallas med hjälp av namnlösa rör ("|").
    • Argumenten "stmt" och "vmstep" har lagts till i kommandot ".stats" för att visa statistik om uttryck och virtuella maskinräknare.

Källa: opennet.ru

Lägg en kommentar