SQLite er et open source, multiplatform, gratis og lille C-bibliotek, der implementerer en selvstændig, indlejret, transaktionsmæssig, serverløs og nulkonfigureret SQL-databasemotor. Det er verdens mest brugte SQL-databasemotor.
Funktioner et overblik
Nøglefunktioner omfatter support til isolerede, atomenergige, holdbare og konsekvente transaktioner, SQL92-implementering, databasefiler kan deles frit mellem computere, understøtter databaser op til 2 terabyte, understøttelse af gigabyte-størrelse blobs og strenge, lille kodefod, som såvel som en nem at bruge og meget enkel API (Application Programming Interface).
SQLite kræver desuden ikke indledende konfiguration eller yderligere administration, giver udviklere mulighed for at gemme en komplet database i en enkelt diskpladisk diskfil, som er perfekt til brug af applikationsfilformater, uden eksterne afhængigheder, i TCL (Tool Command Language) bindinger og omfattende dokumentation.
Bindinger til mange andre programmeringssprog er tilgængelige separat. Dens kildekode kommenteres godt, og det kommer med en selvstændig CLI (Command-Line Interface) klient, der er designet fra offset til administration af SQLite databaser.
Hvad kan jeg bruge det til?
SQLite-databasemotoren kan bruges til ethvert formål, personligt eller kommercielt. Foreslåede anvendelser til SQLite omfatter database til gadgets, website database, stand-in til en virksomhed RDBMS (Relational Database Management System) samt applikationsfilformat.
Under emhætten og understøttede OS'er
SQLite-distributionen leveres med et enkeltstående kommandolinjeadgangsprogram (sqlite), som kan bruges til at administrere en SQLite-database, og som tjener som et eksempel på, hvordan man bruger SQLite-biblioteket. Den er skrevet udelukkende i ANSI-C programmeringssprog.
Understøttede desktop-operativsystemer omfatter GNU / Linux, Mac OS X og Microsoft Windows. Understøttede mobile operativsystemer omfatter Android og iOS. Det er blevet testet med både 32-bit og 64-bit hardware platforme, og det er nemt at transportere til andre operativsystemer.
Hvad er nyt i denne udgave:
- Højdepunkterne i denne udgave omfatter støtte til PostgreSQL-stil UPSERT og forbedret ydeevne, især for ORDER BY LIMIT forespørgsler.
Hvad er nyt i version:
- Udnyt de atomære skrivefunktioner i F2FS-filsystemet, når det er tilgængeligt, for meget reducerede transaktionsomkostninger. Dette kræver for øjeblikket SQLITE_ENABLE_BATCH_ATOMIC_WRITE kompileringstid.
- Tillad ATTACH- og DETACH-kommandoer til at arbejde inde i en transaktion.
- Tillad UDEN ROWID virtuelle tabeller, der kan skrives, hvis PRIMARY KEY indeholder nøjagtigt en kolonne.
- Den "fsync () & quot; der opstår efter at overskriften er skrevet i en WAL-nulstilling, bruger nu synkroniseringsindstillingerne til kontrolpunkter. Dette betyder, at det vil bruge en "fullfsync" på Mac'er, hvis PRAGMA checkpoint_fullfsync sættes på.
- Funktionen sqlite3_sourceid () forsøger at registrere, om kildekoden er blevet ændret fra det, der er tjekket ind i versionskontrollen, og hvis der er ændringer, vises de sidste fire tegn i versionshacket som "alt1" eller "alt2". Målet er at opdage utilsigtede og / eller uforsigtige ændringer. En forfalskning kan undergrave denne funktion.
- Forbedret afnotering af kolonne navne til CREATE TABLE AS udtalelser med en samlet forespørgsel på højre side.
- Færre "stat () & quot; systemopkald udstedt af Unix VFS.
- Forbedret LIKE optimeringen, så den fungerer med en ESCAPE-klausul.
- Forbedret PRAGMA integity_check og PRAGMA quick_check for at opdage uklar korrupsi, som de tidligere manglede. Opdater også begge pragmas, så de returnerer fejltekst snarere end SQLITE_CORRUPT, når de oplever korruption i poster.
- Forespørgselsplanlæggeren foretrækker nu at implementere FROM-clause-underforespørgsler ved hjælp af samrutiner, snarere ved hjælp af optimering af forespørgselsfladere. Støtte til brugen af samrutiner for underforespørgsler kan ikke længere være deaktiveret.
- Videregiver oplysninger om! =, IS, IS NOT, NOT NULL, og er NULL-begrænsninger i xBestIndex-metoden for virtuelle tabeller.
- Forbedret den virtuelle CSV-tabel, så den accepterer den sidste række af input, hvis den endelige linjeskift mangler.
- Fjern det sjældent brugte "scratch" hukommelsesallokator. Udskift det med SQLITE_CONFIG_SMALL_MALLOC konfigurationsindstillingen, der giver SQLite et tip om, at store hukommelsesallokeringer bør undgås, når det er muligt.
- Tilføjet sværm virtuelt bord til den eksisterende union virtuelle tabeludvidelse.
- Tilføjet virtuel tabel sqlite_dbpage for at give direkte adgang til sider i databasefilen. Kildekoden er indbygget i sammenlægningen og aktiveres ved hjælp af opsætningen -DSQLITE_ENABLE_DBPAGE_VTAB kompileringstid.
- Tilføj en ny type virtuelt bord fts5vocab - "instance" - der giver direkte adgang til et FTS5 fuldtekst indeks på det lavest mulige niveau.
- Fjern et opkald til rand_s () i Windows VFS, da det forårsagede problemer i Firefox på nogle ældre laptops.
- Kildekoden src / shell.c til kommandolinjeskallen er ikke længere under versionskontrol. Denne fil genereres nu som en del af byggeprocessen.
- Diverse mikrooptimeringer reducerer CPU-forbruget med ca. 2,1%.
- Fejlrettelser:
- Fix en fejlfinding () -opgørelse, der er opdaget af OSSFuzz. Billet cb91bf4290c211d
- Løs et uhyggeligt hukommelseslækage i sqlite3_result_pointer (). Billet 7486aa54b968e9b
- Undgå en mulig brug-efter-fri fejl ved at udsætte skemaåbninger, indtil forespørgselsplanlæggeren er færdig med at køre. Billet be436a7f4587ce5
- Anvend kun indekser på udtryk for at optimere ORDER BY eller GROUP BY, hvis COLLATE er korrekt. Billet e20dd54ab0e4383
- Fix en påstandefejl, der opstod, når udtrykket i et index-på-udtryk er virkelig en konstant. Billet aa98619ad08ddca
- Fix en påstået fejl, der kunne opstå efter PRAGMA reverse_unordered_selects. Billet cb91bf4290c211d
- Fix en segfault, der kan forekomme for forespørgsler, der bruger tabelværdige funktioner i en IN eller EXISTS-undersøgende. Billet b899b6042f97f5
- Fix et potentielt integeroverløbsproblem, når du kompilerer et særligt forfærdeligt fælles tabeludtryk. Dette var et andet problem opdaget af OSSFuzz. Check-in 6ee8cb6ae5.
- Løs en potentiel udenfor bundet læsning, når du spørger om en korrupt databasefil, et problem, der er opdaget af Natalie Silvanovich fra Google Project Zero. Check-in 04925dee41a21f.
Hvad er nyt i version 3.20.1:
- Version 3.20.1-patch-udgivelsen ændrer to linjer kode i sqlite3_result_pointer () -grensesnittet for at løse en sjælden hukommelselækage.
Hvad er nyt i version 3.9.2:
- SQLite version 3.9.2 er en patch release, der fastsætter to uklare fejl.
Hvad er nyt i version 3.8.9:
- Nye funktioner i denne udgave omfatter kommandoen PRAGMA index_xinfo, sqlite3_status64 () -grensesnittet og kommandoen ".dbinfo" på kommandolinjeskallen.
Hvad er nyt i version 3.8.8.2:
- Udgivelsen af 3.8.8.2-patch løser et enkelt mindre problem: Det sikrer, at sqlite3_wal_checkpoint (TRUNCATE) -operationen altid vil afkorte log-loggen, selvom loggen allerede var nulstillet og ikke indeholdt noget nyt indhold. Det er uklart, om dette er en fejlrettelse eller en ny funktion.
- Noget som dette ville normalt gå ind i den næste regelmæssigt planlagte udgivelse, men en fremtrædende SQLite-bruger havde brug for ændringen travlt, så vi var glade for at skynde det ud via denne patch.
- Der er ingen grund til at opgradere, medmindre du faktisk har brug for den forbedrede adfærd af sqlite3_wal_checkpoint (TRUNCATE).
Hvad er nyt i version 3.8.8.1:
- Løs en fejl i sorteringslogikken, der er til stede siden version 3.8.4, der kan forårsage, at output vises i den forkerte rækkefølge på forespørgsler, der indeholder en ORDER BY-bestemmelse, en LIMIT-bestemmelse, og som har ca. 60 eller flere kolonner i Resultatet sæt. Billet f97c4637102a3ae72b79.
- SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
- SHA1 for sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e
Hvad er nyt i version 3.8.8:
- Nye funktioner:
- Tilføjet kommandoen PRAGMA data_version, der kan bruges til at bestemme, om en databasefil er blevet ændret ved en anden proces.
- Tilføjet SQLITE_CHECKPOINT_TRUNCATE indstillingen til sqlite3_wal_checkpoint_v2 () interface med tilsvarende forbedringer til PRAGMA wal_checkpoint.
- Tilføjet sqlite3_stmt_scanstatus () -fladen, kun tilgængelig, når den er udarbejdet med SQLITE_ENABLE_STMT_SCANSTATUS.
- Den sqlite3_table_column_metadata () er forbedret for at fungere korrekt på UDEN ROWID-tabeller og for at kontrollere, om der findes en tabel, hvis kolonnens parameter er NULL. Interfacet er nu også inkluderet i bygningen som standard uden at kræve SQLITE_ENABLE_COLUMN_METADATA kompileringstid.
- Tilføjet SQLITE_ENABLE_API_ARMOR kompileringstid-indstillingen.
- Tilføjet SQLITE_REVERSE_UNORDERED_SELECTS kompileringstid-indstillingen.
- Tilføjet opsætningen SQLITE_SORTER_PMASZ kompileringstid og SQLITE_CONFIG_PMASZ starttidspunkt.
- Tilføjet SQLITE_CONFIG_PCACHE_HDRSZ indstillingen til sqlite3_config (), der gør det lettere for applikationer at bestemme den passende mængde hukommelse til brug med SQLITE_CONFIG_PAGECACHE.
- Antallet af rækker i en VALUES-klausul er ikke længere begrænset af SQLITE_LIMIT_COMPOUND_SELECT.
- Tilføjet den eval.c belastbare udvidelse, der implementerer en eval () SQL-funktion, der rekursivt evaluerer SQL.
- Funktionsforbedringer:
- Reducer antallet af memcpy () -operationer, der er involveret i at afbalancere et b-træ, for 3,2% samlet præstationsforøgelse.
- Forbedringer i omkostningsoverslagene for optimering af skip-scan.
- Den automatiske indeksoptimering kan nu generere et delvis indeks, hvis det er relevant.
- Fejlrettelser:
- Sørg for holdbarhed efter et strømtab med "PRAGMA journal_mode = TRUNCATE" ved at kalde fsync () lige efter afkortning af journalfilen.
- Forespørgselsplanlæggeren erkender nu, at en hvilken som helst kolonne i højre side af et LEFT JOIN kan være NULL, selvom denne kolonne har en IKKE NULL-begrænsning. Undgå at forsøge at optimere ud NULL test i disse tilfælde. Fix for billet 6f2222d550f5b0ee7ed.
- Sørg for, at ORDER BY sætter rækker i stigende rækkefølge, selvom DISTINCT-operatøren er implementeret ved hjælp af et faldende indeks. Fix for billet c5ea805691bfc4204b1cb9e.
- Løs data løb, der kan opstå under stress, når du kører med mange tråde i delt cache-tilstand, hvor nogle af trådene åbner og lukker forbindelser.
- Løs obskure crash bugs fundet af amerikansk fuzzy lop. Billet a59ae93ee990a55.
- Omgå en GCC-optimeringsfejl (for gcc 4.2.1 på MacOS 10.7), der fik R-Tree-udvidelsen til at beregne ukorrekte resultater, når de blev compileret med -O3.
- Andre ændringer:
- Deaktiver brugen af strchrnul () C-bibliotekets rutine, medmindre det er specifikt aktiveret ved hjælp af alternativet -DHAVE_STRCHRNULL kompileringstid.
- Forbedringer i effektiviteten og nøjagtigheden af sandsynligheden for sandsynligheden (), sandsynligvis () og usandsynligt () SQL
- SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
- SHA1 for sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905
Hvad er nyt i version 3.8.7.4:
- Denne udgivelsesrettelse tilføjer i en mutex, der kræves af ændringerne i 3.8.7.3-patchen, men blev udeladt ved et uheld. Mutexen blev ikke påkrævet af nogen af de interne SQLite-tests, men Firefox kolliderer uden det. Testtilfælde er blevet tilføjet for at sikre, at mutex aldrig igen bliver savnet.
Hvad er nyt i version 3.8.7.3:
- Fejlrettelse: Sørg for, at de cachelagrede KeyInfo-objekter (en intern abstraktion, der ikke er synlige for programmet), ikke går forkert, når de bruges i delet cache-tilstand og ofte lukker og genåbner nogle databaseforbindelser, mens de forlader andre databaseforbindelser på samme delte cache kontinuerligt. Billet e4a18565a36884b00edf.
- Fejlrettelse: Anerkend at enhver kolonne i højre side af et LEFT JOIN kan være NULL, selvom kolonnen har en IKKE NULL-begrænsning. Anvend ikke optimeringer, der antager kolonnen, er aldrig NULL. Billet 6f2222d550f5b0ee7ed.
- SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
- SHA1 for sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261
Hvad er nyt i version 3.8.7.2:
- Den primære årsag til denne udgivelse er at forbedre ROLLBACK-kommandoen, så den tillader at køre forespørgsler på den samme databaseforbindelse for at fortsætte, så længe ROLLBACK ikke ændrer skemaet. I alle tidligere versioner af SQLite vil en ROLLBACK forårsage ventende forespørgsler til at stoppe med det samme og returnere SQLITE_ABORT eller SQLITE_ABORT_ROLLBACK. Afventer forespørgsler afbrydes stadig, hvis ROLLBACK ændrer databaseskemaet, men efter denne patch-udgivelse kan forespørgslen fortsætte med at køre, hvis skemaet er umodificeret.
- Ud over ROLLBACK-forbedringen indeholder denne patch release også rettelser til tre uklare fejl.
Hvad er nyt i version 3.8.7.1:
- Den primære årsag til denne fejlfinding er at løse et problem med opdatering af værdien af felter i slutningen af en tabel, der blev tilføjet ved hjælp af ALTER TABLE ADD COLUMN. Dette problem 1 optrådte først i 3.8.7-udgivelsen.
- En anden mindre irritation i 3.8.7-udgivelsen var, at Android-bygningen forsøgte at bruge strchrnul () -funktionen fra standard C-biblioteket, men den funktion er ikke tilgængelig på Android. Android-bygger måtte tilføje -DHAVE_STRCHRNUL = 0 for at løse problemet. Denne patch løser det, så Android-build skal nu fungere uden nogen ændringer.
- Funktionen af PRAGMA journal_mode = TRUNCATE er blevet forbedret, så den påberåber fsync () efter afkortning af journalfilen, når PRAGMA synkron = FULL. Dette hjælper med at bevare transaktionens holdbarhed i tilfælde af strømforstyrrelser, der forekommer kort tid efter forpligten.
- Endelig blev et par langvarige og uklare problemer forbundet med kør UPDATE og DELETE on VIEW fixet.
Hvad er nyt i version 3.8.7:
- De fleste af ændringerne fra den foregående udgivelse har været mikrooptimeringer designet til at hjælpe SQLite med at køre lidt hurtigere. Hver enkelt optimering har en umådelig lille præstationspåvirkning. Men forbedringerne tilføjer. Målt på en veldefineret arbejdsbyrde (som SQLite-udviklerne bruger som proxy for en typisk applikations arbejdsbyrde) ved hjælp af cachegrind på Linux og kompileret med gcc 4.8.1 og -Os på x64 linux, gør den nuværende udgivelse mere end 20% mere arbejde for det samme antal CPU-cyklusser i forhold til den foregående udgave. Cachegrind er ikke en ægte CPU, og den arbejdsbyrde der anvendes til måling er kun en proxy. Så din præstation kan variere. Vi forventer at se omkring halvdelen af den målte og rapporterede forbedring i real-world applikationer. 10% er mindre end 20%, men det er stadig ret godt, tror vi.
- Denne udgivelse indeholder et nyt sæt C-sprog-grænseflader, der har usigneret 64-bit i stedet for signerede 32-bit-længdeparametre. De nye API'er giver ikke nye muligheder. Men de gør det lettere at skrive applikationer, som er mere modstandsdygtige over for sårbarheder i helhedsflow.
- Denne udgave indeholder også en ny sortering, der kan bruge flere tråde til at hjælpe med store sorteringsoperationer. (Sortoperationer er nogle gange påkrævet for at gennemføre ORDER BY og / eller GROUP BY-klausuler og er næsten altid påkrævet for CREATE INDEX.) Sorteringsværdien er slået fra som standard og skal aktiveres ved hjælp af kommandoen PRAGMA-tråde SQL. Bemærk, at multi-threaded sorteringen giver hurtigere realtidsydelse til store sorter, men det bruger også flere CPU-cyklusser og mere energi.
Hvad er nyt i version 3.8.3.1:
- SQLite version 3.8.3.1 løser en fejlpræsentation i versioner 3.8.1, 3.8.2 og 3.8.3, der kan forårsage forespørgsler for at udelade gyldige rækker. Opgradering fra disse versioner anbefales.
- Problemet opstår kun, hvis SQLite kompileres med enten SQLITE_ENABLE_STAT3 eller SQLITE_ENABLE_STAT4 kompileringstid muligheder. I så fald, hvis en forespørgsel har en WHERE-klausul, der indeholder udtryk som denne:
- hvor (expr1 eller expr2 eller ... eller exprN) og kolonne er ikke nul
- Når alle expr1 via exprN er egnede til brug ved indekser, kan SQLite under fejlsøgning fejlagtigt konvertere kolonnen IS NOT NULL til "kolonne & gt; NULL". Men sidstnævnte udtryk er aldrig sandt, og derfor vil forespørgslen ikke returnere nogen rækker.
Hvad er nyt i version 3.8.3:
- Tilføjet support til almindelige tabeludtryk og WITH-klausulen.
- Tilføjet printf () SQL-funktionen.
- Tilføjet SQLITE_DETERMINISTIC som en valgfri bit i det fjerde argument til sqlite3_create_function () og beslægtede grænseflader, hvilket giver applikationer mulighed for at oprette nye funktioner, der kan udregnes ud fra indre sløjfer, når de har konstante argumenter.
- Tilføj SQLITE_READONLY_DBMOVED fejlkode, returneret i starten af en transaktion, for at angive, at den underliggende databasefil er blevet omdøbt eller flyttet fra under SQLite.
- Tillad vilkårlige udtryk, herunder funktionsopkald og underforespørgsler, i filnavn-argumentet til ATTACH.
- Tillad, at en VALUES-klausul anvendes, hvor som helst en SELECT-sætning er gyldig.
- Ret PRNG brugt af sqlite3_randomness (N, P) når påkaldt med N == 0. Automatisk reset efter en gaffel () på unix.
- Forbedre spellfix1 virtuelle tabel, så den kan søge effektivt af rowid.
- Funktionsforbedringer.
- Forbedringer af kommentarerne i VDBE-byte-kodedisplayet, når du kører EXPLAIN.
- Tilføj "% token_class" direktivet til LEMON parser generator og brug det til at forenkle grammatikken.
- Skift LEMON-kildekoden for at undgå at kalde C-biblioteksfunktioner, som OpenBSD anser for farlige. (Eks: sprintf).
- Fejlrettelse: Afslut ikke et felt i kommandolinjens shell CSV-importfunktion, når der kommer et undslippet dobbelt-quote i slutningen af en CRLN-linje.
- SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
- SHA1 for sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee
Kommentarer ikke fundet