From: Roy Lyseng Date: September 21 2010 11:41am Subject: bzr commit into mysql-next-mr-bugfixing branch (roy.lyseng:3245) List-Archive: http://lists.mysql.com/commits/118707 Message-Id: <20100921114128.C46091EC@tyr67.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5687987612955246368==" --===============5687987612955246368== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/rl136806/mysql/repo/mysql-review/ based on revid:roy.lyseng@stripped 3245 Roy Lyseng 2010-09-21 Refactoring: Make members positions and best_positions of class JOIN dynamically allocated instead of fixed-size arrays. This saves approx. 20 kbyte memory during optimization and execution for normal-sized join operations. sql/sql_select.cc Allocate positions and best_positions dynamically. sql/sql_select.h positions and best_positions (members of class JOIN) defined as pointers instead of arrays. modified: sql/sql_select.cc sql/sql_select.h === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2010-09-20 14:06:02 +0000 +++ b/sql/sql_select.cc 2010-09-21 11:36:51 +0000 @@ -4490,6 +4490,14 @@ make_join_statistics(JOIN *join, TABLE_L if (!stat || !stat_ref || !table_vector) DBUG_RETURN(1); // Eom /* purecov: inspected */ + if (!(join->positions= + (POSITION *)join->thd->alloc(sizeof(POSITION)*(table_count+1)))) + DBUG_RETURN(TRUE); + + if (!(join->best_positions= + (POSITION *)join->thd->alloc(sizeof(POSITION)*(table_count+1)))) + DBUG_RETURN(TRUE); + join->best_ref=stat_vector; stat_end=stat+table_count; === modified file 'sql/sql_select.h' --- a/sql/sql_select.h 2010-09-06 17:56:05 +0000 +++ b/sql/sql_select.h 2010-09-21 11:36:51 +0000 @@ -1613,7 +1613,7 @@ public: */ ha_rows fetch_limit; /* Finally picked QEP. This is result of join optimization */ - POSITION best_positions[MAX_TABLES+1]; + POSITION *best_positions; /******* Join optimization state members start *******/ /* @@ -1623,7 +1623,7 @@ public: TABLE_LIST *emb_sjm_nest; /* Current join optimization state */ - POSITION positions[MAX_TABLES+1]; + POSITION *positions; /* Bitmap of nested joins embedding the position at the end of the current --===============5687987612955246368== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/roy.lyseng@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: roy.lyseng@stripped # target_branch: file:///home/rl136806/mysql/repo/mysql-review/ # testament_sha1: c6e10ad9194a11d46cf0bafee801bac54c9d384f # timestamp: 2010-09-21 13:41:28 +0200 # base_revision_id: roy.lyseng@stripped\ # qes7y17dnehk97rn # # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWRylQMcAAlLfgEgQcHv//3a3 3gC////wUAWPdAAHokAAAGqmTBBtIaaYmCANMjEDEyZMhpoc0xMmTRhMExNMAmAQwRgRgGqn6p7J QGjIMgAAyDTQBppoAAlEpkTbSBMATTAjAADImTDQBJIBABAJiNNJ6E0ap+mjVNB6mR6aHqh4MAWG bKxdCBfm2YdGFlAQODrnGFKvxeSOabUITABc5Fn6f22Olac5PsY3AmSP9EMrQ4mk7hmYZi/7r94U YuYiNppQZRZms+jNAfnVCSqQwUdKMAhWWhoEvJLCLIMTNJ+YRGsuhEoTm9MweBhXz7tvLSRyOGzm nskYHeaziP8BrTxOo6ScFg49SJAmHaUMj8IX4Os6w7eg6k3l4HcFOdTmNAdkGPfqpYFO1CcE0LIv dA6iRECjK4qdj4A9CgJRBwYttIByCxMQCLqD+IQen8tlaF4hMiwy1Dfgi6ZdgpjLD+xaBPpUgPFg x9q9Jvs6T1gPsAjKvZOqVNj3gWRFoBxs/NmGpjSh2x+4Pl5QJeoX7WvLRjfttgFRhXvcZg+G65Ci C3SLDYVD4FVhlXjqyoVmbxUNNC+YRmax/CqKCxDDEhq9uRmV2V1CJOlkQyHN1gb9VZJzVLb/J/JL bJjS+4oQyA4TYMKzTrZSsNAZ4FwXgUOZS6satEzXOChFw4lmBjujZLLIM7AHSY3DwtbMIQbhZ9Sm Jy8wOJ0IcW3KVWOVwa87gzzDM2hpulrJtMo4Zyeq42bqrjZEyIbbnhjZGTpjwUcnBEOYYHGRePKu YHo+ytNXm8ddoaNTlOTwaWKHSUUTo3iaj6LQ456i08Dah51ex0XkylqQjZA+KqiwmXYRDvUYdCIS IR4ObgRxjDoMEiF9yQx/BWVneVCoKReY2niUP3MTTvHJMjh5+IDwgPF0Pr5r6SP09UKNF6lkEfxz 9v+nGZkFtII9rknLMrKDYTuY1SPlMy9fXUfLxHKRIuL199Oo++k7v0rtIiwCkBNNrB4dPs3HAICe OG+oBSLb3ytIYgjwiT8pvGgOrwAWSCpGL4yEp3bLhC/XmtCt+DRoQijnxOrdrz4Ad6gZhVxna2jD 4GfgOSWBnnb0cNmctWzZcdDTixg7ALEf7IG/I8iQHTKErYSP86dmmpvfYemuh2k0XgS0WN3/Fx3A bTQzhL5r3TBqN+Lp85u1j6ZBzsihrBbiHbUiLzmLMWfcZmroN2cDoNGIvkdytWo/J2mZRvehrOyU TidCABQwqZDim0vPmfMNPMbsFwL/rzAtDvNCJA/l2HIdp6eaGn8NxanGkUFCtGYoXWESPtwzlUaE MkeVqHiMnFsAHwFt4dd9x+xrNzIasI042Eqh2xHI8FJlIL0UcDwLDaTHITHYMRAifIqz1OP6b1Yt S7ULeJcAsImzUb8CBqdeTq5jpTVZ1Dv6nUzIYGaw+pREEUTNsCT62GQu15SwmPSPImaCicyZg6hy xWRpCqwJncd6Ovikq0vPmOSKqmbMu1oXcK16swgnJGi4r9GQryeYrtzDA9UOR8fgSt+Dky+zfTb1 ddpdVdqNgDhgxEvQiQpWu8eIPB+oilVZ4ZqWWNaMD7B9jfLEsD/x7Jh3niXBajWPu1jKLaGY7XeJ yIg8MZ6YZATEr9bJ5Wi8RB43kVh8bTQaGZpFhtIQgOc4zL0pl4nuWQH2Ae8zRvDAddGDx2WM9AeP WdZOezA6uMdwmYLkZ3BRggpG3pYUfTyKIr19BkVjLkRK9cLsi8eiOjFM5CdUF4HoYmB70QuR3RrL wJtYMlb6mgxP/i7kinChIDlKgY4= --===============5687987612955246368==--