<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<feed xmlns="http://www.w3.org/2005/Atom">

	<title>Planet Drizzle</title>
	<link rel="self" href="http://planetdrizzle.org/rss20.xml"/>
	<link href="http://planetdrizzle.org"/>
	<id>http://planetdrizzle.org/rss20.xml</id>
	<updated>2010-09-09T06:00:33+00:00</updated>
	<generator uri="http://www.planetplanet.org/">Planet/2.0 +http://www.planetplanet.org</generator>

	<entry xml:lang="en">
		<title type="html">Code coverage – now with branches!</title>
		<link href="http://www.wc220.com/?p=36"/>
		<id>http://www.wc220.com/?p=36</id>
		<updated>2010-09-03T18:44:53+00:00</updated>
		<content type="html">&lt;p&gt;We have now upgraded our lcov testing to take advantage of &lt;a href=&quot;http://ltp.sourceforge.net/coverage/lcov.php&quot;&gt;lcov 1.9&lt;/a&gt;&amp;#8216;s branch coverage.&lt;/p&gt;
&lt;p&gt;While code coverage isn&amp;#8217;t the be-all-end-all of testing, it is a very useful tool in helping us target areas that could use more tender, loving care (by which I mean beating them mercilessly with our test tools).  It doesn&amp;#8217;t prove completeness of testing &amp;#8211; it merely helps us move in that direction : )  The addition of branch-level coverage gives us another dimension to help us expand our testing.  We&amp;#8217;re also making use of the &amp;#8211;demangle-cpp option to produce neater function names for the &lt;a href=&quot;http://drizzle.org/lcov/drizzled/decimal.cc.func.html&quot;&gt;function-level&lt;/a&gt; coverage.&lt;/p&gt;
&lt;p&gt;You can check out the updated reports &lt;a href=&quot;http://drizzle.org/lcov/index.html&quot;&gt;here&lt;/a&gt;.  We gather the code coverage of our test suite with every push to trunk and store the data for general analysis.&lt;/p&gt;
&lt;p&gt;In other news, &lt;a href=&quot;http://krow.net/Aloha.html&quot;&gt;Brian&lt;/a&gt; has added two new functions for testing.  These changes were a part of another &lt;a href=&quot;https://blueprints.launchpad.net/drizzle/+spec/remove-print-stack-trace&quot;&gt;blueprint&lt;/a&gt; to remove print_stack_trace and stack dump.  While I haven&amp;#8217;t had a chance to do anything with them yet, I think these will be very useful and look forward to seeing what kinds of tests our community will be able to cook up : )&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crash the server:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt; % ./drizzled/drizzled &amp;#8211;plugin-add=crash_function&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt; select crash();&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Shutdown the server:&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;% ./drizzled/drizzled &amp;#8211;plugin-add=shutdown_function&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;select shutdown()&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Finally, I have been playing with the &lt;a href=&quot;http://machinesplusminds.blogspot.com/2010/06/setting-up-drizzle-and-syslog-for-each.html&quot;&gt;syslog plugin&lt;/a&gt; and it is awesome!  It is easy to setup and is very easy to use.  The data produced will be very useful in testing as well.  An example produced via a randgen run for your enjoyment:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;Sep  2 20:06:16 mahmachine drizzled[4340]: thread_id=4 query_id=200380 db=&amp;#8221;test&amp;#8221; query=&amp;#8221;SELECT    SUM(  table1 . `col_int_key` ) AS field1 FROM  c AS table1  RIGHT  JOIN g AS table2 ON  table1 . `col_varchar_1024` =  table2 . `col_varchar_1024_key`  WHERE table1 . `col_int` &amp;lt;&amp;gt; table1 . `col_int_key`   ORDER BY field1&amp;#8243; command=&amp;#8221;Query&amp;#8221; t_connect=1283472376187915 t_start=486 t_lock=367 rows_sent=1 rows_examined=2 tmp_table=0 total_warn_count=0&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;span&gt;Well, that&amp;#8217;s it for now.  We have some exciting work coming up and we look forward to seeing what kinds of awesome plugins are being developed out there.   Now back to hacking.&lt;/span&gt;&lt;/div&gt;</content>
		<author>
			<name>Patrick Crews</name>
			<uri>http://www.wc220.com</uri>
		</author>
		<source>
			<title type="html">workcenter220</title>
			<subtitle type="html">A little bit of everything</subtitle>
			<link rel="self" href="http://www.wc220.com/?feed=rss2"/>
			<id>http://www.wc220.com/?feed=rss2</id>
			<updated>2010-09-03T19:00:35+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Testing the data dictionary in a concurrent environment</title>
		<link href="http://www.wc220.com/?p=38"/>
		<id>http://www.wc220.com/?p=38</id>
		<updated>2010-09-02T19:06:41+00:00</updated>
		<content type="html">&lt;div id=&quot;_mcePaste&quot;&gt;So, Brian wrote a &lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/619422&quot;&gt;bug&lt;/a&gt; the other day, asking me to do more testing of &lt;a href=&quot;http://drizzle.org/Home.html&quot;&gt;Drizzle&amp;#8217;s&lt;/a&gt; data dictionary.  Specifically, we wanted to look for how things behaved in a concurrent environment as this is often a killer for table functions / what people are most likely to forget.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;What we came up with was the following &lt;a href=&quot;https://blueprints.launchpad.net/drizzle/+spec/randgen-data-dict-testing&quot;&gt;plan&lt;/a&gt;:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;1)  Generate a test that only looked at data dictionary tables, with several users generating the same queries.&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;2)  If step 1 looks good, we will slowly introduce background workloads (SELECT / UPDATE / etc) while we continue with the workload from step 1.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;This resulted in a couple of new randgen grammars:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;data_dict_concurrent_drizzle.yy &amp;#8211; this grammar generates nothing but queries against the data dictionary tables.  At present, these are mostly of the variety:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;SELECT * FROM data_dictionary_table&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;SHOW PROCESSLIST | VARIABLE | TABLE STATUS | etc&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;This is designed to stress the data dictionary, either alone or with another randgen process generating a background workload.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;proclist_subquery_drizzle.yy &amp;#8211; this grammar is the same as optimizer_subquery_drizzle (generating *nasty*, subquery-heavy SELECTs), but also allows for SHOW PROCESSLIST commands. This is mainly designed to stress the server / PROCESSLIST.  This grammar is nice as it is a single test that can just be run with several threads.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;I am happy to report that in a data dictionary-only environment, the server was able to handle things very well.  I was running up to 100 connections, 100k queries per connection and things looked good.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;The other tests are another matter.  While these are somewhat simple tests, they have proven highly effective so far:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://bugs.launchpad.net/bugs/627733&quot;&gt;Bug #627733&lt;/a&gt;: Crash in InnodbTrxTool::Generator::populate_innodb_locks (this=0x7f26140046f0) at plugin/innobase/handler/data_dictionary.cc:269&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://bugs.launchpad.net/bugs/627742&quot;&gt;Bug #627742&lt;/a&gt;: Assertion failed &amp;#8211; in drizzled::plugin::TableFunction::Generator::push (this=0x23876c0, arg=&amp;lt;value optimized out&amp;gt;, length=&amp;lt;value optimized out&amp;gt;) at drizzled/plugin/table_function.cc:185&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://bugs.launchpad.net/bugs/628398&quot;&gt;Bug #628398&lt;/a&gt;: Crash / segfault in copy_fields (join=0x284f868, end_of_records=false) at drizzled/sql_select.cc:6228&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;https://bugs.launchpad.net/bugs/628891&quot;&gt;Bug #628891&lt;/a&gt;: Crash / assertion failed &amp;#8211; in drizzled::Diagnostics_area::set_eof_status (this=0x7f9f3c2c4258, session=0x7f9f3c2c3b10) at drizzled/diagnostics_area.cc:120&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;For each of these bugs, data dictionary queries were being executed while another query was also being processed.  It should be noted that our newest team member, &lt;a href=&quot;http://www.linuxjedi.co.uk/&quot;&gt;Andrew Hutchings&lt;/a&gt;, had Bug#627742 fixed in less than 24 hours : )&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;I still have a few more scenarios to run through, but it appears that we have shaken out most of the bugs in this area.  Our next steps will be to install such tests in our build and test system to prevent regressions / catch new bugs and to fix the remaining crashes noted above.&lt;/div&gt;</content>
		<author>
			<name>Patrick Crews</name>
			<uri>http://www.wc220.com</uri>
		</author>
		<source>
			<title type="html">workcenter220</title>
			<subtitle type="html">A little bit of everything</subtitle>
			<link rel="self" href="http://www.wc220.com/?feed=rss2"/>
			<id>http://www.wc220.com/?feed=rss2</id>
			<updated>2010-09-03T19:00:35+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Drizzle build 1742 tarball has been released</title>
		<link href="http://blog.drizzle.org/2010/08/31/drizzle-build-1742-tarball-has-been-released/"/>
		<id>http://blog.drizzle.org/?p=842</id>
		<updated>2010-08-31T20:03:40+00:00</updated>
		<content type="html">&lt;p&gt;Drizzle source tarball based on build 1742 has been released.&lt;/p&gt;
&lt;p&gt;In this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;*Continued work on &lt;a href=&quot;http://www.8bitsofbytes.com/&quot;&gt;logging statistics&lt;/a&gt; - added a table to the scoreboard that gives memory usage and size&lt;/li&gt;
&lt;li&gt; print stack trace and stack dump have been removed.  As we use gcc for a majority of our builds, we are now using the built-in backtrace ability.  Added crash and shutdown functions for use in testing.  See &lt;a href=&quot;https://blueprints.launchpad.net/drizzle/+spec/remove-print-stack-trace&quot;&gt;blueprint&lt;/a&gt; for more details&lt;/li&gt;
&lt;li&gt; FOREIGN KEY info is now put into the table proto on CREATE TABLE, no longer just passed to the engine&lt;/li&gt;
&lt;li&gt; SHOW CREATE TABLE now uses the table proto&lt;/li&gt;
&lt;li&gt; Packages available for &lt;a href=&quot;http://packages.debian.org/unstable/main/drizzle&quot;&gt;Debian&lt;/a&gt; and &lt;a href=&quot;https://launchpad.net/ubuntu/+source/drizzle&quot;&gt;Ubuntu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; Removed static instances from plugins&lt;/li&gt;
&lt;li&gt; Continued code cleanup&lt;/li&gt;
&lt;li&gt; Various bug fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Drizzle download file can be found &lt;a href=&quot;https://launchpad.net/drizzle/dexter/2010-08-30&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Official Drizzle Blog</name>
			<uri>http://blog.drizzle.org</uri>
		</author>
		<source>
			<title type="html">DrizzleBlog</title>
			<link rel="self" href="http://blog.drizzle.org/feed/"/>
			<id>http://blog.drizzle.org/feed/</id>
			<updated>2010-08-31T21:00:43+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Welcome Andrew Hutchings to the Rackspace Drizzle team</title>
		<link href="http://blog.drizzle.org/2010/08/30/welcome-andrew-hutchings-to-the-rackspace-drizzle-team/"/>
		<id>http://blog.drizzle.org/?p=830</id>
		<updated>2010-08-30T18:13:13+00:00</updated>
		<content type="html">&lt;p&gt;Please join me in welcoming Andrew Hutchings to the Rackspace Drizzle team. Andrew has been a very active community contributor to the Drizzle project so we are very excited to have him on board now working on Drizzle. Well ok, his first official day is tomorrow but he has been very busy with contributions over the past number of weeks!&lt;/p&gt;
&lt;p&gt;Andrew lives in a small town in Northamptonshire, England with his wife and two sons.  Known as LinuxJedi to many online, he is a community code contributor to several open source projects.  He was previously a Senior MySQL Support Engineer for Sun/Oracle specialising in MySQL Cluster.  He is also the co-author of a book on the &lt;a href=&quot;https://www.packtpub.com/mysql-5-1-plugins-development/book&quot; target=&quot;_blank&quot;&gt;MySQL Plugin API&lt;/a&gt;. You may have already seen his &lt;a href=&quot;http://www.linuxjedi.co.uk/&quot; target=&quot;_blank&quot;&gt;blog&lt;/a&gt; on Planet Drizzle. &lt;/p&gt;
&lt;p&gt;Welcome to the team Andrew!&lt;/p&gt;</content>
		<author>
			<name>Official Drizzle Blog</name>
			<uri>http://blog.drizzle.org</uri>
		</author>
		<source>
			<title type="html">DrizzleBlog</title>
			<link rel="self" href="http://blog.drizzle.org/feed/"/>
			<id>http://blog.drizzle.org/feed/</id>
			<updated>2010-08-31T21:00:43+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Drizzle Transaction Message Limit</title>
		<link href="http://dshrewsbury.blogspot.com/2010/08/drizzle-transaction-message-limit.html"/>
		<id>tag:blogger.com,1999:blog-3514705510593466065.post-4436248939150307883</id>
		<updated>2010-08-29T18:56:11+00:00</updated>
		<content type="html">Some recent changes I made have recently been pushed to Drizzle trunk that affect the size of the &lt;a href=&quot;http://www.joinfu.com/2009/10/drizzle-replication-changes-in-api-to-support-group-commit/&quot;&gt;Transaction protobuf message&lt;/a&gt; that any replication stream will see (e.g., the &lt;a href=&quot;http://www.joinfu.com/2010/03/understanding-drizzles-transaction-log/&quot;&gt;transaction log&lt;/a&gt;). This was necessary to fix &lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/600795&quot;&gt;bug 600795&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Without a Transaction message size limit, for any bulk operations, like LOAD DATA, we would have ended up with a Transaction message that could possibly contain a very large Statement message that contained all of the INSERT data for the bulk load. This obviously could eat up a large amount of memory if we kept allowing the Statement to grow without bounds. The Drizzle kernel, when it can, keeps appending the values to INSERT onto the same record.&lt;br /&gt;&lt;br /&gt;To circumvent this, we now allow multiple Transaction records for a single database transaction. Each Transaction GPB message representing a single database transaction will all have the same transaction ID, and only the last Transaction message will have the Statement's &lt;span class=&quot;Apple-style-span&quot;&gt;end_segment&lt;/span&gt; attribute set to true.&lt;br /&gt;&lt;br /&gt;Here is an example of this change that you might now see in the transaction log:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;transaction_context {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;server_id: 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;transaction_id: 3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;start_timestamp: 1283118092815781&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;end_timestamp: 1283118092815869&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;statement {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;type: INSERT&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;start_timestamp: 1283118092815782&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;end_timestamp: 1283118092815868&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;insert_header {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;table_metadata {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;schema_name: &quot;test&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;table_name: &quot;t&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;field_metadata {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;type: INTEGER&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;name: &quot;id&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;field_metadata {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;type: VARCHAR&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;name: &quot;a&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;insert_data {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;segment_id: 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;end_segment: false&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;record {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;insert_value: &quot;2&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;insert_value: &quot;abc&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;is_null: false&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;is_null: false&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;record {&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;insert_value: &quot;3&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;insert_value: &quot;def&quot;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;is_null: false&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;is_null: false&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;transaction_context {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;server_id: 1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;transaction_id: 3&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;start_timestamp: 1283118092816250&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;end_timestamp: 1283118092816725&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;statement {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;type: INSERT&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;start_timestamp: 1283118092816251&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;end_timestamp: 1283118092816724&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;insert_header {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;table_metadata {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;schema_name: &quot;test&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;table_name: &quot;t&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;field_metadata {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;type: INTEGER&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;name: &quot;id&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;field_metadata {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;type: VARCHAR&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;name: &quot;a&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;insert_data {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;segment_id: 1&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;end_segment: true&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;record {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;insert_value: &quot;4&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;insert_value: &quot;ghi&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;is_null: false&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;is_null: false&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;record {&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;insert_value: &quot;5&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;insert_value: &quot;jkl&quot;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;is_null: false&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;is_null: false&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This example is a bit contrived as there is no need to split up such a small transaction, but you can see the basic changes here. We have two Transaction messages, both with the same transaction ID. You can see that the Statement's &lt;span class=&quot;Apple-style-span&quot;&gt;end_segment&lt;/span&gt; is set to false in the first message, while the Statement within the second Transaction message has &lt;span class=&quot;Apple-style-span&quot;&gt;end_segment&lt;/span&gt; set to true.&lt;br /&gt;&lt;br /&gt;So, in case it isn't obvious, there are now two ways to determine when you should commit if you are a replication stream &lt;a href=&quot;http://www.joinfu.com/2009/10/drizzle-replication-changes-in-api-to-support-group-commit/&quot;&gt;TransactionApplier&lt;/a&gt;, or if you are reading from the transaction log:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If the transaction ID changes, COMMIT.&lt;/li&gt;&lt;li&gt;Or, if the current Transaction has all Statement messages with end_segment set to true, COMMIT.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Choose which ever method of the two best suits your needs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Currently, if a Transaction message crosses the 1M threshold, the kernel will create a new Transaction message. Why did I choose 1M? Well, the &lt;a href=&quot;http://code.google.com/apis/protocolbuffers/docs/techniques.html#large-data&quot;&gt;Google Protobuf documentation says&lt;/a&gt;:&lt;/div&gt;&lt;blockquote&gt;&lt;i&gt;Protocol Buffers are not designed to handle large messages. As a general rule of thumb, if you are dealing in messages larger than a megabyte each, it may be time to consider an alternate strategy.&lt;/i&gt;&lt;/blockquote&gt;So 1M seemed to be a reasonable default. I'll change this in the near future to be a configurable value once we get some changes to our sys var stuff merged.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3514705510593466065-4436248939150307883?l=dshrewsbury.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>David Shrewsbury</name>
			<uri>http://dshrewsbury.blogspot.com/search/label/drizzle</uri>
		</author>
		<source>
			<title type="html">Shrews News</title>
			<link rel="self" href="http://dshrewsbury.blogspot.com/feeds/posts/default/-/drizzle"/>
			<id>tag:blogger.com,1999:blog-3514705510593466065</id>
			<updated>2010-08-30T00:00:18+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Adding a Drizzle Executable in Xcode</title>
		<link href="http://dshrewsbury.blogspot.com/2010/08/adding-drizzle-executable-in-xcode.html"/>
		<id>tag:blogger.com,1999:blog-3514705510593466065.post-741665898970762911</id>
		<updated>2010-08-25T12:23:42+00:00</updated>
		<content type="html">In my &lt;a href=&quot;http://dshrewsbury.blogspot.com/2010/06/developing-drizzle-with-xcode.html&quot;&gt;last post&lt;/a&gt;, I explained how to setup Drizzle under an Xcode project. This allows you to take advantage of Xcode's features while developing on Drizzle (or any other project of your own choosing). The one thing we weren't able to do was debug the Drizzle executable. This post remedies that.&lt;br /&gt;&lt;br /&gt;So it turns out that this is an easy fix. But for Drizzle, there are a few extra hoops you have to jump through in order to get it to work.&lt;br /&gt;&lt;br /&gt;The basic steps we need to do for Drizzle are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add a custom executable in Xcode&lt;/li&gt;&lt;li&gt;Setup any arguments you want to pass to the executable&lt;/li&gt;&lt;li&gt;Setup any environment variables needed for the executable to run properly&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;For most other projects, you can probably just get away with #1 and possibly #2. For Drizzle, though, we need to do #3 so that it can find its libraries.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Step #1 is easy. In the &lt;b&gt;Groups &amp;amp; Files&lt;/b&gt;&amp;nbsp;window, right click on &lt;b&gt;Executables&lt;/b&gt;&amp;nbsp;and then &lt;b&gt;Add&lt;/b&gt;&amp;nbsp;-&amp;gt; &lt;b&gt;New Custom Executable...&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_0cNc_A6-Bb8/THUwDl7nEII/AAAAAAAAABY/1TIZlb1oRAk/s1600/new_exe.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;222&quot; src=&quot;http://1.bp.blogspot.com/_0cNc_A6-Bb8/THUwDl7nEII/AAAAAAAAABY/1TIZlb1oRAk/s320/new_exe.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This will pop up a window where you define where the executable resides. Once that is done, you can define what arguments to pass it, and what environment variables should be set when it runs, among other things. These should be self explanatory, and you should be able to set this up for your particular project. For Drizzle, though, it isn't so intuitive.&lt;br /&gt;&lt;br /&gt;In Drizzle, after you run configure and make, the executable lives in a hidden directory within your &lt;i&gt;xcode-branch&lt;/i&gt; repo directory. It will actually be in:&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;$drizzle-repo/xcode-branch/drizzled/.libs/drizzled&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The executable you see in the &lt;i&gt;xcode-branch/drizzled&lt;/i&gt; subdirectory is actually a shell script that runs the real executable for you. Don't ask me why. So enter the path to the executable in the &lt;i&gt;.libs&lt;/i&gt; subdirectory:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/_0cNc_A6-Bb8/THUzKhd2dqI/AAAAAAAAABg/Fss65MN3yCk/s1600/exe2.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/_0cNc_A6-Bb8/THUzKhd2dqI/AAAAAAAAABg/Fss65MN3yCk/s320/exe2.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Once you enter in the path and click &lt;b&gt;Finish&lt;/b&gt;, you are given the chance to edit executable working directory, arguments, environment variables etc. &amp;nbsp;The important part here is the information under the &lt;b&gt;Arguments&lt;/b&gt; tab. We need to set the arguments to the executable as well as set the DYLD_LIBRARY_PATH environment variable so that the executable can find its dynamic libraries (otherwise, it looks for them in the installation directory, which if doesn't exist yet, will cause the executable to not start). Here is an example:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_0cNc_A6-Bb8/THU0jJbWM-I/AAAAAAAAABo/-gtjchFG-aQ/s1600/exe_args.png&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://2.bp.blogspot.com/_0cNc_A6-Bb8/THU0jJbWM-I/AAAAAAAAABo/-gtjchFG-aQ/s320/exe_args.png&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Once you have this setup, you should now be able to run your executable (after you've built it, of course), and use the Xcode debugger to merrily do some bug hunting. Make sure that you have unselected the &lt;b&gt;Load symbols lazily&lt;/b&gt; option in Xcode Debugging preferences so that your breakpoints will be recognized!&lt;br /&gt;&lt;br /&gt;Happy debugging.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3514705510593466065-741665898970762911?l=dshrewsbury.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>David Shrewsbury</name>
			<uri>http://dshrewsbury.blogspot.com/search/label/drizzle</uri>
		</author>
		<source>
			<title type="html">Shrews News</title>
			<link rel="self" href="http://dshrewsbury.blogspot.com/feeds/posts/default/-/drizzle"/>
			<id>tag:blogger.com,1999:blog-3514705510593466065</id>
			<updated>2010-08-30T00:00:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">WordPress and Drizzle</title>
		<link href="http://www.linuxjedi.co.uk/?p=10"/>
		<id>http://www.linuxjedi.co.uk/?p=10</id>
		<updated>2010-08-25T10:30:17+00:00</updated>
		<content type="html">&lt;p&gt;I am a firm believer in practising what you preaching so since I am working in Drizzle my blog should work on Drizzle.&lt;/p&gt;
&lt;p&gt;After a few small conversions of table schemas this WordPress blog is now running on a Drizzle database server!  I will over the next few weeks migrate the rest of the sites I host as well as other server-side things to use drizzle instead of MySQL.&lt;/p&gt;
&lt;p&gt;I also suggest watching this space, I will soon be working on a tool to make such migrations much easier.&lt;/p&gt;</content>
		<author>
			<name>Andrew Hutchings</name>
			<uri>http://www.linuxjedi.co.uk</uri>
		</author>
		<source>
			<title type="html">LinuxJedi's /dev/null » Drizzle</title>
			<subtitle type="html">Ramblings of a Linux Jedi</subtitle>
			<link rel="self" href="http://www.linuxjedi.co.uk/?feed=rss2&amp;cat=3"/>
			<id>http://www.linuxjedi.co.uk/?feed=rss2&amp;cat=3</id>
			<updated>2010-08-28T15:00:24+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Drizzle Clients on Windows - dirzzle and drizzledump</title>
		<link href="http://drizzlenotes.blogspot.com/2010/08/drizzle-clients-on-windows-dirzzle-and.html"/>
		<id>tag:blogger.com,1999:blog-2714269295322062120.post-9009334087545764516</id>
		<updated>2010-08-24T13:09:00+00:00</updated>
		<content type="html">All I have to share now is Drizzle client tools (both &lt;b&gt;drizzle&lt;/b&gt; command line and &lt;b&gt;drizzledump&lt;/b&gt;) for MS Windows are available for &lt;a href=&quot;http://drizzle.codeplex.com/&quot;&gt;Download&lt;/a&gt;. &lt;br /&gt;If you have time, please try it and give me feedback.&lt;br /&gt;(Consider this as a temporary location for hosting the binary packages. In future, we shall move to sacred location.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Kept postponing this post because there is a real dragon is under hatching (&lt;a href=&quot;http://coapp.org/&quot;&gt;CoApp&lt;/a&gt;).&lt;br /&gt;See &lt;a href=&quot;http://inaugust.com/post/84&quot;&gt;Monty's post&lt;/a&gt;.&lt;br /&gt;Help of those tools are required for moving forward because of our dependancy on list of libraries.&lt;br /&gt;Current build is using &lt;a href=&quot;http://mingw.org/&quot;&gt;MinGW&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;All started with, Toru's question on my previous blog post. :)&lt;br /&gt;Question was &quot;Does this survive through the tests?&quot; (libdrizzle patches on windows)&lt;br /&gt;Answer is : This is the productive way I can test my libdrizzle patches for windows.&lt;br /&gt;&lt;br /&gt;Patches for this windows build of clients are on the way to main trunk.&lt;br /&gt;I am trying to keep the patches as small chunks to ensure proper review and required rework in this earlier stages itself.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2714269295322062120-9009334087545764516?l=drizzlenotes.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Jobin</name>
			<uri>http://drizzlenotes.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Drizzle Notes</title>
			<link rel="self" href="http://drizzlenotes.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-2714269295322062120</id>
			<updated>2010-09-02T13:00:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">What are your favorite MySQL bug reports?</title>
		<link href="http://www.xaprb.com/blog/2010/08/23/what-are-your-favorite-mysql-bug-reports/"/>
		<id>http://www.xaprb.com/blog/?p=1988</id>
		<updated>2010-08-23T23:00:51+00:00</updated>
		<content type="html">&lt;p&gt;Bug reports can be fun.  They can also be terrible.  Either way they can be entertaining.  On the Drizzle IRC channel today I saw a couple references to MySQL bug reports:  &lt;a href=&quot;http://bugs.mysql.com/bug.php?id=56177&quot;&gt;it is stop working&lt;/a&gt; and &lt;a href=&quot;http://bugs.mysql.com/bug.php?id=2&quot;&gt;Does not make toast&lt;/a&gt; (which reminds me of the &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=122411&quot;&gt;Mozilla bug report about the kitchen sink&lt;/a&gt;).  Got any other favourites&lt;sup&gt;1&lt;/sup&gt;?&lt;/p&gt;

