Upgrading SQLite.swift

This document outlines breaking changes between major versions and provides guidance on how to update your code.

Upgrading from 0.13 to 0.14

Version 0.14 introduced several API changes to improve consistency and clarity.

  • Expression.asSQL() is now description: The asSQL() method on Expression has been removed. Expressions now conform to CustomStringConvertible, so you can get their SQL representation using the description property or by converting them to a String.

    Before (0.13): let sql = email.asSQL()

    After (0.14):

    let sql = email.description
    // or
    let sql = "\(email)"
  • Statement.prepareRowIterator() is now on Connection: The prepareRowIterator() method has been moved from Statement to Connection. This provides a more consistent API for preparing queries.

    Before (0.13):

    let statement = try db.prepare("SELECT * FROM users")
    let rowIterator = statement.prepareRowIterator()

    After (0.14):

    let rowIterator = try db.prepareRowIterator("SELECT * FROM users")
    // or with a query object
    let rowIterator = try db.prepareRowIterator(users)
  • Connection.registerTokenizer has been removed: The functionality to register custom FTS4 tokenizers has been removed from the public API.

  • Setter.asSQL() is now description: Similar to Expression, the asSQL() method on Setter has been replaced by conformance to CustomStringConvertible.

    Before (0.13):

    let setter = email <- "new@example.com"
    let sql = setter.asSQL()

    After (0.14):

    let setter = email <- "new@example.com"
    let sql = setter.description
    // or
    let sql = "\(setter)"