Hi!
Basically ok - the only problem - you forgot to remove
fill_files_table() from the handlerton. Feel free to push after
correcting this.
And pay more attention in the future to changeset/file comments please -
see my remarks below.
On Jun 27, Narayanan V wrote:
> #At bzr+ssh://bk-internal.mysql.com/bzrroot/mysql-6.0-sea
>
> 2643 Narayanan V 2008-06-27
> WL#4448
>
> The attached patch adds a method handlerton::fill_is_table that can be used
> instead
> of having to create specific handlerton::fill_*_table methods.
>
> In working on this issue a major change that is obvious is that I have moved
> the definition
> of the enumeration enum_schema_tables from sql/table.h to sql/handler.h.
>
> sql/table.h and sql/handler.h have a sort of cyclic dependency in between them,
> in that
> sql/handler.h uses structures defined in sql/table.h, while, sql/table.h uses
> enumerations
> defined in sql/handler.h. So to compensate for the problems that arise from
> sql/handler.h
> included before sql/table.h, sql/handler.h includes forward declarations of the
> structures.
>
> In our case since we need an enumeration(enum_schema_tables) from sql/table.h
> in sql/handler.h.
Try to avoid very long lines in the changeset comment, please.
> This would result in problems since enumerations cannot be forward declared.
>
> The problem can however be solved by moving enum_schema_tables from sql/table.h
> to sql/handler.h.
>
> This however might not be semantically appealing to some folks.
>
> The workaround for enum forward declarations can be found here
> http://www.ddj.com/cpp/184403894.
> I did not find this solution elegant atleast to our context. If this seems
> better to folks I can
> possibly attempt this.
This last paragraph is unnecessary. Think this way - changeset comment
goes into a branch history. Forever. Not like an email which is read and
forgotten. Consequently, changeset comment should only describe changes
in this changeset. It shouldn't have anything which will be not
interesting or relevant in, say, five years to somebody who will look
and the branch revision history.
> modified:
> sql/ha_ndbcluster.cc
> sql/handler.h
> sql/mysql_priv.h.pp
> sql/sql_show.cc
> sql/table.h
>
> === modified file 'sql/handler.h'
> --- a/sql/handler.h 2008-05-08 13:01:30 +0000
> +++ b/sql/handler.h 2008-06-27 05:11:51 +0000
> @@ -716,6 +759,9 @@ struct handlerton
> int (*fill_files_table)(handlerton *hton, THD *thd,
> TABLE_LIST *tables,
> class Item *cond);
you forgot to remove fill_files_table()
> + int (*fill_is_table)(handlerton *hton, THD *thd, TABLE_LIST *tables,
> + class Item *cond,
> + enum enum_schema_tables);
> uint32 flags; /* global handler flags */
> /*
> Those handlerton functions below are properly initialized at handler
>
> === modified file 'sql/mysql_priv.h.pp'
> --- a/sql/mysql_priv.h.pp 2008-06-17 17:17:25 +0000
> +++ b/sql/mysql_priv.h.pp 2008-06-27 05:11:51 +0000
> @@ -4510,35 +4551,35 @@ public:
> int ha_index_init(uint idx, In_C_you_should_use_my_bool_instead() sorted)
> {
> int result;
> - const char *_db_func_, *_db_file_; uint _db_level_; char **_db_framep_;
> _db_enter_
> ("ha_index_init","./sql/handler.h",1417,&_db_func_,&_db_file_,&_db_level_,
> &_db_framep_);
> + const char *_db_func_, *_db_file_; uint _db_level_; char **_db_framep_;
> _db_enter_
> ("ha_index_init","./sql/handler.h",1463,&_db_func_,&_db_file_,&_db_level_,
> &_db_framep_);
Oops. We need to remove this from handler.h.
And other implementation methods too, see below in the .pp file.
As a part of WL#4394, if it'll be done soon, or WL#4380 if not.
mysql_priv.h.pp is useless until we do that :(
Note - fixing this is *not* part of WL#4448.
Regards / Mit vielen Grüssen,
Sergei
--
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Sergei Golubchik <serg@stripped>
/ /|_/ / // /\ \/ /_/ / /__ Principal Software Engineer/Server Architect
/_/ /_/\_, /___/\___\_\___/ Sun Microsystems GmbH, HRB München 161028
<___/ Sonnenallee 1, 85551 Kirchheim-Heimstetten
Geschäftsführer: Thomas Schroeder, Wolfgang Engels, Dr. Roland Boemer
Vorsitzender des Aufsichtsrates: Martin Häring