diff options
Diffstat (limited to 'db-mysql/mysql-client-info.lisp')
-rw-r--r-- | db-mysql/mysql-client-info.lisp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/db-mysql/mysql-client-info.lisp b/db-mysql/mysql-client-info.lisp new file mode 100644 index 0000000..9b791df --- /dev/null +++ b/db-mysql/mysql-client-info.lisp @@ -0,0 +1,51 @@ +;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*- +;;;; ************************************************************************* +;;;; FILE IDENTIFICATION +;;;; +;;;; Name: mysql-client-info.lisp +;;;; Purpose: Check mysql client version +;;;; Programmer: Kevin M. Rosenberg +;;;; Date Started: April 2004 +;;;; +;;;; This file, part of CLSQL, is Copyright (c) 2004 by Kevin M. Rosenberg +;;;; +;;;; CLSQL users are granted the rights to distribute and use this software +;;;; as governed by the terms of the Lisp Lesser GNU Public License +;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL. +;;;; ************************************************************************* + +(in-package #:mysql) + +(declaim (inline mysql-get-client-info)) + +(defvar *mysql-client-info* nil) + +(eval-when (:compile-toplevel :load-toplevel :execute) + (uffi:def-function ("mysql_get_client_info" mysql-get-client-info) + () + :module "mysql" + :returning :cstring) + + (setf *mysql-client-info* (uffi:convert-from-cstring (mysql-get-client-info))) + + + (when (and (stringp *mysql-client-info*) + (plusp (length *mysql-client-info*))) + (cond + ((eql (schar *mysql-client-info* 0) #\3) + (pushnew :mysql-client-v3 cl:*features*)) + ((eql (schar *mysql-client-info* 0) #\4) + (pushnew :mysql-client-v4 cl:*features*) + (when (and (>= (length *mysql-client-info*) 3) + (string-equal "4.1" *mysql-client-info* :end2 3)) + (pushnew :mysql-client-v4.1 cl:*features*))) + ((eql (schar *mysql-client-info* 0) #\5) + (pushnew :mysql-client-v5 cl:*features*) + (when (and (>= (length *mysql-client-info*) 3) + (string-equal "5.1" *mysql-client-info* :end2 3)) + (pushnew :mysql-client-v5.1 cl:*features*))) + ((eql (schar *mysql-client-info* 0) #\6) + (pushnew :mysql-client-v6 cl:*features*)) + (t + (error "Unknown mysql client version '~A'." *mysql-client-info*))))) + |