From: Roy Lyseng Date: September 22 2010 11:42am Subject: bzr commit into mysql-next-mr-bugfixing branch (roy.lyseng:3248) List-Archive: http://lists.mysql.com/commits/118802 Message-Id: <20100922114225.E70941EC@tyr67.norway.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5979007795501326321==" --===============5979007795501326321== 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:tor.didriksen@stripped 3248 Roy Lyseng 2010-09-22 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. Made a derived class of Sql_alloc, so operator new can be used instead of alloc(). modified: sql/sql_select.cc sql/sql_select.h === modified file 'sql/sql_select.cc' --- a/sql/sql_select.cc 2010-09-22 06:51:45 +0000 +++ b/sql/sql_select.cc 2010-09-22 11:37:38 +0000 @@ -4491,6 +4491,14 @@ make_join_statistics(JOIN *join, TABLE_L if (!stat || !stat_ref || !table_vector) DBUG_RETURN(1); // Eom /* purecov: inspected */ + if (!(join->positions= + new (join->thd->mem_root) POSITION[table_count+1])) + DBUG_RETURN(TRUE); + + if (!(join->best_positions= + new (join->thd->mem_root) 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-22 11:37:38 +0000 @@ -1369,7 +1369,7 @@ enum_nested_loop_state sub_select_sjm(JO advance_sj_state() for details. */ -typedef struct st_position +typedef struct st_position : public Sql_alloc { /* The "fanout" - number of output rows that will be produced (after @@ -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 --===============5979007795501326321== 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: 0dc7ca5aa1f0c360b94f667ea8300408696fd464 # timestamp: 2010-09-22 13:42:25 +0200 # base_revision_id: tor.didriksen@stripped\ # n2fezf72awi4k2av # # Begin bundle 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 --===============5979007795501326321==--