Κυκλοφορία του DBMS SQLite 3.31 με υποστήριξη για στήλες που δημιουργούνται

Που δημοσιεύθηκε απελευθέρωση SQLite 3.31.0, ένα ελαφρύ DBMS σχεδιασμένο ως βιβλιοθήκη προσθήκης. Ο κώδικας SQLite διανέμεται ως δημόσιος τομέας, δηλ. μπορεί να χρησιμοποιηθεί χωρίς περιορισμούς και δωρεάν για οποιονδήποτε σκοπό. Οικονομική υποστήριξη για προγραμματιστές SQLite παρέχεται από μια ειδικά δημιουργημένη κοινοπραξία, η οποία περιλαμβάνει εταιρείες όπως οι Adobe, Oracle, Mozilla, Bentley και Bloomberg.

Ο κύριος αλλαγές:

  • Προστέθηκε υποστήριξη δημιουργήθηκαν στήλες (υπολογισμένες στήλες), οι οποίες σας επιτρέπουν να ορίσετε μια στήλη όταν δημιουργείτε έναν πίνακα του οποίου η τιμή υπολογίζεται αυτόματα με βάση τα περιεχόμενα μιας άλλης στήλης. Οι στήλες που δημιουργούνται μπορούν να είναι είτε εικονικές (δημιουργούνται εν κινήσει με κάθε πρόσβαση) είτε αποθηκευμένες στη βάση δεδομένων (αποθηκεύονται κάθε φορά που ενημερώνονται οι σχετικές στήλες). Τα περιεχόμενα των στηλών που δημιουργούνται είναι διαθέσιμα μόνο σε λειτουργία ανάγνωσης (οι αλλαγές γίνονται μόνο μέσω τροποποίησης της τιμής σε άλλη στήλη που συμμετέχει στον υπολογισμό). Για παράδειγμα:

    ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ t1(
    ένα ΑΚΕΡΑΙΟ ΠΡΩΤΟΓΕΝΙΚΟ ΚΛΕΙΔΙ,
    b INT,
    γ ΚΕΙΜΕΝΟ,
    d ΔΗΜΙΟΥΡΓΕΙΤΑΙ ΠΑΝΤΑ ΩΣ (a*abs(b)) ΕΙΚΟΝΙΚΟ,
    e ΚΕΙΜΕΝΟ ΠΟΥ ΔΗΜΙΟΥΡΓΕΙΤΑΙ ΠΑΝΤΑ ΟΠΩΣ (substr(c,b,b+1)) ΑΠΟΘΗΚΕΥΕΤΑΙ
    );

  • Προστέθηκε το PRAGMA trusted_schema, ρύθμιση SQLITE_DBCONFIG_TRUSTED_SCHEMA και την επιλογή συναρμολόγησης "-DSQLITE_TRUSTED_SCHEMA", που σας επιτρέπουν να ελέγχετε τη συμπερίληψη προστασίας έναντι επίθεση μέσω τροποποίησης του σχήματος δεδομένων στη βάση δεδομένων. Η ενεργή προστασία περιορίζει τη χρήση συναρτήσεων SQL (χωρίς την επισήμανση SQLITE_INNOCUOUS) σε κανόνες ετικέτας, προβολές, δηλώσεις CHECK και DEFAULT, ευρετήρια και στήλες που δημιουργούνται. Η χρήση εικονικών πινάκων σε κανόνες ετικέτας και προβολές είναι επίσης απενεργοποιημένη, εκτός εάν ο εικονικός πίνακας δηλώνεται ρητά με τη σημαία SQLITE_VTAB_INNOCUOUS.
  • Εφάρμοσε τη δυνατότητα εκχώρησης ιδιοτήτων σε συναρτήσεις SQL που ορίζονται σε εφαρμογές SQLITE_INNOCUOUS (ακίνδυνες λειτουργίες που δεν εξαρτώνται από εξωτερικές παραμέτρους και δεν μπορούν να χρησιμοποιηθούν για την εκτέλεση κακόβουλων ενεργειών) και SQLITE_DIRECTONLY (μόνο άμεση κλήση σε ερωτήματα SQL, χωρίς δυνατότητα χρήσης σε εναύσματα, προβολές και διαγράμματα δομής δεδομένων).
  • Προστέθηκε ενότητα Ουάου με την υλοποίηση λειτουργιών για την επεξεργασία UUID (RFC-4122).
  • Προστέθηκε το PRAGMA hard_heap_limit και λειτουργία sqlite3_hard_heap_limit64() για έλεγχο του μέγιστου μεγέθους σωρού.
  • Στην ΠΡΑΓΜΑ λίστα_λειτουργίας προστέθηκε έξοδος τύπου, ιδιοτήτων και αριθμού ορισμάτων κάθε συνάρτησης.
  • Στον εικονικό πίνακα DBSTAT προστέθηκε λειτουργία συγκέντρωσης δεδομένων.
  • Η sqlite3_open_v2() υλοποιεί την επιλογή SQLITE_OPEN_NOFOLLOW, η οποία σας επιτρέπει να απενεργοποιήσετε το άνοιγμα συμβολικών συνδέσμων.
  • Για επιχείρημα PATH, πέρασε στις συναρτήσεις JSON, πρόσθεσε υποστήριξη για συμβολισμό πίνακα "#-N".
  • Στο σύστημα διανομής μνήμης στην άκρη του βλέμματος έχει υλοποιηθεί υποστήριξη για δύο ξεχωριστές δεξαμενές μνήμης, καθεμία από τις οποίες μπορεί να χρησιμοποιηθεί για την εκχώρηση μπλοκ διαφορετικών μεγεθών (ο διαχωρισμός σας επιτρέπει να επεκτείνετε τη χρήση του συστήματος lookaside, ενώ μειώνετε το μέγεθος του buffer που εκχωρείται σε κάθε σύνδεση από 120 σε 48 KB);
  • Η υποστήριξη PRAGMA έχει διακοπεί legacy_file_format, το οποίο δεν ήταν συμβατό με το VACUUM, τις στήλες που δημιουργήθηκαν και τα φθίνοντα ευρετήρια (η υποστήριξη μορφής παλαιού τύπου μπορεί να επιστραφεί μέσω της σημαίας SQLITE_DBCONFIG_LEGACY_FILE_FORMAT στο sqlite3_db_config()).

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο