<?xml version="1.0" encoding="utf-8"?>
<!-- If you are running a bot please visit this policy page outlining rules you must respect. http://www.livejournal.com/bots/ -->
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:lj="http://www.livejournal.com">
  <id>urn:lj:livejournal.com:atom1:kostja_osipov</id>
  <title>Fish Magic</title>
  <subtitle>Konstantin Osipov</subtitle>
  <author>
    <name>Konstantin Osipov</name>
  </author>
  <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/"/>
  <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom"/>
  <updated>2009-09-26T08:43:11Z</updated>
  <lj:journal userid="7353231" username="kostja_osipov" type="personal"/>
  <link rel="service.feed" type="application/x.atom+xml" href="http://kostja-osipov.livejournal.com/data/atom" title="Fish Magic"/>
  <link rel="hub" href="http://pubsubhubbub.appspot.com/"/>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:28914</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/28914.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=28914"/>
    <title>Query cache = useless?</title>
    <published>2009-09-25T07:24:50Z</published>
    <updated>2009-09-26T08:43:11Z</updated>
    <category term="mysql"/>
    <content type="html">Following up on &lt;a href="http://www.facebook.com/note.php?note_id=143487095932"&gt;Mark Callaghan's blog post on how useful query cache is nowadays&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One has to say it aloud at last: let's kill it. Say, in 5.4.&lt;br /&gt;It's useless on modern hardware anyway, and if you look at re-designing it, it turns out there is need for multiple solutions, since no single one performs well in all caching workloads.&lt;br /&gt;What would it give our users? One less gotcha-like feature in the server that they need to learn, learn to forget. It will open up a niche for third-party projects to contribute. And the core server development team will have one less thing to worry about.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:28548</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/28548.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=28548"/>
    <title>Bug#8523, MySQL users</title>
    <published>2009-05-30T21:41:19Z</published>
    <updated>2009-05-30T21:41:19Z</updated>
    <content type="html">If you're in airline business, what you do has a lot of impact. Airports are crossroads of emotions, dramas, life-changing events. What you do can give you a lot of satisfaction, as well as bring a lot of satisfaction to passengers.&lt;br /&gt;&lt;br /&gt;Doing databases, or, at least, working on MySQL, to me feels the same. I feel personally responsible for success or failure of the entire organization, in other words, whether our, MySQL, "flight" is on time. Emotionally, this is very hard. Hard to objectively accept and tackle mistakes, hard to stay motivated when you feel that your contribution is not making a difference.&lt;br /&gt;But it's what it makes a dream job, too, at least for me.&lt;br /&gt;&lt;br /&gt;Bugs like &lt;a href="http://bugs.mysql.com/8523"&gt;Bug#8523&lt;/a&gt;, and before that, &lt;a href="http://bugs.mysql.com/989"&gt;Bug#989&lt;/a&gt; is what makes MySQL an airline company.&lt;br /&gt;So if you're on the other side of it, be sure, your comments do make a difference.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:28222</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/28222.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=28222"/>
    <title>Love Slashdot</title>
    <published>2009-05-14T22:21:44Z</published>
    <updated>2009-05-14T22:28:09Z</updated>
    <content type="html">Slashdot news post from today: Monty is doing MySQL refactoring and doing MySQL alliance.&lt;br /&gt;Oh come on... MySQL is a trademark by Sun, to start with. Monty's product is MariaDB. MySQL started refactoring half a year ago. Does a MySQL engineer have to explain this kind of things to a journalist?</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:27907</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/27907.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=27907"/>
    <title>Working in Hyatt Regency Santa Clara</title>
    <published>2009-04-19T17:56:21Z</published>
    <updated>2009-04-19T17:59:19Z</updated>
    <content type="html">I'm in Santa Clara since yesterday, at MySQL Users Conference.&lt;br /&gt;&lt;br /&gt;This will be my fifth conference: I missed only one since 2003. I was supposed to come as a guest, but my friend and colleague Dmitri didn't get a US visa, so I am speaking in his stead. Me and Peter Gulutzan will present new all-engine foreign keys. Oh. &lt;br /&gt;&lt;br /&gt;So I'm working from Hyatt. It's a great sunny day, the air here is clear and fresh, and everybody is enjoying the weekend. &lt;br /&gt;Well, as mentioned, except me, and maybe Drizzle developers, who already started Drizzle developer conference :)&lt;br /&gt;&lt;br /&gt;Musing about this all, I took a step back, and thought: so typical of me:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://i350.photobucket.com/albums/q419/kostja_priutsky/hyatt.jpg" /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:27786</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/27786.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=27786"/>
    <title>Next Moscow MySQL User Group meeting.</title>
    <published>2008-12-07T21:07:02Z</published>
    <updated>2008-12-07T21:07:25Z</updated>
    <content type="html">It looks like we're going to meet on Monday, 22nd of December. I'll give a talk on subqueries in 4.1 and 6.0.&lt;br /&gt;I'll post additional information here when I know more :)&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:27466</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/27466.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=27466"/>
    <title>Kaj  in Moscow, December 1st</title>
    <published>2008-11-20T11:45:20Z</published>
    <updated>2008-11-20T12:31:04Z</updated>
    <content type="html">&lt;a href="http://blogs.mysql.com/kaj/"&gt;Kaj Arn&amp;ouml;&lt;/a&gt; is &lt;a href="http://blogs.arno.fi/fandorin/2008/11/13/visit-in-moscow-1-3-dec-2008/"&gt;coming to Moscow&lt;/a&gt; on 1-3 of December.&lt;br /&gt;&lt;br /&gt;There will be a Moscow MySQL User Group meeting with Kaj in High School of Economics:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Date: Monday, 1st of December&lt;br /&gt;Time: 19-00&lt;br /&gt;Topic: Sun and MySQL: what's happening&lt;br /&gt;Location: Myasnitskaya 20, room 124&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Everybody is welcome to join. To come, you need to register (there is security at the entrance&lt;br /&gt;to the building, and it needs a list of names, usual stuff), there is no url for a registration&lt;br /&gt;form yet ;), you could just leave a comment on this entry, I'll add you to the list.&lt;br /&gt;&lt;br /&gt;
