[Maria-developers] wl#127 - changes to mtr for sphinx
Hi, Kristian, I've done the changes - would you mind to review the patch ? Somehow bzr didn't send the email automatically - could not connect to the server, so I'll attach the output of bzr bundle to this email. If you dont have time to review it (or don't want to :), please remove yourself from a "reviewer" field in WL#127. Thanks! Regards, Sergei P.S. there are three patches attached - three bundles. the first one fixes ndb. as ndb is hacked in mtr and is all over the place, I could not change mtr without touching ndb related pieces, and I need to make sure that I didn't break them. I found out that ndb doesn't even build - without my changes, so I fixed that. I think we need to build ndb at on some buildbot slaves, just to make sure we don't break it. Or remove it completely - as it's clearly not used, and not expected to be used, ndb users should use telco trees. the second contain mtr changes. the third adds sphinx suite.
Sergei Golubchik <sergii@pisem.net> writes:
Kristian, I've done the changes - would you mind to review the patch ?
Sure! I will review after finishing with XtraDB merge.
the first one fixes ndb. as ndb is hacked in mtr and is all over the place, I could not change mtr without touching ndb related pieces, and I need to make sure that I didn't break them. I found out that ndb doesn't even build - without my changes, so I fixed that. I think we need to build ndb at on some buildbot slaves, just to make sure we don't break it. Or remove it completely - as it's clearly not used, and not expected to be used, ndb users should use telco trees.
The main reason that ndb files are still there is that otherwise we will get a conflict from bzr on every single ndb change we merge from MySQL. But I agree with removing in whatever way works without introducing such merge conflicts. Alternatively, if you're willing to fix any problems, I can enable ndb on one of the buildbot hosts, probably the `hardy-amd64-fulltest' one, which already runs lots of tests.
the second contain mtr changes.
Have you considered pushing this to 5.1 also? At MySQL, there was the policy that we kept mysql-test-run.pl mostly identical across the different versions. This made it _much_ easier to maintain external tools (like pushbuild, release build scripts) that need to work across different versions. (I haven't checked your patch yet as to whether this makes particular sense for your changes, just wanted to mention it). - Kristian.
Sergei Golubchik <sergii@pisem.net> writes:
Kristian, I've done the changes - would you mind to review the patch ?
P.S. there are three patches attached - three bundles.
the first one fixes ndb. as ndb is hacked in mtr and is all over the place, I could not change mtr without touching ndb related pieces, and I need to make sure that I didn't break them. I found out that ndb doesn't even build - without my changes, so I fixed that. I think we need to build ndb at on some buildbot slaves, just to make sure we don't break it. Or remove it completely - as it's clearly not used, and not expected to be used, ndb users should use telco trees.
the second contain mtr changes.
the third adds sphinx suite.
My main comment is that there should be some documentation of the My::Suite class, as I write in a comment below. Other than that I think it is ok to push. I have a number of small remarks inline below, you can fix what you agree with and ignore the rest. There are also a couple of questions to check that my understanding is correct. - Kristian.
=== modified file 'BUILD/SETUP.sh' --- BUILD/SETUP.sh 2010-03-30 16:16:57 +0000 +++ BUILD/SETUP.sh 2010-08-02 20:20:47 +0000
@@ -178,8 +178,7 @@ max_no_qc_configs="$SSL_LIBRARY --with-plugins=max --without-query-cache" max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent" max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server --with-libevent" -# Disable NDB in maria max builds -max_configs=$max_no_ndb_configs
One might think that this change would cause BUILD/xxx-max to include NDB. But it seems it doesn't. I think the reason is that storage/ndb/plug.in does not list itself as a member of the "max" configuration. Is my understanding correct, so that this particular change is just a cleanup of redundant code with no functional change?
=== modified file 'mysql-test/lib/My/ConfigFactory.pm' --- mysql-test/lib/My/ConfigFactory.pm 2010-04-28 12:52:24 +0000 +++ mysql-test/lib/My/ConfigFactory.pm 2010-08-02 20:33:34 +0000
+ my ($res, $after); + + while (m/(.*?)\@((?:\w+\.)+)(#?[-\w]+)/gi) { + my ($before, $group_name, $option_name)= ($1, $2, $3); + $after = $'; + chop($group_name); + + my $from_group= $config->group($group_name) + or croak "There is no group named '$group_name' that ", + "can be used to resolve '$option_name'"; + + my @auto_options = ( + 'port' => sub { fix_port($self, $config, $group_name, $group) }, + '#port' => sub { fix_port($self, $config, $group_name, $group) }, + ); + my $value= $from_group->value($option_name, @auto_options); + $res .= $before.$value; + } + m/\G.*/;
What is the purpose of this m// ? Probably it is left-over code from previous version that was forgotten to be deleted.
=== added file 'mysql-test/lib/My/Suite.pm' --- mysql-test/lib/My/Suite.pm 1970-01-01 00:00:00 +0000 +++ mysql-test/lib/My/Suite.pm 2010-08-02 20:33:34 +0000 @@ -0,0 +1,7 @@ +package My::Suite; + +sub config_files { () } +sub servers { () } + +bless { };
I think we need some documentation here (or elsewhere, but comments in this file seems a good place) of what the purpose is of this class (and derived classes in particular), and how they must be used. Eg. that a derived class should be placed in suite.pm, and explanation about what the methods should do. And the need to return an instance at the end. Etc.
=== modified file 'mysql-test/lib/mtr_cases.pm' --- mysql-test/lib/mtr_cases.pm 2010-06-14 16:58:52 +0000 +++ mysql-test/lib/mtr_cases.pm 2010-08-02 20:33:34 +0000
@@ -2471,7 +2473,7 @@ }
-sub ndbcluster_wait_started($$){ +sub ndbcluster_wait_started {
Did you intend to change this? (well, those ($$) annoy me as well, but my guess is that like me, you prefer to keep them to ease merges, but introduced this while trying different things in the code).
@@ -2639,7 +2641,7 @@
sub ndbcluster_start ($) { - my $cluster= shift; + my ($cluster) = @_;
Same as above: intended?
+ unless ($opt_start_dirty) + {
Hm, I prefer to stick to if (! ... )
@@ -3082,7 +3187,7 @@ path => $exe_mysql, args => \$args, output => '/dev/null', - error => '/dev/null' + error => '/dev/null',
Intended?
+sub fix_servers($) { + my ($tinfo) = @_; + return () unless $config; + my %servers = ( + 'mysqld.' => { + SORT => 300, + START => \&mysql_server_start, + WAIT => \&mysql_server_wait, + }, + 'mysql_cluster.' => { + SORT => 200, + START => \&ndbcluster_start, + WAIT => \&ndbcluster_wait_started, + }, + 'cluster_config.ndb_mgmd.' => { + SORT => 210, + START => undef, + }, + 'cluster_config.ndbd.' => { + SORT => 220, + START => undef, + }, + $suites{$tinfo->{suite}}->servers() + ); + for ($config->groups()) { + while (my ($re,$prop) = each %servers) { + @$_{'SORT','START'} = @$prop{'SORT','START'} if $_->{name} =~ /^$re/;
Well, the dots '.' in the keys of %servers will need to be \escaped, or they will match any char, not just '.'. (I tend to prefer not interpolating strings as regexps, rather use qr/mysql_cluster\./ to make things clearer. Or just use substr() and eq.)
@@ -4810,8 +4960,7 @@ return 1; }
- my $is_mysqld= grep ($server eq $_, mysqlds()); - if ($is_mysqld) + if ($server->name() =~ /^mysqld./)
That trailing dot in the regexp is suspicious. Did you mean \. ?
=== added directory 'mysql-test/suite/sphinx' === added file 'mysql-test/suite/sphinx/my.cnf' --- mysql-test/suite/sphinx/my.cnf 1970-01-01 00:00:00 +0000 +++ mysql-test/suite/sphinx/my.cnf 2010-08-02 20:35:41 +0000 @@ -0,0 +1,29 @@ +!include include/default_my.cnf + +[source src1] +type = xmlpipe2 +xmlpipe_command = cat suite/sphinx/testdata.xml + +[index test1] +source = src1 +docinfo = extern +charset_type = utf-8 +path = @mysqld.1.#vardir/searchd/test1 + +[indexer] +mem_limit = 32M + +[searchd] +read_timeout = 5 +max_children = 30 +max_matches = 1000 +seamless_rotate = 1 +preopen_indexes = 0 +unlink_old = 1 +log = @mysqld.1.#vardir/searchd/sphinx-searchd.log +query_log = @mysqld.1.#vardir/searchd/sphinx-query.log +#log-error = @mysqld.1.#vardir/searchd/sphinx.log +pid_file = @mysqld.1.#vardir/run/searchd.pid + +[ENV] +SPHINXSEARCH_PORT = @searchd.port
If I understand correctly, this reference in [ENV] to @searchd.port magically makes an extra option port=XXX appear in [searchd]? Now I know you didn't invent this magic in ConfigFactory ;-) But it is still very unintuitive for anyone who has not spent the time understanding ConfigFactory etc. like we had to do. I would suggest adding a comment explaining this.
=== added file 'mysql-test/suite/sphinx/sphinx.test' --- mysql-test/suite/sphinx/sphinx.test 1970-01-01 00:00:00 +0000 +++ mysql-test/suite/sphinx/sphinx.test 2010-08-02 20:35:41 +0000 @@ -0,0 +1,25 @@ +if (`SELECT "$HAVE_SPHINX" < "0000.0009.0009"`) { + skip Need Sphinx version 0.9.9 or later; +}
There is no --include have_shpinx_storage_engine_plugin.inc. Do I understand correctly that this is because the presense of --plugin-load in suite.opt automagically disables the suite if the plugin is not available?
=== added file 'mysql-test/suite/sphinx/suite.opt' --- mysql-test/suite/sphinx/suite.opt 1970-01-01 00:00:00 +0000 +++ mysql-test/suite/sphinx/suite.opt 2010-08-02 20:35:41 +0000 @@ -0,0 +1,1 @@ +--plugin-load=$HA_SPHINX_SO \ No newline at end of file
(maybe fix the missing newline while you're at it, though it's a nitpick)
=== added file 'mysql-test/suite/sphinx/suite.pm' --- mysql-test/suite/sphinx/suite.pm 1970-01-01 00:00:00 +0000 +++ mysql-test/suite/sphinx/suite.pm 2010-08-02 20:35:41 +0000 @@ -0,0 +1,116 @@ +package My::Suite_A;
Any reason for the strange name? I would expect something like My::Suite::SphinxSE
+sub locate_sphinx_binary { + my ($name)= @_; + my $res; + my @list= map "$_/bin/$name", qw(/usr /usr/local /usr/local/sphinx); + my $env_override= $ENV{"SPHINXSEARCH_\U$name"}; + @list= ($env_override) if $env_override; + for (@list) { return $_ if -x $_; } +}
(I know it was me who did it this way. But it would probably be better to check $ENV{PATH} ?)
Hi, Kristian! On Aug 04, Kristian Nielsen wrote:
Sergei Golubchik <sergii@pisem.net> writes:
My main comment is that there should be some documentation of the My::Suite class, as I write in a comment below.
I'll add it, thanks.
Other than that I think it is ok to push. I have a number of small remarks inline below, you can fix what you agree with and ignore the rest. There are also a couple of questions to check that my understanding is correct.
Now, that you've seen the patch - should I push it in 5.1 too ?
=== modified file 'BUILD/SETUP.sh' --- BUILD/SETUP.sh 2010-03-30 16:16:57 +0000 +++ BUILD/SETUP.sh 2010-08-02 20:20:47 +0000
@@ -178,8 +178,7 @@ max_no_qc_configs="$SSL_LIBRARY --with-plugins=max --without-query-cache" max_no_ndb_configs="$SSL_LIBRARY --with-plugins=max-no-ndb --with-embedded-server --with-libevent" max_configs="$SSL_LIBRARY --with-plugins=max --with-embedded-server --with-libevent" -# Disable NDB in maria max builds -max_configs=$max_no_ndb_configs
One might think that this change would cause BUILD/xxx-max to include NDB. But it seems it doesn't. I think the reason is that storage/ndb/plug.in does not list itself as a member of the "max" configuration. Is my understanding correct, so that this particular change is just a cleanup of redundant code with no functional change?
Yes.
=== modified file 'mysql-test/lib/My/ConfigFactory.pm' --- mysql-test/lib/My/ConfigFactory.pm 2010-04-28 12:52:24 +0000 +++ mysql-test/lib/My/ConfigFactory.pm 2010-08-02 20:33:34 +0000
+ my ($res, $after); + + while (m/(.*?)\@((?:\w+\.)+)(#?[-\w]+)/gi) { + my ($before, $group_name, $option_name)= ($1, $2, $3); + $after = $'; + chop($group_name); + + my $from_group= $config->group($group_name) + or croak "There is no group named '$group_name' that ", + "can be used to resolve '$option_name'"; + + my @auto_options = ( + 'port' => sub { fix_port($self, $config, $group_name, $group) }, + '#port' => sub { fix_port($self, $config, $group_name, $group) }, + ); + my $value= $from_group->value($option_name, @auto_options); + $res .= $before.$value; + } + m/\G.*/;
What is the purpose of this m// ? Probably it is left-over code from previous version that was forgotten to be deleted.
Right, I've deleted it after I sent you a patch for review (but I had no internet access at that moment so I couldn't tell you that, sorry)
=== added file 'mysql-test/lib/My/Suite.pm' --- mysql-test/lib/My/Suite.pm 1970-01-01 00:00:00 +0000 +++ mysql-test/lib/My/Suite.pm 2010-08-02 20:33:34 +0000 @@ -0,0 +1,7 @@ +package My::Suite; + +sub config_files { () } +sub servers { () } + +bless { };
I think we need some documentation here (or elsewhere, but comments in this file seems a good place) of what the purpose is of this class (and derived classes in particular), and how they must be used. Eg. that a derived class should be placed in suite.pm, and explanation about what the methods should do. And the need to return an instance at the end. Etc.
Will do.
=== modified file 'mysql-test/lib/mtr_cases.pm' --- mysql-test/lib/mtr_cases.pm 2010-06-14 16:58:52 +0000 +++ mysql-test/lib/mtr_cases.pm 2010-08-02 20:33:34 +0000
@@ -2471,7 +2473,7 @@ }
-sub ndbcluster_wait_started($$){ +sub ndbcluster_wait_started {
Did you intend to change this?
(well, those ($$) annoy me as well, but my guess is that like me, you prefer to keep them to ease merges, but introduced this while trying different things in the code).
Yes. There's a little trick here. ndbcluster_wait_started is called as a WAIT method, $server->{WAIT}->($server) and it's also called directly by another ndb-specific function. That other function uses two-argument form, the WAIT invocation - one-argument. Having ($$) prototype would not hurt, as calling a function via a reference does not check the prototype. But it would be confusing - the prototype says there should be two arguments, while we call it with one. But I think I can use $;$ prototype, if you want.
@@ -2639,7 +2641,7 @@
sub ndbcluster_start ($) { - my $cluster= shift; + my ($cluster) = @_;
Same as above: intended?
it's more in style with other functions, in particular other START function. I can restore the old line though it you want.
+ unless ($opt_start_dirty) + {
Hm, I prefer to stick to if (! ... )
ok.
@@ -3082,7 +3187,7 @@ path => $exe_mysql, args => \$args, output => '/dev/null', - error => '/dev/null' + error => '/dev/null',
Intended?
I'll restore it too. I've originally added one more argument there, and a comma was needed. But then I removed it.
+sub fix_servers($) { + my ($tinfo) = @_; + return () unless $config; + my %servers = ( + 'mysqld.' => { + SORT => 300, + START => \&mysql_server_start, + WAIT => \&mysql_server_wait, + }, + 'mysql_cluster.' => { + SORT => 200, + START => \&ndbcluster_start, + WAIT => \&ndbcluster_wait_started, + }, + 'cluster_config.ndb_mgmd.' => { + SORT => 210, + START => undef, + }, + 'cluster_config.ndbd.' => { + SORT => 220, + START => undef, + }, + $suites{$tinfo->{suite}}->servers() + ); + for ($config->groups()) { + while (my ($re,$prop) = each %servers) { + @$_{'SORT','START'} = @$prop{'SORT','START'} if $_->{name} =~ /^$re/;
Well, the dots '.' in the keys of %servers will need to be \escaped, or they will match any char, not just '.'.
I suppose so. But the old code was not doing it. FYI: later I found a bug in this code - it only copies START and SORT, but not WAIT (that was added later). Changed to @$_{keys %$prop} = values %$prop if $_->{name} =~ /^$re/;
(I tend to prefer not interpolating strings as regexps, rather use qr/mysql_cluster\./ to make things clearer. Or just use substr() and eq.)
I prefer to interpolate within \Q...\E :) But here qr/.../ would be better as it explicitly shows that the key is a regex.
@@ -4810,8 +4960,7 @@ return 1; }
- my $is_mysqld= grep ($server eq $_, mysqlds()); - if ($is_mysqld) + if ($server->name() =~ /^mysqld./)
That trailing dot in the regexp is suspicious. Did you mean \. ?
It's a copy from the above. Either \. in both places or in neither.
+[ENV] +SPHINXSEARCH_PORT = @searchd.port
If I understand correctly, this reference in [ENV] to @searchd.port magically makes an extra option port=XXX appear in [searchd]?
Yes.
Now I know you didn't invent this magic in ConfigFactory ;-) But it is still very unintuitive for anyone who has not spent the time understanding ConfigFactory etc. like we had to do. I would suggest adding a comment explaining this.
I'll try to make it clearer
=== added file 'mysql-test/suite/sphinx/sphinx.test' --- mysql-test/suite/sphinx/sphinx.test 1970-01-01 00:00:00 +0000 +++ mysql-test/suite/sphinx/sphinx.test 2010-08-02 20:35:41 +0000 @@ -0,0 +1,25 @@ +if (`SELECT "$HAVE_SPHINX" < "0000.0009.0009"`) { + skip Need Sphinx version 0.9.9 or later; +}
There is no --include have_shpinx_storage_engine_plugin.inc.
Do I understand correctly that this is because the presense of --plugin-load in suite.opt automagically disables the suite if the plugin is not available?
No, because I've added the contents of a have_shpinx_storage_engine_plugin.inc directly into sphinx.test file. Simply because there was only one .test file, if there were many I'd keep the inc file separate.
=== added file 'mysql-test/suite/sphinx/suite.opt' --- mysql-test/suite/sphinx/suite.opt 1970-01-01 00:00:00 +0000 +++ mysql-test/suite/sphinx/suite.opt 2010-08-02 20:35:41 +0000 @@ -0,0 +1,1 @@ +--plugin-load=$HA_SPHINX_SO \ No newline at end of file
(maybe fix the missing newline while you're at it, though it's a nitpick)
ok.
=== added file 'mysql-test/suite/sphinx/suite.pm' --- mysql-test/suite/sphinx/suite.pm 1970-01-01 00:00:00 +0000 +++ mysql-test/suite/sphinx/suite.pm 2010-08-02 20:35:41 +0000 @@ -0,0 +1,116 @@ +package My::Suite_A;
Any reason for the strange name? I would expect something like My::Suite::SphinxSE
Already fixed.
+sub locate_sphinx_binary { + my ($name)= @_; + my $res; + my @list= map "$_/bin/$name", qw(/usr /usr/local /usr/local/sphinx); + my $env_override= $ENV{"SPHINXSEARCH_\U$name"}; + @list= ($env_override) if $env_override; + for (@list) { return $_ if -x $_; } +}
(I know it was me who did it this way. But it would probably be better to check $ENV{PATH} ?)
Right, I mostly copied sphinx suite changes from your patch without thinking much about them. Okay, I can use PATH. Thanks! Regards, Sergei
Sergei Golubchik <serg@askmonty.org> writes:
Other than that I think it is ok to push. I have a number of small remarks inline below, you can fix what you agree with and ignore the rest. There are also a couple of questions to check that my understanding is correct.
Now, that you've seen the patch - should I push it in 5.1 too ?
I weakly suggest "yes". The patch does not introduce any interface changes to mysql-test-run.pl, so probably this one is less important to have identical in all versions. But it seems to me still preferable to have mysql-test-run as identical as possible between versions, and I don't see that it could hurt.
-sub ndbcluster_wait_started($$){ +sub ndbcluster_wait_started {
Did you intend to change this?
(well, those ($$) annoy me as well, but my guess is that like me, you prefer to keep them to ease merges, but introduced this while trying different things in the code).
Yes. There's a little trick here. ndbcluster_wait_started is called as a WAIT method, $server->{WAIT}->($server) and it's also called directly by another ndb-specific function. That other function uses two-argument form, the WAIT invocation - one-argument. Having ($$) prototype would not hurt, as calling a function via a reference does not check the prototype. But it would be confusing - the prototype says there should be two arguments, while we call it with one.
But I think I can use $;$ prototype, if you want.
No, I agree with your change now, thanks for the explanation ;-)
@@ -2639,7 +2641,7 @@
sub ndbcluster_start ($) { - my $cluster= shift; + my ($cluster) = @_;
Same as above: intended?
it's more in style with other functions, in particular other START function. I can restore the old line though it you want.
No, never mind (I actually prefer your version better also).
Well, the dots '.' in the keys of %servers will need to be \escaped, or they will match any char, not just '.'.
I suppose so. But the old code was not doing it.
Ok. (maybe it's not important, lots of Perl code does this and it usually works as it's not likely that we will ever see a string that wrongly matches due to '.' rather than '\.'. Since it is a common mistake, I tend to look out for it).
=== added file 'mysql-test/suite/sphinx/sphinx.test' --- mysql-test/suite/sphinx/sphinx.test 1970-01-01 00:00:00 +0000 +++ mysql-test/suite/sphinx/sphinx.test 2010-08-02 20:35:41 +0000 @@ -0,0 +1,25 @@ +if (`SELECT "$HAVE_SPHINX" < "0000.0009.0009"`) { + skip Need Sphinx version 0.9.9 or later; +}
There is no --include have_shpinx_storage_engine_plugin.inc.
Do I understand correctly that this is because the presense of --plugin-load in suite.opt automagically disables the suite if the plugin is not available?
No, because I've added the contents of a have_shpinx_storage_engine_plugin.inc directly into sphinx.test file.
I think you misunderstood me. This check (`SELECT "$HAVE_SPHINX" < "0000.0009.0009"`) is for the version of the external sphinx binaries. But we also need to skip the test case if the sphinx storage engine is not built. So my question is, if MariaDB is built without the spinxs storage engine, but sphinx binaries of appropriate version are present, how do we make sure to not attempt to run the test, and fail it because the --plugin-load in suite.opt fails? In fact this check must also be in lib/mtr_cases.pm, as we cannot even run the testcase to give it the chance to skip when we cannot start the server due to missing plugin .so. For example there is such a hardcoded check for oqgraph in mtr_cases.pm. But I didn't find any code for this (generic or sphinxSE specific)? - Kristian.
Hi, Kristian! On Aug 05, Kristian Nielsen wrote:
Sergei Golubchik <serg@askmonty.org> writes:
Other than that I think it is ok to push. I have a number of small remarks inline below, you can fix what you agree with and ignore the rest. There are also a couple of questions to check that my understanding is correct.
Now, that you've seen the patch - should I push it in 5.1 too ?
I weakly suggest "yes".
The patch does not introduce any interface changes to mysql-test-run.pl, so probably this one is less important to have identical in all versions.
But it seems to me still preferable to have mysql-test-run as identical as possible between versions, and I don't see that it could hurt.
Well, the dots '.' in the keys of %servers will need to be \escaped, or they will match any char, not just '.'.
I suppose so. But the old code was not doing it.
Ok. (maybe it's not important, lots of Perl code does this and it usually works as it's not likely that we will ever see a string that wrongly matches due to '.' rather than '\.'. Since it is a common mistake, I tend to look out for it).
I know, it catched my eye too, but I preferred to left the old behavior. I'll change it to be "correct" now, and if the test suite will pass I'll keep it.
=== added file 'mysql-test/suite/sphinx/sphinx.test' --- mysql-test/suite/sphinx/sphinx.test 1970-01-01 00:00:00 +0000 +++ mysql-test/suite/sphinx/sphinx.test 2010-08-02 20:35:41 +0000 @@ -0,0 +1,25 @@ +if (`SELECT "$HAVE_SPHINX" < "0000.0009.0009"`) { + skip Need Sphinx version 0.9.9 or later; +}
There is no --include have_shpinx_storage_engine_plugin.inc.
Do I understand correctly that this is because the presense of --plugin-load in suite.opt automagically disables the suite if the plugin is not available?
No, because I've added the contents of a have_shpinx_storage_engine_plugin.inc directly into sphinx.test file.
I think you misunderstood me. This check (`SELECT "$HAVE_SPHINX" < "0000.0009.0009"`) is for the version of the external sphinx binaries. But we also need to skip the test case if the sphinx storage engine is not built.
Oh, right. I'll fix it. Regards, Sergei
participants (3)
-
Kristian Nielsen
-
Sergei Golubchik
-
Sergei Golubchik