00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include "client_priv.h"
00022
00023 #include <boost/regex.hpp>
00024 #include <iostream>
00025 #include <client/server_detect.h>
00026
00027 ServerDetect::ServerDetect(drizzle_con_st *connection) :
00028 type(SERVER_UNKNOWN_FOUND),
00029 version("")
00030 {
00031 boost::match_flag_type flags = boost::match_default;
00032
00033 boost::regex mysql_regex("^([3-9]\\.[0-9]+\\.[0-9]+)");
00034 boost::regex drizzle_regex("^(20[0-9]{2}\\.(0[1-9]|1[012])\\.[0-9]+)");
00035
00036 version= drizzle_con_server_version(connection);
00037
00038 if (regex_search(version, drizzle_regex, flags))
00039 {
00040 type= SERVER_DRIZZLE_FOUND;
00041 }
00042 else if (regex_search(version, mysql_regex, flags))
00043 {
00044 type= SERVER_MYSQL_FOUND;
00045 }
00046 else
00047 {
00048 std::cerr << "Server version not detectable. Assuming MySQL." << std::endl;
00049 type= SERVER_MYSQL_FOUND;
00050 }
00051 }