&lt;table cellspacing="0" style="padding: 5px; background-color: rgb(255, 255, 255);"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;img src="http://groups.google.com/groups/img/3nb/groups_bar.gif" height="26" width="132" alt="Google Groups"&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="padding-left: 5px; font-size: 125%;"&gt; &lt;b&gt;Moscow MySQL User Group&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td style="padding-left: 5px;"&gt;&lt;a href="http://groups.google.com/group/moscow-mysql-user-group?hl=en"&gt;Visit this group&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:27245</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/27245.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=27245"/>
    <title>What is getting fixed</title>
    <published>2008-06-25T20:52:54Z</published>
    <updated>2008-06-25T20:53:29Z</updated>
    <content type="html">&lt;span class='ljuser ljuser-name_krow' lj:user='krow' style='white-space: nowrap;'&gt;&lt;a href='http://krow.livejournal.com/profile'&gt;&lt;img src='http://l-stat.livejournal.com/img/userinfo.gif' alt='[info]' width='17' height='17' style='vertical-align: bottom; border: 0; padding-right: 1px;' /&gt;&lt;/a&gt;&lt;a href='http://krow.livejournal.com/'&gt;&lt;b&gt;krow&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;'s &lt;a href="http://krow.livejournal.com/599921.html"&gt;post on prepared statements&lt;/a&gt; inspired me to write an update on what is getting fixed there.&lt;br /&gt;&lt;br /&gt;First, a fix for &lt;a href="http://bugs.mysql.com/27430"&gt;Bug#27430&lt;/a&gt; is in 5.1 tree.&lt;br /&gt;Overall, this makes prepared statements significantly more stable. I know of only two crashes left ;) -- one is when you run out of memory, which is a design gotcha. The other is &lt;a href="http://bugs.mysql.com/32124"&gt;Bug#32124&lt;/a&gt;. Speaking of this last one, we now have stupid rules saying that if a bug doesn't affect too many people, even if it's a crash, it's not that important. This is a difficult bug, and the rules give an excuse to keep it unfixed.&lt;br /&gt;The few important "feature" bugs that remain are &lt;a href="http://bugs.mysql.com/11638"&gt;Bug#11638&lt;/a&gt; and &lt;a href="http://bugs.mysql.com/2812"&gt;Bug#2812&lt;/a&gt;, both scheduled, one to 6.0 and another to 6.2.&lt;br /&gt;After having these two done, we can look into adding a global cache, automatic memory management, support for all SQL commands, allowing placeholders in a great many new places in the grammar, and even supporting piecewise blob operations. Yes. Sometime ;).</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:26912</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/26912.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=26912"/>
    <title>kostja_osipov @ 2008-03-12T01:25:00</title>
    <published>2008-03-11T22:31:34Z</published>
    <updated>2008-03-11T22:31:34Z</updated>
    <content type="html">Since about 20 months after start, a solution for &lt;a href="http://bugs.mysql.com/12713"&gt;Bug#12713&lt;/a&gt; finally reached the main tree.&lt;br /&gt;If you're not using stored functions this may have a very little effect on you, since other than fixing the problem at hand it was no more than a cleanup of the execution flow and the server/storage engine interaction. Anyway, it was a difficult one, one out of a dozen of design gotchas we added to the server with 5.0. The all-time record for that sort of difficult bugs&lt;br /&gt;is &lt;a href="http://bugs.mysql.com/989"&gt;Bug#989&lt;/a&gt;, reported back in 2003 and planned for a fix in  6.0 only.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:26815</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/26815.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=26815"/>
    <title>SHOW CREATE TRIGGGER, Bug#26141, Bug#24989</title>
    <published>2007-07-10T22:44:08Z</published>
    <updated>2007-07-10T22:46:23Z</updated>
    <content type="html">&lt;a href="http://dev.mysql.com/doc/refman/5.1/en/show-create-trigger.html"&gt;SHOW CREATE TRIGGER&lt;/a&gt; was added two weeks ago into 5.1 branch - it turned out there is no way to do mysqlbackup without this statement when the trigger is defined in a character set that is not UTF-8.&lt;br /&gt;&lt;br /&gt;And while we are on triggers, some most painful locking bugs with triggers are being fixed too (in 5.0) - &lt;a href="http://bugs.mysql.com/26141/"&gt;Bug#26141 mixing table types in trigger causes full table lock on innodb table&lt;/a&gt; and &lt;a href="http://bugs.mysql.com/24989"&gt;Bug#24989 'Explicit or implicit commit' error/server crash with concurrent transactions&lt;/a&gt;. With these two fixes in, triggers should actually become usable with InnoDB.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:26580</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/26580.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=26580"/>
    <title>CREATE TABLE t1 may fire an AFTER DELETE trigger on table t2.</title>
    <published>2007-07-10T07:41:47Z</published>
    <updated>2007-07-10T09:35:33Z</updated>
    <content type="html">Nothing is impossible.&lt;br /&gt;Here is the trick:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