&lt;p&gt;&lt;sup&gt;1&lt;/sup&gt; This one&amp;#8217;s for Jay.&lt;/p&gt;

&lt;p&gt;Related posts:&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2007/10/20/what-are-your-favorite-mysql-replication-filtering-rules/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: What are your favorite MySQL replication filtering rules?&quot;&gt;What are your favorite MySQL replication filtering rules?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2008/08/08/my-new-favorite-comic-the-adventures-of-ace-dba/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: My new favorite comic: The Adventures of Ace, DBA&quot;&gt;My new favorite comic: The Adventures of Ace, DBA&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2008/04/01/what-is-your-favorite-database-design-book/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: What is your favorite database design book?&quot;&gt;What is your favorite database design book?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2008/12/13/what-are-your-favorite-postgresql-performance-resources/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: What are your favorite PostgreSQL performance resources?&quot;&gt;What are your favorite PostgreSQL performance resources?&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.xaprb.com/blog/2009/03/31/my-favorite-wiki-is-dokuwiki/&quot; rel=&quot;bookmark&quot; title=&quot;Permanent Link: My favorite wiki is Dokuwiki&quot;&gt;My favorite wiki is Dokuwiki&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;</content>
		<author>
			<name>Baron Schwartz</name>
			<uri>http://www.xaprb.com/blog</uri>
		</author>
		<source>
			<title type="html">Xaprb</title>
			<subtitle type="html">Stay curious!</subtitle>
			<link rel="self" href="http://www.xaprb.com/blog/feed/"/>
			<id>http://www.xaprb.com/blog/feed/</id>
			<updated>2010-09-08T01:00:31+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">LinuxJedi, the new era</title>
		<link href="http://www.linuxjedi.co.uk/?p=1"/>
		<id>http://blog.linuxjedi.co.uk/?p=1</id>
		<updated>2010-08-22T18:38:14+00:00</updated>
		<content type="html">&lt;p&gt;I have recently moved on from my roll as a Senior MySQL Support Engineer at Oracle to a &lt;a href=&quot;http://www.drizzle.org/&quot;&gt;Drizzle&lt;/a&gt; Developer at Rackspace.  As such my &lt;a href=&quot;http://blogs.sun.com/LinuxJedi&quot;&gt;previous blog&lt;/a&gt; is now sitting idle so this is the replacement.&lt;/p&gt;
&lt;p&gt;This new blog may have much less MySQL Cluster content, but I do hope to continue the same quality (I shall leave you to judge on how high that is!) of blog posts.&lt;/p&gt;</content>
		<author>
			<name>Andrew Hutchings</name>
			<uri>http://www.linuxjedi.co.uk</uri>
		</author>
		<source>
			<title type="html">LinuxJedi's /dev/null » Drizzle</title>
			<subtitle type="html">Ramblings of a Linux Jedi</subtitle>
			<link rel="self" href="http://www.linuxjedi.co.uk/?feed=rss2&amp;cat=3"/>
			<id>http://www.linuxjedi.co.uk/?feed=rss2&amp;cat=3</id>
			<updated>2010-08-28T15:00:24+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Where to find randgen testing information / documentation</title>
		<link href="http://www.wc220.com/?p=30"/>
		<id>http://www.wc220.com/?p=30</id>
		<updated>2010-08-20T16:06:35+00:00</updated>
		<content type="html">&lt;p&gt;I know I write a lot about testing with the &lt;a href=&quot;https://launchpad.net/randgen&quot;&gt;randgen&lt;/a&gt;.  In case anyone is interested, I wanted to share some links to randgen documentation and information.  It really is an amazing and powerful tool and has found &lt;strong&gt;many&lt;/strong&gt; bugs in MySQL, MariaDB, and &lt;a href=&quot;http://drizzle.org/Home.html&quot;&gt;Drizzle&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It can generate queries faster than anyone could ever think of them.  This provides breadth of input testing and allows for stress testing (multi-threaded scenarios are supported)&lt;/li&gt;
&lt;li&gt;A number of Validators are available to determine query correctness.  These include server-server comparison validators for testing result sets, execution time comparison validators for comparing query execution time, and others.  Custom validators are implemented fairly easily&lt;/li&gt;
&lt;li&gt;Grammar-based testing allows for faster generation of test queries.  Rather than thinking of individual queries, one can focus on &amp;#8216;patterns&amp;#8217; of queries and have the randgen generate hundreds of queries for the same amount of time and effort.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;With that little sales pitch out of the way, here are the links to documentation.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;http://forge.mysql.com/wiki/Category:RandomQueryGenerator&quot;&gt;MySQL Forge&lt;/a&gt; &amp;#8211; general documentation&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;http://drizzle.org/wiki/Randgen_running_tests&quot;&gt;Drizzle wiki &lt;/a&gt; &amp;#8211; information on how to run randgen tests and what to look for &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;a href=&quot;http://drizzle.org/wiki/DrizzleQA&quot;&gt;DrizzleQA&lt;/a&gt; &amp;#8211; links to information about all Drizzle testing&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I will be writing more about how to use this tool in the future, but I&amp;#8217;d definitely welcome feedback on what people are interested in.  The tool has applications for testing patches for regressions, validating upgrades based on current workloads, stress testing, etc. &amp;#8211; feel free to let me know what you&amp;#8217;d like to learn about.  Discussion is always welcome &amp;#8211; stop by &lt;a href=&quot;http://freenode.net/&quot;&gt;IRC&lt;/a&gt; (#drizzle) or drop us a line on our &lt;a href=&quot;https://launchpad.net/~drizzle-discuss&quot;&gt;mailing list&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Patrick Crews</name>
			<uri>http://www.wc220.com</uri>
		</author>
		<source>
			<title type="html">workcenter220</title>
			<subtitle type="html">A little bit of everything</subtitle>
			<link rel="self" href="http://www.wc220.com/?feed=rss2"/>
			<id>http://www.wc220.com/?feed=rss2</id>
			<updated>2010-09-03T19:00:35+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">SHOW CREATE TABLE using table protobuf message</title>
		<link href="http://www.flamingspork.com/blog/2010/08/20/show-create-table-using-table-protobuf-message/"/>
		<id>http://www.flamingspork.com/blog/?p=2121</id>
		<updated>2010-08-20T03:37:45+00:00</updated>
		<content type="html">&lt;p&gt;&amp;#8230; and &lt;strong&gt;really&lt;/strong&gt; testing the replication code path for CREATE TABLE.&lt;/p&gt;
&lt;p&gt;So, for a very long time now, &lt;a href=&quot;http://drizzle.org&quot;&gt;Drizzle&lt;/a&gt; has been using a &lt;a href=&quot;http://code.google.com/p/protobuf/&quot;&gt;protobuf&lt;/a&gt; based structure to describe the structure of tables. The idea was to be able to have engines rather painlessly generate this structure themselves (which several now do). A secondary idea was to use this structure itself for CREATE TABLE (in progress, and embedded_innodb does in fact does only use the table message for its CREATE TABLE codepath). The third idea was to just put the table protobuf message into the replication stream instead of the CREATE TABLE statement (i.e. a SQL string). This means that you could (easily) write a replicator to a DBMS with different SQL syntax, or to a system that doesn&amp;#8217;t speak SQL at all.&lt;/p&gt;
&lt;p&gt;The final step, to reduce duplicated code functionality, would be to have the code that does SHOW CREATE TABLE to use a common bit of code for turning a table protobuf message back into a SQL string.&lt;/p&gt;
&lt;p&gt;We now have that.&lt;/p&gt;
&lt;p&gt;Just now, my branch to replace the old SHOW CREATE TABLE code (that was using TableShare and friends) with the statement_transform code (that we also use in converting a replication log to SQL commands) hit trunk.&lt;/p&gt;
&lt;p&gt;Yay.&lt;/p&gt;


&lt;div class=&quot;shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy&quot;&gt;
&lt;ul class=&quot;socials&quot;&gt;
		&lt;li class=&quot;shr-facebook&quot;&gt;
			&lt;a href=&quot;http://www.facebook.com/share.php?v=4&amp;amp;src=bm&amp;amp;u=http://www.flamingspork.com/blog/2010/08/20/show-create-table-using-table-protobuf-message/&amp;amp;t=SHOW+CREATE+TABLE+using+table+protobuf+message&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on Facebook&quot;&gt;Share this on Facebook&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-twitter&quot;&gt;
			&lt;a href=&quot;http://twitter.com/home?status=SHOW+CREATE+TABLE+using+table+protobuf+message+-+http://b2l.me/ajk8k3&amp;amp;source=shareaholic&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Tweet This!&quot;&gt;Tweet This!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-delicious&quot;&gt;
			&lt;a href=&quot;http://delicious.com/post?url=http://www.flamingspork.com/blog/2010/08/20/show-create-table-using-table-protobuf-message/&amp;amp;title=SHOW+CREATE+TABLE+using+table+protobuf+message&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on del.icio.us&quot;&gt;Share this on del.icio.us&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-digg&quot;&gt;
			&lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.flamingspork.com/blog/2010/08/20/show-create-table-using-table-protobuf-message/&amp;amp;title=SHOW+CREATE+TABLE+using+table+protobuf+message&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Digg this!&quot;&gt;Digg this!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-googlebuzz&quot;&gt;
			&lt;a href=&quot;http://www.google.com/buzz/post?url=http://www.flamingspork.com/blog/2010/08/20/show-create-table-using-table-protobuf-message/&amp;amp;imageurl=&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Post on Google Buzz&quot;&gt;Post on Google Buzz&lt;/a&gt;
		&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Stewart Smith</name>
			<uri>http://www.flamingspork.com/blog</uri>
		</author>
		<source>
			<title type="html">Ramblings</title>
			<subtitle type="html">Ramblings which occasionally resemble reality. This is the blog of Stewart Smith.</subtitle>
			<link rel="self" href="http://www.flamingspork.com/blog/feed/"/>
			<id>http://www.flamingspork.com/blog/feed/</id>
			<updated>2010-09-09T06:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Testing restoration from drizzledump files</title>
		<link href="http://www.wc220.com/?p=20"/>
		<id>http://www.wc220.com/?p=20</id>
		<updated>2010-08-18T18:28:28+00:00</updated>
		<content type="html">&lt;div id=&quot;_mcePaste&quot;&gt;Currently, we have a lot of uses for drizzledump + restore:  upgrading Drizzle, backing up data, etc.  Since we are putting people in a position to rely on these tools, it seemed prudent that we improve our testing in this area.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;Our plan was to include both test-suite tests as well as more vigorous testing with the &lt;a href=&quot;https://launchpad.net/randgen&quot;&gt;randgen&lt;/a&gt;.  The test-suite tests are pretty straightforward and are in tests/t/drizzledump_restore.test.  You can get Drizzle &lt;a href=&quot;http://drizzle.org/Home.html&quot;&gt;here&lt;/a&gt; to check them out if reading test cases is your idea of fun : )  Of course, the randgen tests are the ones that do the interesting, high-volume stuff.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;In a nutshell, the randgen test randomly generates any number of test tables in a database.  The test tables have random composition (columns and datatypes used) and data population.  Once the tables have been generated, we call drizzledump, restore the tables from the dump file to a new database, then do a table-to-table comparison of the original and restored tables.  We report error and debugging information if we find a difference, and go on our happy way otherwise.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;This test is now a part of our regular build and test system and runs on every push to trunk.  We make use of a standard, repeatable set of queries and we also make use of the randgen&amp;#8217;s ability to randomize data and queries and use &amp;#8211;seed=time for a smaller run of the same test.  This gives us a larger spread of tests each run.  Fortunately, the randgen is nice enough to report the seed value for repeatability in case we encounter a bug.&lt;/div&gt;
&lt;div&gt;&lt;span&gt;# 2010-08-17T21:32:20 Converting &amp;#8211;seed=time to &amp;#8211;seed=128208074&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;Feeding the randgen the same seed value for a grammar / gendata file combination will produce the same tables, data, and queries each time.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;I&amp;#8217;m happy to report that the test currently passes with flying colors.  Interestingly enough, I discovered what happens when you try to have several clients running drizzledump, creating and altering test tables, and restoring data from dumpfiles and it isn&amp;#8217;t &lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/619492&quot;&gt;pretty&lt;/a&gt;.  Please note that our test is designed to run with only a single thread at a time : )&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;If anyone is interested in testing or anything else related to Drizzle, stop by &lt;a href=&quot;http://freenode.net/&quot;&gt;IRC&lt;/a&gt; (#drizzle) or drop us a line on our &lt;a href=&quot;https://launchpad.net/~drizzle-discuss&quot;&gt;mailing list&lt;/a&gt;.&lt;/div&gt;</content>
		<author>
			<name>Patrick Crews</name>
			<uri>http://www.wc220.com</uri>
		</author>
		<source>
			<title type="html">workcenter220</title>
			<subtitle type="html">A little bit of everything</subtitle>
			<link rel="self" href="http://www.wc220.com/?feed=rss2"/>
			<id>http://www.wc220.com/?feed=rss2</id>
			<updated>2010-09-03T19:00:35+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Storage Engine independent test suite</title>
		<link href="http://www.flamingspork.com/blog/2010/08/18/storage-engine-independent-test-suite/"/>
		<id>http://www.flamingspork.com/blog/?p=2118</id>
		<updated>2010-08-18T01:57:16+00:00</updated>
		<content type="html">&lt;p&gt;This is something that has never existed in the MySQL world. Nothing to help you start developing your engine.&lt;/p&gt;
&lt;p&gt;Sure, you could start running the whole test suite against your engine&amp;#8230;. but where it wasn&amp;#8217;t specifically MyISAM, you&amp;#8217;d certainly hit things that were.. well&amp;#8230; as simple as having to change the result file so that SHOW CREATE TABLE masked out the ENGINE= part.&lt;/p&gt;
&lt;p&gt;Also, if you were just starting out and were trying to incrementally write your engine, instead of just hacking away for 6 months on &amp;#8220;everything&amp;#8221; and then testing &amp;#8220;everything&amp;#8221; and hoping that &lt;strong&gt;anything&lt;/strong&gt; at all worked &amp;#8211; you were out of luck.&lt;/p&gt;
&lt;p&gt;So when working on the embedded_innodb engine for Drizzle I wanted to finally fix this problem. I was not going to fix it perfectly, or completely. What I wanted was a set of simple tests, that were very short and that tested distinct bits of the engine.&lt;/p&gt;
&lt;p&gt;So&amp;#8230; if you look in the Drizzle tree, in plugin/embedded_innodb/tests/ you&amp;#8217;ll find a bunch of test cases beginning with basic_ (they&amp;#8217;re also now in plugin/pbxt/tests). These check very basic functionality and should be useful when starting to write your own storage engine.&lt;/p&gt;
&lt;p&gt;They should also port easily to MySQL too (possibly without changes), but I haven&amp;#8217;t tried it. Porting to PBXT was simple.. a regex to replace InnoDB with PBXT.&lt;/p&gt;
&lt;p&gt;Enjoy.&lt;/p&gt;


&lt;div class=&quot;shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy&quot;&gt;
&lt;ul class=&quot;socials&quot;&gt;
		&lt;li class=&quot;shr-facebook&quot;&gt;
			&lt;a href=&quot;http://www.facebook.com/share.php?v=4&amp;amp;src=bm&amp;amp;u=http://www.flamingspork.com/blog/2010/08/18/storage-engine-independent-test-suite/&amp;amp;t=Storage+Engine+independent+test+suite&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on Facebook&quot;&gt;Share this on Facebook&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-twitter&quot;&gt;
			&lt;a href=&quot;http://twitter.com/home?status=Storage+Engine+independent+test+suite+-+File: /data/app/webapp/functions.php&lt;br /&gt;Line: 7&lt;br /&gt;Message: Too many connections&amp;amp;source=shareaholic&quot;&gt;&lt;br /&gt;Line: 7&lt;br /&gt;Message: Too many connections&amp;amp;source=shareaholic&quot;&gt;&lt;br /&gt;Line: 7&lt;br /&gt;Message: Too many connections&amp;amp;source=shareaholic&quot;&gt;&lt;br /&gt;Line: 7&lt;br /&gt;Message: Too many connections&amp;amp;source=shareaholic&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Tweet This!&quot;&gt;Tweet This!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-delicious&quot;&gt;
			&lt;a href=&quot;http://delicious.com/post?url=http://www.flamingspork.com/blog/2010/08/18/storage-engine-independent-test-suite/&amp;amp;title=Storage+Engine+independent+test+suite&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on del.icio.us&quot;&gt;Share this on del.icio.us&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-digg&quot;&gt;
			&lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.flamingspork.com/blog/2010/08/18/storage-engine-independent-test-suite/&amp;amp;title=Storage+Engine+independent+test+suite&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Digg this!&quot;&gt;Digg this!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-googlebuzz&quot;&gt;
			&lt;a href=&quot;http://www.google.com/buzz/post?url=http://www.flamingspork.com/blog/2010/08/18/storage-engine-independent-test-suite/&amp;amp;imageurl=&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Post on Google Buzz&quot;&gt;Post on Google Buzz&lt;/a&gt;
		&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Stewart Smith</name>
			<uri>http://www.flamingspork.com/blog</uri>
		</author>
		<source>
			<title type="html">Ramblings</title>
			<subtitle type="html">Ramblings which occasionally resemble reality. This is the blog of Stewart Smith.</subtitle>
			<link rel="self" href="http://www.flamingspork.com/blog/feed/"/>
			<id>http://www.flamingspork.com/blog/feed/</id>
			<updated>2010-09-09T06:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Drizzle build 1717 tarball has been released</title>
		<link href="http://blog.drizzle.org/2010/08/17/drizzle-build-1717-tarball-has-been-released/"/>
		<id>http://blog.drizzle.org/?p=817</id>
		<updated>2010-08-17T23:22:50+00:00</updated>
		<content type="html">&lt;div id=&quot;_mcePaste&quot;&gt;Drizzle source tarball based on build 1717 has been released.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;NOTE:  New dependency introduced!&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;We now require libboost-thread-dev to build.&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;Our &lt;a href=&quot;https://launchpad.net/~drizzle-developers/+archive/ppa&quot;&gt;ppa&lt;/a&gt; has been updated to reflect the change.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;We apologize for any inconvenience, but this gives us the following benefits:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.boost.org/&quot;&gt;boost&lt;/a&gt; threads have scope safety&lt;/li&gt;
