Κυκλοφορία του DBMS SQLite 3.35

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

Βασικές αλλαγές:

  • Προστέθηκαν ενσωματωμένες μαθηματικές συναρτήσεις (log2(), cos(), tg(), exp(), ln(), pow(), κ.λπ.) που μπορούν να χρησιμοποιηθούν στην SQL. Η ενεργοποίηση των ενσωματωμένων λειτουργιών απαιτεί δημιουργία με την επιλογή "-DSQLITE_ENABLE_MATH_FUNCTIONS".
  • Υλοποιήθηκε η υποστήριξη για την έκφραση "ALTER TABLE DROP COLUMN" για την αφαίρεση στηλών από έναν πίνακα και τη διαγραφή δεδομένων που είχαν αποθηκευτεί προηγουμένως σε μια δεδομένη στήλη.
  • Η υλοποίηση της λειτουργίας UPSERT (προσθήκη-ή-τροποποίηση) έχει επεκταθεί, επιτρέποντας μέσω εκφράσεων όπως "INSERT ... ON FLICT DO NOTHING/UPDATE" να αγνοηθεί ένα σφάλμα ή να πραγματοποιηθεί μια ενημέρωση αντί της εισαγωγής, εάν είναι αδύνατη η προσθήκη δεδομένα μέσω του "INSERT" (για παράδειγμα, εάν υπάρχει ήδη μια εγγραφή, μπορείτε να κάνετε UPDATE αντί για INSERT). Η νέα έκδοση σάς επιτρέπει να καθορίσετε πολλά μπλοκ ON CONFLICT, τα οποία θα υποβληθούν σε επεξεργασία με τη σειρά. Το τελευταίο μπλοκ "ON CONFLICT" επιτρέπει την παράλειψη της παραμέτρου ορισμού διένεξης προκειμένου να χρησιμοποιηθεί η "DO UPDATE".
  • Οι λειτουργίες DELETE, INSERT και UPDATE υποστηρίζουν την έκφραση RETURNING, η οποία μπορεί να χρησιμοποιηθεί για την εμφάνιση των περιεχομένων μιας διαγραμμένης, εισαγόμενης ή τροποποιημένης εγγραφής. Για παράδειγμα, η έκφραση "εισάγετε στο ... επιστρεφόμενο αναγνωριστικό" θα επιστρέψει το αναγνωριστικό της γραμμής που προστέθηκε και η "ενημέρωση ... ορίστε τιμή = τιμή * 1.10 τιμή επιστροφής" θα επιστρέψει την αλλαγμένη τιμή τιμής.
  • Για κοινές εκφράσεις πίνακα (CTE), οι οποίες επιτρέπουν τη χρήση προσωρινών συνόλων αποτελεσμάτων που προσδιορίζονται με τη χρήση της πρότασης WITH, επιτρέπεται η επιλογή των λειτουργιών "MATERIALIZED" και "NOT MATERIALIZED". Το "MATERIALIZED" υποδηλώνει την προσωρινή αποθήκευση του ερωτήματος που καθορίζεται στην προβολή σε έναν ξεχωριστό φυσικό πίνακα και στη συνέχεια την ανάκτηση δεδομένων από αυτόν τον πίνακα, και με το "NOT MATERIALIZED" θα εκτελούνται επαναλαμβανόμενα ερωτήματα κάθε φορά που γίνεται πρόσβαση στην προβολή. Το SQLite αρχικά ήταν προεπιλεγμένο σε "NOT MATERIALIZED", αλλά τώρα έχει αλλάξει σε "MATERIALIZED" για CTE που χρησιμοποιούνται περισσότερες από μία φορές.
  • Μειωμένη κατανάλωση μνήμης κατά την εκτέλεση μιας λειτουργίας VACUUM σε βάσεις δεδομένων που περιλαμβάνουν πολύ μεγάλες τιμές TEXT ή BLOB.
  • Έχει γίνει δουλειά για να αυξηθεί η απόδοση του βελτιστοποιητή και του σχεδιασμού ερωτημάτων:
    • Προστέθηκαν βελτιστοποιήσεις κατά τη χρήση των συναρτήσεων min και max με την έκφραση "IN".
    • Η εκτέλεση της δήλωσης ΥΠΑΡΧΕΙ επιταχύνθηκε.
    • Υλοποιήθηκε η επέκταση των υποερωτημάτων από τις εκφράσεις UNION ALL που χρησιμοποιούνται ως μέρος του JOIN.
    • Το ευρετήριο χρησιμοποιείται για εκφράσεις IS NOT NULL.
    • Διασφαλίζει ότι τα "x IS NULL" και "x IS NOT NULL" μετατρέπονται σε FALSE ή TRUE για στήλες που έχουν το χαρακτηριστικό "NOT NULL".
    • Παραλείψτε τον έλεγχο των ξένων κλειδιών στο UPDATE εάν η λειτουργία δεν αλλάξει τις στήλες που σχετίζονται με το ξένο κλειδί.
    • Επιτρέπεται η μετακίνηση τμημάτων ενός μπλοκ WHERE σε υποερωτήματα που περιέχουν συναρτήσεις παραθύρου, εφόσον αυτά τα μέρη περιορίζονται στην εργασία με σταθερές και αντίγραφα παραστάσεων από μπλοκ PARTITION BY που χρησιμοποιούνται στις συναρτήσεις παραθύρου.
  • Αλλαγές στη διεπαφή της γραμμής εντολών:
    • Προστέθηκε η εντολή ".filectrl data_version".
    • Οι εντολές ".once" και ".output" υποστηρίζουν τώρα τη μετάδοση της εξόδου σε έναν χειριστή που ονομάζεται χρησιμοποιώντας σωλήνες χωρίς όνομα ("|").
    • Τα ορίσματα "stmt" και "vmstep" έχουν προστεθεί στην εντολή ".stats" για εμφάνιση στατιστικών στοιχείων σε εκφράσεις και μετρητές εικονικών μηχανών.

Πηγή: opennet.ru

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