drop table if exists t1, t1_op_log;

create table t1 (id int primary key auto_increment, operation varchar(255));
-- not that one

create table t1_op_log(operation varchar(255));

create trigger trg_t1_ad after delete on t1
for each row 
  insert into t1_op_log (operation)  values (concat("After DELETE, old=", old.operation));

insert into t1 (operation) values ("INSERT");

set @id=last_insert_id();

create table if not exists t1 replace
select @id, "CREATE TABLE ... REPLACE SELECT, deleting a duplicate key";
-- voila

select * from t1_op_log;
&lt;/pre&gt;&lt;br /&gt;Update: this works if t1 is a view.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:26302</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/26302.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=26302"/>
    <title>Query cache is slow to the point of being unusable - what is being done about that.</title>
    <published>2007-06-29T15:38:17Z</published>
    <updated>2007-07-02T08:14:58Z</updated>
    <category term="mysql"/>
    <content type="html">We spent a lot of time this month trying to fix Bug#21074 "Large query_cache freezes mysql server sporadically under heavy load".&lt;br /&gt;&lt;br /&gt;In a nutshell, invalidation of a table can be dead slow (seconds) when there are tens of thousands of cached queries associated with this table, and, moreover, invalidation&lt;br /&gt;freezes the entire server when it happens.&lt;br /&gt;It's so funny, this thing happens under two singleton mutexes (one instance of the mutex exists in the entire server) both of which are required for every single query that the server gets.&lt;br /&gt;&lt;br /&gt;Invalidation is indeed somewhat slow, but making it a bit faster will only shift the threshold when the query cache becomes unusable from tens of thousands of cached results, to, say, hundreds of thousands. So we thought it'll only change the depth of the hole in which people will discover they've shoot themselves in the foot.&lt;br /&gt;Besides, any change of that sort requires quite an overhaul of internal data structures in the cache - not something one would do at a beta stage (the work is being done for 5.1).&lt;br /&gt;&lt;br /&gt;So, instead, we're trying to make the whole thing more concurrent. Eek, perhaps these two singleton mutexes are not needed after all?&lt;br /&gt;&lt;br /&gt;LOCK_open was taken in mysql_rm_table_part2. This thing does the actual job of DROP TABLE. &lt;br /&gt;That place we fixed to take an exclusive name lock on the table instead of keeping the entire&lt;br /&gt;system frozen (good for other things as well). Thanks to some prior patch that was done by Dmitri earlier this year in 5.1, exclusive name locks on table metadata are now possible.&lt;br /&gt;The problem with structure_guard_mutex was harder to crack. The thing is, invalidation of one table may potentially trigger invalidation of every single result in the query cache,&lt;br /&gt;and that's not known in advance, and there is no way to lock a sub-part of the cache and then&lt;br /&gt;shift the lock to some other part.&lt;br /&gt;And implementing this would, again, mean, changing the whole thing quite a bit.&lt;br /&gt;&lt;br /&gt;So we now simply disable the cache during invalidation.&lt;br /&gt;Now, I'm writing this to get beaten. If it's wrong and will break your application, please tell. If, on the contrary, you like the idea and want to test it, stay tuned. The patch is not yet in, but soon will be.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:26046</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/26046.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=26046"/>
    <title>My top 5 MySQL wishes</title>
    <published>2007-06-29T14:53:13Z</published>
    <updated>2007-06-29T22:21:08Z</updated>
    <category term="mysql"/>
    <content type="html">There has been a trend in the blogs for top5 MySQL wishes.&lt;br /&gt;Many people, including &lt;a href="http://blog.arabx.com.au/?p=739"&gt;Ronald Bradford&lt;/a&gt;, &lt;a href="http://dormando.livejournal.com/469685.html"&gt;Alan Kasindorf&lt;/a&gt;, &lt;a href="http://trainedmonkey.com/2007/6/23/my_five_mysql_wishes"&gt;Jim Winstead&lt;/a&gt;, &lt;a href="http://www.cybersite.com.au/blog/mysql_five_wishes"&gt;Jonathon Coombes&lt;/a&gt;, &lt;a href="http://jcole.us/blog/archives/2007/06/20/my-top-5-wishes-for-mysql/"&gt;Jeremy Cole&lt;/a&gt;, &lt;a href="http://www.jpipes.com/index.php?/archives/172-My-Top-5-Wishlist-for-MySQL.html"&gt;Jay Pipes&lt;/a&gt;, &lt;a href="http://antbits.blogspot.com/2007/06/wish-lists.html"&gt;Antony Curtis&lt;/a&gt;, &lt;a href="http://www.flamingspork.com/blog/2007/06/19/my-top-5-wishlist-for-mysql/"&gt;Stewart Smith&lt;/a&gt; coined in.&lt;br /&gt;&lt;br /&gt;Here're my 5:&lt;br /&gt;&lt;br /&gt;1. Remove excessive fuss. OK, we know what needs to be done, just give us time to get things in order. Anything related to MySQL gets huge visibility, and we tend to overestimate the importance of "opinion of community". If you have a cool new feature for the server or a cool new wish, let it cook for a while. If you have or want to write a patch, first get in touch with developers, discuss things on internals@ or commits@, then post your patch on the Forge and see if it takes off. Be sure it'll get in if it's a really good idea. But not next week. Perhaps in a year or two. Want your code to be accepted faster? Write a good fix for a bug. We have 1100 of them. Still want it in faster? Fix a crash.&lt;br /&gt;&lt;br /&gt;2. Open the development process. This is the other side of the previous wish. It takes a year or two to introduce a new engineer into all the existing conventions. So an external engineer just can't write a good patch for the server. Besides, we  mostly in need of contributions that improve and simplify the existing code base, not add new code. But it is increasingly hard to change the existing code -- implicit dependencies, no good tests, almost  non-existent unit test coverage. This is a barrier for penetration, and it's a catch, catch-22.&lt;br /&gt;&lt;br /&gt;3. Get to a normal release schedule. Have XXX.1, XXX.2, XXX.3 releases once or twice a year. There is a lot in this wish that makes it very hard to satisfy -- planning, compatibility, healthy life cycle, high quality support. But we do need to shift the load of patches pushed to the period when a version is in alpha, not when it's in GA, and we do need to release more often.&lt;br /&gt;&lt;br /&gt;4. Establish productive relationship with the majority of users. Something tells me that visibility does not equate to quality of input, and we get most of our input from early adopters, not from the large majority. We need this for the next wish:&lt;br /&gt;&lt;br /&gt;5. Find a way to do incompatible changes with minimal pain for users. If we don't deprecate the 'cool non-standard features most needed now' that were added during brave times of 3.23 and 4.0, the software is a dead fish.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:25782</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/25782.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=25782"/>
    <title>On infninite usefulness of DELETE FROM t1 ORDER BY 1</title>
    <published>2007-06-25T11:15:55Z</published>
    <updated>2007-06-25T11:15:55Z</updated>
    <content type="html">Did you know that MySQL supports:&lt;br /&gt;&lt;br /&gt;DELETE FROM t1 ORDER BY a;&lt;br /&gt;?&lt;br /&gt;&lt;br /&gt;MySQL manual says:&lt;br /&gt;If the ORDER BY clause is specified, the rows are deleted in the order that is specified.&lt;br /&gt;&lt;br /&gt;You can use stored functions and subselects there too if you like.&lt;br /&gt;&lt;br /&gt;I should start using this feature immediately.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:25582</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/25582.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=25582"/>
    <title>Hey, Stupid!</title>
    <published>2007-05-24T09:10:54Z</published>
    <updated>2007-05-24T09:13:38Z</updated>
    <content type="html">Today I tried to add this little function to our impekkable List template:&lt;br /&gt;&lt;verbatim&gt;&lt;br /&gt;template &lt;typename t="T"&gt;&lt;br /&gt;inline&lt;br /&gt;List&lt;t&gt;::List(const List&lt;t&gt; &amp;rhs, MEM_ROOT *mem_root)&lt;br /&gt;  :base_list(rhs, mem_root)&lt;br /&gt;{&lt;br /&gt;  /* Make a deep copy of each element */&lt;br /&gt;  List_iterator&lt;t&gt; it(*this);&lt;br /&gt;  T *el;&lt;br /&gt;  while ((el= it++))&lt;br /&gt;    it.replace(new (mem_root) T(*el));&lt;br /&gt;}&lt;br /&gt;&lt;/verbatim&gt;&lt;br /&gt;That is, for the referecne, the default copy constructor for List template is shallow.&lt;br /&gt;So, I needed a _normal_ copy constructor. I don't want to rewrite the existing one -- it is used eveywhere (and don't ask me how one can make any sane use of a shallow copy constructor of a container - because all the usages are insane).&lt;br /&gt;And here we go - this won't compile:&lt;br /&gt;&lt;verbatim&gt;&lt;br /&gt;sql_list.h: In constructor ‘List&lt;t&gt;::List(const List&lt;t&gt;&amp;, MEM_ROOT*) [with T = Item]’:&lt;br /&gt;item.cc:6917:   instantiated from here&lt;br /&gt;sql_list.h:581: error: cannot allocate an object of abstract type ‘Item’&lt;br /&gt;item.h:446: note:   because the following virtual functions are pure within ‘Item’:&lt;br /&gt;item.h:541: note: 	virtual Item::Type Item::type() const&lt;br /&gt;&lt;/verbatim&gt;&lt;br /&gt;item.cc:6917 is gorgeous:&lt;br /&gt;&lt;verbatim&gt;&lt;br /&gt;#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION&lt;br /&gt;template class List&lt;item&gt;;&lt;br /&gt;template class List_iterator&lt;item&gt;;&lt;br /&gt;template class List_iterator_fast&lt;item&gt;;&lt;br /&gt;template class List_iterator_fast&lt;item_field&gt;;&lt;br /&gt;template class List&lt;list_item&gt;;&lt;br /&gt;#endif&lt;br /&gt;&lt;/verbatim&gt;&lt;br /&gt;And explicit instantiation is the default. And class Item is of course an abstract base.&lt;br /&gt;So, boy, have you had fun with meta-programming? Alright, now do some real stuff - write &lt;br /&gt;mysql_copy_list(void *from, void *to);</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:25208</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/25208.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=25208"/>
    <title>Speaking of conferences</title>
    <published>2007-04-30T07:08:33Z</published>
    <updated>2007-04-30T07:09:52Z</updated>
    <content type="html">MySQL Users Conference was a great success.&lt;br /&gt;Oh, screw that.&lt;br /&gt;I don't actually think it was. I just keep hearing this sentence in announcements and press-releases year after year and my structure-seeking brain classified the sentence as a set phrase. But the conference was okay. Good tracks, decent food, a lot of new engineers from our new and numerous storage engine building partners. I don't know if it was good value for the money, since I didn't have pay a dime - I was a speaker, and the conference organizers paid the admission fee for me, while the company covered the expenses. But it certainly was a good use of time.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:25047</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/25047.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=25047"/>
    <title>LinuxFest NorthWest</title>
    <published>2007-04-30T06:49:40Z</published>
    <updated>2007-04-30T16:30:29Z</updated>
    <content type="html">I've had a very good day today.&lt;br /&gt;I don't stop and think and say that to myself very often.&lt;br /&gt;&lt;br /&gt;Despite all the driving, sitting, bad spicy food and me voluntarily suffering while pretending I can be a vegetarian, I feel that it was a day worth to live.&lt;br /&gt;&lt;br /&gt;In the morning we had to drive over 90 miles to &lt;a href="http://www.linuxfestnorthwest.org/"&gt;Linuxfest Northwest 2007&lt;/a&gt; and despite long distance and apparent unimportance of the conference it was just the right kind of American experience I like to have.&lt;br /&gt;&lt;br /&gt;People were coming there with their kids to listen to talks about Zope and Python and find out more about basics of the General Public License. Presenters whose profile seemed to be too high for this conference, like BrianA and BradFitz seemed to be at home and at ease. Seeing these two kinds together is part of the American society I've always been pleased with.&lt;br /&gt;&lt;br /&gt;Nothing particularly special about the talks, so I was just sitting there and trying to kill time coding a native C++ connector for MySQL. Another piece of software that will likely go nowhere.&lt;br /&gt;&lt;br /&gt;Then we drove back, had a nice walk around Capitol Hill and a dinner.&lt;br /&gt;C. from Subversion project with his friend, and C. from Amazon joined us for dinner.&lt;br /&gt;Who joined whom, that I don't know.&lt;br /&gt;C. turned out to be very passionate about software patents and copyright law, and we spent the evening chatting about the topic. This was so unusual. My general feeling is that in the US an intelligent conversation about any matter not directly related to business can  take place only on a very rare occasion.&lt;br /&gt;Tonight we had a very nice walk and conversation.&lt;br /&gt;&lt;br /&gt;A couple of phrases of the day, a hypocritical one that I heard very often and thus regard as language clutter - "pretty awesome" - and an interesting one that I heard just once - "a pure matter of contemporary fact".</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:24718</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/24718.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=24718"/>
    <title>On another note: prepared statements and the query cache.</title>
    <published>2007-03-09T23:43:15Z</published>
    <updated>2007-04-30T06:15:30Z</updated>
    <content type="html">&lt;a href="http://bugs.mysql.com/735"&gt;Thanks to Guilhem Bichot, we are adding some support for Query Cache to Prepared Statements&lt;/a&gt;. Should become public in one of the future 5.1 versions. It took only 3 years of procrastination and a few days of diligence to do it.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:24550</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/24550.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=24550"/>
    <title>Features added in 4.1, 5.0, 5.1</title>
    <published>2007-03-09T21:52:13Z</published>
    <updated>2007-03-09T23:38:30Z</updated>
    <content type="html">While reading "Crossing the Chasm" by Jeffrey Moore, I discovered that I never actually questioned the features we added in the recent releases.&lt;br /&gt;I came to MySQL with a background similar to Peter Zaitsev's, we worked together in Spylog. MySQL was used there as storage for an in-house scale-out application that served TBytes of data per month and hundreds of thousands of requests per day.&lt;br /&gt;The thing is, almost none of the features implemented in the recent years I would use for that sort of appliance.&lt;br /&gt;Top things on my list would be:&lt;br /&gt;- integrated inverse indexes/full-text search, both InnoDB and MyISAM. And these indexes would need to scale well to give low response times for at least 500 MB tables.&lt;br /&gt;- scaling to multi-core CPUs and high amount of memory (64GB and more)&lt;br /&gt;- better and faster networking that would not spawn off a thread for every connection, so that the server can actually handle a connection per user.&lt;br /&gt;&lt;br /&gt;So what would I use? Prepared statements, maybe, only if they were noticeably faster. Mixed mode replication, that's for sure. Extended character set support? Hardly, I'd probably run the system in pure Unicode.&lt;br /&gt;&lt;br /&gt;It seems we were trying to add all these stored procedures and triggers to appeal to some ERP systems and to become a viable replacement for some extinguishing behemoths like Sybase/whatever.&lt;br /&gt;The thing is, we're not there yet, and I don't know when we will be.&lt;br /&gt;I wonder if any of the modern Web 2.0 system is using this stuff.&lt;br /&gt;&lt;br /&gt;Huh.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:24292</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/24292.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=24292"/>
    <title>Why open source is better than contraception</title>
    <published>2007-02-26T19:58:21Z</published>
    <updated>2007-02-26T20:11:40Z</updated>
    <content type="html">Tonight in the Moscow English Communication Club I enjoyed an&lt;br /&gt;interesting conversation with a member of &lt;a href="http://www.freestateproject.org"&gt;http://www.freestateproject.org&lt;/a&gt;.&lt;br /&gt;We were arguing whether Universal Ethics exist or not, and if it does exist, &lt;br /&gt;whether it has to be self-evident or not.&lt;br /&gt;Stephen was aware and very supportive of the Open Source movement.&lt;br /&gt;&lt;br /&gt;This got me thinking. Having been on board for almost 4 years, I've had a&lt;br /&gt;chance to read a lot of introduction letters, talk to people from&lt;br /&gt;whatever-the-current-number-is different countries, origins, beliefs. We&lt;br /&gt;have everyone in the company, vegans and catholics, atheists and Jehovah's&lt;br /&gt;witnesses. Everyone inside and outside share the same belief - that open&lt;br /&gt;source is a good thing.&lt;br /&gt;&lt;br /&gt;This sounds like abandoning slavery - the idea is in the set of core values&lt;br /&gt;of practically everyone.&lt;br /&gt;&lt;br /&gt;No matter what the business model is, whether we as a company cross the&lt;br /&gt;chasm or not, there will be a product and organization that will tip.&lt;br /&gt;&lt;br /&gt;This is encouraging :)</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:23824</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/23824.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=23824"/>
    <title>Back in Moscow</title>
    <published>2007-02-11T22:45:04Z</published>
    <updated>2007-02-11T22:53:50Z</updated>
    <content type="html">-13 feels here almost the same as -5 in Stockholm&lt;br /&gt;&lt;br /&gt;&lt;img src="http://farm1.static.flickr.com/135/387143300_cbd8219cd2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387143057/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/131/387143057_d4dbf1b364.jpg" width="375" height="500" alt="Chad, day one" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387143116/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/140/387143116_982f8e2e9f.jpg" width="500" height="375" alt="Lars is the best city guide ever" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387143205/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/163/387143205_9ab7b5ff57.jpg" width="500" height="375" alt="Brian" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387143250/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/143/387143250_24c2d6d4f3.jpg" width="500" height="375" alt="Ann and Jim" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387143344/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/160/387143344_043fe551fe.jpg" width="500" height="375" alt="Dmitri in the absolut ice bar" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387143494/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/170/387143494_ba5e6111c5.jpg" width="500" height="375" alt="Stockholm" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387143649/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/163/387143649_23af0b184e.jpg" width="375" height="500" alt="Stockholm" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387143607/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/142/387143607_596ef1a5d8.jpg" width="500" height="375" alt="Timothy" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387144004/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/129/387144004_918845ea57.jpg" width="500" height="375" alt="Lars and Trudy" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387144185/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/171/387144185_3469eee8ce.jpg" width="500" height="375" alt="Das Ship" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/kostja_osipov/387144427/" title="Photo Sharing"&gt;&lt;img src="http://farm1.static.flickr.com/123/387144427_f4448a2724.jpg" width="500" height="375" alt="Dmitri" /&gt;&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:23598</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/23598.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=23598"/>
    <title>In Stockholm</title>
    <published>2007-02-05T22:21:07Z</published>
    <updated>2007-02-05T22:21:07Z</updated>
    <content type="html">OK, I am in Stockholm, at a development meeting. Stockholm is a nice city. It has soul, and it is  smart. Probably the best European capital I've been to. &lt;br /&gt;&lt;br /&gt;This is my first impression - so far I've seen only a few quarters and the road from the airport. But something tells me it'll stay that way. Maybe I need not see the city and an image is ready made. I like the roads, the houses with walls that are 4-5 bricks thick. And it's the first airport with oaken parquetry floors I've been to.&lt;br /&gt;&lt;br /&gt;Tomorrow is a day to revisit some prehistoric server problems, such as &lt;a href="http://bugs.mysql.com/989"&gt;Bug#989&lt;/a&gt;. Need to get back to preparing my lot.&lt;br /&gt;&lt;br /&gt;PS I can't make my P990 work with Linux. So no photographs until I get back home.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:23073</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/23073.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=23073"/>
    <title>MySQL User Conference 2007</title>
    <published>2007-01-25T23:27:25Z</published>
    <updated>2007-01-25T23:28:05Z</updated>
    <content type="html">It's been a while since I posted anything to this blog. Now there is a cause to rev up - my talk about the client library internals was accepted. &lt;br /&gt;The puzzle how to deliver anything more than superficial in scope of a 45 minute presentation remains to be solved, and perhaps not without help of the &lt;a href="http://en.wikipedia.org/wiki/Blogosphere"&gt;blogosphere&lt;/a&gt;.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:22873</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/22873.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=22873"/>
    <title>QotD</title>
    <published>2007-01-18T18:28:48Z</published>
    <updated>2007-01-18T18:30:14Z</updated>
    <content type="html">20:48 &amp;lt; andrey&amp;gt; and please ask knielsen to modify pushbuild to run the unstable&lt;br /&gt;                suite&lt;br /&gt;20:48 &amp;lt; kostja&amp;gt; andrey: and what is that for?-&amp;gt; (run it)&lt;br /&gt;20:48 &amp;lt; andrey&amp;gt; ? I also fear that nobody will run the unstable suite :(&lt;br /&gt;20:49 &amp;lt; marc_alff&amp;gt; honestly, I sure won't&lt;br /&gt;20:49  * andrey gazes at marc</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:22620</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/22620.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=22620"/>
    <title>Get A Life</title>
    <published>2006-12-29T23:48:41Z</published>
    <updated>2006-12-30T00:21:06Z</updated>
    <content type="html">A lot of thinking recently has been devoted to getting a life.&lt;br /&gt;Currently I can not have a life and also get my work done the way I want.&lt;br /&gt;I've been watching people who seemed to be more effective, bugging them with silly questions, making observations about my own biorhythms and here is what I found:&lt;br /&gt;&lt;br /&gt; - I'm a night owl. My peak hours are in the evening. I can work late into the night easily&lt;br /&gt; - I need one hour just to think over the events of the day before I can fall asleep.&lt;br /&gt; - my performance depends on my mood &lt;br /&gt; - I have a sort of attention deficit disorder - I naturally switch to thinking about something else when encounter a predicament with the current task. &lt;br /&gt;&lt;br /&gt;People who manage to actually have a life and also get things done are:&lt;br /&gt; - early birds&lt;br /&gt; - priorities driven. I can't believe they are actually not dependent on the mood: rather, it seems, they have deeply internalized the priorities and their mood is a function of the priorities.&lt;br /&gt; - it seems they can actually focus a lot better than I do.&lt;br /&gt; - they are not more physically capable than I am. On the contrary, they spend more time to take care of their physical health than I do. I don't listen to my body carefully enough and thus can easily drive myself to exhaustion.&lt;br /&gt;&lt;br /&gt;Written at 2:47 am.</content>
  </entry>
  <entry>
    <id>urn:lj:livejournal.com:atom1:kostja_osipov:22455</id>
    <link rel="alternate" type="text/html" href="http://kostja-osipov.livejournal.com/22455.html"/>
    <link rel="self" type="text/xml" href="http://kostja-osipov.livejournal.com/data/atom/?itemid=22455"/>
    <title>A quote of the day</title>
    <published>2006-12-16T23:07:38Z</published>
    <updated>2006-12-16T23:07:38Z</updated>
    <content type="html">A people hire A+ people. B people hire C people.&lt;br /&gt;This came from our new VP Development, and here's the unabriged version:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://breakoutperformance.blogspot.com/2006/10/best-advice-ive-ever-received-about.html"&gt;&lt;br /&gt;"I only ever hire 'A' players for me and my companies. If I hire 'A' players, they will hire 'A+' people below them. If I hire 'B' players, they will hire 'C' players below them. 'A' players don't get threatened by better people below them; 'B' players do."&lt;/a&gt;</content>
  </entry>
</feed>
