<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>code.openark.org &#187; MySQL</title>
	<atom:link href="http://code.openark.org/blog/category/mysql/feed" rel="self" type="application/rss+xml" />
	<link>http://code.openark.org/blog</link>
	<description>Blog by Shlomi Noach</description>
	<lastBuildDate>Thu, 23 May 2013 12:22:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>mycheckpoint revision 231 released</title>
		<link>http://code.openark.org/blog/mysql/mycheckpoint-revision-released</link>
		<comments>http://code.openark.org/blog/mysql/mycheckpoint-revision-released#comments</comments>
		<pubDate>Thu, 23 May 2013 12:21:52 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Monitoring]]></category>
		<category><![CDATA[mycheckpoint]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6353</guid>
		<description><![CDATA[A new release for mycheckpoint: lightweight, SQL oriented MySQL monitoring solution. If you're unfamiliar with mycheckpoint, well, the one minute sales pitch is: it's a free and open source monitoring tool for MySQL, which is extremely easy to install and execute, and which includes custom queries, alerts (via emails), and out of the box HTTP [...]]]></description>
				<content:encoded><![CDATA[<p>A <a href="http://code.google.com/p/mycheckpoint/">new release</a> for <strong><a href="http://code.openark.org/forge/mycheckpoint">mycheckpoint</a></strong>: lightweight, SQL oriented MySQL monitoring solution.</p>
<p>If you're unfamiliar with <em>mycheckpoint</em>, well, the one minute sales pitch is: it's a free and open source monitoring tool for MySQL, which is extremely easy to install and execute, and which includes <a href="http://code.openark.org/forge/mycheckpoint/documentation/custom-monitoring">custom queries</a>, <a href="http://code.openark.org/forge/mycheckpoint/documentation/alerts">alerts</a> (via <a href="http://code.openark.org/forge/mycheckpoint/documentation/emails">emails</a>), and out of the box <a href="http://code.openark.org/forge/mycheckpoint/documentation/http-web-server">HTTP server</a> and <a href="http://mycheckpoint.googlecode.com/svn/trunk/doc/html/sample/http/mcp_sql00/sv_report_html_brief">charting</a>.</p>
<p>This is mostly a maintenance release, with some long-time requested features, and of course solved bugs. Here are a few highlights:</p>
<ul>
<li>Supports MariaDB and MySQL 5.6 (issues with new variables, space padded variables, text-valued variables)</li>
<li>Supports alerts via function invocation on monitored host (so not only checking alerts via aggregated data like <strong>'Seconds_behind_master'</strong> but also by <strong>SELECT my_sanity_check_function()</strong> on monitored instance). See <a href="http://code.openark.org/forge/mycheckpoint/documentation/alerts">alerts.</a></li>
<li>Supports single-running-instance via <strong>"--single"</strong> command line argument</li>
<li>Supports strict <strong>sql_mode</strong>, including <strong>ONLY_FULL_GROUP_BY</strong>, overcoming <a href="http://bugs.mysql.com/bug.php?id=69310">bug #69310</a>.<strong><br />
</strong></li>
<li>Supports sending of pending email HTML report</li>
<li>Better re-deployment process</li>
<li>Better recognizing of SIGNED/UNSIGNED values</li>
<li>Some other improvements in charting, etc.</li>
</ul>
<p><em>mycheckpoint</em> is released under the BSD license.</p>
<p><a href="http://code.google.com/p/mycheckpoint/">Downloads are available</a> from the project's page.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/mycheckpoint-revision-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>opeark-kit revision 196 released</title>
		<link>http://code.openark.org/blog/mysql/opeark-kit-revision-196-released</link>
		<comments>http://code.openark.org/blog/mysql/opeark-kit-revision-196-released#comments</comments>
		<pubDate>Tue, 07 May 2013 05:47:22 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[openark kit]]></category>
		<category><![CDATA[QueryScript]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6335</guid>
		<description><![CDATA[This is a long due maintenance release of openark-kit. This release includes bugfixes and some enhancements, mainly to oak-online-alter-table. oak-online-alter-table Changes / bug fixes include: Support for keyword-named columns Use of FORCE INDEX due to lack of MySQL's ability for figure out the chunking key at all times --sleep-ratio option added; allows for sleep time [...]]]></description>
				<content:encoded><![CDATA[<p>This is a long due maintenance release of <a href="http://code.google.com/p/openarkkit/"><strong>openark-kit</strong>.</a> This release includes bugfixes and some enhancements, mainly to <a href="http://openarkkit.googlecode.com/svn/trunk/openarkkit/doc/html/oak-online-alter-table.html">oak-online-alter-table</a>.</p>
<p><em>oak-online-alter-table</em> Changes / bug fixes include:</p>
<ul>
<li>Support for keyword-named columns</li>
<li>Use of FORCE INDEX due to lack of MySQL's ability for figure out the chunking key at all times</li>
<li><strong>--sleep-ratio</strong> option added; allows for sleep time proportional to execution time (as opposed to constant sleep time with <strong>--sleep</strong>)</li>
<li>Support for chunk-retry (in case of deadlock) via <strong>--max-lock-retries</strong>)</li>
<li>Fixed order of cleanup</li>
<li>Fixed bug with verbose messages with non-integer chunking key</li>
<li>Fixed bug with single-row tables (people, no need for this tool for single row tables <img src='http://code.openark.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> )</li>
<li>Friendly verbose messages to remind you what's being executed</li>
</ul>
<p><em>oak-chunk-update</em> changes includes:</p>
<ul>
<li>Verbosing query comment if exists (friendly printing of what's being executed)</li>
</ul>
<p><span id="more-6335"></span>(Do check out <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/query_script_split.html">QueryScript's split()</a>; it's a simple, server side solution which works almost same way as <em>oak-chunk-update</em>)</p>
<p>More issues and changes not listed here.</p>
<h4>Download</h4>
<p><em>openark-kit</em> is released under the new BSD license, and is freely available.</p>
<ul>
<li><a href="http://code.google.com/p/openarkkit/">Download latest openark-kit revision (#196)</a>.</li>
<li>Browse <a href="http://openarkkit.googlecode.com/svn/trunk/openarkkit/doc/html/introduction.html">openark-kit documentation</a>.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/opeark-kit-revision-196-released/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On compiling TokuDB from source</title>
		<link>http://code.openark.org/blog/mysql/on-compiling-tokudb-from-source</link>
		<comments>http://code.openark.org/blog/mysql/on-compiling-tokudb-from-source#comments</comments>
		<pubDate>Thu, 02 May 2013 05:14:55 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[TokuDB]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6320</guid>
		<description><![CDATA[Sharing my experience of compiling TokuDB + MariaDB 5.5. Why? Because I must have this patch to Sphinx 2.0.4. Note: I was using what seems to be the "old" method of compiling; quoting Leif Walsh: ... We are looking at deprecating that method of building (MariaDB source plus binary fractal tree handlerton).  It only really [...]]]></description>
				<content:encoded><![CDATA[<p>Sharing my experience of compiling TokuDB + MariaDB <strong>5.5</strong>. Why? Because I must have <a href="http://code.openark.org/blog/mysql/sphinx-sphinx_snippets-mysql-5-5">this patch</a> to Sphinx <strong>2.0.4</strong>.</p>
<p><strong>Note</strong>: I was using what seems to be the "old" method of compiling; quoting Leif Walsh:</p>
<blockquote><p>... We are looking at deprecating that method of building (MariaDB source plus binary fractal tree handlerton).  It only really needed to be that complex when we were closed source.</p></blockquote>
<p>I also tried the "new" method of compiling, which I couldn't work out.</p>
<p>Here's how it goes: TokuDB is newly <a href="http://www.tokutek.com/2013/04/announcing-tokudb-v7-open-source-and-more/">released as open source</a>. As such, it got a lot of attention, many downloads and I hope it will succeed.</p>
<p>However as stable as the product may be, it's new to open source, which means anyone compiling it from source is an early adopter (at least for the compilation process).</p>
<h4>Installation process</h4>
<p>This is an unorthodox, and actually weird process. See <a href="http://www.tokutek.com/wp-content/uploads/2013/04/mariadb-5.5.30-tokudb-7.0.1-users-guide.pdf">section 6 on the Tokutek docs</a>. In order to compile the project you must download:</p>
<ul>
<li>The source code tar.gz</li>
<li><em>And</em> the binary (?!) tar.gz</li>
<li>And the binary checksum</li>
<li>And the Tokutek patches</li>
<li>And the patches checksum<span id="more-6320"></span></li>
</ul>
<p>You extract the source tarball. But instead of doing the standard <strong>"./configure &amp;&amp; make &amp;&amp; sudo make install"</strong> you need to copy a shell script called <strong>tokudb.build.bash</strong> <em>one directory level up</em>, and run it from there.</p>
<p><strong>tokudb.build.bash</strong> lists <strong>gcc47</strong> and <strong>g++47</strong> on rows <strong>3, 4</strong>. Modify <strong>"gcc47"</strong> to <strong>"gcc"</strong>, modify <strong>"g++47"</strong> to  <strong>"g++"</strong>. I'm assuming you don't have a binary called <strong>gcc47</strong>. Why would you?</p>
<h4>Dependencies</h4>
<p>You will need <strong>CMake &gt;= 2.8</strong></p>
<p>This means Ubuntu LTS <strong>10.04</strong> users are unable to compile out of the box; will need to manually install later version of CMake.</p>
<p>Also needed is <strong>zlib1g-dev</strong>, <strong>rpmbuild</strong>.</p>
<h4>While compiling</h4>
<p>I ran out of disk space. <em>What?</em> I was using a <strong>10G</strong> partition I use for my compilations. Looking at <strong>"df -h"</strong> I get that:</p>
<ul>
<li>The source tarball is extracted (I did it)</li>
<li>The binary tarball is also extracted (someone has to explain this for me)</li>
<li>And inside the source directory we have:</li>
</ul>
<blockquote>
<pre>bash$ df -h
...
1484    build.RelWithDebInfo.rpms
5540    build.RelWithDebInfo</pre>
</blockquote>
<p>At about <strong>7GB</strong> (and counting) of build... <em>stuff?</em>.</p>
<p><strong>UPDATE</strong>: just ran out on disk space <em>again</em>. Is this an incremental thing? Like every time my compilation fails and I recompile some files are not cleaned up? If so, put them on <strong>/tmp</strong>! OK, moving everything to a <strong>300GB</strong> partition and starting all over.</p>
<h4>More while compiling</h4>
<p><strong></strong>I got errors on missing libraries. Like I was missing <strong>libssl</strong>, <strong>rpmbuild</strong>. This is what the <strong>"configure"</strong> script is for -- to test for dependencies. It's really a bummer to have to recompile 4-5 times (and it's a long compilation), only to find out there's another missing package.</p>
<h4>After compiling</h4>
<p>What is the result of the compilation? Not a "make install" prepared binary. The result is a MySQL-binary package. Se need to extract and put on <strong>/usr/local/somewhere</strong> etc.</p>
<h4>Conclusions</h4>
<p>The compilation process is unexpected and non-standard. The output is unexpected.</p>
<p>The correct way of doing this is a <strong>"./configure &amp;&amp; make &amp;&amp; sudo make install"</strong>. I don't understand the need for a binary package while compiling from source. Isn't this the chicken and the egg?</p>
<p>A source distribution is no different from a binary distribution. You must have a testing environment to verify the source distribution actually works. This test environment is typically a bare-new-RedHat or a bare-new-Ubuntu etc. The machines at Tokutek are already installed with needed packages. Not so on my compilation machine. I suggest that <strong>apt-get</strong>s and <strong>yum install</strong>s for dependencies are added to the source distribution testing. This is the only reliable way for you guys at Tokutek to know that clients will actually be able to install via source.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/on-compiling-tokudb-from-source/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Percona Live 2013 keynotes: followup questions and discussion</title>
		<link>http://code.openark.org/blog/mysql/percona-live-2013-keynotes-followup-questions-and-discussion</link>
		<comments>http://code.openark.org/blog/mysql/percona-live-2013-keynotes-followup-questions-and-discussion#comments</comments>
		<pubDate>Sun, 28 Apr 2013 05:23:29 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Opinions]]></category>
		<category><![CDATA[PerconaLive]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6309</guid>
		<description><![CDATA[Here are a few questions remained open for me from Percona Live 2013 about things that have been said during keynotes; I will appreciate a discussion on comments. Here goes: Question #1 Brian Aker (HP) asks Simone Brunozzi (Amazon) what the underlying technology for DynamoDB is. Simone says can't disclose. Brian says: "it's MySQL!!". Simone [...]]]></description>
				<content:encoded><![CDATA[<p>Here are a few questions remained open for me from Percona Live 2013 about things that have been said during keynotes; I will appreciate a discussion on comments. Here goes:</p>
<h4>Question #1</h4>
<blockquote><p><a href="www.percona.com/live/mysql-conference-2013/sessions/keynote-panel-impact-mysql-56-and-its-future-x">Brian Aker (HP) asks Simone Brunozzi (Amazon)</a> what the underlying technology for DynamoDB is. Simone says can't disclose. Brian says: "it's MySQL!!". Simone says: "can't disclose". Brian insists: "it's MySQL!!"</p></blockquote>
<p>Seriously? I will be very much surprised to learn that DynamoDB uses MySQL; it doesn't make sense to me. Why would Brian Aker say that though? Did he just mean to tease Simone or is there something I just don't get?<span id="more-6309"></span></p>
<p>(Yes, Brian?)</p>
<h4>Question #2</h4>
<blockquote><p><a href="http://www.percona.com/live/mysql-conference-2013/sessions/keynote-state-mysql-ecosystem">Matt Aslett speaks about adoption of MySQL &amp; variants</a>, and expected adoption in next years, Mentions MariaDB, Percona Server, SkySQL. KEeps saying how the SkySQL server gets more traction.</p></blockquote>
<p>What does he mean? There's no SkySQL fork; does he mean SkySQL cloud offer? Or just SkySQL support services, typically for MariaDB variant? But in that case, SkySQL is out of context. What's going on?</p>
<h4>Question #3</h4>
<blockquote><p>Matt Aslett presents quite pessimistic prediction for MySQL. Reduced popularity in next years. Relatively good news for MontyProgram/MariaDB; otherwise a lot of switch-off to PostgreSQL, poor adoption for Continuent, low ratios of "evaluation" to "adoption" of technologies; really quite depressing. Later mentions at about <strong>200+</strong> questionnaires.</p></blockquote>
<p>I don't have a special interest here as I don't work for any mentioned company; other than my general desire to see the ecosystem flourishing.</p>
<p>Are <strong>200+</strong> people enough to both give a faithful picture of current MySQL usage and adoption? Are they enough for prediction <strong>1</strong> year into the future? <strong>4</strong> years into the future?</p>
<p>In Israel, with less than <strong>8M</strong> population, election surveys usually look at <strong>500+</strong> people. To me it doesn't sound a lot, but statistics is not my strong skill. However those picked for the survey have to be a diverse population, distributed in similar ratio to overall population (so Jews, Muslims, Christians, Orthodox, income level, geographic location, etc.).</p>
<p>Does the same happen with those <strong>200+</strong> questionnaires in the <a href="http://451research.com/">451 research</a>? The reason I ask is this: at the end of keynote Matt says: "if you want your voice to be heard, if you think differently, contact me, and I'll add you to our survey". Does this mean anyone stepping up is included? Great, so a hypothetical company called GalleriaDB would encourage its 50 employees to enlist, thereby completely shifting the balance.</p>
<p>Who are those <strong>200+</strong> people in the survey? World wide known experts? Your regular DBA? Your remote DBA consultant? Your web developer? Do they represent the overall MySQL ecosystem population? Do their insights into the future collide with those of everyone?</p>
<h4>Please discuss below</h4>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/percona-live-2013-keynotes-followup-questions-and-discussion/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>common_schema booth on Percona Live 2013</title>
		<link>http://code.openark.org/blog/mysql/common_schema-booth-on-percona-live-2013</link>
		<comments>http://code.openark.org/blog/mysql/common_schema-booth-on-percona-live-2013#comments</comments>
		<pubDate>Sat, 27 Apr 2013 19:30:38 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[common]]></category>
		<category><![CDATA[PerconaLive]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6295</guid>
		<description><![CDATA[Yay! I got a booth! I confess it was mostly deserted. My hero Allen Kinnard, whom I've never met before, was kind enough to volunteer to occupy the booth. So between him and me, both of course also looking to visit other booths and talk to people, the common_schema booth was only moderately attended. Well, [...]]]></description>
				<content:encoded><![CDATA[<div id="attachment_6298" class="wp-caption alignleft" style="width: 250px"><a href="http://code.openark.org/blog/wp-content/uploads/2013/04/common_schema_booth1.jpeg"><img class="size-full wp-image-6298 " alt="common_schema booth in Percona Live 2013" src="http://code.openark.org/blog/wp-content/uploads/2013/04/common_schema_booth1.jpeg" width="240" height="320" /></a><p class="wp-caption-text">common_schema booth in Percona Live 2013 (someone left their soup on our table)</p></div>
<div class="wp-caption alignright" style="width: 266px"><img alt="" src="https://secure.gravatar.com/avatar/38d426af68572303773db7c7db69916b?s=256&amp;d=&amp;r=G" width="256" height="256" /><p class="wp-caption-text">Allen Kinnard</p></div>
<p>Yay! I got a booth!</p>
<p>I confess it was mostly deserted. My hero <strong>Allen Kinnard</strong>, whom I've never met before, was kind enough to volunteer to occupy the booth.<br />
So between him and me, both of course also looking to visit other booths and talk to people, the <a href="https://code.google.com/p/common-schema/">common_schema</a> booth was only moderately attended.</p>
<p>Well, this was the DotOrg Pavilion: free booths for free &amp; open source projects (e.g. OpenStack, PhpMyAdmin, etc.).<br />
We both did our best to explain <em>common_schema</em> to the visitors.</p>
<p>The booth was actually titled <strong>"common_schema &amp; openark-kit"</strong>. However I don't recall that anyone asked me about <a href="http://openarkkit.googlecode.com/svn/trunk/openarkkit/doc/html/introduction.html">openark-kit</a>. Most were just interested in what <em>common_schema</em> was. I get that <em>openark-kit</em> is well known by now to many.</p>
<p>We did not have so many visitors, which played well with our occasional absence. But this was a last moment arrangement. In future events I may try to get things on top and have an army of volunteers to help me out (and I hope that by next time common_schema is widely used).</p>
<p><a href="http://code.openark.org/blog/wp-content/uploads/2013/04/cookie_monster.jpeg"><img class="alignright size-full wp-image-6300" alt="cookie_monster" src="http://code.openark.org/blog/wp-content/uploads/2013/04/cookie_monster.jpeg" width="200" height="277" /></a></p>
<p>Now for the criminal department: practically all other DotOrg booths came prepared, with printed material, giveaway stuff and the like. We were like way beyond "the minimalist". We were "the poor and the pitiful". So I asked Kortney if she could arrange me some decorations (pulling some strings - yeah!). We were thinking a bowl of candies or something. Eventually she brought a few dozen candies (no bowl) and laid them nicely on the table; very nice touch! Good mixture of colors, nice wave design.</p>
<p>And guess what? Visitors actually thought they may take one of our candies! Oh, I schooled them.<br />
But on Wednesday, when we arrived to the booth, a horrid sight stroke us: someone stole (and probably ate) 80% of our candies!<br />
Well, I hope you've got bellyache, and next time you should know there will be surveillance, candy-thief!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/common_schema-booth-on-percona-live-2013/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Slides from my talk: common_schema, DBA&#039;s Framework for MySQL</title>
		<link>http://code.openark.org/blog/mysql/slides-from-my-talk-common_schema-dbas-framework-for-mysql-2</link>
		<comments>http://code.openark.org/blog/mysql/slides-from-my-talk-common_schema-dbas-framework-for-mysql-2#comments</comments>
		<pubDate>Fri, 26 Apr 2013 16:58:50 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[common_schema]]></category>
		<category><![CDATA[PerconaLive]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6288</guid>
		<description><![CDATA[I've just uploaded the slides from my talk: common_schema: DBA's framework for MySQL My talk was well attended, and I was fortunate to have a warm and engaged audience. Thank you to all those who attended, and thank you for those who provided feedback! Was happy to be able to present my work a great group [...]]]></description>
				<content:encoded><![CDATA[<p>I've just uploaded the slides from my talk: <a href="http://www.percona.com/live/mysql-conference-2013/sessions/commonschema-dbas-framework-mysql">common_schema: DBA's framework for MySQL</a></p>
<p>My talk was well attended, and I was fortunate to have a warm and engaged audience. Thank you to all those who attended, and thank you for those who provided feedback! Was happy to be able to present my work a great group of people.</p>
<p>You can find my slide either on <a href="https://www.percona.com/live/mysql-conference-2013/sessions/commonschema-dbas-framework-mysql">Percona Live's website</a>, or on <a href="http://www.slideshare.net/shlominoach/commonschema-20-dbas-framework-for-mysql">Slideshare</a>, as well as embedded right here.</p>
<p>I set two aims to my talk:</p>
<ol>
<li>To have the audience know how to download and install <a href="https://code.google.com/p/common-schema/">common_schema</a> (<em>Check!</em>)</li>
<li>Have everyone in the audience find <strong>one</strong> tool from <em>common_schema</em> that will make their day better. Quick raise of hands at the end of presentation: <em>Check!</em> All hands are up!</li>
</ol>
<p>As I've noted following a question, <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/rdebug.html">rdebug</a> is still in alpha. It modifies one's routines in such way that does not alter the routine's behavior, <em>except</em>:</p>
<ul>
<li>Affecting the value returned by <strong>ROW_COUNT()</strong> (I have no immediate solution to that)</li>
<li>Also affecting result of <strong>LAST_INSERT_ID()</strong> (I expect to have this solved).</li>
</ul>
<p>Thank you again; give <em>common_schema</em> a try. Best ways to support: submit bug reports, ideas, and above all: spread the word. <em>common_schema for world domination!</em></p>
<p><iframe src="http://www.slideshare.net/slideshow/embed_code/20037312" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC;border-width:1px 1px 0;margin-bottom:5px" allowfullscreen webkitallowfullscreen mozallowfullscreen> </iframe>
<div style="margin-bottom:5px"> <strong> <a href="http://www.slideshare.net/shlominoach/commonschema-20-dbas-framework-for-mysql" title="common_schema 2.0: DBA&#39;s Framework for MySQL" target="_blank">common_schema 2.0: DBA&#39;s Framework for MySQL</a> </strong> from <strong><a href="http://www.slideshare.net/shlominoach" target="_blank">Shlomi Noach</a></strong> </div>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/slides-from-my-talk-common_schema-dbas-framework-for-mysql-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Impressions from Percona Live 2013</title>
		<link>http://code.openark.org/blog/mysql/impressions-from-percona-live-2013</link>
		<comments>http://code.openark.org/blog/mysql/impressions-from-percona-live-2013#comments</comments>
		<pubDate>Fri, 26 Apr 2013 16:37:12 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[PerconaLive]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6281</guid>
		<description><![CDATA[At the airport, trying to sum up my impressions from Percona Live 2013 conference in Santa Clara. Woo! Hard to sum up four excellent days. Shall I review the great talks I've been to? The keynotes? The well organized events? You know what, skip it. There was ONE thing that overshadowed everything. It was the [...]]]></description>
				<content:encoded><![CDATA[<p>At the airport, trying to sum up my impressions from Percona Live 2013 conference in Santa Clara.</p>
<p>Woo! Hard to sum up four excellent days. Shall I review the great talks I've been to? The keynotes? The well organized events?</p>
<p>You know what, skip it. There was ONE thing that overshadowed everything. It was the ONE thing for me that was the pure essence of the conference and its greatest joy:</p>
<p><strong>Meeting and talking to a great many great people!</strong></p>
<p>I was fortunate to meet up with so many people; none that I planned; things just went in such way that I engaged in so many conversations with so many people. I found myself talking about hamsters, peacocks, living in the village, living in the city, working from home, commute, relocation, working with your spouse, life in Israel, life in Argentina, prisons in the US, having many children, gun control, politics (heaven forbid!), fruit, vegetables, breakfasts, open source, community, buying (non-expensive) presents to your kids, new ventures, zen, philosophy, capitalism, socialism, books, being who you are, weddings, Java, scripting, NoSQL, how to contribute to an open source project, ... the list goes on.</p>
<p>I was "adopted" by the PalominoDB team at Pedro's, crash-partied on Pythian fellows, talked technical (or non technical) with Tokutek guys, meeting up with Oracle people (finally I get the faces behind the names!); the companies do not matter, I'm just throwing in names. The <em>people</em> are awesome! Representing their companies on the technical side, and being purely interesting people on the personal side, I met with men and women from all over the community. Apologies: impossible to list all nor account for!</p>
<p>It's great to have a place and time where we all meet together.</p>
<p>The bottom line? I am fortunate to have my current profession: I enjoy my work, and the people I meet are fantastic and of the highest quality!</p>
<p>Thanks all with whom I've met, and for all of those with whom I haven't had the chance to speak: <em>see you next time!</em></p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/impressions-from-percona-live-2013/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speaking at Percona Live 2013: common_schema, lightning talks</title>
		<link>http://code.openark.org/blog/mysql/speaking-at-percona-live-2013-common_schema-lightning-talks</link>
		<comments>http://code.openark.org/blog/mysql/speaking-at-percona-live-2013-common_schema-lightning-talks#comments</comments>
		<pubDate>Thu, 11 Apr 2013 05:17:04 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[common_schema]]></category>
		<category><![CDATA[openark kit]]></category>
		<category><![CDATA[PerconaLive]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6268</guid>
		<description><![CDATA[In two weeks time I will be giving these talks at Percona Live: common_schema: DBA's framework for MySQL: an introduction to common_schema, my evolving server side solutions project. This will be a revised version of the talk I gave at Percona Live London; I have felt some weaknesses during that talk, which I've thrown out, [...]]]></description>
				<content:encoded><![CDATA[<p>In two weeks time I will be giving these talks at Percona Live:</p>
<ul>
<li><a href="http://www.percona.com/live/mysql-conference-2013/sessions/commonschema-dbas-framework-mysql">common_schema: DBA's framework for MySQL</a>: an introduction to <a href="https://code.google.com/p/common-schema/">common_schema</a>, my evolving server side solutions project. This will be a revised version of the talk I gave at Percona Live London; I have felt some weaknesses during that talk, which I've thrown out, letting room for cool stuff. I will discuss <em>common_schema</em>'s various views, interesting and useful routines, the power of <strong><a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/query_script.html">QueryScript</a></strong>, and a brief intro to the newcomer <strong><a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/rdebug.html">rdebug</a></strong>, debugger and debugging API for MySQL. If you're not familiar with <em>common_schema</em>, it's a good time to pick up on what I (being most biased) consider to be your smart assistant to MySQL maintenance and administration!</li>
<li><a href="http://www.percona.com/live/mysql-conference-2013/sessions/lt-query-which-peak-my-career">The query which is the peak of my career</a>: this is a 6 minute lightning talk. You're bound to attend if you're at the community reception (which you are), so I don't need to do promotional. You already payed the ticket and the doors will be locked. No escapees.</li>
</ul>
<p>As far as I'm concerned the conference can be closed down the moment I provide these two talks, and we can all go to the beach.</p>
<p>Wait, no, I will also be at the DotOrg Pavillion at the <a href="http://www.percona.com/live/mysql-conference-2013/exhibit-hall">Exhibit Hall</a>, where I present <em>common_schema</em> and <a href="http://openarkkit.googlecode.com/svn/trunk/openarkkit/doc/html/introduction.html">openark-kit</a>. Come by to hear more about these!</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/speaking-at-percona-live-2013-common_schema-lightning-talks/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Taking common_schema&#039;s rdebug to a test-drive</title>
		<link>http://code.openark.org/blog/mysql/taking-common_schemas-rdebug-to-a-test-drive</link>
		<comments>http://code.openark.org/blog/mysql/taking-common_schemas-rdebug-to-a-test-drive#comments</comments>
		<pubDate>Tue, 09 Apr 2013 07:36:17 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[common_schema]]></category>
		<category><![CDATA[rdebug]]></category>
		<category><![CDATA[Stored routines]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6211</guid>
		<description><![CDATA[This is a simple step-by-step introduction to rdebug: Debugger and Debugging API for MySQL Stored Routines, as part of common_schema. In other words: let me take you through the steps for debugging your stored routines on your own server. We will step into, step over, step out, modify variables, set a breakpoint, run to breakpoint... [...]]]></description>
				<content:encoded><![CDATA[<p>This is a simple step-by-step introduction to <strong><a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/rdebug.html">rdebug</a>: Debugger and Debugging API for MySQL Stored Routines</strong>, as part of <a href="https://code.google.com/p/common-schema/">common_schema</a>.</p>
<p>In other words: let me take you through the steps for debugging your stored routines on your own server. We will step into, step over, step out, modify variables, set a breakpoint, run to breakpoint...</p>
<p>Command line geeks, this one's for you. GUI lovers, this is actually an API; I am hoping for someone wrap it up with a plugin for your favorite GUI editor.</p>
<h4>Requirements:</h4>
<ul>
<li>Install <a href="https://code.google.com/p/common-schema/"><em>common_schema</em> 2.0</a> or above (at this time of writing <a href="http://code.openark.org/blog/mysql/common_schema-2-0-0-alpha-rdebug-gpl">2.0.0-alpha is released</a>).</li>
<li>Get sample data &amp; routine file <a href="http://code.openark.org/blog/wp-content/plugins/download-monitor/download.php?id=rdebug_demo_sql.txt">rdebug_demo_sql.txt </a></li>
<li>mysql&gt; <strong>SOURCE rdebug_demo.sql_.txt</strong>
<ul>
<li>You should now have a table called <strong>color_count</strong> in the test database, along with two routines: <strong>review_colors()</strong> and <strong>review_single_color()</strong>.</li>
</ul>
</li>
<li>Open two sessions. We call them the <em>debugger</em> session and the <em>worker</em> session. The <em>worker</em> session will execute the routine; the <em>debugger</em> session will control it.</li>
</ul>
<h4>Walk-through: preparation</h4>
<p>Walk this thing with me. We will alternate between the <em>debugger</em> and the <em>worker</em>.<span id="more-6211"></span></p>
<p><strong>1. worker session:</strong> get connection ID.</p>
<blockquote>
<pre><em><span style="color: #003300;">mysql [worker]&gt; <strong>select CONNECTION_ID();</strong>
+-----------------+
| CONNECTION_ID() |
+-----------------+
|            1234 |
+-----------------+</span></em></pre>
</blockquote>
<p>I'll use <strong>1234</strong>, you will use whatever connection ID your worker has.</p>
<p><strong>2. debugger session:</strong> "compile" routine with debug info (this injects code into your routines).</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>use common_schema;</strong>
mysql [debugger]&gt; <strong>call rdebug_compile_routine('test', 'review_colors', true);</strong>
mysql [debugger]&gt; <strong>call rdebug_compile_routine('test', 'review_single_color', true);</strong></span></pre>
</blockquote>
<p>If you like, review the routines after compilation as follows:</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_show_routine('test', 'review_colors');</strong>
+---------------------------------------------------------------------------------+
| `test`.`review_colors` breakpoints                                              |
+---------------------------------------------------------------------------------+
| begin                                                                           |
|   declare done bool default false;                                              |
|   declare current_color varchar(32) default null;                               |
|   declare current_count int unsigned;                                           |
|   declare color_cursor cursor for                                               |
|             select color_name, count from test.color_count order by color_name; |
|   declare continue handler for not found set done := true;                      |
|                                                                                 |
|   [:94]open color_cursor;                                                       |
|   [:100]cursor_loop: while not done do                                          |
|     [:112]fetch color_cursor into current_color, current_count;                 |
|     [:125]if done then                                                          |
|       [:132]leave cursor_loop;                                                  |
|     [:138]end if;                                                               |
|                                                                                 |
|     [:145]call review_single_color(current_color);                              |
|   [:154]end while;                                                              |
|   [:160]close color_cursor;                                                     |
| [:165]end                                                                       |
+---------------------------------------------------------------------------------+

mysql [debugger]&gt; <strong>call rdebug_show_routine('test', 'review_single_color');</strong>
+----------------------------------------------------------------+
| `test`.`review_single_color` breakpoints                       |
+----------------------------------------------------------------+
| begin                                                          |
|   [:4]set @review_message := concat(color_name, ' is pretty'); |
|   [:20]select @review_message;                                 |
| [:25]end                                                       |
+----------------------------------------------------------------+
</span></pre>
</blockquote>
<p>The above shows the routine code with symbolic breakpoint IDs.</p>
<h4>Walk-through - start debugging</h4>
<p><strong>3. debugger session:</strong> Start a debug session, attach to <i>worker</i> session using its connection ID:</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_start(1234);</strong></span></pre>
</blockquote>
<p>Replace <strong>1234</strong> with your own worker's connection ID as read above.</p>
<p>Let's set verbose mode on; more fun on command line, less typing.</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_set_verbose(true);</strong></span></pre>
</blockquote>
<p>And step into it!</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_step_into();</strong></span></pre>
</blockquote>
<p>This should hang the debugger. Why? Because it's stepping into, and is expecting the worker to actually do something.</p>
<p><strong>4. worker session:</strong> execute routine</p>
<blockquote>
<pre><span style="color: #003300;"><em>mysql [worker]&gt; <strong>call test.review_colors();</strong></em></span></pre>
</blockquote>
<h4>Walk-through - debug</h4>
<p>The debugger session should immediately follow with the following (all by <strong>entry_time</strong> should be identical to your output):</p>
<blockquote>
<pre><span style="color: #000080;">+-------------+----------------+---------------+--------------+---------------------+</span>
<span style="color: #000080;">| stack_level | routine_schema | routine_name  | statement_id | entry_time          |</span>
<span style="color: #000080;">+-------------+----------------+---------------+--------------+---------------------+</span>
<span style="color: #000080;">|           1 | test           | review_colors |           94 | 2013-04-08 15:41:28 |</span>
<span style="color: #000080;">+-------------+----------------+---------------+--------------+---------------------+</span>

<span style="color: #000080;">+----------------+---------------+---------------+---------------+----------------+</span>
<span style="color: #000080;">| routine_schema | routine_name  | variable_name | variable_type | variable_value |</span>
<span style="color: #000080;">+----------------+---------------+---------------+---------------+----------------+</span>
<span style="color: #000080;">| test           | review_colors | current_color | local         | NULL           |</span>
<span style="color: #000080;">| test           | review_colors | current_count | local         | NULL           |</span>
<span style="color: #000080;">| test           | review_colors | done          | local         | 0              |</span>
<span style="color: #000080;">+----------------+---------------+---------------+---------------+----------------+</span>

<span style="color: #000080;">+----------------+---------------+--------------+-------------------+</span>
<span style="color: #000080;">| routine_schema | routine_name  | statement_id | statement         |</span>
<span style="color: #000080;">+----------------+---------------+--------------+-------------------+</span>
<span style="color: #000080;">| test           | review_colors |           94 | open color_cursor |</span>
<span style="color: #000080;">+----------------+---------------+--------------+-------------------+</span></pre>
</blockquote>
<p>That's the result of setting verbose mode. From here, if you've ever debugged code, the way is clear:</p>
<p><strong>5. debugger session:</strong> Step into a few more times:</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_step_into();</strong>
mysql [debugger]&gt; <strong>call rdebug_step_into();</strong>
mysql [debugger]&gt; <strong>call rdebug_step_into();</strong>
...</span></pre>
</blockquote>
<p>Until the stack shows that you have entered the second routine: <strong>review_single_color():</strong></p>
<blockquote>
<pre><span style="color: #000080;">+-------------+----------------+---------------------+--------------+---------------------+</span>
<span style="color: #000080;">| stack_level | routine_schema | routine_name        | statement_id | entry_time          |</span>
<span style="color: #000080;">+-------------+----------------+---------------------+--------------+---------------------+</span>
<span style="color: #000080;">|           1 | test           | review_colors       |          145 | 2013-04-08 15:41:28 |</span>
<span style="color: #000080;">|           <strong>2</strong> | <strong>test</strong>           | <strong>review_single_color</strong> |           20 | 2013-04-08 15:45:23 |</span>
<span style="color: #000080;">+-------------+----------------+---------------------+--------------+---------------------+</span>

<span style="color: #000080;">+----------------+---------------------+-----------------+---------------+-----------------+</span>
<span style="color: #000080;">| routine_schema | routine_name        | variable_name   | variable_type | variable_value  |</span>
<span style="color: #000080;">+----------------+---------------------+-----------------+---------------+-----------------+</span>
<span style="color: #000080;">| test           | review_single_color | @review_message | user_defined  | green is pretty |</span>
<span style="color: #000080;">| test           | review_single_color | color_name      | param         | green           |</span>
<span style="color: #000080;">+----------------+---------------------+-----------------+---------------+-----------------+</span>

<span style="color: #000080;">+----------------+---------------------+--------------+------------------------+</span>
<span style="color: #000080;">| routine_schema | routine_name        | statement_id | statement              |</span>
<span style="color: #000080;">+----------------+---------------------+--------------+------------------------+</span>
<span style="color: #000080;">| test           | review_single_color |           20 | select @review_message |</span>
<span style="color: #000080;">+----------------+---------------------+--------------+------------------------+</span></pre>
</blockquote>
<p>You can further call <strong>rdebug_step_out()</strong> to leave this routine, <strong>rdebug_step_over()</strong> to avoid re-entry...</p>
<p><strong>6. debugger session:</strong> modify variables</p>
<p>Assuming you are inside the <strong>review_single_color()</strong> routine, would you like to modify a variable?</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_set_variable('color_name', 'A flower');</strong></span></pre>
</blockquote>
<p>Step over a few more times till the worker produces:</p>
<blockquote>
<pre><span style="color: #003300;"><em>+--------------------+</em></span>
<span style="color: #003300;"><em>| @review_message    |</em></span>
<span style="color: #003300;"><em>+--------------------+</em></span>
<span style="color: #003300;"><em>| A flower is pretty |</em></span>
<span style="color: #003300;"><em>+--------------------+</em></span></pre>
</blockquote>
<p>Continue playing with <strong>rdebug_step_into()</strong>, <strong>rdebug_step_over()</strong>, <strong>rdebug_step_out()</strong>.</p>
<p><strong>7. debugger session:</strong> setting a breakpoint</p>
<p>Based on the output of <strong>rdebug_show_routine('test', 'review_colors')</strong>, above, we now choose to set a non-conditional breakpoint, just before the statement <strong>call review_single_color(current_color)</strong>. That makes breakpoint ID <strong>145</strong>.</p>
<blockquote><p><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_set_breakpoint('test', 'review_colors', 145, NULL, true);</strong></span></p></blockquote>
<p><strong>8. debugger session:</strong> running up to a breakpoint<strong><br />
</strong></p>
<p>Now, let's allow the worker to run until it reaches this breakpoint:</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_run();</strong>
+-------------+----------------+---------------+--------------+---------------------+
| stack_level | routine_schema | routine_name  | statement_id | entry_time          |
+-------------+----------------+---------------+--------------+---------------------+
|           1 | test           | review_colors |          145 | 2013-04-08 15:41:28 |
+-------------+----------------+---------------+--------------+---------------------+

+----------------+---------------+---------------+---------------+----------------+
| routine_schema | routine_name  | variable_name | variable_type | variable_value |
+----------------+---------------+---------------+---------------+----------------+
| test           | review_colors | current_color | local         | white          |
| test           | review_colors | current_count | local         | 10             |
| test           | review_colors | done          | local         | 0              |
+----------------+---------------+---------------+---------------+----------------+

+----------------+---------------+--------------+-----------------------------------------+
| routine_schema | routine_name  | statement_id | statement                               |
+----------------+---------------+--------------+-----------------------------------------+
| test           | review_colors |          <strong>145</strong> | <strong>call review_single_color(current_color)</strong> |
+----------------+---------------+--------------+-----------------------------------------+</span></pre>
</blockquote>
<p>Run the above a few times: we always get back to the same statement. That is, until there's nothing more to do and the routine leaves.</p>
<h4>Walk-through - stopping and cleanup</h4>
<p><strong>8. debugger session:</strong> Stop the debugging session:</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_stop();</strong></span></pre>
</blockquote>
<p>You can start again via <strong>rdebug_start()</strong>. If, however, you're no longer interested in debugging, you should remove debugging code from your routines:</p>
<blockquote>
<pre><span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_compile_routine('test', 'review_colors', false);</strong></span>
<span style="color: #000080;">mysql [debugger]&gt; <strong>call rdebug_compile_routine('test', 'review_single_color', false);</strong></span></pre>
</blockquote>
<h4>Conclusion</h4>
<p>This is most there is to it. Read the <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/rdebug_api.html"><strong>API</strong></a> for a complete list of functionality</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/taking-common_schemas-rdebug-to-a-test-drive/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>common_schema 2.0.0-alpha: rdebug, GPL</title>
		<link>http://code.openark.org/blog/mysql/common_schema-2-0-0-alpha-rdebug-gpl</link>
		<comments>http://code.openark.org/blog/mysql/common_schema-2-0-0-alpha-rdebug-gpl#comments</comments>
		<pubDate>Tue, 09 Apr 2013 06:03:06 +0000</pubDate>
		<dc:creator>shlomi</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[common_schema]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[rdebug]]></category>
		<category><![CDATA[Stored routines]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://code.openark.org/blog/?p=6203</guid>
		<description><![CDATA[A new release for common_schema: an alpha version of rdebug: MySQL Debugger and Debugging API is now included with common_schema. With a different license in mind for rdebug, common_schema changes license to GPL (2 or above). common_schema 2.0 is ready for download. All things rdebug, it is alpha -- otherwise it's a stable release. rdebug [...]]]></description>
				<content:encoded><![CDATA[<p>A new release for <a href="https://code.google.com/p/common-schema/">common_schema</a>: an alpha version of <strong><a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/rdebug.html">rdebug</a>: MySQL Debugger and Debugging API</strong> is now included with <em>common_schema</em>.</p>
<p>With a different license in mind for <em>rdebug</em>, <em>common_schema</em> changes license to GPL (2 or above).</p>
<p><em>common_schema 2.0</em> is ready for <a href="http://code.google.com/p/common-schema/downloads/list">download</a>. All things <strong>rdebug</strong>, it is alpha -- otherwise it's a stable release.</p>
<h4>rdebug</h4>
<p>I'm very happy to release this alpha version of <em>rdebug</em>, and urge everyone to try it out.</p>
<p>The idea is to have an open, free, server side debugger and debugging API for MySQL stored routines. To elaborate:</p>
<ul>
<li>It's server side by that it's implemented by stored routines. Not by a connector; not an emulator; not a GUI tool hack. The entire functionality lies within common_schema, a schema in your server.</li>
<li>It's a debugger: you can debug your own stored routines (with limitations)</li>
<li>It's a <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/rdebug_api.html"><strong>debugging API</strong></a>: there's a distinct specification and a set of calls which makes for a debugging process</li>
<li>It's open since the source code is yours to browse.</li>
<li>It's free as in free beer.</li>
<li>It's free as it makes you independent of a specific debugger. It provides an API that anyone can use. You can run the API yourself from the command line; or plugins for your favorite GUI editor can be developed to use this API.</li>
</ul>
<p>On a separate blog post I will take you to a <em>rdebug</em> test drive.</p>
<p>As always, nothing is released before extensive <a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/rdebug.html">documentation</a> is in place.</p>
<p>I'd love to get input on this.<span id="more-6203"></span></p>
<h4>GPL</h4>
<p><em>common_schema</em> &lt; <strong>2.0</strong> was released under the BSD license, which is less restrictive. I was pondering the BSD license for a couple years now, and with the arrival of <em>rdebug</em> have decided to switch to GPL. I've been through this thinking of change of license in other projects of mine; am generally agreeing that best not to change licensing throughout lifetime. I actually do see GPL as promoting open source software better than BSD, and with all the issues around GPL this actually means something to me. I write open source; I love people using it; I love people extending it; I want to be re-released as open source, or I want better control of the code.</p>
<p>So this turns out to be something that is important to me, and just before <em>common_schema</em> takes the world in storm (<strong>212</strong> downloads today, <strong>212,000,000</strong> tomorrow), I want to have this settled. If no storm comes, well, I'll have up to <strong>212</strong> people banging on my door (I provide free coffee).</p>
<h4>Text routines</h4>
<p>Two text routines are added:</p>
<ul>
<li><a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/replace_sections.html"><strong>replace_sections()</strong></a>: replace a text given a from-to combination, and a replacement string, which could include a back-reference. For example:</li>
</ul>
<blockquote>
<pre>mysql&gt; select replace_sections(<strong>'The <span style="color: #000080;">&lt;b&gt;</span>quick<span style="color: #000080;">&lt;/b&gt;</span> brown <span style="color: #000080;">&lt;b&gt;</span>fox<span style="color: #000080;">&lt;/b&gt;</span>'</strong>, 
        <strong>'<span style="color: #000080;">&lt;b&gt;</span>'</strong>, <span style="color: #000080;"><strong>'&lt;/b&gt;'</strong></span>, 
        <strong><span style="color: #800000;">'&lt;span&gt;\\0&lt;/span&gt;'</span></strong>) as result;
+-----------------------------------------------+
| result                                        |
+-----------------------------------------------+
| The <span style="color: #800000;">&lt;span&gt;quick&lt;/span&gt;</span> brown <span style="color: #800000;">&lt;span&gt;fox&lt;/span&gt;</span> |
+-----------------------------------------------+</pre>
</blockquote>
<ul>
<li><a href="http://common-schema.googlecode.com/svn/trunk/common_schema/doc/html/hexcode_text.html"><strong>hexcode_text()</strong></a>: a convenience routine which shows a beautified hex-code of a given text. I get to need it when using UNICODE characters which are hard to detect, are visually identical to other characters, or are copied from MS Word.</li>
</ul>
<blockquote>
<pre>mysql&gt; <strong>call hexcode_text('the quick brown fox jumps over the lazy dog');</strong>
+-----------------------------------------------------------------------------------+
| &gt;0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f   0 1 2 3 4 5 6 7 8 9 a b c d e f |
+-----------------------------------------------------------------------------------+
| 74 68 65 20 71 75 69 63 6B 20 62 72 6F 77 6E 20   t h e   q u i c k   b r o w n   |
| 66 6F 78 20 6A 75 6D 70 73 20 6F 76 65 72 20 74   f o x   j u m p s   o v e r   t |
| 68 65 20 6C 61 7A 79 20 64 6F 67                  h e   l a z y   d o g           |
+-----------------------------------------------------------------------------------+</pre>
</blockquote>
<h4>Get it</h4>
<p><a href="https://code.google.com/p/common-schema/">Download <em>common_schema</em> here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://code.openark.org/blog/mysql/common_schema-2-0-0-alpha-rdebug-gpl/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
