     var stmt : OpaquePointer? = nil
     
     let rc = sqlite3_prepare_v2(handle, sqlexpr.statement, -1, &stmt, nil)
-    guard rc == SQLITE_OK else {
+    guard rc == SQLITE_OK, stmt != nil else {
       throw Error.CannotPrepareSQL(rc, message(for: rc))
     }
     defer { if let stmt = stmt { sqlite3_finalize(stmt) } }

  }

  // MARK: - Raw Queries
  func fetchRows(_ stmt     : OpaquePointer?,
                 _ optAttrs : [ Attribute ]? = nil,
                 cb         : ( AdaptorRecord ) throws -> Void) throws


  // MARK: - Transactions
  
  private(set) public var isTransactionInProgress : Bool = false
  
  public func begin() throws {
    guard !isTransactionInProgress
