Hi all

So there's been various IRC and private mails discussion on this and I
wanted to drag it into public, since people are doing things
independent of each other.

We've made an attempt to release a release candidate with "drizzle" as
the package name and "7.1.31-rc" as the version =>
drizzle-7.1.31-rc.tar.gz. It turns out a few tests don't pass after
you've done bzr tag 7.1.31-rc:

main.comments

This tests the use of comments to hide a command from lower level
versions of MySQL/Drizzle:
SELECT ... /*!72301 ... */;
Naturally, when version number is less than 7.23.01 the result
changes. I've changed the result file to match the new reality. (Side
comment, this brings the test back to testing what it is originally
intended to test. It's been kind of redundant with the 2011.xx.yy
versions.)

regression.732849
main.drizzledump_restore
main.drizzledump

Drizzledump uses the version number to "detect" whether it is
connected to a MySQL or Drizzle server. For several tests it now
thinks it is talking to the newly released MySQL 7.1.31 version and
uses "SET NAMES utf8" which creates an error. This is a well known
anti-pattern in the javascript world, made me smile a little to see
that it apparently is not exclusive to JavaScript programmers. Even
so, the easiest fix for tonight is simply to change the logic to say
that anything from version 7 up is Drizzle. Since all MySQL forks are
still on 5.x, we will have a couple years before it breaks again. I
will file a low-hanging-fruit bug to really detect Drizzle from
something solid (like existence of DATA_DICTIONARY, or something
drizzle specific inside the DATA_DICTIONARY).

=== modified file 'client/server_detect.cc'
--- client/server_detect.cc     2011-08-07 20:48:33 +0000
+++ client/server_detect.cc     2012-02-05 20:07:56 +0000
@@ -30,8 +30,13 @@
 {
   boost::match_flag_type flags = boost::match_default;

-  boost::regex mysql_regex("^([3-9]\\.[0-9]+\\.[0-9]+)");
-  boost::regex drizzle_regex("^(20[0-9]{2}\\.(0[1-9]|1[012])\\.[0-9]+)");
+  // FIXME: Detecting capabilities from a version number is a recipe for
+  // disaster, like we've seen with 15 years of JavaScript :-)
+  // Anyway, as there is no MySQL 7.x yet, this will do for tonight.
+  // I will get back to detect something tangible after the release (like
+  // presence of some table or its record in DATA_DICTIONARY.
+  boost::regex mysql_regex("^([3-6]\\.[0-9]+\\.[0-9]+)");
+  boost::regex drizzle_regex("^([7-9]\\.[0-9]+\\.[0-9]+)");

   version= drizzle_con_server_version(connection);

main.mysql_protocol

Also a SET NAMES utf8 error, I assume it is fixed by the above. I'm
now running make test. Will go to sleep before it finishes though.


main.drizzle_client

This one is a bit unclear to me and doesn't seem to be connected to the above.

DESCRIBE tablename;

should output:

+-------+---------+------+---------+-----------------+-----------+
| Field | Type    | Null | Default | Default_is_NULL | On_Update |
+-------+---------+------+---------+-----------------+-----------+
| i     | INTEGER | YES  |         | YES             |           |
| j     | INTEGER | NO   |         | NO              |           |
| k     | INTEGER | YES  |         | YES             |           |
+-------+---------+------+---------+-----------------+-----------+

but instead outputs

+-------+---------+------+---------+-----------------+-----------+
| Field | Type    | Null | Default | Default_is_NULL | On_Update |
+-------+---------+------+---------+-----------------+-----------+
| i     | INTEGER |    1 |         |               1 |           |
| j     | INTEGER |    0 |         |               0 |           |
| k     | INTEGER |    1 |         |               1 |           |
+-------+---------+------+---------+-----------------+-----------+


I already checked and when I use a drizzle client to connect to a
mysqld it also outputs the "Yes" / "No" so it probably isn't related
to server detection. On this last one I will continue tomorrow and all
help is welcome.

henrik

-- 
henrik.i...@avoinelama.fi
+358-40-8211286 skype: henrik.ingo irc: hingo
www.openlife.cc

My LinkedIn profile: http://www.linkedin.com/profile/view?id=9522559

_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : drizzle-discuss@lists.launchpad.net
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to