Merge lp:~brianaker/drizzle/951788 into lp:drizzle

Proposed by Brian Aker
Status: Merged
Merged at revision: 2556
Proposed branch: lp:~brianaker/drizzle/951788
Merge into: lp:drizzle
Diff against target: 75 lines (+21/-25)
1 file modified
client/server_detect.cc (+21/-25)
To merge this branch: bzr merge lp:~brianaker/drizzle/951788
Reviewer Review Type Date Requested Status
Drizzle Trunk Pending
Review via email: mp+106503@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'client/server_detect.cc'
2--- client/server_detect.cc 2012-04-23 08:25:39 +0000
3+++ client/server_detect.cc 2012-05-19 21:00:26 +0000
4@@ -2,6 +2,7 @@
5 * vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
6 *
7 * Copyright (C) 2011 Andrew Hutchings
8+ 2012 Ajaya K. Agrawal
9 *
10 * This program is free software; you can redistribute it and/or modify
11 * it under the terms of the GNU General Public License as published by
12@@ -19,43 +20,38 @@
13 */
14
15 #include "client/client_priv.h"
16+#include "client/server_detect.h"
17
18-#include <boost/regex.hpp>
19 #include <iostream>
20-#include <client/server_detect.h>
21
22 ServerDetect::ServerDetect(drizzle_con_st *connection) :
23 type(SERVER_UNKNOWN_FOUND),
24 version("")
25 {
26- boost::match_flag_type flags = boost::match_default;
27-
28- // FIXME: Detecting capabilities from a version number is a recipe for
29- // disaster, like we've seen with 15 years of JavaScript :-)
30- // Anyway, as there is no MySQL 7.x yet, this will do for tonight.
31- // I will get back to detect something tangible after the release (like
32- // presence of some table or its record in DATA_DICTIONARY.
33- boost::regex mysql_regex("^([3-6]\\.[0-9]+\\.[0-9]+)");
34- boost::regex drizzle_regex7("^(20[0-9]{2}\\.(0[1-9]|1[012])\\.[0-9]+)");
35- boost::regex drizzle_regex71("^([7-9]\\.[0-9]+\\.[0-9]+)");
36-
37 version= drizzle_con_server_version(connection);
38+
39+ const char *safe_query = "SHOW VARIABLES LIKE 'vc_release_id'";
40+ drizzle_result_st* result= NULL;
41+ drizzle_return_t ret_ptr;
42+ result = drizzle_query_str(connection, NULL, safe_query, &ret_ptr);
43
44- if (regex_search(version, drizzle_regex7, flags))
45- {
46- type= SERVER_DRIZZLE_FOUND;
47- }
48- else if (regex_search(version, drizzle_regex71, flags))
49- {
50- type= SERVER_DRIZZLE_FOUND;
51- }
52- else if (regex_search(version, mysql_regex, flags))
53- {
54- type= SERVER_MYSQL_FOUND;
55+ if(ret_ptr == DRIZZLE_RETURN_OK)
56+ {
57+ ret_ptr = drizzle_result_buffer(result);
58+ if(drizzle_result_row_count(result) > 0)
59+ {
60+ type = SERVER_DRIZZLE_FOUND;
61+ }
62+ else
63+ {
64+ type = SERVER_MYSQL_FOUND;
65+ }
66 }
67 else
68 {
69 std::cerr << "Server version not detectable. Assuming MySQL." << std::endl;
70 type= SERVER_MYSQL_FOUND;
71 }
72-}
73+
74+ drizzle_result_free(result);
75+}

Subscribers

People subscribed via source and target branches

to all changes: