SQLite 3.35 udgivelse

Udgivelsen af ​​SQLite 3.35, et letvægts DBMS designet som et plug-in bibliotek, er blevet offentliggjort. SQLite-koden distribueres i det offentlige domæne, dvs. kan bruges uden begrænsninger og gratis til ethvert formål. Økonomisk støtte til SQLite-udviklere ydes af et specielt oprettet konsortium, som omfatter virksomheder som Adobe, Oracle, Mozilla, Bentley og Bloomberg.

Vigtigste ændringer:

  • Tilføjet indbyggede matematiske funktioner (log2(), cos(), tg(), exp(), ln(), pow() osv.), der kan bruges i SQL. Aktivering af indbyggede funktioner kræver bygning med "-DSQLITE_ENABLE_MATH_FUNCTIONS"-indstillingen.
  • Implementeret understøttelse af udtrykket "ALTER TABLE DROP COLUMN" for at fjerne kolonner fra en tabel og rydde data, der tidligere er gemt i en given kolonne.
  • Implementeringen af ​​UPSERT (add-or-modify) operationen er blevet udvidet, hvilket gør det muligt gennem udtryk som "INSERT ... ON CONFLICT DO NOTHING/UPDATE" at ignorere en fejl eller udføre en opdatering i stedet for at indsætte, hvis det er umuligt at tilføje data gennem "INSERT" (hvis der f.eks. allerede findes en post, kan du lave OPDATERING i stedet for INDSÆT). Den nye version giver dig mulighed for at angive flere ON CONFLICT-blokke, som vil blive behandlet i rækkefølge. Den sidste "ON CONFLICT"-blok tillader, at konfliktdefinitionsparameteren udelades for at bruge "DO UPDATE".
  • Operationerne DELETE, INSERT og UPDATE understøtter RETURNING-udtrykket, som kan bruges til at vise indholdet af en slettet, indsat eller ændret post. For eksempel vil udtrykket "indsæt i ... returnerende id" returnere identifikatoren for den tilføjede linje, og "opdater ... sæt pris = pris * 1.10 returpris" vil returnere den ændrede prisværdi.
  • For Common Table Expressions (CTE), som tillader brugen af ​​midlertidige navngivne resultatsæt specificeret ved hjælp af WITH-sætningen, er valget mellem "MATERIALIZED" og "NOT MATERIALIZED" tilladt. "MATERIALIZED" indebærer cachelagring af forespørgslen angivet i visningen i en separat fysisk tabel og derefter hente data fra denne tabel, og med "NOT MATERIALIZED" vil der blive udført gentagne forespørgsler, hver gang visningen tilgås. SQLite var oprindeligt standard til "NOT MATERIALIZED", men er nu ændret til "MATERIALIZED" for CTE'er brugt mere end én gang.
  • Reduceret hukommelsesforbrug ved udførelse af en VACUUM-operation på databaser, der indeholder meget store TEXT- eller BLOB-værdier.
  • Der er blevet arbejdet på at øge ydeevnen af ​​optimerings- og forespørgselsplanlæggeren:
    • Tilføjede optimeringer ved brug af min og max funktionerne med "IN" udtrykket.
    • Udførelsen af ​​EXISTS-sætningen er blevet fremskyndet.
    • Implementeret udvidelse af underforespørgsler fra UNION ALL udtryk brugt som en del af JOIN.
    • Indekset bruges til IS NOT NULL-udtryk.
    • Sikrer, at "x ER NULL" og "x ER IKKE NULL" konverteres til FALSE eller TRUE for kolonner, der har attributten "NOT NULL".
    • Spring over at kontrollere fremmednøgler i UPDATE, hvis handlingen ikke ændrer de kolonner, der er knyttet til fremmednøglen.
    • Det er tilladt at flytte dele af en WHERE-blok til underforespørgsler, der indeholder vinduesfunktioner, så længe disse dele er begrænset til at arbejde med konstanter og kopier af udtryk fra PARTITION BY-blokke, der bruges i vinduesfunktioner.
  • Ændringer i kommandolinjegrænsefladen:
    • Tilføjet kommandoen ".filectrl data_version".
    • Kommandoerne ".once" og ".output" understøtter nu at sende output til en behandler kaldet ved hjælp af unavngivne rør ("|").
    • Argumenterne "stmt" og "vmstep" er blevet tilføjet til kommandoen ".stats" for at vise statistik om udtryk og virtuelle maskine-tællere.

Kilde: opennet.ru

Tilføj en kommentar