Commit a69a3783 authored by unknown's avatar unknown

Improved fix for HPUX compile failure.

parent cdbd13a2
...@@ -1605,13 +1605,14 @@ public: ...@@ -1605,13 +1605,14 @@ public:
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 int
does not have access to protected member select_create::thd. select_create::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
*/ {
class select_create_prepare_hooks : public TABLEOP_HOOKS { DBUG_ENTER("select_create::prepare");
public:
select_create_prepare_hooks(select_create *x) : ptr(x) { } class MY_HOOKS : public TABLEOP_HOOKS {
public:
MY_HOOKS(select_create *x) : ptr(x) { }
virtual void do_prelock(TABLE **tables, uint count) virtual void do_prelock(TABLE **tables, uint count)
{ {
if (ptr->thd->current_stmt_binlog_row_based) if (ptr->get_thd()->current_stmt_binlog_row_based)
ptr->binlog_show_create_table(tables, count); ptr->binlog_show_create_table(tables, count);
} }
private: private:
select_create *ptr; select_create *ptr;
}; };
int
select_create::prepare(List<Item> &values, SELECT_LEX_UNIT *u)
{
DBUG_ENTER("select_create::prepare");
select_create_prepare_hooks hooks(this); 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