SQLite 3.35 eldono

La eldono de SQLite 3.35, malpeza DBMS desegnita kiel aldonaĵa biblioteko, estis publikigita. La SQLite-kodo estas distribuita en la publika domeno, t.e. povas esti uzata sen limigo kaj senpage por ajna celo. Financa subteno por SQLite-programistoj estas provizita de speciale kreita konsorcio, kiu inkluzivas kompaniojn kiel Adobe, Oracle, Mozilla, Bentley kaj Bloomberg.

Ĉefaj ŝanĝoj:

  • Aldonitaj enkonstruitaj matematikaj funkcioj (log2(), cos(), tg(), exp(), ln(), pow(), ktp.) uzeblaj en SQL. Ebligi enkonstruitajn funkciojn postulas konstrui kun la opcio "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Efektivigita subteno por la esprimo "ALTER TABLE DROP COLUMN" por forigi kolumnojn de tabelo kaj malplenigi datumojn antaŭe konservitajn en donita kolumno.
  • La efektivigo de la operacio UPSERT (aldonu aŭ modifi) estis pligrandigita, permesante per esprimoj kiel "INSERT ... ON CONFLICT DO NOTHING/UPDATE" ignori eraron aŭ plenumi ĝisdatigon anstataŭ enmeti se estas neeble aldoni. datumoj per "INSERT" (ekzemple, se rekordo jam ekzistas, Vi povas fari UPDATE anstataŭ INSERT). La nova versio permesas al vi specifi plurajn ON KONFLIT-blokojn, kiuj estos prilaboritaj en ordo. La lasta bloko "SU KONFLIKTO" permesas la konfliktdifinan parametron esti preterlasita por uzi "DOJ ĜISDATIGI".
  • La operacioj DELETE, INSERT kaj UPDATE subtenas la RETURNING-esprimon, kiu povas esti uzata por montri la enhavon de forigita, enigita aŭ modifita rekordo. Ekzemple, la esprimo "enigi en ... revenantan id" redonos la identigilon de la aldonita linio, kaj "ĝisdatigi ... fiksita prezo = prezo * 1.10 revenanta prezo" redonos la ŝanĝitan prezvaloron.
  • Por Komunaj Tabelesprimoj (CTE), kiuj permesas la uzon de provizoraj nomitaj rezultaroj specifitaj per la WITH-deklaro, la elekto de "MATERIALIZITA" kaj "NE MATERIALIZITA" reĝimoj estas permesita. "MATERIALIZITA" implicas konservi la demandon specifita en la vido en aparta fizika tabelo kaj poste alporti datumojn de ĉi tiu tabelo, kaj kun "NE MATERIALIZITA" ripetaj demandoj estos faritaj ĉiufoje kiam la vido estas alirita. SQLite origine defaŭlte al "NE MATERIALIZITA", sed nun ŝanĝiĝis al "MATERIALIZITA" por CTEoj uzataj pli ol unufoje.
  • Reduktita memorkonsumo dum farado de VACUUM-operacio sur datumbazoj kiuj inkluzivas tre grandajn TEXT aŭ BLOB-valorojn.
  • Laboro estis farita por pliigi la agadon de la optimumiganto kaj demandplanisto:
    • Aldonitaj optimumigoj kiam vi uzas la min kaj max funkcioj kun la "IN" esprimo.
    • Ekzekuto de la deklaro EXISTS estis akcelita.
    • Efektivigita vastiĝo de subdemandoj de UNION ALL-esprimoj uzataj kiel parto de JOIN.
    • La indekso estas uzata por IS NOT NULL-esprimoj.
    • Certigas, ke "x IS NULL" kaj "x IS NOT NULL" estas konvertitaj al FALSA aŭ VERA por kolumnoj kiuj havas la atributon "NE NULL".
    • Prenu kontroli fremdajn ŝlosilojn en UPDATE se la operacio ne ŝanĝas la kolumnojn asociitajn kun la fremda ŝlosilo.
    • Estas permesite movi partojn de WHERE-bloko en subdemandojn enhavantajn fenestrofunkciojn, kondiĉe ke tiuj partoj estas limigitaj al laboro kun konstantoj kaj kopioj de esprimoj de PARTITION BY-blokoj uzitaj en fenestraj funkcioj.
  • Ŝanĝoj en la komandlinia interfaco:
    • Aldonita komando ".filectrl data_version".
    • La komandoj ".once" kaj ".output" nun subtenas transdonan produktaĵon al prizorganto nomata uzante nenomitajn pipojn ("|").
    • La argumentoj "stmt" kaj "vmstep" estis aldonitaj al la komando ".stats" por montri statistikojn pri esprimoj kaj virtualaj maŝinaj nombriloj.

fonto: opennet.ru

Aldoni komenton