anchor.diff:      (metadata- (driver-type conn) query)))
   
   (defun next-row (query)
  -  (let ((row (dbi:fetch query)))
  -    (iter (for lst on row by #'cddr)
  -          (collect (cadr lst)))))
  +  (let* ((cl-mysql:*type-map* *mysql-string-to-type-map*))
  +    (let ((row (dbi:fetch query)))
  +      (iter (for lst on row by #'cddr)
  +            (collect (cadr lst))))))
  
positive.code: 
  (defgeneric metadata- (type query))
  
  (defmethod metadata- ((type (eql :mysql)) query)
    (let* ((result (slot-value query 'dbd.mysql::%result))
           (fields (car (cl-mysql::result-set-fields result))))
      (iter (for (name . type) in fields)
            (collect (cons (string-downcase name)
                           type)))))
  
  (defmethod metadata- ((type (eql :sqlite3)) query)
    (let* ((statement (dbi.driver:query-prepared query))
  
negative.code: (in-package :cl-user)
  (defpackage :dipper.dbi
    (:use :cl :iterate :dipper.util :dipper.uri :alexandria)
    (:export :with-connection :query :next-row :metadata))
  
  (in-package :dipper.dbi)
  