anchor.diff:  ;;; AF_LOCAL sockets should really be folded into usocket. For now, just implement CCL and SBCL support.
   #+(or ccl sbcl)
   (defun mysql-local-connect (&key (path #P"/var/run/mysqld/mysqld.sock") (username "") (password "") database)
  +  "Connect to a MySQL over a local (AF_LOCAL) socket and begin the MySQL Handshake.
  +   Returns a QMYND:MYSQL-CONNECTION object or signals a QMYND:MYSQL-ERROR.
  +   Accepts the following keyword arguments:
  +    PATH: The path of the local socket to connect to. (default: #P\"/var/run/mysqld/mysqld.sock\")
  +    USERNAME: User to authenticate as.
  +    PASSWORD: Password to authenticate with.
  +    DATABASE: What database to use upon connecting. (default: nil)"
     ;; Open Socket
     (let* ((socket
              #+ccl (ccl:make-socket :address-family :file
  
positive.code:     (mysql-connect-do-handshake connection username password database :ssl nil)))
  
  (defmethod mysql-disconnect ((c mysql-base-connection))
    (when (mysql-connection-connected c)
      (with-mysql-connection (c)
        (send-command-quit))))
  
negative.code: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; Simple SQL Queries
  (defun mysql-query (connection query-string)
    "Send a SQL Query over the connection using the MySQL Text Protocol.
     For queries that return rows, returns two values:
      A vector of rows, each of which is a vector of columns.
      A vector of column descriptors.
     For queries that don't return rows, returns a QMYND:RESPONSE-OK-PACKET.
     May signal a QMYND:MYSQL-ERROR."
    (with-mysql-connection (connection)
      (send-command-query query-string)))
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;; Prepared Statements
  (defun mysql-statement-prepare (connection query-string)
    "Prepares a SQL Query using the MySQL Prepared Statement Protocol.
     Returns a QMYND:MYSQL-PREPARED-STATEMENT.
     NB: The QMYND:MYSQL-PREPARED-STATEMENT remembers the
         QMYND:MYSQL-CONNECTION it was prepared for."
    (with-mysql-connection (connection)
      (send-command-statement-prepare query-string)))
  
  (defmethod mysql-statement-execute ((statement mysql-prepared-statement) &key parameters)
    "Executes a QMYND:MYSQL-PREPARED-STATEMENT.
     Accepts the following keyword arguments:
      PARAMETERS: a sequence of parameters for the placeholders in the prepared statement, if any."
    (let ((connection (mysql-prepared-statement-connection statement)))
      (unless connection (error 'invalid-prepared-statement))
      (with-mysql-connection (connection)
        (send-command-statement-execute statement :parameters parameters))))
  
  (defmethod mysql-statement-close ((statement mysql-prepared-statement))
    "Deallocates and invalidates STATEMENT."
    (let ((connection (mysql-prepared-statement-connection statement)))
      (unless connection (error 'invalid-prepared-statement))
      (with-mysql-connection (connection)
  