Lancement de la base de données SQLite 3.31 avec prise en charge des colonnes générées

PubliĂ© la sortie SQLite 3.31.0, une base de donnĂ©es lĂ©gĂšre sous forme de bibliothĂšque intĂ©grable. Le code SQLite est distribuĂ© dans le domaine public, c'est-Ă -dire qu'il peut ĂȘtre utilisĂ© sans restrictions et gratuitement Ă  des fins diverses. Le soutien financier des dĂ©veloppeurs de SQLite est assurĂ© par un consortium spĂ©cialement créé, comprenant des entreprises telles qu'Adobe, Oracle, Mozilla, Bentley et Bloomberg.

Principales modifications:

  • Ajout du support de colonnes gĂ©nĂ©rĂ©es (colonnes calculĂ©es), permettant de dĂ©finir lors de la crĂ©ation d'une table une colonne dont la valeur est automatiquement calculĂ©e en fonction du contenu d'une autre colonne. Les colonnes gĂ©nĂ©rĂ©es peuvent ĂȘtre Ă  la fois virtuelles (formĂ©es Ă  la volĂ©e Ă  chaque accĂšs) et stockĂ©es dans la base de donnĂ©es (conservĂ©es Ă  chaque mise Ă  jour des colonnes associĂ©es). Le contenu des colonnes gĂ©nĂ©rĂ©es est accessible uniquement en mode lecture (les modifications s'effectuent uniquement en modifiant la valeur d'une autre colonne impliquĂ©e dans le calcul). Par exemple :

    CREATE TABLE t1(
    a INTEGER PRIMARY KEY,
    b INT,
    c TEXT,
    d INT GENERATED ALWAYS AS (a*abs(b)) VIRTUAL,
    e TEXT GENERATED ALWAYS AS (substr(c,b,b+1)) STORED
    );

  • AjoutĂ©es PRAGMA trusted_schema, configuration SQLITE_DBCONFIG_TRUSTED_SCHEMA et l'option de compilation «-DSQLITE_TRUSTED_SCHEMA», permettant de gĂ©rer l'activation de la protection contre les attaques via la modification du schĂ©ma de donnĂ©es dans la base de donnĂ©es. Avec la protection active, l'utilisation de fonctions SQL (non marquĂ©es comme SQLITE_INNOCUOUS) est limitĂ©e dans les dĂ©clencheurs, les vues, les expressions CHECK et DEFAULT, les index et les colonnes gĂ©nĂ©rĂ©es. L'utilisation de tables virtuelles est Ă©galement dĂ©sactivĂ©e dans les dĂ©clencheurs et les vues, sauf si la table virtuelle est explicitement dĂ©clarĂ©e avec le drapeau SQLITE_VTAB_INNOCUOUS.
  • Mise en Ɠuvre de la possibilitĂ© d'attribuer certaines propriĂ©tĂ©s aux fonctions SQL dans les applications SQLITE_INNOCUOUS (fonctions inoffensives qui ne dĂ©pendent pas des paramĂštres externes et ne peuvent pas ĂȘtre utilisĂ©es pour effectuer des actions malveillantes) et SQLITE_DIRECTONLY (appel direct uniquement dans les requĂȘtes SQL, sans possibilitĂ© d'application dans les dĂ©clencheurs, vues et structures de schĂ©ma de donnĂ©es);
  • Ajout d'un module uuid avec des fonctions pour le traitement de UUID (RFC-4122);
  • AjoutĂ©e PRAGMA hard_heap_limit et la fonction sqlite3_hard_heap_limit64() pour gĂ©rer la taille maximale du tas;
  • Dans la PRAGMA function_list ajout de la sortie du type, des propriĂ©tĂ©s et du nombre d'arguments de chaque fonction;
  • Dans la table virtuelle DBSTAT ajoutĂ© mode d'agrĂ©gation des donnĂ©es;
  • sqlite3_open_v2() inclut l'option SQLITE_OPEN_NOFOLLOW, qui permet d'interdire l'ouverture de liens symboliques ;
  • Pour l'argument PATH, transmis aux fonctions JSON, le support de la notation d'array «#-N» a Ă©tĂ© ajoutĂ© ;
  • Dans le systĂšme de distribution de mĂ©moire lookaside le support de deux pools de mĂ©moire distincts a Ă©tĂ© mis en Ɠuvre, chacun pouvant ĂȘtre utilisĂ© pour allouer des blocs de tailles diffĂ©rentes (cette sĂ©paration permet d'Ă©tendre l'application du systĂšme lookaside tout en rĂ©duisant la taille du buffer allouĂ© par connexion, passant de 120 Ă  48 Ko) ;
  • Le support de PRAGMA legacy_file_format, qui Ă©tait incompatible avec VACUUM, les colonnes gĂ©nĂ©rĂ©es et les index dĂ©croissants (le support du format hĂ©ritĂ© peut ĂȘtre restaurĂ© via le drapeau SQLITE_DBCONFIG_LEGACY_FILE_FORMAT dans sqlite3_db_config()).

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster