anchor.diff:                    by (lambda (a b) (format nil "~A, ~A" a b)))))
   
   (defun dump-table (conn table data-stream
  -                   &key (columns "*") limit incremental last-value)
  +                   &key (columns "*") limit incremental last-value progress)
     (bind ((limit-spec (if limit (format nil "LIMIT ~D" limit) ""))
            (where-spec (if (and incremental last-value)
                            (format nil "WHERE ~A > ?" incremental)
  
positive.code:             :limit limit
              :output-path output-path
              :read-receipt-path read-receipt-path
              :write-receipt-path write-receipt-path))))
  
  (defun dump-resultset (stream resultset incremental comparator)
    (iter (for row = (next-row resultset))
          (while row)
          (format stream #?"~{~A~^\t~}~%" row)
          (when incremental
            (for val = (elt row incremental))
            (reducing val by (lambda (a b) (if (funcall comparator a b) b a))))))
  
  (defparameter *type-comparator-map*
    (plist-hash-table (list :int      #'<
  
negative.code:     (("output") "PATH" "Store results to PATH. Default: stdout")
      (("receipt") "PATH" "Read and write receipt file at PATH.")
      (("write-receipt") "PATH" "Override the receipt destination specified by --receipt.")
      (("config") "PATH" "Read config from PATH.")
      (("progress") "N" "Print a dot for every N dumped rows.")))
  
  (defun parse-options (argv)
    (let ((options (make-hash-table))
  