<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.0.12-alpha" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: A proposal for method of delivering optimizer bug fixes</title>
	<link>http://s.petrunia.net/blog/?p=48</link>
	<description>Random observations made while working on MySQL / MariaDB query optimizer</description>
	<pubDate>Thu, 09 Sep 2010 04:29:55 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0.12-alpha</generator>

	<item>
		<title>by: sergey</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32610</link>
		<pubDate>Thu, 11 Sep 2008 09:39:26 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32610</guid>
					<description>Mark,

&gt; When will we get optimizer tracing? That would make it much easier to diagnose these problems.

ATM we don't have any plans we've committed to but better diagnostics is high in our list of desired features.</description>
		<content:encoded><![CDATA[<p>Mark,</p>
<p>> When will we get optimizer tracing? That would make it much easier to diagnose these problems.</p>
<p>ATM we don&#8217;t have any plans we&#8217;ve committed to but better diagnostics is high in our list of desired features.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: sergey</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32607</link>
		<pubDate>Thu, 11 Sep 2008 09:15:17 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32607</guid>
					<description>Peter,

&gt; –with-bugfix would be reasonable however I’m not sure how easy you would get it for all bug fixes - will not your turn your code to spaghetti causing development complication and potentially breaking some old code.

We are not going to add this for every fix. We'll add it only 1) for query speed bugs (fixes for crashes will be on unconditionally)  and  2) when that was requested by a paying customer or when the fix is assumed to be important enough for big set of people.

&gt; When fixes are behavior changes some variable configuration could be even better because it would be possible to change behavior on per connection basics.

Yes.. perhaps a standard system/user variable would be better.  Got to decide whether we need one variable for all or separate variables for each fix. 

&gt; Another important thing I should note - when you guys add any methods to optimizer make sure it is possible to FORCE using this method when it is possible even if Optimizer does not think it is good. For example forcing to use index merge instead of single index.

It would be an interesting challenge for e.g. subquery optimizations.. it's fairly straightforward to force materialization but there's no obvious way how one could specify that other strategies should [not] be used. Ok, we'll take another look at this.</description>
		<content:encoded><![CDATA[<p>Peter,</p>
<p>> –with-bugfix would be reasonable however I’m not sure how easy you would get it for all bug fixes - will not your turn your code to spaghetti causing development complication and potentially breaking some old code.</p>
<p>We are not going to add this for every fix. We&#8217;ll add it only 1) for query speed bugs (fixes for crashes will be on unconditionally)  and  2) when that was requested by a paying customer or when the fix is assumed to be important enough for big set of people.</p>
<p>> When fixes are behavior changes some variable configuration could be even better because it would be possible to change behavior on per connection basics.</p>
<p>Yes.. perhaps a standard system/user variable would be better.  Got to decide whether we need one variable for all or separate variables for each fix. </p>
<p>> Another important thing I should note - when you guys add any methods to optimizer make sure it is possible to FORCE using this method when it is possible even if Optimizer does not think it is good. For example forcing to use index merge instead of single index.</p>
<p>It would be an interesting challenge for e.g. subquery optimizations.. it&#8217;s fairly straightforward to force materialization but there&#8217;s no obvious way how one could specify that other strategies should [not] be used. Ok, we&#8217;ll take another look at this.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Jonas Oreland</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32548</link>
		<pubDate>Wed, 10 Sep 2008 07:51:16 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32548</guid>
					<description>I think it sounds like a good/reasonable solution for the problem you describe.</description>
		<content:encoded><![CDATA[<p>I think it sounds like a good/reasonable solution for the problem you describe.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Lukas</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32520</link>
		<pubDate>Tue, 09 Sep 2008 21:29:16 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32520</guid>
					<description>Sergey my point was that I think its messy and confusing and a deployment nightmare to make every little bit an option here. In the end it seems that this puts the burden on the developer to choose the right mix. I rather prefer if we optimizer would be provided in generations, where older generations are still available as one package in later versions (to be phased out eventually of course).</description>
		<content:encoded><![CDATA[<p>Sergey my point was that I think its messy and confusing and a deployment nightmare to make every little bit an option here. In the end it seems that this puts the burden on the developer to choose the right mix. I rather prefer if we optimizer would be provided in generations, where older generations are still available as one package in later versions (to be phased out eventually of course).
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Vadim</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32519</link>
		<pubDate>Tue, 09 Sep 2008 21:14:11 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32519</guid>
					<description>Sergey,

I think
--with-bugfix=12454
it may be too criptic.

Imagine my.cnf with

[mysqld]
...
with-bugfix=13445
with-bugfix=13455
with-bugfix=13645
with-bugfix=13745
...

May be you can add descriptive name ?

like
with-bugfix="add index merge fix"

etc ?</description>
		<content:encoded><![CDATA[<p>Sergey,</p>
<p>I think<br />
&#8211;with-bugfix=12454<br />
it may be too criptic.</p>
<p>Imagine my.cnf with</p>
<p>[mysqld]<br />
&#8230;<br />
with-bugfix=13445<br />
with-bugfix=13455<br />
with-bugfix=13645<br />
with-bugfix=13745<br />
&#8230;</p>
<p>May be you can add descriptive name ?</p>
<p>like<br />
with-bugfix=&#8221;add index merge fix&#8221;</p>
<p>etc ?
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Evert</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32509</link>
		<pubDate>Tue, 09 Sep 2008 17:06:41 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32509</guid>
					<description>It would be good to see optimizer fixes released quicker.. I'm wondering if instead of --with-bugfix=1234, it might be better to use --without-bugfix=12345.

I believe new fixes like this should be opt-out, instead of opt-in.</description>
		<content:encoded><![CDATA[<p>It would be good to see optimizer fixes released quicker.. I&#8217;m wondering if instead of &#8211;with-bugfix=1234, it might be better to use &#8211;without-bugfix=12345.</p>
<p>I believe new fixes like this should be opt-out, instead of opt-in.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Joro Kodinov</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32506</link>
		<pubDate>Tue, 09 Sep 2008 16:44:46 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32506</guid>
					<description>This idea imho is will make the compatibility problems even worse. And the test suites even longer.
I don't think it's wise to remedy organizational bottlenecks with technical fixes. The main problem here is the release cycle.
Maybe the remedy is to "modularize" the server ? Like release certain components independently of others. Optimizer x.y.z, runtime a.b.c, etc.
Note that it's not strictly speaking necessary to have the components in separate binaries. It's enough if people would know what to expect imho.</description>
		<content:encoded><![CDATA[<p>This idea imho is will make the compatibility problems even worse. And the test suites even longer.<br />
I don&#8217;t think it&#8217;s wise to remedy organizational bottlenecks with technical fixes. The main problem here is the release cycle.<br />
Maybe the remedy is to &#8220;modularize&#8221; the server ? Like release certain components independently of others. Optimizer x.y.z, runtime a.b.c, etc.<br />
Note that it&#8217;s not strictly speaking necessary to have the components in separate binaries. It&#8217;s enough if people would know what to expect imho.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Mark Callaghan</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32505</link>
		<pubDate>Tue, 09 Sep 2008 16:04:58 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32505</guid>
					<description>It isn't pretty but it would work for me.

When will we get optimizer tracing? That would make it much easier to diagnose these problems.</description>
		<content:encoded><![CDATA[<p>It isn&#8217;t pretty but it would work for me.</p>
<p>When will we get optimizer tracing? That would make it much easier to diagnose these problems.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: Peter Zaitsev</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32503</link>
		<pubDate>Tue, 09 Sep 2008 15:39:50 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32503</guid>
					<description>Sergey,

Thanks for looking into the problem. Indeed rate of optimizer bugfixes in 5.0 and 5.1 is poor and you surely have the challenge because you can't really validate your fixed on large variety of workloads until version is used by a lot of users but this is also the time when it becomes risky to change anything. 

--with-bugfix would be reasonable however I'm not sure how easy you would get it for all bug fixes - will not your turn your code to spaghetti causing development complication and potentially breaking some old code.

When fixes are behavior changes some variable configuration could be even better because it would be possible to change behavior on per connection basics. 

Another important thing I should note - when you guys add any methods to optimizer make sure it is possible to FORCE using this method when it is possible even if Optimizer does not think it is good.  For example forcing to use index merge instead of single index.</description>
		<content:encoded><![CDATA[<p>Sergey,</p>
<p>Thanks for looking into the problem. Indeed rate of optimizer bugfixes in 5.0 and 5.1 is poor and you surely have the challenge because you can&#8217;t really validate your fixed on large variety of workloads until version is used by a lot of users but this is also the time when it becomes risky to change anything. </p>
<p>&#8211;with-bugfix would be reasonable however I&#8217;m not sure how easy you would get it for all bug fixes - will not your turn your code to spaghetti causing development complication and potentially breaking some old code.</p>
<p>When fixes are behavior changes some variable configuration could be even better because it would be possible to change behavior on per connection basics. </p>
<p>Another important thing I should note - when you guys add any methods to optimizer make sure it is possible to FORCE using this method when it is possible even if Optimizer does not think it is good.  For example forcing to use index merge instead of single index.
</p>
]]></content:encoded>
				</item>
	<item>
		<title>by: sergey</title>
		<link>http://s.petrunia.net/blog/?p=48#comment-32500</link>
		<pubDate>Tue, 09 Sep 2008 15:18:50 +0000</pubDate>
		<guid>http://s.petrunia.net/blog/?p=48#comment-32500</guid>
					<description>Eric,

&gt; That’s an interesting idea. Is there a risk of causing further issues by having a mix of bug fixes enabled or disabled?

Theoretically, yes there is, but it should be a rare case. I expect such issues to be repeatable "poor query plan"-type problems, and not e.g. random crashes. In any case, by the time you're playing with enabling fixes, you already have issues, so there's not much to lose. And if a particular combination of fixes doesn't work well, it will now be easy to move away from it.</description>
		<content:encoded><![CDATA[<p>Eric,</p>
<p>> That’s an interesting idea. Is there a risk of causing further issues by having a mix of bug fixes enabled or disabled?</p>
<p>Theoretically, yes there is, but it should be a rare case. I expect such issues to be repeatable &#8220;poor query plan&#8221;-type problems, and not e.g. random crashes. In any case, by the time you&#8217;re playing with enabling fixes, you already have issues, so there&#8217;s not much to lose. And if a particular combination of fixes doesn&#8217;t work well, it will now be easy to move away from it.
</p>
]]></content:encoded>
				</item>
</channel>
</rss>
