Den 9. april blev version 3.53.0 af den kompakte, tværplatforme indlejrede database management system (DBMS) udgivet. SQLite. Projektkoden er skrevet i C og distribueres som public domain.
Ændringer:
- Fejl rettet WAL-reset database korrumpering fejl. Se den tidligere nyhed SQLite 3.51.3 med en rettelse til en potentiel databasebeskadigelse i WAL-tilstand.
- Tilføjet bibliotek til formatering af SQL-forespørgselsresultater Query Result Formatter (QRF) for at sikre læsevenlighed på skærmen med fast bredde skrifttype.
- En metode er tilføjet format pull-requesten på GitHub TCL-grænsefladen for at få adgang til QRF fra TCL.
- QRF bruges nu i kommandolinjeværktøjet sqlite til at formatere forespørgselsresultater, hvilket forbedrer deres visning.
- Nye funktioner i SQL:
- Forbedret kommandoen ALTER TABLE for at muliggøre tilføjelse og fjernelse af NOT NULL og CHECK begrænsninger.
- Operator REINDEX EXPRESSIONS udfører reindeksering af udtryksindekser. Nyttig til genopretning forældede udtryksindekser.
- Now TEMP triggers kan ændre og/eller forespørge data fra hovedskemaets tabeller.
- Forbedret kommandoen VACUUM INTO: hvis den bruges som destinationsadresse for et filnavn i URI-format, der indeholder forespørgselsparameteren reserve=N (hvor N er et tal fra 0 til 255), sættes mængden af reservering for den oprettede kopi af databasen til N.
- Nye SQL-funktioner tilføjet:
- Opdateringer i kommandolinjeværktøjet:
- Betydelige forbedringer i kommandoen .mode.
- Takket være QRF-udvidelsen forbedret resultatformattering. For eksempel justeres tal nu til højre som standard i tabeludskrivning.
- Som standard bruges QRF nu under interaktiv brug af kommandolinjeværktøjet til at vise forespørgselsresultater i blokke dannet med Unicode bloktegnesymboler, hvilket har forbedret læsbarheden. Den forældede udskrivningsformat bruges ved batchudførelse af kommandoer for at sikre kompatibilitet.
- Enkelt (ikke-omsluttede i citationstegn) semikolon i slutningen kommandoer med punkt ignoreres uden advarsel. Dette kan føre til inkompatibilitet!
- Kommandoerne .testcase og .check er rettet. De fungerer nu faktisk og bruges i scripts, der er en del af det standard testkit for SQLite, der følger med kildeteksten.
- Kommando arguments, der matcher mønstrene *.sql eller *.txt og repræsenterer navne på ikke-tomme filer, læses og fortolkes som scripts, der indeholder SQL-operatører og/eller [kommandoer med punkt]((https://sqlite.org/cli.html#dotcmd).
- Nu kan .timer kommandoen tage 'once' som argument for at aktivere timeren kun ved udførelsen af den næste SQL-forespørgsel.
- Den nye parameter —timeout S i .progress kommandoen medfører, at SQL-forespørgsler afbrydes efter S sekunder.
- .indexes kommandoen er ændret, så argumentet PATTERN nu matcher navnet på indekset i stedet for navnet på den indekserede tabel (hvilket gør, at argumentet PATTERN nu er virkelig nyttigt). Desuden er der tilføjet flere nye muligheder til .indexes kommandoen.
- Forbedringer i C API:
- sqlite3_str_truncate()
- sqlite3_str_free()
- sqlite3_carray_bind_v2()
- skal du videregive filterfunktionen. Grundlæggende er et filter blot en funktion, der modtager en beskedinstans og returnerer sqlite3_prepare_v3() har fået muligheden SQLITE_PREPARE_FROM_DDL, som tillader implementeringer af virtuelle tabeller sikkert at forberede SQL-operatorer, der er hentet fra databassens skema.
- Tilføjet konstant SQLITE_UTF8_ZT, som kan bruges som kodningsparameter i funktionerne sqlite3_result_text64() eller sqlite3_bind_text64() for at angive, at værdien er kodet i UTF-8 og afsluttes med null.
- skal du videregive filterfunktionen. Grundlæggende er et filter blot en funktion, der modtager en beskedinstans og returnerer sqlite3_limit() har fået muligheden SQLITE_LIMIT_PARSER_DEPTH.
- skal du videregive filterfunktionen. Grundlæggende er et filter blot en funktion, der modtager en beskedinstans og returnerer sqlite3_db_config() har fået muligheden SQLITE_DBCONFIG_FP_DIGITS. Se også punkt 9b nedenfor.
- Forbedringer i forespørgselsplanlæggeren:
- For EXCEPT, INTERSECT og UNION anvendes altid sorterings- og sammensmeltning algoritmen, da den næsten altid fungerer hurtigere end brugen af hash-tabeller.
- Forbedringer i mekanismen til valg af join rækkefølge ved udførelse af store, flerlede forbindelser i stjerneopstillingen.
- Optimering af konvertering af EXISTS til JOIN er blevet forbedret, så indlagte join-betingelser ikke nødvendigvis skal befinde sig i de indre løkker, så længe alle afhængigheder til løkkerne for konvertering af EXISTS til JOIN findes i de ydre løkker.
- Optimering af omit-noop-join, så den kan springe en kæde af forbindelser over, der ikke påvirker resultatet.
- Optimering af forespørgsler, der bruger GROUP BY e1 ORDER BY e2, hvor e1 og e2 er ens, undtagen rækkefølge af sorteringen ASC/DESC, ved hjælp af et enkelt indeks.
- Optimering af DISTINCT operatoren i virtuelle tabeller i de tilfælde, hvor resultatmængden fra forespørgslen ikke helt svarer til betingelsen ORDER BY.
- I sessionsudvidelse nye grænseflader er blevet tilføjet, der gør det muligt for applikationen at tilføje ændringer enkeltvis til sqlite3_changegroup objektet:
- Forbedringer i konvertering mellem flydende tal ↔ tekst.
- Koden er fuldstændig omskrevet for at forbedre ydeevnen.
- Nu rundes der som standard op til 17 signifikante cifre i stedet for 15, som det var i alle tidligere versioner. Dette tal kan ændres ved hjælp af funktionen sqlite3_db_config med indstillingen SQLITE_DBCONFIG_FP_DIGITS (se punkt 6g ovenfor).
- Muligheden for selvgenoprettelse af indeks for at løse problemet. forældede udtryksindekser.
- I kommandolinjeværktøjet sqlite3_rsync tilføjet indstillingen -p|—port.
- Supporten til Windows RT.
- JavaScript/WASM
- VFS opfs-wl er tilføjet, funktionsmæssigt identisk med opfs, men bruger Web Locks til låsninger, hvilket muliggør en mere retfærdig fordeling af låsninger end i opfs-protokollen. opfs-wl kræver funktionen Atomics.waitAsync(), så nyere versioner af browsere er nødvendige for at få det til at fungere sammenlignet med opfs.
Kilde: linux.org.ru