&lt;li&gt;boost threads are completely portable (no more worrying about that stuff)&lt;/li&gt;
&lt;li&gt;They will allow us to see what is happening with threads through the Performance Schema&lt;/li&gt;
&lt;li&gt;They will allow us to eventually get rid of per-session memory, which will allow us to do more with asynchronous scheduling inside the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;In this release:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;
&lt;ul&gt;
&lt;li&gt;continued work on embedded_innodb / &lt;a href=&quot;http://www.haildb.com/&quot;&gt;HailDB&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;continued work on &lt;a href=&quot;http://www.8bitsofbytes.com/?p=20&quot;&gt;logging statistics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;continued work on updating the &lt;a href=&quot;http://inaugust.com/post/81 &quot;&gt;options system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;continued work on the filesystem storage engine&lt;/li&gt;
&lt;li&gt;code cleanup&lt;/li&gt;
&lt;li&gt;various bug fixes&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;The Drizzle download file can be found &lt;a href=&quot;https://launchpad.net/drizzle/+milestone/2010-08-16&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Official Drizzle Blog</name>
			<uri>http://blog.drizzle.org</uri>
		</author>
		<source>
			<title type="html">DrizzleBlog</title>
			<link rel="self" href="http://blog.drizzle.org/feed/"/>
			<id>http://blog.drizzle.org/feed/</id>
			<updated>2010-08-31T21:00:43+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">The last of the “my_long_options structs”</title>
		<link href="http://vjsamuel.wordpress.com/2010/08/16/the-last-of-the-my_long_options-structs/"/>
		<id>http://vjsamuel.wordpress.com/2010/08/16/the-last-of-the-my_long_options-structs/</id>
		<updated>2010-08-16T21:00:14+00:00</updated>
		<content type="html">As Google Summer of Code 2010 comes to an end my work of re factoring the commandline options and configuration file processing system using boost::program_options also is nearing the grand finale which would probably mean the complete removal of my_getopt which was used to solve the above stated purpose. Over the past couple of weeks [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=vjsamuel.wordpress.com&amp;amp;blog=13379184&amp;amp;post=59&amp;amp;subd=vjsamuel&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Vijay Samuel (GSOC)</name>
			<uri>http://vjsamuel.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Vijay Samuel's Blog</title>
			<subtitle type="html">Just another WordPress.com site</subtitle>
			<link rel="self" href="http://vjsamuel.wordpress.com/feed/rss/"/>
			<id>http://vjsamuel.wordpress.com/feed/rss/</id>
			<updated>2010-08-16T21:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">dedcode</title>
		<link href="http://dedcode.wordpress.com/2010/08/16/memcached-query-cache-plugin-in-action/"/>
		<id>http://dedcode.wordpress.com/?p=27</id>
		<updated>2010-08-16T08:38:31+00:00</updated>
		<content type="html">&lt;p&gt;I just finalized a first version of the query cache plugin for Drizzle. The good news is that the version is functional (YES you can try it out) but I guess it&amp;#8217;s just a starting point for finding bugs and adding the new stuff in , in short &amp;#8230; make it really functional.&lt;/p&gt;
&lt;p&gt;In a previous article I have exposed the plugin query cache interface and hooks in the Drizzle kernel. Few modification were made to that part and I will talk about that and all the technical details in a next article, for now I am just going to give a &amp;#8220;how-to&amp;#8221; to get you started using the plugin.&lt;/p&gt;
&lt;p&gt;First we need to get the branch where the latest code is pushed from my launchpad directory with the command:&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;$ bzr branch lp:~dedzone/drizzle/query-cache-gsoc&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;The plugin has two dependencies, Memcached and libmemcached, so make sure have these two installed before going further otherwise the compilation would fail. Then compile the branch and specify the query cache plugin (it&amp;#8217;s not by default):&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;$ ./config/autorun.sh
$ ./configure --with-memcached-query-cache-plugin
$ ./make -j2 &amp;amp;&amp;amp; make install&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;If you wish you can run the test plugin&amp;#8217;s test suite (try to have a memcached instance runing on localhost:11211, if the test poses problems)&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;$./tests/dtr --suite=memcached_query_cache&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;After that you would have an operational Drizzle server, and since we are going to use the memcached query cache plugin, we will also need a runing instance of memcached (it can be local or remote). Note that the option &amp;#8211;add-plugin would cause our plugin to get loaded, again it&amp;#8217;s not loaded by default, and don&amp;#8217;t forget to create a directory for your data exp: /home/user/db&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;$ memcached -l 127.0.0.1 -p 11211 -d
$ drizzled --datadir=/home/user/db/ --add-plugin=memcached_query_cache&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Now that we are all set, lets try out the memcached query cache plugin by starting a new client (drizzle c++ client or boots) and connect to drizzle. At this point the plugin is loaded and pointing to a default memcached server localhost:11211, if you have a different configuration you can change it dinamically with&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;drizzle&amp;gt; set global query_cache_servers=&quot;localhost:11311 remotehost:11211&quot;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;You can also set the expiration time of a memcached entry (default is 0, never), that is a global parameter that everybody will be bound to, but can also be changed dynamically.&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;drizzle&amp;gt; set global query_cache_expiry= 1000;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;So, where is the fun part? I have launched a discussion on Drizzle mailing list to decide on the syntax to cache or not a query. My very first orientation was to extend the sql syntax to and SQL_CACHE and SQL_NO_CACHE hints, but (thanks to all the contributor)  switched to a server command that will switch the on or off the cache on demand and per Session.&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;drizzle&amp;gt;set query_cache_enable= on;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Now your next Select statement will be cached and if you execute the exact same command (including spacing) the results you will get will come out from memcached \o/. Well, not totally true, a Select statement to be cached has to be cacheable, i.e. time functions, random, user, database .. are not deterministic, thus must not be cached. Also user defined functions are not supported (we just don&amp;#8217;t know what you&amp;#8217;ve done out there), and queries referring to Data_dictionary schema, that will make the server stuck in a time point &amp;#8230; not good &lt;img src=&quot;http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;wp-smiley&quot; /&gt; &lt;/p&gt;
&lt;p&gt;But, How would you know if your query is really cached! there is in fact a local cache structure that stores the current cached queries that you can freely query&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;drizzle&amp;gt; select * from emp;
+----------+------+
| name     | age  |
+----------+------+
| ded      |   28 |
| ded2     |   27 |
| vjsamuel |   19 |
+----------+------+
3 rows in set (0 sec)

drizzle&amp;gt; select * from emp where name like &quot;ded&quot;;
+------+------+
| name | age  |
+------+------+
| ded  |   28 |
+------+------+
1 row in set (0 sec)

drizzle&amp;gt; select * from emp where age &amp;lt; 25;
+----------+------+
| name     | age  |
+----------+------+
| vjsamuel |   19 |
+----------+------+
1 row in set (0 sec)

drizzle&amp;gt; select sysdate() from emp where age &amp;lt; 25;
+---------------------+
| sysdate()           |
+---------------------+
| 2010-08-16 03:19:52 |
+---------------------+
1 row in set (0 sec)

drizzle&amp;gt; select * from data_dictionary.query_cache_entries;
+----------------------------------+--------+-----------------------------------------+
| key                              | schema | sql                                     |
+----------------------------------+--------+-----------------------------------------+
| 376555ba10dae3d09ca6df52a0839be6 | cool   | select * from emp where name like &quot;ded&quot; |
| b1a551e4aa3f717798380e41dcee0960 | cool   | select * from emp                       |
| e2e2402c2b29ac0c2fad1769a31d2d0a | cool   | select * from emp where age &amp;lt; 25        |
+----------------------------------+--------+-----------------------------------------+
3 rows in set (0.01 sec)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Here we issued 5 select statement and the 3 of them is in the cache except the ones calling sysdate(), or the data_dictionary. The hash key that you see is an md5 of your query, it&amp;#8217;s the sole identification of your query cache in memcached and locally. One can play and look at the local cache content (It is a lovely protobuff message) with the following function:&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;drizzle&amp;gt; select print_query_cache_meta(&quot;e2e2402c2b29ac0c2fad1769a31d2d0a&quot;);

key: &quot;e2e2402c2b29ac0c2fad1769a31d2d0a&quot;
schema: &quot;cool&quot;
sql: &quot;select * from emp where age &amp;lt; 25&quot;
select_header {
table_meta {
schema_name: &quot;cool&quot;
table_name: &quot;emp&quot;
}
field_meta {
field_name: &quot;name&quot;
field_alias: &quot;name&quot;
table_name: &quot;emp&quot;
table_alias: &quot;emp&quot;
schema_name: &quot;cool&quot;
}
field_meta {
field_name: &quot;age&quot;
field_alias: &quot;age&quot;
table_name: &quot;emp&quot;
table_alias: &quot;emp&quot;
schema_name: &quot;cool&quot;
}
}&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;That&amp;#8217;s nice, but what happen if the data cached gets tempered with (DML, DDL) ! don&amp;#8217;t worry, the invalidation will take that in charge, in fact the plugin will keep a track of all the tables referenced in a query and will build a table similar to query_cache_entries, but will contain the reverse information, thus the table and all the entries of the cache making reference to it, that will avoid the burden of iterating overall the cache.&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;drizzle&amp;gt; select * from data_dictionary.query_cached_tables;
+---------+--------------------------------------------------------------------------------------------------------+
| Table   | Cache_Keys                                                                                             |
+---------+--------------------------------------------------------------------------------------------------------+
| coolemp | ::b1a551e4aa3f717798380e41dcee0960::376555ba10dae3d09ca6df52a0839be6::e2e2402c2b29ac0c2fad1769a31d2d0a |
+---------+--------------------------------------------------------------------------------------------------------+
1 row in set (0 sec)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Next, if one will change (or drop) the content of the table emp in the schema cool the replication system will cause the invalidation of all the cache entries  of the cache:&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;drizzle&amp;gt; delete from emp where name like &quot;ded1&quot;;
Query OK, 1 row affected (0 sec)
drizzle&amp;gt; select * from data_dictionary.query_cached_tables;
Empty set (0 sec)
drizzle&amp;gt; select * from data_dictionary.query_cache_entries;
Empty set (0 sec)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Final capability is the query_cache_flush() function, it will basically wipe out the whole content the local cache and the content of the memcached instances registred (make sure your instances are not used for another purpose)&lt;/p&gt;
&lt;pre&gt;&lt;span&gt;drizzle&amp;gt; select query_cache_flush();
+---------------------+
| query_cache_flush() |
+---------------------+
|                   1 |
+---------------------+
1 row in set (0 sec)
drizzle&amp;gt; select * from data_dictionary.query_cached_tables;
Empty set (0 sec)
drizzle&amp;gt; select * from data_dictionary.query_cache_entries;
Empty set (0 sec)&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;That was a small kinda manual to get you started with the query cache plugin, I hope to extend the functionalities to support fine grained invalidation in the near future. But for now there is still many work to be done to get rid of all the withstanding problems.&lt;/p&gt;&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/dedcode.wordpress.com/27/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/dedcode.wordpress.com/27/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/dedcode.wordpress.com/27/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/dedcode.wordpress.com/27/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/dedcode.wordpress.com/27/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/dedcode.wordpress.com/27/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/dedcode.wordpress.com/27/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/dedcode.wordpress.com/27/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/dedcode.wordpress.com/27/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/dedcode.wordpress.com/27/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/dedcode.wordpress.com/27/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/dedcode.wordpress.com/27/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/dedcode.wordpress.com/27/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/dedcode.wordpress.com/27/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=dedcode.wordpress.com&amp;amp;blog=13721606&amp;amp;post=27&amp;amp;subd=dedcode&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; height=&quot;1&quot; /&gt;</content>
		<author>
			<name>Djellel Eddine Difallah (GSOC)</name>
			<uri>http://dedcode.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Djellel Eddine Difallah » Drizzle</title>
			<subtitle type="html">Programming in general</subtitle>
			<link rel="self" href="http://dedcode.wordpress.com/category/drizzle/feed/"/>
			<id>http://dedcode.wordpress.com/category/drizzle/feed/</id>
			<updated>2010-09-01T13:00:09+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Tab completion framework done.</title>
		<link href="http://gsoc-boots-development.blogspot.com/2010/08/tab-completion-framework-done.html"/>
		<id>tag:blogger.com,1999:blog-7419587597559618651.post-5086741515742157437</id>
		<updated>2010-08-15T19:54:00+00:00</updated>
		<content type="html">I have completed the tab completion framework is now complete. It has been tested with a network updater built on MySQLdb library of python. Both static and network parts of updater mechanism are working.&lt;br /&gt;Now the task will be to finish this module by rewriting this network update framework with boots query framework.&lt;br /&gt;&lt;br /&gt;I now think that gsoc work is complete for me. Will now look for more open source work with drizzle.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/7419587597559618651-5086741515742157437?l=gsoc-boots-development.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Ashish</name>
			<uri>http://gsoc-boots-development.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Developments On Boots GSOC 2010</title>
			<subtitle type="html">During the summer of 2010, I am participating in the Google Summer of Code. I got the opportunity to develop for the Drizzle shell Project: Boots.</subtitle>
			<link rel="self" href="http://gsoc-boots-development.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-7419587597559618651</id>
			<updated>2010-08-24T15:00:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Future HailDB release planning</title>
		<link href="http://www.haildb.com/2010/08/13/future-haildb-release-planning/"/>
		<id>http://www.haildb.com/?p=49</id>
		<updated>2010-08-13T19:15:35+00:00</updated>
		<content type="html">&lt;p&gt;We&amp;#8217;ve started to plan out the next couple of HailDB releases over on the &lt;a href=&quot;https://launchpad.net/haildb&quot;&gt;HailDB Launchpad page&lt;/a&gt;. We&amp;#8217;re looking at each release being small and incremental changes. The next release or two will help us make the release process nice and smooth as well as fixing a few small things.&lt;/p&gt;
&lt;p&gt;We are a completely open project and encourage participation from everyone. Currently the best place for discussion would be the &lt;a href=&quot;https://launchpad.net/~drizzle-discuss&quot;&gt;drizzle-discuss&lt;/a&gt; mailing list (It&amp;#8217;ll be great when we have enough traffic to create a HailDB specific list).&lt;/p&gt;</content>
		<author>
			<name>HailDB Blog</name>
			<uri>http://www.haildb.com</uri>
		</author>
		<source>
			<title type="html">HailDB</title>
			<subtitle type="html">A relational database in shared library form</subtitle>
			<link rel="self" href="http://www.haildb.com/feed/"/>
			<id>http://www.haildb.com/feed/</id>
			<updated>2010-09-09T06:00:21+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Blob Streaming (PBMS) support in drizzle jdbc</title>
		<link href="http://developian.blogspot.com/2010/08/blob-streaming-pbms-support-in-drizzle.html"/>
		<id>tag:blogger.com,1999:blog-6543848899761399219.post-1457342459146387782</id>
		<updated>2010-08-11T22:18:29+00:00</updated>
		<content type="html">I just pushed up initial support for &lt;a href=&quot;http://www.blobstreaming.com&quot;&gt;PBMS&lt;/a&gt;, blob streaming for drizzle jdbc. It is not yet a complete solution for blob streaming, but you can use setBinaryStream and getBinaryStream to stream data to/from Drizzle and MySQL.&lt;br /&gt;&lt;br /&gt;To use it, grab a snapshot from &lt;a href=&quot;http://marcus.no-ip.biz/hudson/job/drizzle-jdbc-freestyle/&quot;&gt;hudson&lt;/a&gt; (the reason the tests fail is that i have not had time to rewrite INFORMATION_SCHEMA queries to support the new I_S in Drizzle). Then follow this example to get started, important stuff is in &lt;b&gt;bold&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;pre&gt;Connection connection = &lt;br /&gt;    DriverManager.getConnection(&lt;br /&gt;           &quot;jdbc:drizzle://localhost:3307/test_units_jdbc?&lt;b&gt;enableBlobStreaming=true&lt;/b&gt;&quot;);&lt;br /&gt;// inserting a blob:&lt;br /&gt;Statement stmt = connection.createStatement();&lt;br /&gt;stmt.execute(&quot;create table bstreaming1 (id int not null primary key auto_increment, test &lt;b&gt;longblob&lt;/b&gt;)&quot;);&lt;br /&gt;PreparedStatement ps = connection.prepareStatement(&quot;insert into bstreaming1 values (null, ?)&quot;);&lt;br /&gt;// fake an inputstream with data:&lt;br /&gt;ByteArrayInputStream bais = new ByteArrayInputStream(&quot;HEJHEJHEJ&quot;.getBytes());&lt;br /&gt;&lt;b&gt;ps.setBinaryStream(1, bais);&lt;/b&gt;&lt;br /&gt;ps.executeUpdate();&lt;br /&gt;        &lt;br /&gt;stmt = connection.createStatement();&lt;br /&gt;ResultSet rs = stmt.executeQuery(&quot;select * from bstreaming1&quot;);&lt;br /&gt;assertEquals(rs.next(), true);&lt;br /&gt;byte[] b = new byte[100];&lt;br /&gt;int l = &lt;b&gt;rs.getBinaryStream(&quot;test&quot;)&lt;/b&gt;.read(b);&lt;br /&gt;assertEquals(&quot;HEJHEJHEJ&quot;,new String(b,0,l));&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;To get PBMS support in drizzle you need to have a fairly recent build, and start the daemon with --plugin_add=pbms. InnoDB tables are streaming enabled, which means that any LONGBLOB column will be streamed. &lt;br /&gt;&lt;br /&gt;Note that in the current version you will get the blob reference and not a String representation of the blob if you do a getString on the column for example, this will change when I get time to do it.&lt;br /&gt;&lt;br /&gt;I have not yet tested against MySQL, if you have a PBMS enabled MySQL server, please let me know if it works!&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6543848899761399219-1457342459146387782?l=developian.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Marcus Eriksson</name>
			<uri>http://developian.blogspot.com/search/label/drizzle</uri>
		</author>
		<source>
			<title type="html">Developian</title>
			<subtitle type="html">Development blog, you will find posts about drizzle-jdbc and rabbitreplication here.</subtitle>
			<link rel="self" href="http://developian.blogspot.com/feeds/posts/default/-/drizzle"/>
			<id>tag:blogger.com,1999:blog-6543848899761399219</id>
			<updated>2010-09-08T16:00:38+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">What’s new in the plugin world!</title>
		<link href="http://vjsamuel.wordpress.com/2010/08/10/whats-new-in-the-plugin-world/"/>
		<id>http://vjsamuel.wordpress.com/2010/08/10/whats-new-in-the-plugin-world/</id>
		<updated>2010-08-10T19:00:13+00:00</updated>
		<content type="html">Its been more than a month since i started working on re factoring the plugin system in order to support the new option processing system which uses boost::program_options. I &amp;#8216;ve had tonnes of help from Monty Taylor who had worked on the interface. I &amp;#8216;ve also had constant help from Brian Aker. I &amp;#8216;ve slowly [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=vjsamuel.wordpress.com&amp;amp;blog=13379184&amp;amp;post=56&amp;amp;subd=vjsamuel&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Vijay Samuel (GSOC)</name>
			<uri>http://vjsamuel.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Vijay Samuel's Blog</title>
			<subtitle type="html">Just another WordPress.com site</subtitle>
			<link rel="self" href="http://vjsamuel.wordpress.com/feed/rss/"/>
			<id>http://vjsamuel.wordpress.com/feed/rss/</id>
			<updated>2010-08-16T21:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libdrizzle in Visual Studio</title>
		<link href="http://inaugust.com/post/84"/>
		<id>http://inaugust.com/post/84</id>
		<updated>2010-08-10T04:22:50+00:00</updated>
		<content type="html">&lt;p&gt;Thanks to Jobin's work with mingw and getting libdrizzle to compile on Windows at all, I have been able to get it working in Visual Studio natively. The code is in trunk now.&lt;/p&gt;&lt;p&gt;The approach I took, which is how I'm going to approach Windows and Visual Studio for all of our stuff, is to not worry with analogues to things like configure on Windows. Windows is a very different platform from Linux, and there is no need to attempt to duplicate Linux process there. To that end, the goal at least for now will be static VS Solution files and a set of instructions of how to get depends installed so that the Solution can find them.&amp;nbsp;&lt;/p&gt;&lt;p&gt;I'm excited to start poking at Garrett Serack's &lt;a href=&quot;http://blogs.msdn.com/b/garretts/archive/2010/03/31/the-common-opensource-application-publishing-platform-coapp.aspx&quot;&gt;CoApp Project&lt;/a&gt;, which has some tools do do tracing of things like make to help with the initial project creation... and I fully expect to take advantage of his work in terms of creating installable packages.&lt;/p&gt;&lt;p&gt;Jobin has started working on Drizzle itself and has the drizzle client working so far.&lt;/p&gt;</content>
		<author>
			<name>Monty Taylor</name>
			<uri>http://inaugust.com/</uri>
		</author>
		<source>
			<title type="html">In August Productions</title>
			<subtitle type="html">The latest entries from In August Productions</subtitle>
			<link rel="self" href="http://inaugust.com/feed/rss2_0?tag=drizzle"/>
			<id>http://inaugust.com/feed/rss2_0?tag=drizzle</id>
			<updated>2010-09-09T06:00:01+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Testing Drizzle with the random query generator</title>
		<link href="http://www.wc220.com/?p=13"/>
		<id>http://www.wc220.com/?p=13</id>
		<updated>2010-08-06T15:50:26+00:00</updated>
		<content type="html">&lt;p&gt;As some of you may know, part of Drizzle&amp;#8217;s testing process involves the use of the &lt;a href=&quot;https://launchpad.net/randgen&quot;&gt;random query generator&lt;/a&gt; (aka randgen aka RQG).  Any patches that want to make it into trunk must survive several randgen tests, among &lt;a href=&quot;http://hudson.drizzle.org/&quot;&gt;other things&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;One of the first things I did upon joining the Drizzle team at &lt;a href=&quot;http://www.rackspace.com/index.php&quot;&gt;Rackspace&lt;/a&gt; was to take a look at the RQG tests running in Hudson.  My evaluation included tuning up the existing tests and modifying some MySQL test grammars for use with Drizzle.  It should be noted that randomness is a double-edged sword &amp;#8211; it is extremely powerful for finding bugs, but it also requires a certain amount of diligence to produce useful, valid queries.  Once my initial work was complete, we unleashed the new RQG tests and found the following bugs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/585628 &quot;&gt;Adding STRAIGHT_JOIN to certain queries results in loss of returned rows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/585644 &quot;&gt;Adding STRAIGHT_JOIN to certain queries results in a large number of duplicate rows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/592444 &quot;&gt;Segfault &amp;#8211; operator= (join=0x1fd0fd8, tables=&amp;lt;value optimized out&amp;gt;, conds=&amp;lt;value optimized out&amp;gt;, keyuse_array=&amp;lt;value optimized out&amp;gt;) at ./drizzled/join_table.h:73 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/592473 &quot;&gt;Crash/segfault in drizzled::subselect_single_select_engine::exec (this=0x19a7008) at drizzled/item/subselect.cc:2204&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/586051 &quot;&gt;Server allowing JOIN on NULL values in certain cases if query includes ORDER BY clause&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/586578 &quot;&gt;crash / assertion in add_found_match_trig_cond &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/595305 &quot;&gt;Assertion failed &amp;#8211; exec_method != MATERIALIZATION || (exec_method == MATERIALIZATION &amp;amp;&amp;amp; engine-&amp;gt;engine_type() == subselect_engine::HASH_SJ_ENGINE)&amp;#8221;, file=&amp;lt;value optimized out&amp;gt;, line=318, function=0x84fae0 &amp;#8220;virtual bool drizzled::Item_in_subselect::exec() &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/588487&quot;&gt;Using &amp;#8216;ALTER TABLE &amp;lt;&amp;gt; ENABLE KEYS&amp;#8217; on a BlitzDB table locks up the server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/600664&quot;&gt;Crash / segfault in drizzled::optimizer::add_key_part (keyuse_array=&amp;lt;value optimized out&amp;gt;, key_field=0x2d0dc28) at drizzled/optimizer/key_field.cc:63&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/599427&quot;&gt;Crash / Segfault in BlitzDB &amp;#8211; in BlitzTree::write (this=&amp;lt;value optimized out&amp;gt;, key=0x3c72 &amp;lt;Address 0x3c72 out of bounds&amp;gt;, klen=6) at plugin/blitzdb/blitzindex.cc:116&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.launchpad.net/drizzle/+bug/608416&quot;&gt;Crash / assertion failed &amp;#8211; &amp;#8220;void drizzled::Select_Lex::print(drizzled::Session*, drizzled::String*, drizzled::enum_query_type)&amp;#8221;) at assert.c:81 #3 0x00000000006282fb in drizzled::Select_Lex::print (this=0&amp;#215;3911418, session=0&amp;#215;0, str=0x7f26b77fd7c0, query_type=drizzled::QT_ORDINARY) at drizzled/sql_select.cc:6592&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;At the time of this writing, 6 of these are in &amp;#8216;Fix Released&amp;#8217; status and 3 more are in work.  I&amp;#8217;d like to extend a personal &amp;#8220;Thank you&amp;#8221; to &lt;a href=&quot;http://prafullasblog.blogspot.com/&quot;&gt;Prafulla Tekawade&lt;/a&gt; for his great work &amp;#8211; he has supplied the patches for 5 out of the 6 fixed bugs (!).  Additionally, thanks for &lt;a href=&quot;http://torum.net/&quot;&gt;Toru Maesaka&lt;/a&gt; for his continued work on BlitzDB (which is part of our&lt;a href=&quot;http://blog.drizzle.org/2010/06/28/testing-blitzdb-with-the-randgen/&quot;&gt; regular randgen testing&lt;/a&gt;). &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If anyone is interested in learning more about using the random query generator, I encourage you to check out &lt;a href=&quot;https://launchpad.net/randgen&quot;&gt;launchpad&lt;/a&gt;.  General information can also be found &lt;a href=&quot;http://forge.mysql.com/wiki/Category:RandomQueryGenerator&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://drizzle.org/wiki/Randgen_running_tests&quot;&gt;here&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</content>
		<author>
			<name>Patrick Crews</name>
			<uri>http://www.wc220.com</uri>
		</author>
		<source>
			<title type="html">workcenter220</title>
			<subtitle type="html">A little bit of everything</subtitle>
			<link rel="self" href="http://www.wc220.com/?feed=rss2"/>
			<id>http://www.wc220.com/?feed=rss2</id>
			<updated>2010-09-03T19:00:35+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Ubuntu packages of HailDB now available</title>
		<link href="http://www.haildb.com/2010/08/04/ubuntu-packages-of-haildb-now-available/"/>
		<id>http://www.haildb.com/?p=44</id>
		<updated>2010-08-04T20:14:59+00:00</updated>
		<content type="html">&lt;p&gt;In the &lt;a href=&quot;https://edge.launchpad.net/~haildb-core/+archive/ppa/&quot;&gt;haildb-core PPA over on launchpad&lt;/a&gt;. Thanks to &lt;a href=&quot;http://inaugust.com&quot;&gt;Monty Taylor&lt;/a&gt; for packaging.&lt;/p&gt;</content>
		<author>
			<name>HailDB Blog</name>
			<uri>http://www.haildb.com</uri>
		</author>
		<source>
			<title type="html">HailDB</title>
			<subtitle type="html">A relational database in shared library form</subtitle>
			<link rel="self" href="http://www.haildb.com/feed/"/>
			<id>http://www.haildb.com/feed/</id>
			<updated>2010-09-09T06:00:21+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Drizzle on Windows - Challenges ahead</title>
		<link href="http://drizzlenotes.blogspot.com/2010/08/drizzle-on-windows-challenges-ahead.html"/>
		<id>tag:blogger.com,1999:blog-2714269295322062120.post-5736293993506488686</id>
		<updated>2010-08-04T18:04:00+00:00</updated>
		<content type="html">Since Drizzle is Open, I am sure that one day someone will take the &lt;a href=&quot;http://inaugust.com/post/83&quot;&gt;mantile&lt;/a&gt; to deepest.&lt;br /&gt;As you already know, Drizzle is effectively making use of other opensource libraries available.&lt;br /&gt;(Drizzle developers tell that is because they are lazy. But personally i consider that it is because they (we) are open to the environment and we respect and trust on expertise of other opensource communities)&lt;br /&gt;&lt;br /&gt;But same philosophy works against a &quot;builder&quot; and &quot;porter&quot; on non open platform (say windows).&lt;br /&gt;many of this opensource libraries need to be built on (ported???) windows.&lt;br /&gt;&lt;br /&gt;Best example is google protobuffer itslef.&lt;br /&gt;latest tarball release of protobuffer won't compile on windows.&lt;br /&gt;(simple googling told me that google already corrected this issue in the branch)&lt;br /&gt;But it is an alarm bell! These powerful libraries are not very well used / tested on Closed Grave yards.&lt;br /&gt;&lt;br /&gt;I downloaded tarballs of most of the libraries on which drizzle is dependent on.&lt;br /&gt;all these tarballs expect me to run ./configure and make.&lt;br /&gt;!!!!(puzzled!)...in my language... &quot;dog gets an unbroken coconut as food&quot; (trasilated version)&lt;br /&gt;&lt;br /&gt;I think, since windows relys on binary distributions, they are not exepcting us to &quot;make&quot; it.&lt;br /&gt;But there are dedicated people who maintain binary versions; but getting latest version is challenge.&lt;br /&gt;Mingw (Msys) team are doing an amazingly well job here.&lt;br /&gt;No wonder, most of binary versions of these libraries are build on Mingw&lt;br /&gt;I hope thats the way to go deeper.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2714269295322062120-5736293993506488686?l=drizzlenotes.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Jobin</name>
			<uri>http://drizzlenotes.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Drizzle Notes</title>
			<link rel="self" href="http://drizzlenotes.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-2714269295322062120</id>
			<updated>2010-09-02T13:00:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Drizzle build 1683 tarball has been released</title>
		<link href="http://blog.drizzle.org/2010/08/03/drizzle-build-1683-tarball-has-been-release/"/>
		<id>http://blog.drizzle.org/?p=811</id>
		<updated>2010-08-04T00:07:42+00:00</updated>
		<content type="html">&lt;p&gt;Drizzled source tarball based on build 1683 has been released. In this release:&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Fixes for several bugs in transaction log&lt;/li&gt;
&lt;li&gt;ANSI INFORMATION_SCHEMA now populates itself&lt;/li&gt;
&lt;li&gt;Continued code cleanup&lt;/li&gt;
&lt;li&gt;Various bug fixes&lt;/li&gt;
&lt;li&gt;Filesystem plugin merged in&lt;/li&gt;
&lt;li&gt;Merged in intltool&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;The Drizzle download file can be found &lt;a href=&quot;https://launchpad.net/drizzle/+milestone/2010-08-02&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Official Drizzle Blog</name>
			<uri>http://blog.drizzle.org</uri>
		</author>
		<source>
			<title type="html">DrizzleBlog</title>
			<link rel="self" href="http://blog.drizzle.org/feed/"/>
			<id>http://blog.drizzle.org/feed/</id>
			<updated>2010-08-31T21:00:43+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">RPMs of HailDB now available!</title>
		<link href="http://www.haildb.com/2010/08/03/rpms-of-haildb-now-available/"/>
		<id>http://www.haildb.com/?p=41</id>
		<updated>2010-08-03T17:14:10+00:00</updated>
		<content type="html">&lt;p&gt;Over at the &lt;a href=&quot;http://drizzle.org/wiki/RPMInstallation&quot;&gt;Drizzle Wiki&lt;/a&gt;, there are instructions on how to add the Unofficial Fedora/RHEL repository to your installation and then you can install the HailDB package.&lt;/p&gt;
&lt;p&gt;We hope to at some point soon also submit it to the official repository.&lt;/p&gt;
&lt;p&gt;We&amp;#8217;ll also have debs for Debian and Ubuntu shortly.&lt;/p&gt;</content>
		<author>
			<name>HailDB Blog</name>
			<uri>http://www.haildb.com</uri>
		</author>
		<source>
			<title type="html">HailDB</title>
			<subtitle type="html">A relational database in shared library form</subtitle>
			<link rel="self" href="http://www.haildb.com/feed/"/>
			<id>http://www.haildb.com/feed/</id>
			<updated>2010-09-09T06:00:21+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Developing Drizzle with Xcode</title>
		<link href="http://dshrewsbury.blogspot.com/2010/06/developing-drizzle-with-xcode.html"/>
		<id>tag:blogger.com,1999:blog-3514705510593466065.post-5581532411326281631</id>
		<updated>2010-08-03T10:52:43+00:00</updated>
		<content type="html">Even with all of its shortcomings, Xcode has excellent integration with the GNU debugger. It also has some good features for understanding a large code base that you may be unfamiliar with. For these reasons, I like to use Xcode for my development work. Unfortunately, it takes a bit of magic to get it setup to work with an external project that was not created specifically with/for Xcode and that does not use CVS/Subversion/Perforce.&lt;br /&gt;&lt;br /&gt;If you want to use Xcode to work on Drizzle, these are the steps you need to take to setup a project. Note that Xcode doesn't support Bazaar so you still need to do some things from the command line. (Come on, Apple. CVS and Subversion just plain suck)&lt;br /&gt;&lt;br /&gt;These instructions assume that the Drizzle repo is located in $drizzle-repo, as described &lt;a href=&quot;http://drizzle.org/wiki/Contributing_Code&quot;&gt;here in the Drizzle wiki.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First, we need to create a new branch (we'll call it &lt;i&gt;xcode-branch&lt;/i&gt;)&amp;nbsp;of Drizzle trunk to use for our yet to be created Xcode project.&lt;br /&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;cd $drizzle-repo&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;&lt;span class=&quot;Apple-style-span&quot;&gt;bzr branch trunk xcode-branch&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Next, we'll go into Xcode and create a new project. Choose the &lt;b&gt;External Build System&lt;/b&gt;&amp;nbsp;project. With this type of project, we'll be able to click on &lt;b&gt;Build&lt;/b&gt; to run make for us.&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_0cNc_A6-Bb8/TCtHeb86lOI/AAAAAAAAAAM/OQ2u41s04pU/s1600/xcode_new_project.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;342&quot; src=&quot;http://1.bp.blogspot.com/_0cNc_A6-Bb8/TCtHeb86lOI/AAAAAAAAAAM/OQ2u41s04pU/s400/xcode_new_project.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;Click the &lt;b&gt;Choose...&lt;/b&gt;&amp;nbsp;button and save your project some place appropriate (anywhere but inside your $drizzle-repo directory). We'll tell the project where to find the source files in &lt;i&gt;xcode-branch&lt;/i&gt;&amp;nbsp;in the following steps.&lt;br /&gt;&lt;br /&gt;After saving, your project window should appear. At this point, we have no source code files in our project, so we need to tell Xcode to use our &lt;i&gt;xcode-branch&lt;/i&gt;&amp;nbsp;as the location of our source. We do that by right-clicking on our project name in the &lt;b&gt;Groups &amp;amp; Files&lt;/b&gt;&amp;nbsp;section of the project window and selecting &lt;b&gt;Add&lt;/b&gt;&amp;nbsp;-&amp;gt; &lt;b&gt;Existing Files...&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_0cNc_A6-Bb8/TCtLLsTRJtI/AAAAAAAAAAU/7pQvOF-eoQs/s1600/add_files.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;280&quot; src=&quot;http://1.bp.blogspot.com/_0cNc_A6-Bb8/TCtLLsTRJtI/AAAAAAAAAAU/7pQvOF-eoQs/s400/add_files.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Navigate to your &lt;i&gt;xcode-branch&lt;/i&gt;&amp;nbsp;directory, select the directory, and click the &lt;b&gt;Add&lt;/b&gt;&amp;nbsp;button. In the window that appears, make sure that &lt;b&gt;Copy items into destination group's folder&lt;/b&gt;&amp;nbsp;option is NOT selected. We don't want to copy the source files into the Xcode project directory, we want to use them from within the Bazaar branch. We do this so that after we make changes with Xcode, we can easily open a Terminal window and commit our changes from the command line. (Again, this is because Xcode does not have Bazaar direct integration.) Also, make sure that &lt;b&gt;Recursively create groups for any added folders&lt;/b&gt;&amp;nbsp;is selected. So you should have:&lt;br /&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/_0cNc_A6-Bb8/TCtMbjK2mbI/AAAAAAAAAAc/ywgDopZwBfo/s1600/add_to_target.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://2.bp.blogspot.com/_0cNc_A6-Bb8/TCtMbjK2mbI/AAAAAAAAAAc/ywgDopZwBfo/s320/add_to_target.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Click &lt;b&gt;Add&lt;/b&gt;&amp;nbsp;and a folder for your &lt;i&gt;xcode-branch&lt;/i&gt;&amp;nbsp;should appear under your project name in the &lt;b&gt;Groups &amp;amp; Files&lt;/b&gt;&amp;nbsp;section.&lt;br /&gt;&lt;br /&gt;So what have we just done? We basically did two things here:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Created a Bazaar branch for our modifications we will make under Xcode&lt;/li&gt;&lt;li&gt;Created an Xcode project that points to our Bazaar branch.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;Our working Xcode project is split up into two separate directories: one for the Xcode project files, and one for the Bazaar source files. This may seem a bit odd if you expected everything to be under a single directory, but we have to do it this way so that we can still use Bazaar commands.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There is one last thing to do now. Xcode is now setup to automatically just call 'make' when we click on our &lt;b&gt;Build&lt;/b&gt;&amp;nbsp;button, but it will attempt to run 'make' in the Xcode project directory, not in our &lt;i&gt;xcode-branch&lt;/i&gt;&amp;nbsp;directory. This is an easy fix. Double-click on the target underneath&amp;nbsp;&lt;b&gt;Targets&lt;/b&gt;&amp;nbsp;in the &lt;b&gt;Groups &amp;amp; Files&lt;/b&gt;&amp;nbsp;section of the project window. This will open up the following window:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/_0cNc_A6-Bb8/TCtQTIuPalI/AAAAAAAAAAk/vmG6KWxp6nU/s1600/target.png&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://1.bp.blogspot.com/_0cNc_A6-Bb8/TCtQTIuPalI/AAAAAAAAAAk/vmG6KWxp6nU/s400/target.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Set the &lt;i&gt;Directory&lt;/i&gt;&amp;nbsp;under &lt;b&gt;Custom Build Command&lt;/b&gt;&amp;nbsp;to the location of your &lt;i&gt;xcode-branch&lt;/i&gt;. Once you do this, then clicking &lt;b&gt;Build&lt;/b&gt;&amp;nbsp;will run 'make' from within the &lt;i&gt;xcode-branch&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That's it! You can now edit the source, use Xcode features to jump to various definitions, search project files, and build the project using Command-B or the &lt;b&gt;Build&lt;/b&gt;&amp;nbsp;menu option. Obviously, you'll first have to create and run the configure script in your &lt;i&gt;xcode-branch&lt;/i&gt;&amp;nbsp;directory&amp;nbsp;by hand before you can build. And you will not be able to use the other build commands, like&amp;nbsp;&lt;b&gt;Build and Run&lt;/b&gt;, or use the debugger until you setup an executable for the project. I'll cover that in a future post.&lt;/div&gt;&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/3514705510593466065-5581532411326281631?l=dshrewsbury.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>David Shrewsbury</name>
			<uri>http://dshrewsbury.blogspot.com/search/label/drizzle</uri>
		</author>
		<source>
			<title type="html">Shrews News</title>
			<link rel="self" href="http://dshrewsbury.blogspot.com/feeds/posts/default/-/drizzle"/>
			<id>tag:blogger.com,1999:blog-3514705510593466065</id>
			<updated>2010-08-30T00:00:18+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Switching to HailDB from Embedded InnoDB</title>
		<link href="http://www.haildb.com/2010/08/03/switching-to-haildb-from-embedded-innodb/"/>
		<id>http://www.haildb.com/?p=32</id>
		<updated>2010-08-03T01:22:17+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://www.haildb.com&quot;&gt;HailDB&lt;/a&gt; is a project that aims to continue the Embedded InnoDB project. That is, provide the excellent, high quality and super reliable InnoDB database engine (as used in &lt;a href=&quot;http://www.mysql.com&quot;&gt;MySQL&lt;/a&gt; and &lt;a href=&quot;http://drizzle.org&quot;&gt;Drizzle&lt;/a&gt; by millions of users all over the world) as a shared library to application developers. We just announced our first release!&lt;/p&gt;
&lt;p&gt;We will shortly have packages for various distributions up, along with a source tarball.&lt;/p&gt;
&lt;p&gt;It&amp;#8217;s incredibly easy to switch to HailDB from Embedded InnoDB for your project. Just look for libhaildb instead of libinnodb and include &amp;#8220;haildb.h&amp;#8221; instead of &amp;#8220;innodb.h&amp;#8221;. The rest of the API is exactly the same.&lt;/p&gt;</content>
		<author>
			<name>HailDB Blog</name>
			<uri>http://www.haildb.com</uri>
		</author>
		<source>
			<title type="html">HailDB</title>
			<subtitle type="html">A relational database in shared library form</subtitle>
			<link rel="self" href="http://www.haildb.com/feed/"/>
			<id>http://www.haildb.com/feed/</id>
			<updated>2010-09-09T06:00:21+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">HailDB 2.0.0 released!</title>
		<link href="http://www.haildb.com/2010/08/03/haildb-2-0-0-released/"/>
		<id>http://www.haildb.com/?p=34</id>
		<updated>2010-08-03T00:59:40+00:00</updated>
		<content type="html">&lt;p&gt;We&amp;#8217;ve made our first HailDB release! We&amp;#8217;ve decided to make this a very conservative release. Fixing some minor bugs, getting a lot of compiler warnings fixed and start to make the name change in the source from Embedded InnoDB to HailDB.&lt;/p&gt;
&lt;p&gt;Migrating your software to use HailDB is really simple. In fact, for this release, it shouldn&amp;#8217;t take more than 5 minutes.&lt;/p&gt;
&lt;p&gt;Highlights of this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A lot of compiler warnings have been fixed.&lt;/li&gt;
&lt;li&gt;The build system is now pandora-build.&lt;/li&gt;
&lt;li&gt;some small bugs have been fixed&lt;/li&gt;
&lt;li&gt;Header file is now haildb.h instead of innodb.h&lt;/li&gt;
&lt;li&gt;We display &amp;#8220;HailDB&amp;#8221; instead of &amp;#8220;Embedded InnoDB&amp;#8221;&lt;/li&gt;
&lt;li&gt;Library name is libhaildb instead of libinnodb&lt;/li&gt;
&lt;li&gt;It is probably binary compatible with the last Embedded InnoDB release, but we don&amp;#8217;t have explicit tests for that, so YMMV.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://launchpad.net/haildb/2.0/release-2.0&quot;&gt;Launchpad page on 2.0.0&lt;/a&gt; and you can download the tarball either from there or right here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://c2101702.cdn.cloudfiles.rackspacecloud.com/haildb-2.0.0.tar.gz&quot;&gt;haildb-2.0.0.tar.gz&lt;/a&gt;&lt;br /&gt;
MD5:  ﻿﻿﻿﻿183b81bfe2303aed435cdc8babf11d2b&lt;br /&gt;
SHA1:  065e6a2f2cb2949efd7b8f3ed664bc1ac655cd75&lt;/li&gt;
&lt;/ul&gt;</content>
		<author>
			<name>HailDB Blog</name>
			<uri>http://www.haildb.com</uri>
		</author>
		<source>
			<title type="html">HailDB</title>
			<subtitle type="html">A relational database in shared library form</subtitle>
			<link rel="self" href="http://www.haildb.com/feed/"/>
			<id>http://www.haildb.com/feed/</id>
			<updated>2010-09-09T06:00:21+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">HailDB 2.0.0 released!</title>
		<link href="http://www.flamingspork.com/blog/2010/08/03/haildb-2-0-0-released/"/>
		<id>http://www.flamingspork.com/blog/?p=2099</id>
		<updated>2010-08-03T00:52:59+00:00</updated>
		<content type="html">&lt;p&gt;(Reposted from the &lt;a href=&quot;http://www.haildb.com/2010/08/03/haildb-2-0-0-released/&quot;&gt;HailDB Blog&lt;/a&gt;. See also the &lt;a href=&quot;http://blog.drizzle.org/2010/08/02/haildb-version-2-0-0-has-been-released/&quot;&gt;announcement on the Drizzle Blog&lt;/a&gt;.)&lt;br /&gt;
We&amp;#8217;ve made our first HailDB release! We&amp;#8217;ve decided to make this a very conservative release. Fixing some minor bugs, getting a lot of compiler warnings fixed and start to make the name change in the source from Embedded InnoDB to HailDB.&lt;/p&gt;
&lt;p&gt;Migrating your software to use HailDB is really simple. In fact, for this release, it shouldn&amp;#8217;t take more than 5 minutes.&lt;/p&gt;
&lt;p&gt;Highlights of this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A lot of compiler warnings have been fixed.&lt;/li&gt;
&lt;li&gt;The build system is now pandora-build.&lt;/li&gt;
&lt;li&gt;some small bugs have been fixed&lt;/li&gt;
&lt;li&gt;Header file is now haildb.h instead of innodb.h&lt;/li&gt;
&lt;li&gt;We display &amp;#8220;HailDB&amp;#8221; instead of &amp;#8220;Embedded InnoDB&amp;#8221;&lt;/li&gt;
&lt;li&gt;Library name is libhaildb instead of libinnodb&lt;/li&gt;
&lt;li&gt;It is probably binary compatible with the last Embedded InnoDB release, but we don&amp;#8217;t have explicit tests for that, so YMMV.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check out the &lt;a href=&quot;https://launchpad.net/haildb/2.0/release-2.0&quot;&gt;Launchpad page on 2.0.0&lt;/a&gt; and you can download the tarball either from there or right here:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://c2101702.cdn.cloudfiles.rackspacecloud.com/haildb-2.0.0.tar.gz&quot;&gt;haildb-2.0.0.tar.gz&lt;/a&gt;&lt;br /&gt;
MD5:  ﻿﻿﻿﻿183b81bfe2303aed435cdc8babf11d2b&lt;br /&gt;
SHA1:  065e6a2f2cb2949efd7b8f3ed664bc1ac655cd75&lt;/li&gt;
&lt;/ul&gt;


&lt;div class=&quot;shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy&quot;&gt;
&lt;ul class=&quot;socials&quot;&gt;
		&lt;li class=&quot;shr-facebook&quot;&gt;
			&lt;a href=&quot;http://www.facebook.com/share.php?v=4&amp;amp;src=bm&amp;amp;u=http://www.flamingspork.com/blog/2010/08/03/haildb-2-0-0-released/&amp;amp;t=HailDB+2.0.0+released%21&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on Facebook&quot;&gt;Share this on Facebook&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-twitter&quot;&gt;
			&lt;a href=&quot;http://twitter.com/home?status=HailDB+2.0.0+released%21+-+http://b2l.me/aekpmY&amp;amp;source=shareaholic&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Tweet This!&quot;&gt;Tweet This!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-delicious&quot;&gt;
			&lt;a href=&quot;http://delicious.com/post?url=http://www.flamingspork.com/blog/2010/08/03/haildb-2-0-0-released/&amp;amp;title=HailDB+2.0.0+released%21&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on del.icio.us&quot;&gt;Share this on del.icio.us&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-digg&quot;&gt;
			&lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.flamingspork.com/blog/2010/08/03/haildb-2-0-0-released/&amp;amp;title=HailDB+2.0.0+released%21&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Digg this!&quot;&gt;Digg this!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-googlebuzz&quot;&gt;
			&lt;a href=&quot;http://www.google.com/buzz/post?url=http://www.flamingspork.com/blog/2010/08/03/haildb-2-0-0-released/&amp;amp;imageurl=&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Post on Google Buzz&quot;&gt;Post on Google Buzz&lt;/a&gt;
		&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Stewart Smith</name>
			<uri>http://www.flamingspork.com/blog</uri>
		</author>
		<source>
			<title type="html">Ramblings</title>
			<subtitle type="html">Ramblings which occasionally resemble reality. This is the blog of Stewart Smith.</subtitle>
			<link rel="self" href="http://www.flamingspork.com/blog/feed/"/>
			<id>http://www.flamingspork.com/blog/feed/</id>
			<updated>2010-09-09T06:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">HailDB version 2.0.0 has been released</title>
		<link href="http://blog.drizzle.org/2010/08/02/haildb-version-2-0-0-has-been-released/"/>
		<id>http://blog.drizzle.org/?p=808</id>
		<updated>2010-08-03T00:49:56+00:00</updated>
		<content type="html">&lt;p&gt;HailDB source tarball, version 2.0.0 has been released.&lt;br /&gt;
In this version:&lt;br /&gt;
- A lot of compiler warnings have been fixed.&lt;br /&gt;
- The build system is now pandora-build.&lt;br /&gt;
- some small bugs have been fixed&lt;br /&gt;
- Header file is now haildb.h instead of innodb.h&lt;br /&gt;
- We display &quot;HailDB&quot; instead of &quot;Embedded InnoDB&quot;&lt;br /&gt;
- Library name is libhaildb instead of libinnodb&lt;br /&gt;
- It is probably binary compatible with the last Embedded InnoDB release, but we don't have explicit tests for that, so YMMV&lt;/p&gt;
&lt;p&gt;The HailDB download file can be found [https://launchpad.net/haildb/+milestone/release-2.0 here]&lt;/p&gt;</content>
		<author>
			<name>Official Drizzle Blog</name>
			<uri>http://blog.drizzle.org</uri>
		</author>
		<source>
			<title type="html">DrizzleBlog</title>
			<link rel="self" href="http://blog.drizzle.org/feed/"/>
			<id>http://blog.drizzle.org/feed/</id>
			<updated>2010-08-31T21:00:43+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Welcome David Shrewsbury to the Rackspace Drizzle team</title>
		<link href="http://blog.drizzle.org/2010/08/02/welcome-david-shrewsbury-to-the-rackspace-drizzle-team/"/>
		<id>http://blog.drizzle.org/?p=802</id>
		<updated>2010-08-02T15:39:05+00:00</updated>
		<content type="html">&lt;p&gt;We are very happy to announce that David Shrewsbury is joining the Rackspace Drizzle team today. David has been a steady community contributor to the Drizzle project so we are very excited to have him on board full time working on Drizzle.&lt;/p&gt;
&lt;p&gt;David has a M.S. in Computer Science from Appalachian State University and currently lives in Durham, North Carolina. In his previous lives,  David has been a developer, database architect, and even worked as a MySQL Support Engineer focusing on Cluster support.&lt;/p&gt;
&lt;p&gt;When not trying to wrap his head around some obscure piece of code, David can often be found either on the golf course, reading books from the dustier corners of the library, or sampling the latest microbrew.&lt;/p&gt;
&lt;p&gt;Welcome to the team David!&lt;/p&gt;</content>
		<author>
			<name>Official Drizzle Blog</name>
			<uri>http://blog.drizzle.org</uri>
		</author>
		<source>
			<title type="html">DrizzleBlog</title>
			<link rel="self" href="http://blog.drizzle.org/feed/"/>
			<id>http://blog.drizzle.org/feed/</id>
			<updated>2010-08-31T21:00:43+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">libdrizzle - now with windows</title>
		<link href="http://inaugust.com/post/83"/>
		<id>http://inaugust.com/post/83</id>
		<updated>2010-08-01T04:26:33+00:00</updated>
		<content type="html">&lt;p&gt;Recently, &lt;a href=&quot;http://drizzlenotes.blogspot.com/2010/07/drizzle-on-windows-libdrizzle.html&quot;&gt;Jobin took up the mantle&lt;/a&gt; of starting to poke at Windows support for Drizzle. We decided that step 1 is getting libdrizzle building on Windows - not to mention we could solve a few systemic &amp;quot;how to go about it&amp;quot; problems on a much simpler codebase.&lt;/p&gt;&lt;p&gt;We decided to go the mingw route - for two reasons. &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;on windows we wouldn't have to solve the build problem yet&lt;/li&gt;&lt;li&gt;on linux we can cross-compile, and then I can spend less time connecting to a windows machine&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I'm happy to say that the branch implementing support for building under mingw has been merged in to trunk - so please go hammer at it and tell me that I'm an idiot.&lt;/p&gt;&lt;p&gt;If you're on linux and want to play, you'll need mingw32 and mingw32-pthread. You may notice that mingw-pthread isn't in the Ubuntu archive... that's ok - I added a package for it in the drizzle-developers ppa (add-apt-repository ppa:drizzle-developers/ppa) Once you're set with that, it's as simple as:&lt;/p&gt;&lt;pre&gt;&amp;nbsp;bzr branch lp:libdrizzle&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;cd libdrizzle&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;./config/autorun.sh&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;./configure&amp;nbsp;--build=x86_64-unknown-linux-gnu --host=i586-mingw32msvc&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;make&lt;/pre&gt;&lt;p&gt;And you're off to the races. Now, as for actually &lt;em&gt;doing&lt;/em&gt;&amp;nbsp;anything with it, well, I'm expecting some windows person to fill in details on that.&lt;/p&gt;&lt;p&gt;Next up - building under Visual Studio. (oh, and getting Drizzle itself working)&lt;/p&gt;</content>
		<author>
			<name>Monty Taylor</name>
			<uri>http://inaugust.com/</uri>
		</author>
		<source>
			<title type="html">In August Productions</title>
			<subtitle type="html">The latest entries from In August Productions</subtitle>
			<link rel="self" href="http://inaugust.com/feed/rss2_0?tag=drizzle"/>
			<id>http://inaugust.com/feed/rss2_0?tag=drizzle</id>
			<updated>2010-09-09T06:00:01+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">O, hai intltool!</title>
		<link href="http://inaugust.com/post/82"/>
		<id>http://inaugust.com/post/82</id>
		<updated>2010-07-31T19:57:59+00:00</updated>
		<content type="html">&lt;p&gt;Almost no one will ever notice anything about this, but I'm excited, so I thought I'd share.&lt;/p&gt;&lt;p&gt;Instead of using the build infrastructure installed by gettextize to handle message translations, we're now using the more modern replacement, &lt;a href=&quot;http://freedesktop.org/wiki/Software/intltool&quot;&gt;intltool&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Unless you're actually hacking on build, this will mean nothing - translations are still done via launchpad - Drizzle still uses gettext() to translate strings. It's purely a tooling change which means the build is less brittle and I'm slightly less ornery. Oh, and we have many less random generated files committed to bzr. I like deleting files.&lt;/p&gt;</content>
		<author>
			<name>Monty Taylor</name>
			<uri>http://inaugust.com/</uri>
		</author>
		<source>
			<title type="html">In August Productions</title>
			<subtitle type="html">The latest entries from In August Productions</subtitle>
			<link rel="self" href="http://inaugust.com/feed/rss2_0?tag=drizzle"/>
			<id>http://inaugust.com/feed/rss2_0?tag=drizzle</id>
			<updated>2010-09-09T06:00:01+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Changes in Option Processing</title>
		<link href="http://inaugust.com/post/81"/>
		<id>http://inaugust.com/post/81</id>
		<updated>2010-07-30T17:42:24+00:00</updated>
		<content type="html">&lt;p&gt;Change is in this air this summer in Drizzle-land. One of our GSoC students, &lt;a href=&quot;http://vjsamuel.wordpress.com/&quot;&gt;Vijay Samuel&lt;/a&gt;, has been hard at work replacing the options processing system we inherited from MySQL, my_getopt, with one based on boost::program_options. We've been merging his work in to trunk for a while now, and he's made really excellent progress, so it's probably about time to point out how the new system will be different from the MySQL one. There are three main changes afoot here, and I'm actually pretty pleased with all three of them:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Plugin Option Prefixing&lt;/li&gt;&lt;li&gt;Dashes v. Underscores&lt;/li&gt;&lt;li&gt;Config Files&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;A few of these changes are still in the middle of their transition, so I'm just going to describe the finished system, but we've essentially got all of the client programs and most of the plugins done at this point.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Plugin Option Prefixing&lt;/p&gt;&lt;p&gt;In the old system, when a module registered a new option or variable, we would concatenate the module's name on to the front of the option name with a &amp;quot;_&amp;quot;. So, for instance, the mysql_protocol module has an option for setting the port, which wound up being named &amp;quot;mysql_protocol_port&amp;quot;. In the new system, boost actually understands grouping and namespacing of options, and we decided to take advantage of that by mapping a plugin module to a group. This means that the concat character is now a &amp;quot;.&amp;quot; (that's a dot if your eyesight is bad)&lt;/p&gt;&lt;p&gt;Dashes v. Underscores&lt;/p&gt;&lt;p&gt;In addition to that, boost doesn't know anything about the long-standing MySQL tradition of going out of the way to allow you to do things as many ways as humanly possible. To Boost, the strings &amp;quot;mysql_protocol&amp;quot; and &amp;quot;mysql-protocol&amp;quot; are, well, different. We considered writing a parser plugin for it to do normalization for us, but then we made the other decision.&lt;/p&gt;&lt;p&gt;Dashes and Underscores are different.&lt;/p&gt;&lt;p&gt;Now this may royal screw some people who may have enjoyed making art by listing an option like &amp;quot;auto-increment_increment&amp;quot; before, and to those people I'm sorry, because I really do like injecting art into day to day life. Nonetheless, from this day forth let the decree be heard... &lt;/p&gt;&lt;p&gt;Options have all been normalized to use no underscores and to use only dashes.&lt;/p&gt;&lt;p&gt;On the off chance you can't follow the logic there, that means that the command line option for setting the MySQL protocol port in Drizzle is now: --mysql-protocol.port=3306&lt;/p&gt;&lt;p&gt;Config File Changes&lt;/p&gt;&lt;p&gt;But wait, there's more...&lt;/p&gt;&lt;p&gt;First of all, we changed from having one master config file for everything with sections in it for different programs to having one config file per program. drizzled will read &amp;quot;/etc/drizzle/drizzled.cnf&amp;quot;. The command line clients will also read a few more, since you might want to repeat yourself - so drizzleddump will read ~/.conf/drizzle/drizzledump.cnf, ~/.conf/drizzle/client.cnf, /etc/drizzle/drizzledump.cnf and /etc/drizzle/client.cnf, with files listed first in that list overriding values in files later in the list. (In case you're wondering about the ~/.config part, it's part of the freedesktop.org Base Directory Specification. Since we didn't have a system for this before, it seemed sensible enough to just follow the standard for user/client utilities here.&lt;/p&gt;&lt;p&gt;The files are still mostly ini-style files, except they do not require a base [section] header. So just stick &amp;quot;datadir=/var/lib/drizzle&amp;quot; into /etc/drizzle/drizzled.cnf and you're off to the races. However - remember that grouping thing I mentioned before- in the boost world, section headings translate to option prefixes joined by, you guessed it, a dot. This means you can do:&lt;/p&gt;&lt;pre&gt;datadir=/var/lib/drizzle &lt;/pre&gt;&lt;pre&gt;[innodb]&lt;/pre&gt;&lt;pre&gt;buffer-pool-size=100G&lt;/pre&gt;&lt;pre&gt;log-file-size=1M &lt;/pre&gt;And be good to go. We're also thinking about having /etc/drizzle/${plugin_name}.cnf added for each plugin... but haven't actually looked at what that will look like yet, so don't hold me to that.</content>
		<author>
			<name>Monty Taylor</name>
			<uri>http://inaugust.com/</uri>
		</author>
		<source>
			<title type="html">In August Productions</title>
			<subtitle type="html">The latest entries from In August Productions</subtitle>
			<link rel="self" href="http://inaugust.com/feed/rss2_0?tag=drizzle"/>
			<id>http://inaugust.com/feed/rss2_0?tag=drizzle</id>
			<updated>2010-09-09T06:00:01+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Determining I/O throughput for a system</title>
		<link href="http://www.pythian.com/news/15161/determining-io-throughput-for-a-system/"/>
		<id>http://www.pythian.com/news/?p=15161</id>
		<updated>2010-07-29T15:23:33+00:00</updated>
		<content type="html">&lt;p&gt;At &lt;a href=&quot;http://www.odtugkaleidoscope.com/agenda.html&quot;&gt;Kscope&lt;/a&gt; this year, I attended a half day in-depth session entitled &lt;a href=&quot;http://www.odtugkaleidoscope.com/oraclebusinessintelligence.html#colgan&quot;&gt;Data Warehousing Performance Best Practices&lt;/a&gt;, given by &lt;a href=&quot;http://blogs.oracle.com/optimizer/&quot;&gt;Maria Colgan&lt;/a&gt; of Oracle.  In that session, there was a section on how to determine I/O throughput for a system, because in data warehousing I/O per second (iops) is less important than I/O throughput (how much actual data goes through, not just how many reads/writes).&lt;/p&gt;
&lt;p&gt;The section contained an Oracle-specific in-database tool, and a standalone tool that can be used on many operating systems, regardless of whether or not a database exists:&lt;br /&gt;
&lt;span id=&quot;more-15161&quot;&gt;&lt;/span&gt;&lt;br /&gt;
If Oracle is installed, run &lt;code&gt;DBMS_RESOURCE_MANAGER.CALIBRATE_IO&lt;/code&gt;:&lt;/p&gt;
&lt;pre class=&quot;brush: sql;&quot;&gt;SET SERVEROUTPUT ON
DECLARE
lat INTEGER;
iops INTEGER;
mbps INTEGER;
BEGIN
-- DBMS_RESOURCE_MANAGER.CALIBRATE_IO(&amp;lt;DISKS&amp;gt;, &amp;lt;MAX_LATENCY&amp;gt;,iops,mbps,lat);
DBMS_RESOURCE_MANAGER.CALIBRATE_IO (2, 10, iops, mbps, lat);
dbms_output.put_line('max_mbps = ' || mbps);
end;&lt;/pre&gt;
&lt;p&gt;For us MySQL folks, or even the Drizzle or NoSQL folks, Oracle offers a free  standalone tool called &lt;a href=&quot;http://www.oracle.com/technology/software/tech/orion/index.html&quot;&gt;Orion&lt;/a&gt;.  The example given in the slides was:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;./orion –run advanced –testname mytest –num_small 0 –size_large 1024 –type rand –simulate contact –write 0 –duration 60 –matrix column&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-num_small is 0&lt;/code&gt; because you don&amp;#8217;t usually do small transactions in a dw.&lt;br /&gt;
&lt;code&gt;-type rand&lt;/code&gt; for random I/O&amp;#8217;s because data warehouse queries usually don&amp;#8217;t do sequential reads&lt;br /&gt;
&lt;code&gt;-write 0&lt;/code&gt; &amp;#8211; no writes, because you do not write often to the dw, that is what the ETL is for.&lt;br /&gt;
&lt;code&gt;-duration&lt;/code&gt; is in seconds&lt;br /&gt;
&lt;code&gt;-matrix&lt;/code&gt; column shows you how much you can sustain&lt;/p&gt;
&lt;p&gt;I would be interested to see how other folks measure I/O throughput, and maybe even do a side-by-side comparison of different tools.  Orion is available for:&lt;/p&gt;
&lt;p&gt;Linux (x86, x86-64, Itanium, Power)&lt;br /&gt;
Solaris (SPARC64)&lt;br /&gt;
AIX (PPC64)&lt;br /&gt;
zLinux&lt;br /&gt;
HPUX (PA RISC, Itanium)&lt;br /&gt;
Windows&lt;/p&gt;
&lt;p&gt;I am working on a larger write-up of the session itself, which had many concise descriptions of data warehousing issues, but I thought that this merited its own post.&lt;/p&gt;</content>
		<author>
			<name>Pythian Group</name>
			<uri>http://www.pythian.com/news</uri>
		</author>
		<source>
			<title type="html">The Pythian Blog</title>
			<subtitle type="html">News and views from Pythian DBAs</subtitle>
			<link rel="self" href="http://www.pythian.com/news/feed/"/>
			<id>http://www.pythian.com/news/feed/</id>
			<updated>2010-09-09T02:00:35+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Drizzle, boost::unordered_multimap++</title>
		<link href="http://krow.livejournal.com/694185.html"/>
		<id>http://krow.livejournal.com/694185.html</id>
		<updated>2010-07-28T05:47:16+00:00</updated>
		<content type="html">&lt;pre&gt;
=========================================================================================================
REGRESSION REPORT 
=========================================================================================================
MACHINE:  drizzle-build-n01.wc1.dfw1.stabletransit.com
RUN ID:   324
RUN DATE: 2010-07-27T21:48:07.932094
WORKLOAD: innodb_1000K_readonly
SERVER:   drizzled
VERSION:  lp:drizzle/staging
REVISION: 1669
COMMENT:  1669: Brian Aker 2010-07-27 This patch turns the table_cache into boost::unordered_multimap.
=========================================================================================================

TRENDING OVER LAST 5 runs 
Conc   TPS       % Diff from Avg Diff       Norm?          Min        Max        Avg        STD       
=========================================================================================================
16       1993.10          +1.19%      23.37   within norms    1905.44    2010.28    1969.73      26.56
32       2676.28          +1.75%      46.11  outside norms    2568.20    2685.05    2630.17      33.22
64       2622.82          -2.09%     -56.00  outside norms    2613.02    2737.89    2678.82      43.09
128      2621.23          -0.61%     -16.15   within norms    2609.74    2662.30    2637.38      16.41
256      2598.18          +5.50%     135.46  outside norms    2406.50    2599.34    2462.72      68.67
512      2343.83         +52.30%     804.91  outside norms    1318.38    2347.49    1538.92     402.80
1024     1722.08        +104.66%     880.65  outside norms     614.65    1725.52     841.43     440.35
&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Boost::unordered_multimap versus the hand crafted MySQL HASH?&lt;br /&gt;&lt;br /&gt;Boost wins by a long shot. The above is from sysbench. We run it on each and every push that goes into the main tree looking for regression. &lt;br /&gt;&lt;br /&gt;Every so often we get to see the opposite happen :)&lt;br /&gt;&lt;br /&gt;Thanks to this patch, &quot;Table&quot; now joins the ranks of what we call a &quot;trusted object&quot;. This means we can start safely assuming that the destructor on it is working (most of the MySQL codebase was crafted in such a way that you can only use a very limited subset of C++). In all of the new code in Drizzle we can easily make use of C++. There are still a few older bits where we cannot. Having &quot;Table&quot; now work means we can safely work in a number of new areas in the server. One of the biggest changes that will be coming soon is the removal of LOCK_open for a number of new cases.</content>
		<author>
			<name>Brian Aker</name>
			<uri>http://krow.livejournal.com/</uri>
		</author>
		<source>
			<title type="html">Brian &quot;Krow&quot; Aker's Idle Thoughts</title>
			<subtitle type="html">Brian &quot;Krow&quot; Aker's Idle Thoughts - LiveJournal.com</subtitle>
			<link rel="self" href="http://krow.livejournal.com/data/rss"/>
			<id>http://krow.livejournal.com/data/rss</id>
			<updated>2010-08-26T20:00:26+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">HOWTO screw up launching a free software project</title>
		<link href="http://www.flamingspork.com/blog/2010/07/28/howto-screw-up-launching-a-free-software-project/"/>
		<id>http://www.flamingspork.com/blog/?p=2088</id>
		<updated>2010-07-27T18:40:54+00:00</updated>
		<content type="html">&lt;p&gt;&lt;a href=&quot;http://it.toolbox.com/people/josh_berkus/&quot;&gt;Josh Berkus&lt;/a&gt; gave a great talk at &lt;a href=&quot;http://www.lca2010.org.nz/&quot;&gt;linux.conf.au 2010&lt;/a&gt; (the CFP for &lt;a href=&quot;http://lca2011.linux.org.au/&quot;&gt;linux.conf.au 2011&lt;/a&gt; is open until August 7th) entitled &amp;#8220;How to destroy your community&amp;#8221; (&lt;a href=&quot;http://lwn.net/Articles/370157/&quot;&gt;lwn coverage&lt;/a&gt;). It was a simple, patented, 10 step program, finely homed over time to have maximum effect. Each step is simple and we can all name a dozen companies that have done at least three of them.&lt;/p&gt;
&lt;p&gt;Simon Phipps this past week at OSCON talked about &lt;a href=&quot;http://www.oscon.com/oscon2010/public/schedule/detail/15407&quot;&gt;Open Source Continuity in practice&lt;/a&gt; &amp;#8211; specifically mentioning some open source software projects that were at Sun but have since been abandoned by Oracle and different strategies you can put in place to ensure your software survives, and check lists for software you use to see if it will survive.&lt;/p&gt;
&lt;p&gt;So what can you do to not destroy your community, but ensure you never get one to begin with?&lt;/p&gt;
&lt;p&gt;Similar to destroying your community, you can just make it hard: &amp;#8220;&lt;strong&gt;&lt;em&gt;#1&lt;/em&gt;&lt;/strong&gt;&lt;em&gt; is to make the project depend as much as possible on difficult tools.&lt;/em&gt;&amp;#8221;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#1 A Contributor License Agreement and Copyright Assignment.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you happen to be in the unfortunate situation of being employed, this means you get to talk to lawyers. While your employer may well have an excellent Open Source Contribution Policy that lets you hack on GPL software on nights and weekends without a problem &amp;#8211; if you&amp;#8217;re handing over all the rights to another company &amp;#8211; there gets to be lawyer time.&lt;/p&gt;
&lt;p&gt;Your 1hr of contribution has now just ballooned. You&amp;#8217;re going to use up resources of your employer (hey, lawyers are &lt;strong&gt;not&lt;/strong&gt; cheap), it&amp;#8217;s going to suck up your work time talking to them, and if you can get away from this in under several hours over a few weeks, you&amp;#8217;re doing amazingly well &amp;#8211; especially if you work for a large company.&lt;/p&gt;
&lt;p&gt;If you are the kind of person with strong moral convictions, this is a non-starter. It is completely valid to not want to waste your employers&amp;#8217; time and money for a weekend project.&lt;/p&gt;
&lt;p&gt;People scratching their own itch, however small is how free software gets to be so awesome.&lt;/p&gt;
&lt;p&gt;I think we got this almost right with OpenStack. If you compare the agreement to the Apache License, there&amp;#8217;s so much common wording it ends up pretty much saying that you agree you are able to submit things to the project under the Apache license.  This (of course) makes the entire thing pretty redundant as if people are going to be dishonest about submitting things under the Apache licnese there&amp;#8217;s no reason they&amp;#8217;re not going to be dishonest and sign this too.&lt;/p&gt;
&lt;p&gt;You could also never make it about people &amp;#8211; just make it about your company.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#2 Make it all about the company, and never about the project&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;People are not going to show up, do free work for you to make your company big, huge and yourself rich.&lt;/p&gt;
&lt;p&gt;People are self serving. They see software they want only a few patches away, they see software that serves their company only a few patches away. They see software that is an excellent starting point for something totally different.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;m not sure why this is down at number three&amp;#8230; it&amp;#8217;s possibly the biggest one for danger signs that you&amp;#8217;re going to destroy something that doesn&amp;#8217;t even yet exist&amp;#8230;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;#3 Open Core&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This pretty much automatically means that you&amp;#8217;re not going to accept certain patches for reasons of increasing your own company&amp;#8217;s short term profit. i.e. software is no longer judged on technical merits, but rather political ones.&lt;/p&gt;
&lt;p&gt;There is enough politics in free software as it is, creating more is not a feature.&lt;/p&gt;
&lt;p&gt;So when people ask me about how I think the OpenStack launch went, I really want people to know how amazing it can be to just not fuck it up to begin with. Initial damage is &lt;strong&gt;very&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;very&lt;/em&gt;&lt;/strong&gt; hard to ever undo. The number of Open Source software projects originally coming out of a company that are long running, have a wide variety of contributors and survive the original company are much smaller than you think.&lt;/p&gt;
&lt;p&gt;PostgreSQL has survived many companies coming and going around it, and is stronger than ever. MySQL only has a developer community around it almost in spite of the companies that have shepherded the project. With Drizzle I think we&amp;#8217;ve been doing okay &amp;#8211; I think we need to work on some things, but they&amp;#8217;re more generic to teams of people working on software in general rather than anything to do with a company.&lt;/p&gt;


&lt;div class=&quot;shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy&quot;&gt;
&lt;ul class=&quot;socials&quot;&gt;
		&lt;li class=&quot;shr-facebook&quot;&gt;
			&lt;a href=&quot;http://www.facebook.com/share.php?v=4&amp;amp;src=bm&amp;amp;u=http://www.flamingspork.com/blog/2010/07/28/howto-screw-up-launching-a-free-software-project/&amp;amp;t=HOWTO+screw+up+launching+a+free+software+project&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on Facebook&quot;&gt;Share this on Facebook&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-twitter&quot;&gt;
			&lt;a href=&quot;http://twitter.com/home?status=HOWTO+screw+up+launching+a+free+software+project+-+http://b2l.me/ac34bv&amp;amp;source=shareaholic&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Tweet This!&quot;&gt;Tweet This!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-delicious&quot;&gt;
			&lt;a href=&quot;http://delicious.com/post?url=http://www.flamingspork.com/blog/2010/07/28/howto-screw-up-launching-a-free-software-project/&amp;amp;title=HOWTO+screw+up+launching+a+free+software+project&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on del.icio.us&quot;&gt;Share this on del.icio.us&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-digg&quot;&gt;
			&lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.flamingspork.com/blog/2010/07/28/howto-screw-up-launching-a-free-software-project/&amp;amp;title=HOWTO+screw+up+launching+a+free+software+project&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Digg this!&quot;&gt;Digg this!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-googlebuzz&quot;&gt;
			&lt;a href=&quot;http://www.google.com/buzz/post?url=http://www.flamingspork.com/blog/2010/07/28/howto-screw-up-launching-a-free-software-project/&amp;amp;imageurl=&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Post on Google Buzz&quot;&gt;Post on Google Buzz&lt;/a&gt;
		&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Stewart Smith</name>
			<uri>http://www.flamingspork.com/blog</uri>
		</author>
		<source>
			<title type="html">Ramblings</title>
			<subtitle type="html">Ramblings which occasionally resemble reality. This is the blog of Stewart Smith.</subtitle>
			<link rel="self" href="http://www.flamingspork.com/blog/feed/"/>
			<id>http://www.flamingspork.com/blog/feed/</id>
			<updated>2010-09-09T06:00:07+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Drizzle on Windows - Libdrizzle</title>
		<link href="http://drizzlenotes.blogspot.com/2010/07/drizzle-on-windows-libdrizzle.html"/>
		<id>tag:blogger.com,1999:blog-2714269295322062120.post-2018875298161595102</id>
		<updated>2010-07-27T11:27:00+00:00</updated>
		<content type="html">lately&amp;nbsp; I started thinking from a users point of view.&lt;br /&gt;Web developers want to try drizzle. but many of them got windows platform for devleopment.&lt;br /&gt;So they are not able to connect to drizzle server&lt;br /&gt;&lt;br /&gt;so started seaching for options. found that i have 3 options.&lt;br /&gt;1. Native compile the source using MinGW.&lt;br /&gt;2. Take the help of cygwin to get posix platform&lt;br /&gt;3. Coss-compile the source from Linux to windows.&lt;br /&gt;&lt;br /&gt;Toru, Stewart and Monty responded to my views on drizzle-discuss.&lt;br /&gt;Monty was already trying on libdrizzle for sometime.&lt;br /&gt;and Toru also voted for libdrizzle first.&lt;br /&gt;Monty's approach was to use option 3 with option 1.&lt;br /&gt;(later i realized his approach is better and smart). like:&lt;br /&gt;&lt;pre&gt;./configure --build=x86_64-unknown-linux-gnu --host=i586-mingw32msvc&lt;/pre&gt;&lt;br /&gt;everybody voted for libdrizzle to be available for windows first.&lt;br /&gt;That voting makes sence because developer in windows should be able to connect to server first.&lt;br /&gt;&lt;br /&gt;My step was to get libdrizzle compiled using cygwin.&lt;br /&gt;cygwin gives full Linux system calls in a dll. that is a very big offer for me.&lt;br /&gt;i could not deny that.&lt;br /&gt;&lt;br /&gt;as expected everything went smooth in cygwin.&lt;br /&gt;libdrizzle got compiled without any effort. and i am able to verify the connectivity from windows xp box.&lt;br /&gt;&lt;br /&gt;Next step is very challenging.&lt;br /&gt;(The step to compile libdrizzle on windows natively without help of cygwin1.dll)&lt;br /&gt;for a non-programmer like me it is a herculean task.&lt;br /&gt;Monty's working branch (lp:~mordred/libdrizzle/mingwport)&lt;br /&gt;gave a kick start because he already done all background work.&lt;br /&gt;&lt;br /&gt;after adding few more lines to Monty's work, (drizzle.h and conn.c )&lt;br /&gt;I am able to compile files from mingw&lt;br /&gt;&lt;br /&gt;it was bit challenging to figure out that following defines are must have (i added them to common.h)&lt;br /&gt;&lt;pre&gt;#define WINVER WindowsXP&lt;br /&gt;#define _WIN32_WINNT 0x0501&lt;/pre&gt;(otherwise haunting,  &quot;undefined reference to `freeaddrinfo'&quot;and undefined reference to  `getaddrinfo'&quot;&quot; like messages will come when you try to link)&lt;br /&gt;&lt;br /&gt;My effort is to create static library which can be linked to make executable.&lt;br /&gt;since configure and make are giving me trouble on windows, i tried handweave the compilation.&lt;br /&gt;to see what is happening in the make&lt;br /&gt;logged all commands executed when libdrizzle is getting compiled with cygwin&lt;br /&gt;$&amp;gt;make V=1&lt;br /&gt;&lt;br /&gt;more over go a good guidence from:&lt;br /&gt;http://www.adp-gmbh.ch/cpp/gcc/create_lib.html&lt;br /&gt;&lt;br /&gt;Step 1. compiling the library files:&lt;br /&gt;all below executed in windows command prompt.&lt;br /&gt;&lt;pre&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\drizzle.c  -o libdrizzle\libdrizzle_la-drizzle.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\conn.c  -o libdrizzle\libdrizzle_la-conn.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\conn_uds.c  -o libdrizzle\libdrizzle_la-conn_uds.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\handshake.c   -o libdrizzle\libdrizzle_la-handshake.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\command.c   -o libdrizzle\libdrizzle_la-command.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\query.c   -o libdrizzle\libdrizzle_la-query.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\result.c   -o libdrizzle\libdrizzle_la-result.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\column.c   -o libdrizzle\libdrizzle_la-column.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\row.c   -o libdrizzle\libdrizzle_la-row.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\field.c   -o libdrizzle\libdrizzle_la-field.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\pack.c   -o libdrizzle\libdrizzle_la-pack.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\state.c   -o libdrizzle\libdrizzle_la-state.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c libdrizzle\sha1.c   -o libdrizzle\libdrizzle_la-sha1.o&lt;br /&gt;&lt;br /&gt;Step 2. get the poll implementation on windows&lt;br /&gt;cd libdrizzle\win32&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c poll.c   -o poll.o&lt;br /&gt;cd ..\..&lt;br /&gt;&lt;br /&gt;Step 3. Create a single static library (libdrizzle.a)&lt;br /&gt;&quot;C:\MinGW\bin\ar.exe&quot; cru libdrizzle/libdrizzle.a  libdrizzle/libdrizzle_la-drizzle.o  libdrizzle/libdrizzle_la-conn.o libdrizzle/libdrizzle_la-conn_uds.o libdrizzle/libdrizzle_la-handshake.o libdrizzle/libdrizzle_la-command.o  libdrizzle/libdrizzle_la-query.o  libdrizzle/libdrizzle_la-result.o  libdrizzle/libdrizzle_la-column.o  libdrizzle/libdrizzle_la-row.o libdrizzle/libdrizzle_la-field.o libdrizzle/libdrizzle_la-pack.o libdrizzle/libdrizzle_la-state.o libdrizzle/libdrizzle_la-sha1.o libdrizzle/win32/poll.o&lt;br /&gt;&lt;br /&gt;Step 4. Compile user program and link to the above created library.&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -I. -I&quot;C:\MinGW\include&quot; -c examples/simple.c   -o examples/simple.o&lt;br /&gt;&quot;C:\MinGW\bin\gcc.exe&quot; -op -o examples/simple.exe examples/simple.o  ./libdrizzle/libdrizzle.a  -lwsock32 -lws2_32&lt;br /&gt;cd examples&lt;br /&gt;&lt;br /&gt;Step 5. Test the user program.&lt;br /&gt;simple.exe -d test -h 10.97.93.243 -q &quot;select * from t1&quot;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I want to thank you Monty for the huge help and guidance i recived.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2714269295322062120-2018875298161595102?l=drizzlenotes.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Jobin</name>
			<uri>http://drizzlenotes.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Drizzle Notes</title>
			<link rel="self" href="http://drizzlenotes.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-2714269295322062120</id>
			<updated>2010-09-02T13:00:46+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Resolution to get my hands wet on opensource</title>
		<link href="http://drizzlenotes.blogspot.com/2010/07/resolution-to-get-my-hands-wet-on.html"/>
		<id>tag:blogger.com,1999:blog-2714269295322062120.post-370523430028928250</id>
		<updated>2010-07-27T10:48:00+00:00</updated>
		<content type="html">I took a resolution month back and it is working perfect for me.&lt;br /&gt;being a open source enthusiast i did not contribute to community much.&lt;br /&gt;so &quot;i should concentrate on something for atleast 1 weeks and if it is interesting, work on that in coming weeks until something materializes&quot;. that was the resolution.&lt;br /&gt;this started showing me magics.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;First one was that i should work on &quot;Firefox extensions&quot;.&lt;br /&gt;That was a grant success inside the company appreciations and patches started flowing.&lt;br /&gt;it automates most of my tasks inside the company.&lt;br /&gt;In-fact, just like any Open Source effort, here also i was trying to scratch on my itch.&lt;br /&gt;later i realized, it is not only solves myown problems, but others too..&lt;br /&gt;I taught me a big lesson, most of us require opensource software to solve over problems&lt;br /&gt;and it works even inside a closed system like a company&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/2714269295322062120-370523430028928250?l=drizzlenotes.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Jobin</name>
			<uri>http://drizzlenotes.blogspot.com/</uri>
		</author>
		<source>
			<title type="html">Drizzle Notes</title>
			<link rel="self" href="http://drizzlenotes.blogspot.com/feeds/posts/default?alt=rss"/>
			<id>tag:blogger.com,1999:blog-2714269295322062120</id>
			<updated>2010-09-02T13:00:46+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">OSCON and OpenStack</title>
		<link href="http://oddments.org/?p=460"/>
		<id>http://oddments.org/?p=460</id>
		<updated>2010-07-26T07:33:14+00:00</updated>
		<content type="html">&lt;p&gt;&lt;img class=&quot;m&quot; width=&quot;96&quot; height=&quot;96&quot; src=&quot;http://oddments.org/pics/openstack192.png&quot; /&gt;&lt;/p&gt;
&lt;p&gt;The past two weeks have been both exciting and extremely busy, first traveling to Austin, TX for the first &lt;a href=&quot;http://www.openstack.org/&quot;&gt;OpenStack&lt;/a&gt; Design Summit, and then back home to Portland, OR for &lt;a href=&quot;http://www.oscon.com/oscon2010&quot;&gt;The O&amp;#8217;Reilly Open Source Conference (OSCON)&lt;/a&gt; and &lt;a href=&quot;http://www.communityleadershipsummit.com/&quot;&gt;Community Leadership Summit&lt;/a&gt;. The events were great in different ways, and there was some overlap with OpenStack since &lt;a href=&quot;http://www.openstack.org/press/rackspace-openstack-7-19-2010/&quot;&gt;we announced it&lt;/a&gt; on the first day of OSCON and created quite a bit of buzz around the conference. I want to comment on a few things that came up during these two weeks.&lt;/p&gt;
&lt;h3&gt;New Role&lt;/h3&gt;
&lt;p&gt;I&amp;#8217;m now focusing on OpenStack related projects at &lt;a href=&quot;http://www.rackspace.com/&quot;&gt;Rackspace&lt;/a&gt;. I&amp;#8217;m no longer working on Drizzle, but I will still be involved in the MySQL and database ecosystems through future projects and conferences (see you at &lt;a href=&quot;http://opensqlcamp.org/&quot;&gt;OpenSQL Camp&lt;/a&gt;). I will also still be working on a couple of &lt;a href=&quot;http://gearman.org/&quot;&gt;Gearman&lt;/a&gt; related projects in my spare time. At OSCON I gave two presentations on Gearman and Drizzle, you can find the &lt;a href=&quot;http://oddments.org/wiki/index.php?id=presentations&quot;&gt;slides here&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;The Five Steps to Open&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://oddments.org/pics/five_steps_to_open.png&quot;&gt;&lt;img class=&quot;m&quot; src=&quot;http://oddments.org/pics/five_steps_to_open.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One question that came up a few times over the past couple weeks is what the term &amp;#8220;Open&amp;#8221; means when a business or organization decides to adopt the open source philosophy. It turns out this means many different things to folks, and when an organization decides to go open, they need to make a decision on how open they are willing to be. Here are the various layers we&amp;#8217;ve seen over the years:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Open API&lt;/b&gt; &amp;#8211; You&amp;#8217;ve decided to take the first step to being open and released a well documented API to work with your web service or project. Everything behind the API is still a black-box though.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Open Core&lt;/b&gt; &amp;#8211; Beyond the APIs, you&amp;#8217;ve decided to release part of the code open source, but you still keep some of the bits proprietary in an attempt to keep a competitive advantage. This is a hot debate lately on whether it is a viable Open Source business model.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Open Source&lt;/b&gt; &amp;#8211; You&amp;#8217;ve decided keeping some code proprietary doesn&amp;#8217;t help, and actually even hurts your project or adoption. You put all of the code out in the open for everyone to see. While everyone can see all of the source code, there still isn&amp;#8217;t a whole lot of interaction going on.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Open Development&lt;/b&gt; &amp;#8211; Putting the source code out wasn&amp;#8217;t enough. You want to enable users and external developers to be able to file bugs, submit patches, and track the development process to see what to expect next. This usually involves running your project on a public project site such as &lt;a href=&quot;https://github.com/&quot;&gt;github&lt;/a&gt; or &lt;a href=&quot;https://launchpad.net/&quot;&gt;Launchpad&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Open Decision Making&lt;/b&gt; &amp;#8211; You&amp;#8217;ve postponed the inevitable for long enough. Feature requests and bug reports are pouring in, and the community wants to have a say in what gets prioritized. Should we focus only on stability? Performance? New features? Porting to mobile platforms? Let the community decided the direction of the project.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There have been examples of success for organizations who have stopped at each of these steps. Given the proper environment, any can work. My preference is to work on projects that are fully open, where company and organizational boundaries do not exist between developers and users. I&amp;#8217;m thrilled to say that we&amp;#8217;ve gone all in with OpenStack. We&amp;#8217;re hosted on Launchpad and have a governance structure that allows all parties within the community to have a say in the future of the project.&lt;/p&gt;
&lt;h3&gt;Preventing Vendor Lock-in&lt;/h3&gt;
&lt;p&gt;During the &lt;a href=&quot;http://www.oscon.com/oscon2010/public/schedule/detail/15295&quot;&gt;Cloud Summit&lt;/a&gt; at OSCON, there was a debate titled: &amp;#8220;Are Open APIs Enough to Prevent Lock-in?&amp;#8221;. Most folks came to the conclusion that the answer is &amp;#8220;no,&amp;#8221; and I agree. While I feel open APIs are necessary, they are by no means sufficient. Even if a project is open source and allows for open development, it probably will not prevent vendor lock-in. The key is to provide some incentive for vendors to adopt and invest resources within a project. Much like customers don&amp;#8217;t want vendor lock-in when choosing a platform, vendors do not want project or feature lock-in when choosing the software to power their business. Each vendor who chooses to participate must have the ability to voice their opinion on the direction of APIs, features, and other project priorities. This is why it is critical that any open source project must take all the steps described above to give the project a chance of being adopted and becoming the de facto standard. There is of course no guarantee that adoption and prevention of vendor lock-in will happen, but I see them as necessary steps.&lt;/p&gt;
&lt;p&gt;This is another area where OpenStack has done the correct thing. We are planning on having another developer summit in November, and then once every six months after that time. All design discussions and decision making will happen in public forums such as the mailing list and IRC. We want all participants in the community to have a chance to respond to topics being discussed, and we believe the more we have, the more successful the project will be. Having many voices allows the project to be more applicable to different environments. For example, Rackspace and NASA have different requirements for their compute architectures, but they also share many components as well. Through open participation we can ensure all needs are accounted for. Much like the LAMP stack has powered universities, governments, and competing business, we hope OpenStack can do the same.&lt;/p&gt;
&lt;h3&gt;Contributor License Agreement (CLA)&lt;/h3&gt;
&lt;p&gt;During the past couple of weeks a few folks asked what the CLA was all about. When the foundations of OpenStack were forming, the requirement of having a CLA came up from the legal side. Having been involved with open source projects that had very invasive CLAs, initially I had quite a bit of concern. The CLA is actually quite innocuous, and it &lt;b&gt;does NOT require assignment or dual-ownership of copyright&lt;/b&gt;. You are the sole owner of code you contribute. For all intents and purposes it is a signed version of the Apache 2.0 license, the CLA just makes these terms more explicit. The &lt;a href=&quot;http://wiki.openstack.org/HowToContribute&quot;&gt;CLA is handled through digital signatures&lt;/a&gt;, so no papers, pens, or faxing is required.&lt;/p&gt;
&lt;h3&gt;Get Involved!&lt;/h3&gt;
&lt;p&gt;Expect to see more posts on my blog related to OpenStack topics. If you would like to get involved, you can join the IRC channel (#openstack on irc.freenode.net), &lt;a href=&quot;https://launchpad.net/~openstack&quot;&gt;join the mailing list&lt;/a&gt;, or &lt;a href=&quot;https://launchpad.net/openstack&quot;&gt;start contributing code&lt;/a&gt;! There are even &lt;a href=&quot;http://www.openstack.org/jobs/&quot;&gt;jobs around OpenStack&lt;/a&gt; popping up already!&lt;/p&gt;</content>
		<author>
			<name>Eric Day</name>
			<uri>http://oddments.org</uri>
		</author>
		<source>
			<title type="html">Eric Day - Blog » Drizzle</title>
			<subtitle type="html">Thoughts, code, and other oddments.</subtitle>
			<link rel="self" href="http://oddments.org/?feed=rss2&amp;cat=4"/>
			<id>http://oddments.org/?feed=rss2&amp;cat=4</id>
			<updated>2010-07-28T10:00:25+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">MySQL Server Protocol Bug</title>
		<link href="http://oddments.org/?p=260"/>
		<id>http://oddments.org/?p=260</id>
		<updated>2010-07-25T00:47:30+00:00</updated>
		<content type="html">&lt;p&gt;A few months ago I wrote a tool that verified MySQL and Drizzle protocol compatibility, along with testing for all sorts of edge cases. In analyzing protocol command interactions in mysqld, I found that the MySQL server will happily read an infinite amount of data if you exceed the maximum packet size while using a special sequence of protocol packets. The reasoning behind this behavior is so that the server can be polite and flush your data before sending a &amp;#8220;max packet exceeded&amp;#8221; error message, but perhaps there should be a limit to one&amp;#8217;s politeness. What&amp;#8217;s more interesting is that you can do this during the client handshake packet without authorization, so anyone could do this to any open MySQL server. The appropriate thing to do here would be to set some maximum limit of data to read and force a connection close when it is reached, otherwise your bandwidth and CPU could be consumed (essentially a DoS attack).&lt;/p&gt;
&lt;p&gt;This portion of code was ripped out entirely in Drizzle, so there are no risks there. I submitted this as a bug to MySQL and MariaDB back in February and they both have patches available to fix this as well. You can find the &lt;a href=&quot;http://bugs.mysql.com/bug.php?id=50974&quot;&gt;bug here&lt;/a&gt; and a &lt;a href=&quot;http://lists.mysql.com/internals/37879&quot;&gt;patch here&lt;/a&gt;. If you have publicly accessible MySQL or MariaDB servers, you probably want to upgrade binaries or patch this.&lt;/p&gt;</content>
		<author>
			<name>Eric Day</name>
			<uri>http://oddments.org</uri>
		</author>
		<source>
			<title type="html">Eric Day - Blog » Drizzle</title>
			<subtitle type="html">Thoughts, code, and other oddments.</subtitle>
			<link rel="self" href="http://oddments.org/?feed=rss2&amp;cat=4"/>
			<id>http://oddments.org/?feed=rss2&amp;cat=4</id>
			<updated>2010-07-28T10:00:25+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Bugs vs Blueprints</title>
		<link href="http://inaugust.com/post/80"/>
		<id>http://inaugust.com/post/80</id>
		<updated>2010-07-22T13:12:25+00:00</updated>
		<content type="html">&lt;p&gt;Launchpad has two facilities for filing tasks that need to be done in a source tree, Bugs and Blueprints. I've spoken to folks who think the two should be collapsed in to one thing, and folks who think they need to remain separate. I'm in the latter camp, so I thought I'd weigh in real quick with a quick explanation of what I think the difference between the two is. Whether they are fundamentally the same object in the backend object model is&amp;nbsp;irrelevant&amp;nbsp;to me - I'm talking about developer workflow and thought.&lt;/p&gt;&lt;p&gt;In my view, it's really simple:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A Bug is a record of something that needs to be done - the &lt;em&gt;what&lt;/em&gt;&lt;/li&gt;&lt;li&gt;A Blueprint is a record of how something will be done - the &lt;em&gt;how&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;If you accept that premise, then you can have a task that has both a bug and a blueprint associated with it. Or you could have a bug with no blueprint (sometimes stating the problem implies the solution) It makes less sense to have a blueprint without a bug - but we do this as a shortcut often times because launchpad doesn't have an automatic 'create a bug for this' feature for blueprints. On the other hand, many of the blueprints the Ubuntu project works with during UDS planning aren't really things with bugs - unless you consider them all to be hows of solving bug#1. Or perhaps there is a missing or merely implied definition of the what for many of them, which might mean that the discussion of how meanders for a little bit.&lt;/p&gt;&lt;p&gt;I think the current structure of blueprints backs me up here. It is intended that a blueprint have a wiki page (implying that perhaps the information might be longer in form) and blueprints have a wonderful dependency graphing feature - which is quite useful for project planning ... &amp;quot;to accomplish this (bug#1) I'm going to do this (blueprint#1) which depends on these other things being done first (blueprint#2 and blueprint#3)&amp;quot;&lt;/p&gt;&lt;p&gt;Additionally, blueprints having an associated wiki page implies that anything with a blueprint is something that should turn in to documentation. If you're writing up a description of how you're going to do something, then perhaps that means when you're done you've written a description of how or why you actually did something, which is sort of what internals documentation is, right?&lt;/p&gt;&lt;p&gt;Now - can things be better with blueprints? Of course. There was discussion at the last UDS of having blueprints have a merge-request style discussion/approval process, which I would whole-heartedly approve of. Additionally, the wiki element could be baked in to the blueprint, and bzr branchable.&lt;/p&gt;&lt;p&gt;But I strongly believe that both serve a strong and fundamentally different purpose.&lt;/p&gt;</content>
		<author>
			<name>Monty Taylor</name>
			<uri>http://inaugust.com/</uri>
		</author>
		<source>
			<title type="html">In August Productions</title>
			<subtitle type="html">The latest entries from In August Productions</subtitle>
			<link rel="self" href="http://inaugust.com/feed/rss2_0?tag=drizzle"/>
			<id>http://inaugust.com/feed/rss2_0?tag=drizzle</id>
			<updated>2010-09-09T06:00:01+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">BlitzDB Crash Safety and Auto Recovery</title>
		<link href="http://torum.net/2010/07/blitzdb-crash-safety-and-auto-recovery/"/>
		<id>http://torum.net/?p=2369</id>
		<updated>2010-07-22T09:43:14+00:00</updated>
		<content type="html">&lt;p&gt;Crash Safety is a big deal in the database league. Lack of durability can lead to all sorts of terrible things upon a catastrophic event. Many projects, especially in the so called NoSQL world compromises crash safety in return for higher QPS. The argument there is that the availability of the overall system should be accomplished by replication since a database server can&amp;#8217;t be rescued if the physical disk breaks. I happen to agree with this philosophy but I am also aware that this isn&amp;#8217;t a correct answer for everyone. So, what will I do with BlitzDB?&lt;/p&gt;
&lt;p&gt;Several relational database hackers have pointed out that BlitzDB isn&amp;#8217;t any safer than MyISAM since it doesn&amp;#8217;t guarantee crash safety. This is currently true but I plan on making BlitzDB much safer than MyISAM by providing following features.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Auto Recovery Routine (startup option)&lt;/li&gt;
&lt;li&gt;Tokyo Cabinet&amp;#8217;s Transaction API (table-specific option)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The second feature above would actually guarantee BlitzDB to be crash safe (especially combined with auto recovery) but I won&amp;#8217;t get into depth in this post since this topic deserves a blog post of it&amp;#8217;s own. Let me just state that this feature will be provided in a form like this:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot;&gt;&lt;span&gt;CREATE&lt;/span&gt; &lt;span&gt;TABLE&lt;/span&gt; t1 &lt;span&gt;&amp;#40;&lt;/span&gt;
  a int &lt;span&gt;PRIMARY&lt;/span&gt; &lt;span&gt;KEY&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;
  b varchar&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;256&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;
&lt;span&gt;&amp;#41;&lt;/span&gt; ENGINE &lt;span&gt;=&lt;/span&gt; BLITZDB&lt;span&gt;,&lt;/span&gt; CRASH_SAFE;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;From here on, I&amp;#8217;ll cover how I plan on hacking auto recovery in BlitzDB.&lt;/p&gt;
&lt;h3&gt;Auto Recovery Challenges&lt;/h3&gt;
&lt;p&gt;As I blogged a while back, &lt;a href=&quot;http://torum.net/2010/01/how-to-recover-a-tokyo-cabinet-database-file/&quot;&gt;recovering Tokyo Cabinet&lt;/a&gt; is relatively simple. However, this is not a sufficient solution in BlitzDB since the data file (hash database that actually holds the rows) and the index file(s) are independent from each other. That is, the likelihood of the data file and the index file(s) to be inconsistent is very high after a crash. So, how can we hack on this? Pretty simple.&lt;/p&gt;
&lt;h3&gt;Indexes aren&amp;#8217;t Important at Recovery Phase&lt;/h3&gt;
&lt;p&gt;Because BlitzDB logically separates the data file and it&amp;#8217;s indexes, index files aren&amp;#8217;t that important. If a server crash had occurred, BlitzDB could delete the index file(s) and recompute them from the data file. Needless to say, this process would involve a lot of random access and computation but it would not dominate the time space of the system since it&amp;#8217;s a one-time cost. This approach however has one flaw in it such that the index files can&amp;#8217;t be recomputed if the data file is broken or is unrecoverable.&lt;/p&gt;
&lt;p&gt;Therefore to guarantee crash safety, BlitzDB must ensure that the data file is unbreakable. This is precisely where Tokyo Cabinet&amp;#8217;s Transaction API comes in. I&amp;#8217;m planning on using it to protect the data file from breaking. If the data file is protected, the table can be rescued. Simple!&lt;/p&gt;
&lt;p&gt;So, that&amp;#8217;s what I have in mind for making BlitzDB a safer engine. Unfortunately I can&amp;#8217;t start hacking on it immediately since I have several bugs to fix first. Nevertheless I&amp;#8217;m looking forward to start hacking on it. This challenge should be quite fun to tackle.&lt;/p&gt;</content>
		<author>
			<name>Toru Maesaka</name>
			<uri>http://torum.net</uri>
		</author>
		<source>
			<title type="html">Toru Maesaka » drizzle</title>
			<subtitle type="html">Hackaholic and a Web Addict based in Tokyo</subtitle>
			<link rel="self" href="http://torum.net/category/drizzle/feed/"/>
			<id>http://torum.net/category/drizzle/feed/</id>
			<updated>2010-08-27T16:00:17+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">A tale of a bug…</title>
		<link href="http://www.flamingspork.com/blog/2010/07/22/a-tale-of-a-bug/"/>
		<id>http://www.flamingspork.com/blog/?p=2083</id>
		<updated>2010-07-22T00:10:19+00:00</updated>
		<content type="html">&lt;p&gt;So I sometimes get asked if we funnel back bug reports or patches back to &lt;a href=&quot;http://mysql.com&quot;&gt;MySQL&lt;/a&gt; from &lt;a href=&quot;http://drizzle.org&quot;&gt;Drizzle&lt;/a&gt;. Also, &lt;a href=&quot;http://mariadb.org/&quot;&gt;MariaDB&lt;/a&gt; adds some interest here as they are a lot closer (and indeed compatible with) to MySQL. With &lt;a href=&quot;http://drizzle.org&quot;&gt;Drizzle&lt;/a&gt;, we have deviated really quite heavily from the MySQL codebase. There are still some common areas, but they&amp;#8217;re getting rarer (especially to just directly apply a patch).&lt;/p&gt;
&lt;p&gt;Back in June 2009, while working on Drizzle at Sun, I found a bug that I knew would affect both. The patch would even directly apply (well&amp;#8230; close, but I made one anyway).&lt;/p&gt;
&lt;p&gt;So the typical process of me filing a MySQL bug these days is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stewart files bug&lt;/li&gt;
&lt;li&gt;In the next window of Sveta being awake, it&amp;#8217;s verified.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This happened within a really short time.&lt;/p&gt;
&lt;p&gt;Unfortunately, what happens next isn&amp;#8217;t nearly as awesome.&lt;/p&gt;
&lt;p&gt;Namely, nothing. For a year.&lt;/p&gt;
&lt;p&gt;So a year later, I filed it in launchpad for MariaDB.&lt;/p&gt;
&lt;p&gt;So, MariaDB is gearing up for a release, it&amp;#8217;s a relatively low priority bug (but it does have a working, correct and obvious patch), within 2 months, Monty applied it and improved the error checking around it.&lt;/p&gt;
&lt;p&gt;So &lt;a href=&quot;https://bugs.launchpad.net/maria/+bug/588599&quot;&gt;MariaDB bug 588599&lt;/a&gt; is Fix Committed (June 2nd 2010 &amp;#8211; July 20th 2010), &lt;a href=&quot;http://bugs.mysql.com/bug.php?id=45377&quot;&gt;MySQL Bug ﻿﻿45377&lt;/a&gt; is still Verified (July 20th 2009 &amp;#8211; &amp;#8230;.).&lt;/p&gt;
&lt;p&gt;(and yes, this tends to be a general pattern I find)&lt;/p&gt;
&lt;p&gt;But Mark says he gets things through&amp;#8230; so yay for him.2&lt;/p&gt;


&lt;div class=&quot;shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy&quot;&gt;
&lt;ul class=&quot;socials&quot;&gt;
		&lt;li class=&quot;shr-facebook&quot;&gt;
			&lt;a href=&quot;http://www.facebook.com/share.php?v=4&amp;amp;src=bm&amp;amp;u=http://www.flamingspork.com/blog/2010/07/22/a-tale-of-a-bug/&amp;amp;t=A+tale+of+a+bug...&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on Facebook&quot;&gt;Share this on Facebook&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-twitter&quot;&gt;
			&lt;a href=&quot;http://twitter.com/home?status=A+tale+of+a+bug...+-+http://b2l.me/abqvws&amp;amp;source=shareaholic&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Tweet This!&quot;&gt;Tweet This!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-delicious&quot;&gt;
			&lt;a href=&quot;http://delicious.com/post?url=http://www.flamingspork.com/blog/2010/07/22/a-tale-of-a-bug/&amp;amp;title=A+tale+of+a+bug...&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on del.icio.us&quot;&gt;Share this on del.icio.us&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-digg&quot;&gt;
			&lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.flamingspork.com/blog/2010/07/22/a-tale-of-a-bug/&amp;amp;title=A+tale+of+a+bug...&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Digg this!&quot;&gt;Digg this!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-googlebuzz&quot;&gt;
			&lt;a href=&quot;http://www.google.com/buzz/post?url=http://www.flamingspork.com/blog/2010/07/22/a-tale-of-a-bug/&amp;amp;imageurl=&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Post on Google Buzz&quot;&gt;Post on Google Buzz&lt;/a&gt;
		&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Stewart Smith</name>
			<uri>http://www.flamingspork.com/blog</uri>
		</author>
		<source>
			<title type="html">Ramblings</title>
			<subtitle type="html">Ramblings which occasionally resemble reality. This is the blog of Stewart Smith.</subtitle>
			<link rel="self" href="http://www.flamingspork.com/blog/feed/"/>
			<id>http://www.flamingspork.com/blog/feed/</id>
			<updated>2010-09-09T06:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Extending CREATE TABLE Syntax in Drizzle</title>
		<link href="http://torum.net/2010/07/extending-create-table-syntax-in-drizzle/"/>
		<id>http://torum.net/?p=2367</id>
		<updated>2010-07-21T17:37:42+00:00</updated>
		<content type="html">&lt;p&gt;The flexibility to add table-specific options for things like compression, encryption and optimization can be useful to storage engine developers as this flexibility can open up new possibilities. Here&amp;#8217;s what I&amp;#8217;m talking about:&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;sql&quot;&gt;&lt;span&gt;CREATE&lt;/span&gt; &lt;span&gt;TABLE&lt;/span&gt; t1 &lt;span&gt;&amp;#40;&lt;/span&gt;
  &lt;span&gt;...&lt;/span&gt;
&lt;span&gt;&amp;#41;&lt;/span&gt; ENGINE &lt;span&gt;=&lt;/span&gt; my_engine&lt;span&gt;,&lt;/span&gt; MY_OPTION &lt;span&gt;=&lt;/span&gt; your_arg;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Supporting this is relatively easy in Drizzle and this API feature (and a bit more) is &lt;a href=&quot;http://askmonty.org/wiki/Manual:Extending_CREATE_TABLE&quot;&gt;available in MariaDB&lt;/a&gt; as well. Unfortunately Drizzle&amp;#8217;s method to do this isn&amp;#8217;t documented in the Wiki yet but it should be added when our Storage Engine API becomes stable (as in, no interface changes).&lt;/p&gt;
&lt;h3&gt;Implement StorageEngine::doValidateTableOptions()&lt;/h3&gt;
&lt;p&gt;Here&amp;#8217;s the actual interface.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span&gt;bool&lt;/span&gt; StorageEngine&lt;span&gt;::&lt;/span&gt;&lt;span&gt;doValidateTableOptions&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;const&lt;/span&gt; std&lt;span&gt;::&lt;/span&gt;&lt;span&gt;string&lt;/span&gt; &lt;span&gt;&amp;amp;&lt;/span&gt;key,
                                           &lt;span&gt;const&lt;/span&gt; std&lt;span&gt;::&lt;/span&gt;&lt;span&gt;string&lt;/span&gt; &lt;span&gt;&amp;amp;&lt;/span&gt;state&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;This function is called for each table options given at CREATE TABLE syntax execution. The first argument, &lt;em&gt;key&lt;/em&gt; is a const reference to a string that represents the option name. The second argument, &lt;em&gt;state&lt;/em&gt; represents the argument given for that option.&lt;/p&gt;
&lt;p&gt;Therefore, given: &lt;em&gt;COMPRESSION = YES_PLEASE&lt;/em&gt;, &lt;em&gt;key&lt;/em&gt; would be &amp;#8220;COMPRESSION&amp;#8221; and &lt;em&gt;state&lt;/em&gt; would be &amp;#8220;YES_PLEASE&amp;#8221;. The objective of this function is to check whether the key/state pair makes sense to your storage engine. If this function returns false, Drizzle will return an error for the CREATE TABLE query. Personally I think this interface can be improved to be a bit more Developer friendly, such as making life easier to validate numeric values without enforcing the developer to play around with the data. Saying that, given the pace that Drizzle is growing, this could be improved before we know it.&lt;/p&gt;
&lt;h3&gt;Access Options at StorageEngine::doCreateTable()&lt;/h3&gt;
&lt;p&gt;Here&amp;#8217;s the actual interface for doCreateTable().&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span&gt;int&lt;/span&gt; doCreateTable&lt;span&gt;&amp;#40;&lt;/span&gt;drizzled&lt;span&gt;::&lt;/span&gt;&lt;span&gt;Session&lt;/span&gt; &lt;span&gt;&amp;amp;&lt;/span&gt;session,
                  drizzled&lt;span&gt;::&lt;/span&gt;&lt;span&gt;Table&lt;/span&gt; &lt;span&gt;&amp;amp;&lt;/span&gt;table_arg,
                  &lt;span&gt;const&lt;/span&gt; drizzled&lt;span&gt;::&lt;/span&gt;&lt;span&gt;TableIdentifier&lt;/span&gt; &lt;span&gt;&amp;amp;&lt;/span&gt;identifier,
                  drizzled&lt;span&gt;::&lt;/span&gt;&lt;span&gt;message&lt;/span&gt;&lt;span&gt;::&lt;/span&gt;&lt;span&gt;Table&lt;/span&gt; &lt;span&gt;&amp;amp;&lt;/span&gt;table_proto&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Given that the options were successfully validated, doCreateTable() is called next. In Drizzle, all information regarding a table (including options) is represented in a Google Protocol Buffer message. A reference to that message object is passed to doCreateTable() as the fourth argument so all you need to do is loop through the options list in the message object and extract what you need. Here&amp;#8217;s a minimal example that only takes care of one option.&lt;/p&gt;

&lt;div class=&quot;wp_syntax&quot;&gt;&lt;div class=&quot;code&quot;&gt;&lt;pre class=&quot;cpp&quot;&gt;&lt;span&gt;int&lt;/span&gt; n_options &lt;span&gt;=&lt;/span&gt; table_proto.&lt;span&gt;engine&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;.&lt;span&gt;options_size&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
&amp;nbsp;
&lt;span&gt;for&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;int&lt;/span&gt; i &lt;span&gt;=&lt;/span&gt; &lt;span&gt;0&lt;/span&gt;&lt;span&gt;;&lt;/span&gt; i &lt;span&gt;&amp;lt;&lt;/span&gt; n_options&lt;span&gt;;&lt;/span&gt; i&lt;span&gt;++&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
  &lt;span&gt;if&lt;/span&gt; &lt;span&gt;&amp;#40;&lt;/span&gt;table_proto.&lt;span&gt;engine&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;.&lt;span&gt;options&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;i&lt;span&gt;&amp;#41;&lt;/span&gt;.&lt;span&gt;name&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;==&lt;/span&gt; &lt;span&gt;&amp;quot;my_option_name&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt; &lt;span&gt;&amp;#123;&lt;/span&gt;
    &lt;span&gt;// Do whatever you like with this stream.&lt;/span&gt;
    std&lt;span&gt;::&lt;/span&gt;&lt;span&gt;istringstream&lt;/span&gt; stream&lt;span&gt;&amp;#40;&lt;/span&gt;table_proto.&lt;span&gt;engine&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;.&lt;span&gt;options&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;i&lt;span&gt;&amp;#41;&lt;/span&gt;.&lt;span&gt;state&lt;/span&gt;&lt;span&gt;&amp;#40;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;&amp;#41;&lt;/span&gt;&lt;span&gt;;&lt;/span&gt;
  &lt;span&gt;&amp;#125;&lt;/span&gt;
&lt;span&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The above example should be simple to extend to handle multiple options. What&amp;#8217;s really important in the above example is that the option name can be accessed with the name() accessor and the state (value) of that option with the state() accessor.&lt;/p&gt;
&lt;p&gt;So, that&amp;#8217;s all I have to cover for now. I hope this feature will help storage engine developers create and provide useful table specific features for their engine.&lt;/p&gt;
&lt;p&gt;Happy Hacking.&lt;/p&gt;</content>
		<author>
			<name>Toru Maesaka</name>
			<uri>http://torum.net</uri>
		</author>
		<source>
			<title type="html">Toru Maesaka » drizzle</title>
			<subtitle type="html">Hackaholic and a Web Addict based in Tokyo</subtitle>
			<link rel="self" href="http://torum.net/category/drizzle/feed/"/>
			<id>http://torum.net/category/drizzle/feed/</id>
			<updated>2010-08-27T16:00:17+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Progress with Plugins</title>
		<link href="http://vjsamuel.wordpress.com/2010/07/21/progress-with-plugins/"/>
		<id>http://vjsamuel.wordpress.com/2010/07/21/progress-with-plugins/</id>
		<updated>2010-07-21T12:00:11+00:00</updated>
		<content type="html">It&amp;#8217;s been almost a month since I finished refactoring the entire client so the client is completely independent of my_getopt(Hurray!:-)). For the past one month I ve been working on the plugin side of drizzle. With the help of Monty&amp;#8217;s new interface I &amp;#8216;m slowly bringing boost::program_options into the commandline options of the plugins. I [...]&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=vjsamuel.wordpress.com&amp;amp;blog=13379184&amp;amp;post=54&amp;amp;subd=vjsamuel&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Vijay Samuel (GSOC)</name>
			<uri>http://vjsamuel.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Vijay Samuel's Blog</title>
			<subtitle type="html">Just another WordPress.com site</subtitle>
			<link rel="self" href="http://vjsamuel.wordpress.com/feed/rss/"/>
			<id>http://vjsamuel.wordpress.com/feed/rss/</id>
			<updated>2010-08-16T21:00:14+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Drizzle build 1666 tarball has been released</title>
		<link href="http://blog.drizzle.org/2010/07/20/drizzle-build-1666-tarball-has-been-released/"/>
		<id>http://blog.drizzle.org/?p=799</id>
		<updated>2010-07-20T18:19:16+00:00</updated>
		<content type="html">&lt;p&gt;Drizzled source tarball based on build 1666 has been released.  In this release:&lt;/p&gt;
&lt;p&gt;* Continued PBMS work&lt;br /&gt;
* Fixes of some crashing optimizer bugs&lt;br /&gt;
* We now rely on YES/NO vs. TRUE/FALSE in INFORMATION_SCHEMA / DATA_DICTIONARY per the SQL standard&lt;br /&gt;
* Continued work on logging_stats&lt;/p&gt;
&lt;p&gt;The Drizzle download file can be found &lt;a href=&quot;https://launchpad.net/drizzle/dexter/2010-07-19&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Official Drizzle Blog</name>
			<uri>http://blog.drizzle.org</uri>
		</author>
		<source>
			<title type="html">DrizzleBlog</title>
			<link rel="self" href="http://blog.drizzle.org/feed/"/>
			<id>http://blog.drizzle.org/feed/</id>
			<updated>2010-08-31T21:00:43+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">At OSCON</title>
		<link href="http://www.flamingspork.com/blog/2010/07/20/at-oscon/"/>
		<id>http://www.flamingspork.com/blog/?p=2079</id>
		<updated>2010-07-20T02:24:15+00:00</updated>
		<content type="html">&lt;p&gt;I&amp;#8217;m at OSCON this week. Come say hi and talk Drizzle, Rackspace, cloud, photography, vegan food or brewing.&lt;/p&gt;


&lt;div class=&quot;shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy&quot;&gt;
&lt;ul class=&quot;socials&quot;&gt;
		&lt;li class=&quot;shr-facebook&quot;&gt;
			&lt;a href=&quot;http://www.facebook.com/share.php?v=4&amp;amp;src=bm&amp;amp;u=http://www.flamingspork.com/blog/2010/07/20/at-oscon/&amp;amp;t=At+OSCON&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on Facebook&quot;&gt;Share this on Facebook&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-twitter&quot;&gt;
			&lt;a href=&quot;http://twitter.com/home?status=At+OSCON+-+File: /data/app/webapp/functions.php&lt;br /&gt;Line: 43&lt;br /&gt;Message: Table 'b2l_shrinker.phurl_urls' doesn't exist&amp;amp;source=shareaholic&quot;&gt;&lt;br /&gt;Line: 43&lt;br /&gt;Message: Table 'b2l_shrinker.phurl_urls' doesn't exist&amp;amp;source=shareaholic&quot;&gt;&lt;br /&gt;Line: 43&lt;br /&gt;Message: Table 'b2l_shrinker.phurl_urls' doesn't exist&amp;amp;source=shareaholic&quot;&gt;&lt;br /&gt;Line: 43&lt;br /&gt;Message: Table 'b2l_shrinker.phurl_urls' doesn't exist&amp;amp;source=shareaholic&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Tweet This!&quot;&gt;Tweet This!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-delicious&quot;&gt;
			&lt;a href=&quot;http://delicious.com/post?url=http://www.flamingspork.com/blog/2010/07/20/at-oscon/&amp;amp;title=At+OSCON&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on del.icio.us&quot;&gt;Share this on del.icio.us&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-digg&quot;&gt;
			&lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.flamingspork.com/blog/2010/07/20/at-oscon/&amp;amp;title=At+OSCON&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Digg this!&quot;&gt;Digg this!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-googlebuzz&quot;&gt;
			&lt;a href=&quot;http://www.google.com/buzz/post?url=http://www.flamingspork.com/blog/2010/07/20/at-oscon/&amp;amp;imageurl=&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Post on Google Buzz&quot;&gt;Post on Google Buzz&lt;/a&gt;
		&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Stewart Smith</name>
			<uri>http://www.flamingspork.com/blog</uri>
		</author>
		<source>
			<title type="html">Ramblings</title>
			<subtitle type="html">Ramblings which occasionally resemble reality. This is the blog of Stewart Smith.</subtitle>
			<link rel="self" href="http://www.flamingspork.com/blog/feed/"/>
			<id>http://www.flamingspork.com/blog/feed/</id>
			<updated>2010-09-09T06:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Drizzle Statistics Scoreboard (logging_stats plugin)</title>
		<link href="http://www.8bitsofbytes.com/?p=20"/>
		<id>http://www.8bitsofbytes.com/?p=20</id>
		<updated>2010-07-16T00:19:34+00:00</updated>
		<content type="html">&lt;p&gt;Drizzle has a Scoreboard for collecting statistics (logging_stats plugin) I introduced this about 6 months ago with little user documentation unless you are into reading header files which have a descriptive writeup. Below is a detailed explanation of whats included from the user perspective and if your really interested some design details. A good portion of the user level statistics was inspired by the &lt;a href=&quot;http://http://code.google.com/p/google-mysql-tools/wiki/UserTableMonitoring&quot;&gt;google v2 patch&lt;/a&gt; for MySQL.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tables&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;drizzle&amp;gt; use data_dictionary;&lt;/pre&gt;
&lt;pre&gt;drizzle&amp;gt; describe CUMULATIVE_USER_STATS;&lt;/pre&gt;
&lt;pre&gt;+---------------------+---------+-------+---------+-----------------+-----------+&lt;/pre&gt;
&lt;pre&gt;| Field               | Type    | Null  | Default | Default_is_NULL | On_Update |&lt;/pre&gt;
&lt;pre&gt;+---------------------+---------+-------+---------+-----------------+-----------+&lt;/pre&gt;
&lt;pre&gt;| USER                | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| BYTES_RECEIVED      | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| BYTES_SENT          | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| DENIED_CONNECTIONS  | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| LOST_CONNECTIONS    | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| ACCESS_DENIED       | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| CONNECTED_TIME_SEC  | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| EXECUTION_TIME_NSEC | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| ROWS_FETCHED        | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| ROWS_UPDATED        | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| ROWS_DELETED        | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| ROWS_INSERTED       | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;+---------------------+---------+-------+---------+-----------------+-----------+&lt;/pre&gt;
&lt;pre&gt;drizzle&amp;gt; describe CUMULATIVE_SQL_COMMANDS;
&lt;/pre&gt;
&lt;pre&gt;+----------------+---------+-------+---------+-----------------+-----------+&lt;/pre&gt;
&lt;pre&gt;| Field          | Type    | Null  | Default | Default_is_NULL | On_Update |&lt;/pre&gt;
&lt;pre&gt;+----------------+---------+-------+---------+-----------------+-----------+&lt;/pre&gt;
&lt;pre&gt;| USER           | VARCHAR | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_SELECT   | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_DELETE   | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_UPDATE   | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_INSERT   | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_ROLLBACK | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_COMMIT   | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_CREATE   | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_ALTER    | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_DROP     | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;| COUNT_ADMIN    | BIGINT  | FALSE |         | FALSE           |           |&lt;/pre&gt;
&lt;pre&gt;+----------------+---------+-------+---------+-----------------+-----------+&lt;/pre&gt;
&lt;p&gt;In addition the functionality of “show status” and “show global status” resides in the GLOBAL_STATUS, and SESSION_STATUS tables which are constructed from the Scoreboard.  The  SESSION_STATEMENTS, and GLOBAL_STATEMENTS tables also reside in the plugin.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Desgin Overview&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The Scoreboard is a pre-allocated vector of vectors of ScoreboardSlots. It can be thought of as a vector of buckets where each bucket contains pre-allocated ScoreboardSlots. To determine which bucket gets used for recording statistics the modulus operator is used on the session_id. This will result in a bucket to search for a unused ScoreboardSlot.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Startup Options&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;logging_stats_max_user_count – this is the maximum number of users that statistics will be aggregated for, if this is exceeded new users will not be logged. This should be allocated sufficiently large enough to not reach the maximum, its memory usage is minimal.&lt;/p&gt;
&lt;p&gt;logging_stats_bucket_count – the number of buckets to allocate, see Design Overview on bucket description.&lt;/p&gt;
&lt;p&gt;logging_stats_scoreboard_size – the number of ScoreboardSlots to pre-allocate, this  represents approximately the number of concurrent sessions the system can have. If the system were to exceed this statistics would not be logged for a particular session. It should be allocated to be sufficiently larger then the maximum number of concurrent sessions that is anticipated.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Future Options&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is to be determined based on what users want, the infrastructure is there now to make adding and aggregating new statistics fairly easy.&lt;/p&gt;</content>
		<author>
			<name>Joe Daly</name>
			<uri>http://www.8bitsofbytes.com</uri>
		</author>
		<source>
			<title type="html">Bits of Bytes</title>
			<subtitle type="html">Powered By Drizzle Database Server</subtitle>
			<link rel="self" href="http://www.8bitsofbytes.com/?feed=rss2"/>
			<id>http://www.8bitsofbytes.com/?feed=rss2</id>
			<updated>2010-07-16T01:00:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">linux.conf.au 2011 CFP Open!</title>
		<link href="http://www.flamingspork.com/blog/2010/07/15/linux-conf-au-2011-cfp-open/"/>
		<id>http://www.flamingspork.com/blog/?p=2077</id>
		<updated>2010-07-15T00:59:23+00:00</updated>
		<content type="html">&lt;p&gt;Head on over to &lt;a href=&quot;http://lca2011.linux.org.au/&quot;&gt;http://lca2011.linux.org.au/&lt;/a&gt; and check it out!&lt;/p&gt;
&lt;p&gt;You&amp;#8217;ve got until August 7th to put in a paper, miniconf, poster or tutorial.&lt;/p&gt;
&lt;p&gt;Things I&amp;#8217;d like to see come from my kinda world:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;topics on running large numbers of machines&lt;/li&gt;
&lt;li&gt;latest in large scale web infrastructure&lt;/li&gt;
&lt;li&gt;latest going on in the IO space: (SSD, filesystems, SSD as L2 cache)&lt;/li&gt;
&lt;li&gt;Applications of above technologies and what it means for application performance&lt;/li&gt;
&lt;li&gt;Scalable and massive tcp daemons (i.e. Eric should come talk on scalestack)&lt;/li&gt;
&lt;li&gt;exploration of pain points in current technologies and discussion on ways to fix them (from people really in the know)&lt;/li&gt;
&lt;li&gt;A Hydra tutorial: starting with stock Ubuntu lucid, and exiting the tutorial with some analysis running on my project.&lt;/li&gt;
&lt;li&gt;Something that completely takes me off guard and is awesome.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I&amp;#8217;d love to see people from the MySQL, Drizzle and Rackspace worlds have a decent presence. For those who&amp;#8217;ve never heard of/been to an LCA before: we reject at least another whole conference worth of papers. It&amp;#8217;s the conference on the calendar that everything else moves around.&lt;/p&gt;


&lt;div class=&quot;shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy&quot;&gt;
&lt;ul class=&quot;socials&quot;&gt;
		&lt;li class=&quot;shr-facebook&quot;&gt;
			&lt;a href=&quot;http://www.facebook.com/share.php?v=4&amp;amp;src=bm&amp;amp;u=http://www.flamingspork.com/blog/2010/07/15/linux-conf-au-2011-cfp-open/&amp;amp;t=linux.conf.au+2011+CFP+Open%21&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on Facebook&quot;&gt;Share this on Facebook&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-twitter&quot;&gt;
			&lt;a href=&quot;http://twitter.com/home?status=linux.conf.au+2011+CFP+Open%21+-+http://b2l.me/aarqry&amp;amp;source=shareaholic&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Tweet This!&quot;&gt;Tweet This!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-delicious&quot;&gt;
			&lt;a href=&quot;http://delicious.com/post?url=http://www.flamingspork.com/blog/2010/07/15/linux-conf-au-2011-cfp-open/&amp;amp;title=linux.conf.au+2011+CFP+Open%21&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on del.icio.us&quot;&gt;Share this on del.icio.us&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-digg&quot;&gt;
			&lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.flamingspork.com/blog/2010/07/15/linux-conf-au-2011-cfp-open/&amp;amp;title=linux.conf.au+2011+CFP+Open%21&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Digg this!&quot;&gt;Digg this!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-googlebuzz&quot;&gt;
			&lt;a href=&quot;http://www.google.com/buzz/post?url=http://www.flamingspork.com/blog/2010/07/15/linux-conf-au-2011-cfp-open/&amp;amp;imageurl=&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Post on Google Buzz&quot;&gt;Post on Google Buzz&lt;/a&gt;
		&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Stewart Smith</name>
			<uri>http://www.flamingspork.com/blog</uri>
		</author>
		<source>
			<title type="html">Ramblings</title>
			<subtitle type="html">Ramblings which occasionally resemble reality. This is the blog of Stewart Smith.</subtitle>
			<link rel="self" href="http://www.flamingspork.com/blog/feed/"/>
			<id>http://www.flamingspork.com/blog/feed/</id>
			<updated>2010-09-09T06:00:07+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Drupal 7 with Drizzle</title>
		<link href="http://feedproxy.google.com/~r/posulliv/~3/vxGy0uTjtxs/drizzle-drupal.html"/>
		<id>http://schacon.github.com//2010/07/12/drizzle-drupal</id>
		<updated>2010-07-12T07:00:00+00:00</updated>
		<content type="html">I wrote an &lt;a href=&quot;http://akiban.com/blog/2010/07/12/running-drupal-7-with-drizzle/&quot;&gt;article&lt;/a&gt; on the company
blog today about how to configure the latest Drupal 7 alpha release to work with Drizzle as the backend database.
&lt;br /&gt;&lt;br /&gt;

Feel free to check it out if you are interested.</content>
		<author>
			<name>Padraig O'Sullivan</name>
			<uri></uri>
		</author>
		<source>
			<title type="html">Padraig O'Sullivan</title>
			<link rel="self" href="http://feeds.feedburner.com/posulliv"/>
			<id>http://posulliv.github.com/</id>
			<updated>2010-07-29T15:00:02+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Log Buffer #194, A Carnival of The Vanities for DBAs</title>
		<link href="http://www.pythian.com/news/14333/log-buffer-194-a-carnival-of-the-vanities-for-dbas/"/>
		<id>http://www.pythian.com/news/?p=14333</id>
		<updated>2010-07-12T04:10:40+00:00</updated>
		<content type="html">&lt;p&gt;We&amp;#8217;re well into summer and almost at our 200th edition of &lt;a href=&quot;http://www.pythian.com/news/about-log-buffer/&quot;&gt;&lt;strong&gt;&lt;em&gt;Log Buffer&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;, a blog of blogs about the database world.  &lt;/p&gt;
&lt;p&gt;Remember if you find a link or interesting blog post that you think &lt;strong&gt;&lt;em&gt;Log Buffer&lt;/em&gt;&lt;/strong&gt; should mention, send a note to the editor at &lt;a href=&quot;mailto:logbuffer@pythian.com?Subject=Log Buffer&quot;&gt;&lt;em&gt;&lt;strong&gt;Log Buffer&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt; and be sure to include the link, and a short note outlining why you think that particular post would be of value to other DBAs, or what you learned from reading it.&lt;/p&gt;
&lt;p&gt;Now on to our weekly reading in &lt;em&gt;&lt;strong&gt;Log Buffer #194&lt;/strong&gt;&lt;/em&gt;:&lt;br /&gt;
&lt;span id=&quot;more-14333&quot;&gt;&lt;/span&gt;&lt;br /&gt;
Oracle Exadata is a topic that is getting hotter and hotter.  Following Pythian&amp;#8217;s announcement of Exadata services Oracle&amp;#8217;s &lt;a href=&quot;http://structureddata.org/about/&quot;&gt;&lt;strong&gt;Greg Rahn&lt;/strong&gt;&lt;/a&gt; &lt;a href=&quot;http://structureddata.org/2010/07/08/fully-exploiting-exadata/&quot;&gt;stresses &lt;/a&gt;how important it is to &amp;#8220;capitalize on the opportunity to re-engineer with Exadata and fully exploit the power of the Oracle Database Machine platform&amp;#8221;.  Also speaking of Exadata, &lt;strong&gt;&lt;a href=&quot;http://kerryosborne.oracle-guy.com&quot;&gt;Kerry Osborne&lt;/a&gt;&lt;/strong&gt; talks on his blog, about the Oracle 11g Release 2 new feature, &lt;a href=&quot;http://kerryosborne.oracle-guy.com/2010/07/exadata-and-parallel-queuing/&quot;&gt;Parallel Queuing&lt;/a&gt;, and how it applies to data warehousing workloads on Exadata.  &lt;a href=&quot;http://www.pythian.com/news/author/fielding&quot;&gt;&lt;strong&gt;Marc Fielding&lt;/strong&gt;&lt;/a&gt; begins his &lt;a href=&quot;http://www.pythian.com/news/13569/exadata-part-1/&quot;&gt;grand tour of Exadata&lt;/a&gt;, writing to share his implementation experience.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://sqlblog.com/user/Profile.aspx?UserID=2799&quot;&gt;Jamie Thomson&lt;/a&gt;&lt;/strong&gt; outlines a number of reasons &lt;a href=&quot;http://sqlblog.com/blogs/jamie_thomson/archive/2010/07/05/why-a-sql-or-bi-developer-should-learn-net.aspx&quot;&gt;why a SQL server or BI developer should learn .net&lt;/a&gt;.   And with more activity on SQLblog.com, &lt;strong&gt;&lt;a href=&quot;http://sqlblog.com/blogs/jonathan_kehayias/default.aspx&quot;&gt;Jonathan Kehayias&lt;/a&gt;&lt;/strong&gt; writes about a bug in SQL Server 2008 and &lt;a href=&quot;http://sqlblog.com/blogs/jonathan_kehayias/archive/2010/07/07/bug-in-sql-2008-why-you-shouldn-t-create-large-tables-in-the-model-database.aspx&quot;&gt;why you shouldn&amp;#8217;t create large tables in the Model Database.&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;On In Recovery, &lt;a href=&quot;http://www.sqlskills.com/AboutPaulSRandal.asp&quot;&gt;&lt;strong&gt;Paul Randal&lt;/strong&gt;&lt;/a&gt; posts on Benchmarking:  Introducing SSDs (Part 2 &amp;#8211; Sequential Inserts), following his first set of tests and analysis of the results.  In &lt;a href=&quot;http://www.sqlskills.com/BLOGS/PAUL/category/Benchmarking.aspx#p3&quot;&gt;Part 1&lt;/a&gt; and &lt;a href=&quot;http://www.sqlskills.com/BLOGS/PAUL/category/Benchmarking.aspx#p2&quot;&gt;Part 1b&lt;/a&gt; he covers not overloaded log file array.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://it.toolbox.com/people/wfavero/&quot;&gt;&lt;strong&gt;Willie Favero&lt;/strong&gt;&lt;/a&gt; addresses the &lt;a href=&quot;http://it.toolbox.com/blogs/db2zos/hopefully-this-is-the-last-time-we-hear-about-db2s-private-protocol-39780&quot;&gt;demise of private protocol&lt;/a&gt;, one last time (he hopes) on his blog Getting the Most out of DB2 for z/OS and System z.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ronald Bradford&lt;/strong&gt; posts a quick one on &lt;a href=&quot;http://ronaldbradford.com/blog/installing-mysql-on-oracle-enterprise-linux-2010-07-11/&quot;&gt;installing MYSQL on Oracle Enterprise Linux&lt;/a&gt; and other good advice for &lt;a href=&quot;http://ronaldbradford.com/blog/optimizing-sql-performance-the-art-of-elimination-2010-07-08/&quot;&gt;optimizing SQL performance&lt;/a&gt; using the art of elimination.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.blogger.com/profile/17401344028762041511&quot;&gt;&lt;strong&gt;Barry Leslie&lt;/strong&gt;&lt;/a&gt; announces &lt;a href=&quot;http://bpbdev.blogspot.com/2010/07/pbms-is-in-drizzle-tree.html&quot;&gt;PBMS is now in the Drizzle tree&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;And to sum things up, &lt;a href=&quot;http://www.pythian.com/news/author/shapira&quot;&gt;&lt;strong&gt;Gwen Shapira&lt;/strong&gt;&lt;/a&gt; shares a few of her favorite recent archives, a little older than our weekly news, but valuable nontheless.&lt;/p&gt;
&lt;p&gt;Not strictly a database topic, but certainly an important lesson for data architects. &lt;strong&gt;&lt;a href=&quot;http://briancarper.net/blog&quot;&gt;Brian Carper&lt;/a&gt;&lt;/strong&gt; shares the &lt;a href=&quot;http://briancarper.net/blog/546/i-am-an-edge-case&quot;&gt;difficult life of an edge case&lt;/a&gt;. Keep him in mind next time you develop an online shop.  The same &lt;strong&gt;Brian Carper&lt;/strong&gt; shares why he migrated from MySQL to NoSQL (Tokyo Cabinet) and &lt;a href=&quot;http://briancarper.net/blog/545/goodbye-tokyo-cabinet-hello-postgresql&quot;&gt;why he moved back to SQL&lt;/a&gt; (Postgres this time).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.commandprompt.com/blogs/joshua_drake&quot;&gt;Joshua Drake&lt;/a&gt;&lt;/strong&gt; warns the &lt;a href=&quot;http://www.commandprompt.com/blogs/joshua_drake/2010/07/postgresql_74_80_and_81_end_of_life/&quot;&gt;end of life is near for Postgres 7.4, 8.0 and 8.1&lt;/a&gt; and that anyone using these versions should upgrade.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://jonathanlewis.wordpress.com/&quot;&gt;Jonathan Lewis&lt;/a&gt;&lt;/strong&gt; &lt;a href=&quot;http://jonathanlewis.wordpress.com/2010/07/02/unrecoverable/&quot;&gt;explains the difference&lt;/a&gt; between unrecoverable and nologging operations.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://mwidlake.wordpress.com/2010/07/02/dba_tab_modifications/&quot;&gt;&lt;strong&gt;Martin Widlake&lt;/strong&gt;&lt;/a&gt; gives an overview and demonstration of a little know view, &lt;a href=&quot;http://mwidlake.wordpress.com/2010/07/02/dba_tab_modifications/&quot;&gt;DBA_TAB_MODIFICATIONS.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;And, lastly to close things off on a light note, &lt;a href=&quot;http://iggyfernandez.wordpress.com/&quot;&gt;&lt;strong&gt;Iggy Fernandez&lt;/strong&gt;&lt;/a&gt; highlights some of &lt;a href=&quot;http://iggyfernandez.wordpress.com/2010/06/29/dilbert-was-a-database-administrator-part-ii/&quot;&gt;his favorite Dilbert-on-Databases Cartoons&lt;/a&gt;.&lt;/p&gt;</content>
		<author>
			<name>Pythian Group</name>
			<uri>http://www.pythian.com/news</uri>
		</author>
		<source>
			<title type="html">The Pythian Blog</title>
			<subtitle type="html">News and views from Pythian DBAs</subtitle>
			<link rel="self" href="http://www.pythian.com/news/feed/"/>
			<id>http://www.pythian.com/news/feed/</id>
			<updated>2010-09-09T02:00:35+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">dedcode</title>
		<link href="http://dedcode.wordpress.com/2010/07/11/20/"/>
		<id>http://dedcode.wordpress.com/?p=20</id>
		<updated>2010-07-11T06:54:41+00:00</updated>
		<content type="html">&lt;p&gt;It has been a while since I didn&amp;#8217;t wrote on my GS0C project &amp;#8220;Query Cache&amp;#8221;, though many advancements have been done. So far I can say that I have a much clearer idea of the query processing flow and the different data structures used. I have been able to write a first plugin that can actually cache a query into memcached and keep some metadata on a local map object. Another cool option is to use data dictionary views to check int real time the cache content (thanks to the very easy interface). The next step from here is to write the retrieval functionality, this is probably the most difficult part for me cuz I still need to understand the functioning of the client interface.&lt;/p&gt;
&lt;p&gt;Before making any further step, here is wiki I have posted on the of drizzle&amp;#8217;s wiki page. It is basically an explanation of the query cache plugin interface and the hooks, this has yet to be approved and merged into drizzle trunk.&lt;/p&gt;
&lt;p&gt;== Principle of the Query Cache ==&lt;br /&gt;
The Query Cache permits to return the results of a query from a cache repository if the query has been already cached; or, to add its results to a cache repository if it&amp;#8217;s not cached yet. Therefore the simplest capability that a Query Cache plugin interface needs to provide is the ability to say if the received query is cached or not.&lt;/p&gt;
&lt;p&gt;Then:&lt;br /&gt;
If the query is cached:&lt;br /&gt;
- Retrieve the resultset from the cache and skip the query parsing/processing&lt;/p&gt;
&lt;p&gt;If the query is not cached:&lt;br /&gt;
- Initiate the Query Cache plugin, where the specific plugin will:&lt;br /&gt;
- Check if the query is cacheable&lt;br /&gt;
- Reserve a temp area and return a pointer to the session&lt;br /&gt;
- Build the hash key&lt;br /&gt;
- etc&lt;br /&gt;
- Add the results to the current temp area.&lt;br /&gt;
- Push the the temp variable and the respective cache key to the cache.&lt;/p&gt;
&lt;p&gt;== The Query Cache plugin Interface design ==&lt;br /&gt;
In the current design we have  introduced the following functions to the interface (drizzled/plugin/query_cache.h)&lt;br /&gt;
=== static bool isCached(Session *session); ===&lt;br /&gt;
This method is responsible to probe the used cache system for an entry corresponding to the received query.&lt;br /&gt;
&amp;#8221;Note: The plugin is responsible to check if the query is a Select.&amp;#8221;&lt;/p&gt;
&lt;p&gt;=== Static bool sendCachedResultset(Session *session); ===&lt;br /&gt;
This method is called directly if the query is cached and skip the lexical and query processing.&lt;/p&gt;
&lt;p&gt;=== static bool prepareResultset(Session *session); ===&lt;br /&gt;
This method is called before the query handling (see: handle_select() method) in order to prepare the resultset that will receive the generated data. An opened session will have its own resultset variable and current query key, the plugin will have to initiate these two variables added to the Class Session.&lt;/p&gt;
&lt;p&gt;=== static bool insertRecord(Session *session, List&amp;lt;Item&amp;gt; &amp;amp;item); ===&lt;br /&gt;
The result rows generated will ultimately go though the client interface, the query cache system intercept these calls and populate the resultset with the data being send to the client (see: select_send() method)&lt;/p&gt;
&lt;p&gt;=== static bool setResultset(Session *session); ===&lt;br /&gt;
Once the query processing is terminated this method will send the resultset variable to the cache repository and finalize the environment variables.&lt;/p&gt;
&lt;p&gt;The query resultset being stored and populated in the session is of type Google Protobuf:&lt;/p&gt;
&lt;p&gt;drizzled/message/resultset.proto&lt;/p&gt;
&lt;p&gt;= Plugin Hooks =&lt;br /&gt;
The following branch contains the plugin interface hooks in the kernel drizzle:&lt;/p&gt;
&lt;p&gt;[lp:~dedzone/drizzle/query-cache-hook/changes]&lt;/p&gt;
&lt;p&gt;== The query interception ==&lt;/p&gt;
&lt;p&gt;Upon reception of a query, (sql_parse.cc:717) in the mysql_parse method, and before even proceeding to the lexical and query processing, a call to &amp;#8221;isCached(session)&amp;#8221; is made, a session pointer is passed for the query text, schema, and may be other parameters (for future use).&lt;br /&gt;
If isCached returns &amp;#8221;&amp;#8217;true&amp;#8221;&amp;#8217; then we&amp;#8217;ll try to retrieve the results from the cache with &amp;#8221;sendCachedResultset&amp;#8221;. If the retrieving operation succeeds (returns false) then we skip the remaining steps.&lt;br /&gt;
In the contrary &amp;#8211; ie:&lt;br /&gt;
- If fetching the results fails or&lt;br /&gt;
- If the query is not cached&lt;br /&gt;
Then =&amp;gt; proceed normally with the query parsing and processing&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void mysql_parse(Session *session, const char *inBuf, uint32_t length)&lt;br /&gt;
{&lt;br /&gt;
lex_start(session);&lt;br /&gt;
session-&amp;gt;reset_for_next_command();&lt;br /&gt;
/* Check if the Query is Cached if and return true if yes&lt;br /&gt;
* TODO the plugin has to make sure that the query is cacheble&lt;br /&gt;
* by setting the query_safe_cache param to TRUE&lt;br /&gt;
*/&lt;br /&gt;
bool res= true;&lt;br /&gt;
if (plugin::QueryCache::isCached(session))&lt;br /&gt;
{&lt;br /&gt;
res= plugin::QueryCache::sendCachedResultset(session);&lt;br /&gt;
}&lt;br /&gt;
if (not res)&lt;br /&gt;
{&lt;br /&gt;
#if defined(DEBUG)&lt;br /&gt;
errmsg_printf(ERRMSG_LVL_DBUG,_(&amp;#8220;Results retrieved from cache&amp;#8221;));&lt;br /&gt;
#endif /* DEBUG */&lt;br /&gt;
return;&lt;br /&gt;
}&lt;br /&gt;
LEX *lex= session-&amp;gt;lex;&lt;br /&gt;
Lex_input_stream lip(session, inBuf, length);&lt;br /&gt;
bool err= parse_sql(session, &amp;amp;lip);&lt;br /&gt;
&amp;#8230;&amp;#8230;..&lt;br /&gt;
&amp;#8230;&amp;#8230;..&lt;br /&gt;
lex-&amp;gt;unit.cleanup();&lt;br /&gt;
session-&amp;gt;set_proc_info(&amp;#8220;freeing items&amp;#8221;);&lt;br /&gt;
session-&amp;gt;end_statement();&lt;br /&gt;
session-&amp;gt;cleanup_after_query();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;== The Cache preparation and reception of the Resulset ==&lt;/p&gt;
&lt;p&gt;In our journey executing a query, if the query is a Select will land in the (sql_parse.cc:494) execute_sqlcom_select method, this is basically the entry point of the query processing because it prepares to launch the handle_select method. before making this call will insert our prepareResultset hook, which will instruct the plugin implementation to:&lt;br /&gt;
- Prepare a cache to receive the resultset, and link it to the session::resultset pointer.&lt;br /&gt;
- create a hash key for our query, and link it to the session::query_cache_key member.&lt;br /&gt;
At this point the Session will be &amp;#8216;aware&amp;#8217; that there is a plugin trying to cache the results of the query.&lt;br /&gt;
Immediatly after executing the handle_select, where all the resultset were generated, send to the client and added to the current resultset (As we shall see in the next session), we make a setResultset call, this will:&lt;br /&gt;
- Push the resultset to the cache area initiated by the plugin&lt;br /&gt;
- Reset the session members, resultset and query_cache_key.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bool execute_sqlcom_select(Session *session, TableList *all_tables)&lt;br /&gt;
{&lt;br /&gt;
LEX    *lex= session-&amp;gt;lex;&lt;br /&gt;
select_result *result=lex-&amp;gt;result;&lt;br /&gt;
bool res= false;&lt;br /&gt;
&amp;#8230;..&lt;br /&gt;
&amp;#8230;..&lt;br /&gt;
if (!result &amp;amp;&amp;amp; !(result= new select_send()))&lt;br /&gt;
return true;&lt;br /&gt;
/* Init the Query Cache plugin */&lt;br /&gt;
plugin::QueryCache::prepareResultset(session);&lt;br /&gt;
res= handle_select(session, lex, result, 0);&lt;br /&gt;
/* Send the Resultset to the cache */&lt;br /&gt;
plugin::QueryCache::setResultset(session);&lt;br /&gt;
if (result != lex-&amp;gt;result)&lt;br /&gt;
delete result;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
return res;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;p&gt;== Populating the resultset ==&lt;/p&gt;
&lt;p&gt;The idea behind adding data to the resultset is to intercept the send_data() method in (select_send.h:87) When sending a row to the client interface. So the hook will just pass the row (items) to the query cache plugin using insertResultset(session, items).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/* Send data to client. Returns 0 if ok */&lt;br /&gt;
bool send_data(List&amp;lt;Item&amp;gt; &amp;amp;items)&lt;br /&gt;
{&lt;br /&gt;
&amp;#8230;&amp;#8230;.&lt;br /&gt;
&amp;#8230;&amp;#8230;.&lt;br /&gt;
while ((item=li++))&lt;br /&gt;
{&lt;br /&gt;
if (item-&amp;gt;send(session-&amp;gt;client, &amp;amp;buffer))&lt;br /&gt;
{&lt;br /&gt;
my_message(ER_OUT_OF_RESOURCES, ER(ER_OUT_OF_RESOURCES), MYF(0));&lt;br /&gt;
break;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
/* Insert this record to the Resultset into the cache */&lt;br /&gt;
if (session-&amp;gt;query_cache_key != &amp;#8220;&amp;#8221; &amp;amp;&amp;amp; session-&amp;gt;getResultsetMessage() != NULL)&lt;br /&gt;
plugin::QueryCache::insertRecord(session, items);&lt;br /&gt;
session-&amp;gt;sent_row_count++;&lt;br /&gt;
&amp;#8230;&amp;#8230;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/p&gt;
&lt;br /&gt;  &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gocomments/dedcode.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/dedcode.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godelicious/dedcode.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/delicious/dedcode.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gofacebook/dedcode.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/facebook/dedcode.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gotwitter/dedcode.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/twitter/dedcode.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/gostumble/dedcode.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/stumble/dedcode.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/godigg/dedcode.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/digg/dedcode.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;http://feeds.wordpress.com/1.0/goreddit/dedcode.wordpress.com/20/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/reddit/dedcode.wordpress.com/20/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://stats.wordpress.com/b.gif?host=dedcode.wordpress.com&amp;amp;blog=13721606&amp;amp;post=20&amp;amp;subd=dedcode&amp;amp;ref=&amp;amp;feed=1&quot; /&gt;</content>
		<author>
			<name>Djellel Eddine Difallah (GSOC)</name>
			<uri>http://dedcode.wordpress.com</uri>
		</author>
		<source>
			<title type="html">Djellel Eddine Difallah » Drizzle</title>
			<subtitle type="html">Programming in general</subtitle>
			<link rel="self" href="http://dedcode.wordpress.com/category/drizzle/feed/"/>
			<id>http://dedcode.wordpress.com/category/drizzle/feed/</id>
			<updated>2010-09-01T13:00:09+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Testing Drizzle's transaction log</title>
		<link href="http://blog.drizzle.org/2010/07/09/testing-drizzles-transaction-log/"/>
		<id>http://blog.drizzle.org/?p=783</id>
		<updated>2010-07-09T22:12:48+00:00</updated>
		<content type="html">&lt;div id=&quot;_mcePaste&quot;&gt;One of my first tasks on the Drizzle team was to check out the transaction log, part of &lt;a href=&quot;http://www.joinfu.com/&quot;&gt;Jay Pipes'&lt;/a&gt; work on replication.  We needed to make sure that the log itself was rock-solid and that any code written to use it would have a worthy foundation.  As it turns out, some people are really interested in getting replication working ; )&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;As can be seen from the &lt;a href=&quot;https://blueprints.launchpad.net/drizzle/+spec/test-transaction-log&quot;&gt;blueprint&lt;/a&gt;, testing will involve two of our main testing tools, the randgen and our standard test suite (test-run, dtr, etc).  So far, our efforts have been concentrated on writing tests for the test suite.  These tests have largely consisted of executing queries that should make it into the transaction log, then using the UDF print_transaction_message($log_file,$log_offset) to examine the log's contents.  The tests can be found &lt;a href=&quot;https://code.launchpad.net/~patrick-crews/drizzle/transaction_log_tests&quot;&gt;here&lt;/a&gt; and executed with ./test-run --suite=transaction_log.  (NOTE:  The tests themselves are largely complete, but our expected results are not yet finalized / correct due to the bugs noted below).  I'd like to extend a special thanks to Joe Daly for his help in writing these tests and finding some bugs in the log.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;While we have tested all of the available data types and basic transactions and they are looking quite solid, our efforts have still turned up some interesting bugs:&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;(this list is maintained at the launchpad blueprint noted above)&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;
&lt;ul&gt;
&lt;li&gt;Bug #594873: transaction log incorrectly records NULL INSERT into an ENUM as the first permissible value&lt;/li&gt;
&lt;li&gt;Bug #594876: transaction log not differentiating NULL values and empty string for char columns&lt;/li&gt;
&lt;li&gt;Bug #596972: transaction log logging 0 for NULL INTEGER VALUES&lt;/li&gt;
&lt;li&gt;Bug #599582: Transaction log does not appear to be collecting all information for multi-row REPLACE statements&lt;/li&gt;
&lt;li&gt;Bug #597910: Transaction log does not appear to be capturing FOREIGN KEY information&lt;/li&gt;
&lt;li&gt;Bug #599851: Transaction log not capturing CASCADE'd UPDATE data on a table using a foreign key&lt;/li&gt;
&lt;li&gt;Bug #599952: transaction log attributing statements to wrong tables on multi-table, multi-statement transactions&lt;/li&gt;
&lt;li&gt;Bug #600032: rollback to savepoint not handled correctly in transaction log&lt;/li&gt;
&lt;li&gt;Bug #600795: LOAD DATA INFILE INSERTs not registered by the transaction log&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;The first 3 bugs relate to how the log captures NULL values for various data types and have been traced to a single root cause.  The remaining 6 seem more interesting and serious for replication functionality.  To summarize, the transaction log appears to have trouble with trickier (more complex) transactions.  These include changes propagated via a foreign key, multi-row REPLACE, and multi-table transactions.&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;Once these bugs have been addressed, we will continue with test development for the randgen.  This will include stress testing the server / log with DDL-generating grammars and validation of the data stored within the log.  Initial experiments with high-volume (10+ threads at 250k queries each) have looked promising (no crashes, locks, major slow downs over time).  In the meantime, we'll be busy with &lt;a href=&quot;https://blueprints.launchpad.net/drizzle/+spec/test-dump-restore&quot;&gt;other tasks&lt;/a&gt; (dump+restore)&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;As always, we welcome any feedback, questions, or bug fixes : )&lt;/div&gt;
&lt;div id=&quot;_mcePaste&quot;&gt;More information on Drizzle testing can be found &lt;a href=&quot;http://drizzle.org/wiki/DrizzleQA&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;</content>
		<author>
			<name>Official Drizzle Blog</name>
			<uri>http://blog.drizzle.org</uri>
		</author>
		<source>
			<title type="html">DrizzleBlog</title>
			<link rel="self" href="http://blog.drizzle.org/feed/"/>
			<id>http://blog.drizzle.org/feed/</id>
			<updated>2010-08-31T21:00:43+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Drizzle, WordPress, Amazon EC2</title>
		<link href="http://www.8bitsofbytes.com/?p=5"/>
		<id>http://184.72.254.70/?p=5</id>
		<updated>2010-07-09T02:57:24+00:00</updated>
		<content type="html">&lt;p&gt;After some work I finally got Drizzle, WordPress and Amazon EC2 playing nicely with each other. The backend server for this WordPress site is running Drizzle, and the front end client uses the MySQL libraries for connecting, this is needed as there currently is not a fully functional PHP interface that uses the Drizzle client interface. WordPress required a few changes as Drizzle did not have support for all the same data types.&lt;/p&gt;
&lt;p&gt;Why?&lt;/p&gt;
&lt;p&gt;Well theres a saying &quot;&lt;a href=&quot;http://en.wikipedia.org/wiki/Eating_your_own_dog_food&quot;&gt;Eat your own dog food&lt;/a&gt;&quot; which sums it up.&lt;/p&gt;
&lt;p&gt;Heres a patch for WordPress which contains the schema modifications necessary for running wordpress with Drizzle.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://184.72.254.70/files/wordpress-3.0-schema.patch&quot;&gt;schema.php patch&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Ill be working with WordPress to see if they would like these changes incorporated into their source tree. &lt;/p&gt;</content>
		<author>
			<name>Joe Daly</name>
			<uri>http://www.8bitsofbytes.com</uri>
		</author>
		<source>
			<title type="html">Bits of Bytes</title>
			<subtitle type="html">Powered By Drizzle Database Server</subtitle>
			<link rel="self" href="http://www.8bitsofbytes.com/?feed=rss2"/>
			<id>http://www.8bitsofbytes.com/?feed=rss2</id>
			<updated>2010-07-16T01:00:47+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">PBMS in Drizzle</title>
		<link href="http://www.flamingspork.com/blog/2010/07/08/pbms-in-drizzle/"/>
		<id>http://www.flamingspork.com/blog/?p=2061</id>
		<updated>2010-07-08T06:53:45+00:00</updated>
		<content type="html">&lt;p&gt;Some of you may have noticed that &lt;a href=&quot;http://www.blobstreaming.org/&quot;&gt;blob streaming&lt;/a&gt; has been merged into the main &lt;a href=&quot;http://drizzle.org&quot;&gt;Drizzle&lt;/a&gt; tree recently. There are a few hooks inside the Drizzle kernel that PBMS uses, and everything else is just in the plug in.&lt;/p&gt;
&lt;p&gt;For those not familiar with PBMS it does two things: provide a place (not in the table) for BLOBs to be stored (locally on disk or even out to S3) and provide a HTTP interface to get and store BLOBs.&lt;/p&gt;
&lt;p&gt;This means you can do really neat things such as have your BLOBs replicated, consistent and all those nice databasey things as well as easily access them in a scalable way (everybody knows how to cache HTTP).&lt;/p&gt;
&lt;p&gt;This is a great addition to the AlsoSQL arsenal of Drizzle. I&amp;#8217;m looking forward to it advancing and being adopted (now much easier that it&amp;#8217;s in the main repository)&lt;/p&gt;


&lt;div class=&quot;shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-enjoy&quot;&gt;
&lt;ul class=&quot;socials&quot;&gt;
		&lt;li class=&quot;shr-facebook&quot;&gt;
			&lt;a href=&quot;http://www.facebook.com/share.php?v=4&amp;amp;src=bm&amp;amp;u=http://www.flamingspork.com/blog/2010/07/08/pbms-in-drizzle/&amp;amp;t=PBMS+in+Drizzle&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on Facebook&quot;&gt;Share this on Facebook&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-twitter&quot;&gt;
			&lt;a href=&quot;http://twitter.com/home?status=PBMS+in+Drizzle+-+http://b2l.me/9nafd&amp;amp;source=shareaholic&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Tweet This!&quot;&gt;Tweet This!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-delicious&quot;&gt;
			&lt;a href=&quot;http://delicious.com/post?url=http://www.flamingspork.com/blog/2010/07/08/pbms-in-drizzle/&amp;amp;title=PBMS+in+Drizzle&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Share this on del.icio.us&quot;&gt;Share this on del.icio.us&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-digg&quot;&gt;
			&lt;a href=&quot;http://digg.com/submit?phase=2&amp;amp;url=http://www.flamingspork.com/blog/2010/07/08/pbms-in-drizzle/&amp;amp;title=PBMS+in+Drizzle&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Digg this!&quot;&gt;Digg this!&lt;/a&gt;
		&lt;/li&gt;
		&lt;li class=&quot;shr-googlebuzz&quot;&gt;
			&lt;a href=&quot;http://www.google.com/buzz/post?url=http://www.flamingspork.com/blog/2010/07/08/pbms-in-drizzle/&amp;amp;imageurl=&quot; rel=&quot;nofollow&quot; class=&quot;external&quot; title=&quot;Post on Google Buzz&quot;&gt;Post on Google Buzz&lt;/a&gt;
		&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</content>
		<author>
			<name>Stewart Smith</name>
			<uri>http://www.flamingspork.com/blog</uri>
		</author>
		<source>
			<title type="html">Ramblings</title>
			<subtitle type="html">Ramblings which occasionally resemble reality. This is the blog of Stewart Smith.</subtitle>
			<link rel="self" href="http://www.flamingspork.com/blog/feed/"/>
			<id>http://www.flamingspork.com/blog/feed/</id>
			<updated>2010-09-09T06:00:07+00:00</updated>
		</source>
	</entry>

	<entry xml:lang="en">
		<title type="html">Drizzle build 1644 tarball has been released</title>
		<link href="http://blog.drizzle.org/2010/07/06/drizzle-build-1644-tarball-has-been-released/"/>
		<id>http://blog.drizzle.org/?p=779</id>
		<updated>2010-07-07T01:27:31+00:00</updated>
		<content type="html">&lt;p&gt;Drizzle source tarball based on build 1644 has been released.  In this release:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://machinesplusminds.blogspot.com/2010/06/drizzle-pluginsyslog-has-been-merged.html&quot;&gt;syslog&lt;/a&gt; plugin added&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blobstreaming.org/&quot;&gt;PBMS&lt;/a&gt; is now a part of trunk&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Drizzle download file can be found &lt;a href=&quot;https://launchpad.net/drizzle/dexter/2010-07-05&quot;&gt;here&lt;/a&gt;&lt;/p&gt;</content>
		<author>
			<name>Official Drizzle Blog</name>
			<uri>http://blog.drizzle.org</uri>
		</author>
		<source>
			<title type="html">DrizzleBlog</title>
			<link rel="self" href="http://blog.drizzle.org/feed/"/>
			<id>http://blog.drizzle.org/feed/</id>
			<updated>2010-08-31T21:00:43+00:00</updated>
		</source>
	</entry>

	<entry>
		<title type="html">Drizzle JDBC 0.7</title>
		<link href="http://developian.blogspot.com/2010/07/drizzle-jdbc-0.html"/>
		<id>tag:blogger.com,1999:blog-6543848899761399219.post-8691985001521194360</id>
		<updated>2010-07-04T20:40:40+00:00</updated>
		<content type="html">Just pushed Drizzle JDBC 0.7 to the maven repository, it contains bug fixes and features both for the MySQL and Drizzle support;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Support user name and password in Properties when connecting.&lt;/li&gt;&lt;li&gt;A lot of datatype fixes thanks to the guys at &lt;a href=&quot;http://www.continuent.com/&quot;&gt;Continuent&lt;/a&gt; and their &lt;a href=&quot;http://www.continuent.com/community/tungsten-connector&quot;&gt;Connector&lt;/a&gt; test suite.&lt;/li&gt;&lt;li&gt;Initial implementation of ParameterMetadata.&lt;/li&gt;&lt;li&gt;Fix umlaut bug reported by Christian Peter.&lt;/li&gt;&lt;li&gt;Fix getTables to work properly after bug report from Christian Peter.&lt;/li&gt;&lt;li&gt;Allow zero-length passwords, bug reported by Christian Peter.&lt;/li&gt;&lt;li&gt;Throw proper exception when connection to server times out.&lt;/li&gt;&lt;li&gt;Implementation of setObject with type conversions.&lt;/li&gt;&lt;/ul&gt;The binaries are in the central maven repository, &lt;a href=&quot;http://repo1.maven.org/maven2/org/drizzle/jdbc/drizzle-jdbc/0.7/&quot;&gt;http://repo1.maven.org/maven2/org/drizzle/jdbc/drizzle-jdbc/0.7/&lt;/a&gt;. Or, if you use maven, add the following to your pom.xml:&lt;br /&gt;&lt;pre&gt;&amp;lt;dependency&amp;gt;&lt;br /&gt;&amp;lt;groupId&amp;gt;org.drizzle.jdbc&amp;lt;/groupId&amp;gt;&lt;br /&gt;&amp;lt;artifactId&amp;gt;drizzle-jdbc&amp;lt;/artifactId&amp;gt;&lt;br /&gt;&amp;lt;version&amp;gt;0.7&amp;lt;/version&amp;gt;&lt;br /&gt;&amp;lt;/dependency&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The code is in &lt;a href=&quot;http://launchpad.net/drizzle-jdbc&quot;&gt;launchpad&lt;/a&gt;.&lt;div class=&quot;blogger-post-footer&quot;&gt;&lt;img width=&quot;1&quot; height=&quot;1&quot; src=&quot;https://blogger.googleusercontent.com/tracker/6543848899761399219-8691985001521194360?l=developian.blogspot.com&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;</content>
		<author>
			<name>Marcus Eriksson</name>
			<uri>http://developian.blogspot.com/search/label/drizzle</uri>
		</author>
		<source>
			<title type="html">Developian</title>
			<subtitle type="html">Development blog, you will find posts about drizzle-jdbc and rabbitreplication here.</subtitle>
			<link rel="self" href="http://developian.blogspot.com/feeds/posts/default/-/drizzle"/>
			<id>tag:blogger.com,1999:blog-6543848899761399219</id>
			<updated>2010-09-08T16:00:38+00:00</updated>
		</source>
	</entry>

</feed>
