Commit 443ac642 authored by knielsen@mysql.com's avatar knielsen@mysql.com

Improved fix for HPUX compile failure.

parent 87a9d85e
...@@ -1605,13 +1605,14 @@ class select_create: public select_insert { ...@@ -1605,13 +1605,14 @@ class select_create: public select_insert {
lock(0) lock(0)
{} {}
int prepare(List<Item> &list, SELECT_LEX_UNIT *u); int prepare(List<Item> &list, SELECT_LEX_UNIT *u);
friend class select_create_prepare_hooks;
void binlog_show_create_table(TABLE **tables, uint count); void binlog_show_create_table(TABLE **tables, uint count);
void store_values(List<Item> &values); void store_values(List<Item> &values);
void send_error(uint errcode,const char *err); void send_error(uint errcode,const char *err);
bool send_eof(); bool send_eof();
void abort(); void abort();
// Needed for access from local class MY_HOOKS in prepare(), since thd is proteted.
THD *get_thd(void) { return thd; }
}; };
#include <myisam.h> #include <myisam.h>
......
...@@ -2498,28 +2498,25 @@ bool select_insert::send_eof() ...@@ -2498,28 +2498,25 @@ bool select_insert::send_eof()
CREATE TABLE (SELECT) ... CREATE TABLE (SELECT) ...
***************************************************************************/ ***************************************************************************/
/* HPUX compiler bug prevents this from being a local class, since then it
does not have access to protected member select_create::thd.
*/
class select_create_prepare_hooks : public TABLEOP_HOOKS {
public:
select_create_prepare_hooks(select_create *x) : ptr(x) { }
virtual void do_prelock(TABLE **tables, uint count)
{
if (ptr->thd->current_stmt_binlog_row_based)
ptr->binlog_show_create_table(tables, count);
}
private:
select_create *ptr;
};
int int
select_create::prepare(List<Item> &values, SELECT_LEX_UNIT *u) select_create::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
{ {
DBUG_ENTER("select_create::prepare"); DBUG_ENTER("select_create::prepare");
select_create_prepare_hooks hooks(this); class MY_HOOKS : public TABLEOP_HOOKS {
public:
MY_HOOKS(select_create *x) : ptr(x) { }
virtual void do_prelock(TABLE **tables, uint count)
{
if (ptr->get_thd()->current_stmt_binlog_row_based)
ptr->binlog_show_create_table(tables, count);
}
private:
select_create *ptr;
};
MY_HOOKS hooks(this);
unit= u; unit= u;
table= create_table_from_items(thd, create_info, create_table, table= create_table_from_items(thd, create_info, create_table,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment