Commit 54274976 authored by monty@mysql.com's avatar monty@mysql.com

Fixed compiler warnings from gcc 4.0.2:

- Added empty constructors and virtual destructors to many classes and structs
- Removed some usage of the offsetof() macro to instead use C++ class pointers
parent a7df038d
...@@ -356,6 +356,9 @@ then ...@@ -356,6 +356,9 @@ then
# mysqld requires -fno-implicit-templates. # mysqld requires -fno-implicit-templates.
# Disable exceptions as they seams to create problems with gcc and threads. # Disable exceptions as they seams to create problems with gcc and threads.
# mysqld doesn't use run-time-type-checking, so we disable it. # mysqld doesn't use run-time-type-checking, so we disable it.
# We should use -Wno-invalid-offsetof flag to disable some warnings from gcc
# regarding offset() usage in C++ which are done in a safe manner in the
# server
CXXFLAGS="$CXXFLAGS -fno-implicit-templates -fno-exceptions -fno-rtti" CXXFLAGS="$CXXFLAGS -fno-implicit-templates -fno-exceptions -fno-rtti"
AC_DEFINE([HAVE_EXPLICIT_TEMPLATE_INSTANTIATION], AC_DEFINE([HAVE_EXPLICIT_TEMPLATE_INSTANTIATION],
[1], [Defined by configure. Use explicit template instantiation.]) [1], [Defined by configure. Use explicit template instantiation.])
......
...@@ -61,12 +61,15 @@ typedef struct charset_info_st CHARSET_INFO; ...@@ -61,12 +61,15 @@ typedef struct charset_info_st CHARSET_INFO;
*/ */
class NdbDictionary { class NdbDictionary {
public: public:
NdbDictionary() {} /* Remove gcc warning */
/** /**
* @class Object * @class Object
* @brief Meta information about a database object (a table, index, etc) * @brief Meta information about a database object (a table, index, etc)
*/ */
class Object { class Object {
public: public:
Object() {} /* Remove gcc warning */
virtual ~Object() {} /* Remove gcc warning */
/** /**
* Status of object * Status of object
*/ */
......
...@@ -5262,7 +5262,7 @@ int Field_date::store(longlong nr, bool unsigned_val) ...@@ -5262,7 +5262,7 @@ int Field_date::store(longlong nr, bool unsigned_val)
} }
if (nr >= 19000000000000.0 && nr <= 99991231235959.0) if (nr >= 19000000000000.0 && nr <= 99991231235959.0)
nr=floor(nr/1000000.0); // Timestamp to date nr= (longlong) floor(nr/1000000.0); // Timestamp to date
if (error) if (error)
set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN, set_datetime_warning(MYSQL_ERROR::WARN_LEVEL_WARN,
......
...@@ -231,6 +231,7 @@ struct xid_t { ...@@ -231,6 +231,7 @@ struct xid_t {
long bqual_length; long bqual_length;
char data[XIDDATASIZE]; // not \0-terminated ! char data[XIDDATASIZE]; // not \0-terminated !
xid_t() {} /* Remove gcc warning */
bool eq(struct xid_t *xid) bool eq(struct xid_t *xid)
{ return eq(xid->gtrid_length, xid->bqual_length, xid->data); } { return eq(xid->gtrid_length, xid->bqual_length, xid->data); }
bool eq(long g, long b, const char *d) bool eq(long g, long b, const char *d)
...@@ -463,6 +464,7 @@ typedef class Item COND; ...@@ -463,6 +464,7 @@ typedef class Item COND;
typedef struct st_ha_check_opt typedef struct st_ha_check_opt
{ {
st_ha_check_opt() {} /* Remove gcc warning */
ulong sort_buffer_size; ulong sort_buffer_size;
uint flags; /* isam layer flags (e.g. for myisamchk) */ uint flags; /* isam layer flags (e.g. for myisamchk) */
uint sql_flags; /* sql layer flags - for something myisamchk cannot do */ uint sql_flags; /* sql layer flags - for something myisamchk cannot do */
......
...@@ -164,7 +164,8 @@ struct Hybrid_type_traits ...@@ -164,7 +164,8 @@ struct Hybrid_type_traits
virtual my_decimal *val_decimal(Hybrid_type *val, my_decimal *buf) const; virtual my_decimal *val_decimal(Hybrid_type *val, my_decimal *buf) const;
virtual String *val_str(Hybrid_type *val, String *buf, uint8 decimals) const; virtual String *val_str(Hybrid_type *val, String *buf, uint8 decimals) const;
static const Hybrid_type_traits *instance(); static const Hybrid_type_traits *instance();
Hybrid_type_traits() {}; Hybrid_type_traits() {}
virtual ~Hybrid_type_traits() {}
}; };
...@@ -339,6 +340,7 @@ class Name_resolution_context_state ...@@ -339,6 +340,7 @@ class Name_resolution_context_state
bool save_resolve_in_select_list; bool save_resolve_in_select_list;
public: public:
Name_resolution_context_state() {} /* Remove gcc warning */
TABLE_LIST *save_next_local; TABLE_LIST *save_next_local;
public: public:
...@@ -1015,6 +1017,7 @@ bool agg_item_charsets(DTCollation &c, const char *name, ...@@ -1015,6 +1017,7 @@ bool agg_item_charsets(DTCollation &c, const char *name,
class Item_num: public Item class Item_num: public Item
{ {
public: public:
Item_num() {} /* Remove gcc warning */
virtual Item_num *neg()= 0; virtual Item_num *neg()= 0;
Item *safe_charset_converter(CHARSET_INFO *tocs); Item *safe_charset_converter(CHARSET_INFO *tocs);
}; };
......
...@@ -128,6 +128,8 @@ class Item_in_optimizer: public Item_bool_func ...@@ -128,6 +128,8 @@ class Item_in_optimizer: public Item_bool_func
class Comp_creator class Comp_creator
{ {
public: public:
Comp_creator() {} /* Remove gcc warning */
virtual ~Comp_creator() {} /* Remove gcc warning */
virtual Item_bool_func2* create(Item *a, Item *b) const = 0; virtual Item_bool_func2* create(Item *a, Item *b) const = 0;
virtual const char* symbol(bool invert) const = 0; virtual const char* symbol(bool invert) const = 0;
virtual bool eqne_op() const = 0; virtual bool eqne_op() const = 0;
...@@ -137,6 +139,8 @@ class Comp_creator ...@@ -137,6 +139,8 @@ class Comp_creator
class Eq_creator :public Comp_creator class Eq_creator :public Comp_creator
{ {
public: public:
Eq_creator() {} /* Remove gcc warning */
virtual ~Eq_creator() {} /* Remove gcc warning */
virtual Item_bool_func2* create(Item *a, Item *b) const; virtual Item_bool_func2* create(Item *a, Item *b) const;
virtual const char* symbol(bool invert) const { return invert? "<>" : "="; } virtual const char* symbol(bool invert) const { return invert? "<>" : "="; }
virtual bool eqne_op() const { return 1; } virtual bool eqne_op() const { return 1; }
...@@ -146,6 +150,8 @@ class Eq_creator :public Comp_creator ...@@ -146,6 +150,8 @@ class Eq_creator :public Comp_creator
class Ne_creator :public Comp_creator class Ne_creator :public Comp_creator
{ {
public: public:
Ne_creator() {} /* Remove gcc warning */
virtual ~Ne_creator() {} /* Remove gcc warning */
virtual Item_bool_func2* create(Item *a, Item *b) const; virtual Item_bool_func2* create(Item *a, Item *b) const;
virtual const char* symbol(bool invert) const { return invert? "=" : "<>"; } virtual const char* symbol(bool invert) const { return invert? "=" : "<>"; }
virtual bool eqne_op() const { return 1; } virtual bool eqne_op() const { return 1; }
...@@ -155,6 +161,8 @@ class Ne_creator :public Comp_creator ...@@ -155,6 +161,8 @@ class Ne_creator :public Comp_creator
class Gt_creator :public Comp_creator class Gt_creator :public Comp_creator
{ {
public: public:
Gt_creator() {} /* Remove gcc warning */
virtual ~Gt_creator() {} /* Remove gcc warning */
virtual Item_bool_func2* create(Item *a, Item *b) const; virtual Item_bool_func2* create(Item *a, Item *b) const;
virtual const char* symbol(bool invert) const { return invert? "<=" : ">"; } virtual const char* symbol(bool invert) const { return invert? "<=" : ">"; }
virtual bool eqne_op() const { return 0; } virtual bool eqne_op() const { return 0; }
...@@ -164,6 +172,8 @@ class Gt_creator :public Comp_creator ...@@ -164,6 +172,8 @@ class Gt_creator :public Comp_creator
class Lt_creator :public Comp_creator class Lt_creator :public Comp_creator
{ {
public: public:
Lt_creator() {} /* Remove gcc warning */
virtual ~Lt_creator() {} /* Remove gcc warning */
virtual Item_bool_func2* create(Item *a, Item *b) const; virtual Item_bool_func2* create(Item *a, Item *b) const;
virtual const char* symbol(bool invert) const { return invert? ">=" : "<"; } virtual const char* symbol(bool invert) const { return invert? ">=" : "<"; }
virtual bool eqne_op() const { return 0; } virtual bool eqne_op() const { return 0; }
...@@ -173,6 +183,8 @@ class Lt_creator :public Comp_creator ...@@ -173,6 +183,8 @@ class Lt_creator :public Comp_creator
class Ge_creator :public Comp_creator class Ge_creator :public Comp_creator
{ {
public: public:
Ge_creator() {} /* Remove gcc warning */
virtual ~Ge_creator() {} /* Remove gcc warning */
virtual Item_bool_func2* create(Item *a, Item *b) const; virtual Item_bool_func2* create(Item *a, Item *b) const;
virtual const char* symbol(bool invert) const { return invert? "<" : ">="; } virtual const char* symbol(bool invert) const { return invert? "<" : ">="; }
virtual bool eqne_op() const { return 0; } virtual bool eqne_op() const { return 0; }
...@@ -182,6 +194,8 @@ class Ge_creator :public Comp_creator ...@@ -182,6 +194,8 @@ class Ge_creator :public Comp_creator
class Le_creator :public Comp_creator class Le_creator :public Comp_creator
{ {
public: public:
Le_creator() {} /* Remove gcc warning */
virtual ~Le_creator() {} /* Remove gcc warning */
virtual Item_bool_func2* create(Item *a, Item *b) const; virtual Item_bool_func2* create(Item *a, Item *b) const;
virtual const char* symbol(bool invert) const { return invert? ">" : "<="; } virtual const char* symbol(bool invert) const { return invert? ">" : "<="; }
virtual bool eqne_op() const { return 0; } virtual bool eqne_op() const { return 0; }
...@@ -739,6 +753,7 @@ class cmp_item_int :public cmp_item ...@@ -739,6 +753,7 @@ class cmp_item_int :public cmp_item
{ {
longlong value; longlong value;
public: public:
cmp_item_int() {} /* Remove gcc warning */
void store_value(Item *item) void store_value(Item *item)
{ {
value= item->val_int(); value= item->val_int();
...@@ -759,6 +774,7 @@ class cmp_item_real :public cmp_item ...@@ -759,6 +774,7 @@ class cmp_item_real :public cmp_item
{ {
double value; double value;
public: public:
cmp_item_real() {} /* Remove gcc warning */
void store_value(Item *item) void store_value(Item *item)
{ {
value= item->val_real(); value= item->val_real();
...@@ -780,6 +796,7 @@ class cmp_item_decimal :public cmp_item ...@@ -780,6 +796,7 @@ class cmp_item_decimal :public cmp_item
{ {
my_decimal value; my_decimal value;
public: public:
cmp_item_decimal() {} /* Remove gcc warning */
void store_value(Item *item); void store_value(Item *item);
int cmp(Item *arg); int cmp(Item *arg);
int compare(cmp_item *c); int compare(cmp_item *c);
......
...@@ -121,6 +121,7 @@ struct old_sql_ex ...@@ -121,6 +121,7 @@ struct old_sql_ex
****************************************************************************/ ****************************************************************************/
struct sql_ex_info struct sql_ex_info
{ {
sql_ex_info() {} /* Remove gcc warning */
char* field_term; char* field_term;
char* enclosed; char* enclosed;
char* line_term; char* line_term;
......
...@@ -432,6 +432,7 @@ typedef struct st_sql_list { ...@@ -432,6 +432,7 @@ typedef struct st_sql_list {
byte *first; byte *first;
byte **next; byte **next;
st_sql_list() {} /* Remove gcc warning */
inline void empty() inline void empty()
{ {
elements=0; elements=0;
...@@ -983,7 +984,7 @@ bool close_thread_table(THD *thd, TABLE **table_ptr); ...@@ -983,7 +984,7 @@ bool close_thread_table(THD *thd, TABLE **table_ptr);
void close_temporary_tables(THD *thd); void close_temporary_tables(THD *thd);
void close_tables_for_reopen(THD *thd, TABLE_LIST **tables); void close_tables_for_reopen(THD *thd, TABLE_LIST **tables);
TABLE_LIST *find_table_in_list(TABLE_LIST *table, TABLE_LIST *find_table_in_list(TABLE_LIST *table,
uint offset_to_list, st_table_list *TABLE_LIST::*link,
const char *db_name, const char *db_name,
const char *table_name); const char *table_name);
TABLE_LIST *unique_table(THD *thd, TABLE_LIST *table, TABLE_LIST *table_list); TABLE_LIST *unique_table(THD *thd, TABLE_LIST *table, TABLE_LIST *table_list);
...@@ -1024,7 +1025,7 @@ inline TABLE_LIST *find_table_in_global_list(TABLE_LIST *table, ...@@ -1024,7 +1025,7 @@ inline TABLE_LIST *find_table_in_global_list(TABLE_LIST *table,
const char *db_name, const char *db_name,
const char *table_name) const char *table_name)
{ {
return find_table_in_list(table, offsetof(TABLE_LIST, next_global), return find_table_in_list(table, &TABLE_LIST::next_global,
db_name, table_name); db_name, table_name);
} }
...@@ -1032,7 +1033,7 @@ inline TABLE_LIST *find_table_in_local_list(TABLE_LIST *table, ...@@ -1032,7 +1033,7 @@ inline TABLE_LIST *find_table_in_local_list(TABLE_LIST *table,
const char *db_name, const char *db_name,
const char *table_name) const char *table_name)
{ {
return find_table_in_list(table, offsetof(TABLE_LIST, next_local), return find_table_in_list(table, &TABLE_LIST::next_local,
db_name, table_name); db_name, table_name);
} }
......
...@@ -1495,6 +1495,8 @@ class TABLE_READ_PLAN ...@@ -1495,6 +1495,8 @@ class TABLE_READ_PLAN
{ return (void*) alloc_root(mem_root, (uint) size); } { return (void*) alloc_root(mem_root, (uint) size); }
static void operator delete(void *ptr,size_t size) { TRASH(ptr, size); } static void operator delete(void *ptr,size_t size) { TRASH(ptr, size); }
static void operator delete(void *ptr, MEM_ROOT *mem_root) { /* Never called */ } static void operator delete(void *ptr, MEM_ROOT *mem_root) { /* Never called */ }
virtual ~TABLE_READ_PLAN() {} /* Remove gcc warning */
}; };
class TRP_ROR_INTERSECT; class TRP_ROR_INTERSECT;
...@@ -1518,6 +1520,7 @@ class TRP_RANGE : public TABLE_READ_PLAN ...@@ -1518,6 +1520,7 @@ class TRP_RANGE : public TABLE_READ_PLAN
TRP_RANGE(SEL_ARG *key_arg, uint idx_arg) TRP_RANGE(SEL_ARG *key_arg, uint idx_arg)
: key(key_arg), key_idx(idx_arg) : key(key_arg), key_idx(idx_arg)
{} {}
virtual ~TRP_RANGE() {} /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows, QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc) MEM_ROOT *parent_alloc)
...@@ -1539,6 +1542,8 @@ class TRP_RANGE : public TABLE_READ_PLAN ...@@ -1539,6 +1542,8 @@ class TRP_RANGE : public TABLE_READ_PLAN
class TRP_ROR_INTERSECT : public TABLE_READ_PLAN class TRP_ROR_INTERSECT : public TABLE_READ_PLAN
{ {
public: public:
TRP_ROR_INTERSECT() {} /* Remove gcc warning */
virtual ~TRP_ROR_INTERSECT() {} /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows, QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc); MEM_ROOT *parent_alloc);
...@@ -1560,6 +1565,8 @@ class TRP_ROR_INTERSECT : public TABLE_READ_PLAN ...@@ -1560,6 +1565,8 @@ class TRP_ROR_INTERSECT : public TABLE_READ_PLAN
class TRP_ROR_UNION : public TABLE_READ_PLAN class TRP_ROR_UNION : public TABLE_READ_PLAN
{ {
public: public:
TRP_ROR_UNION() {} /* Remove gcc warning */
virtual ~TRP_ROR_UNION() {} /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows, QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc); MEM_ROOT *parent_alloc);
TABLE_READ_PLAN **first_ror; /* array of ptrs to plans for merged scans */ TABLE_READ_PLAN **first_ror; /* array of ptrs to plans for merged scans */
...@@ -1576,6 +1583,8 @@ class TRP_ROR_UNION : public TABLE_READ_PLAN ...@@ -1576,6 +1583,8 @@ class TRP_ROR_UNION : public TABLE_READ_PLAN
class TRP_INDEX_MERGE : public TABLE_READ_PLAN class TRP_INDEX_MERGE : public TABLE_READ_PLAN
{ {
public: public:
TRP_INDEX_MERGE() {} /* Remove gcc warning */
virtual ~TRP_INDEX_MERGE() {} /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows, QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc); MEM_ROOT *parent_alloc);
TRP_RANGE **range_scans; /* array of ptrs to plans of merged scans */ TRP_RANGE **range_scans; /* array of ptrs to plans of merged scans */
...@@ -1625,6 +1634,7 @@ class TRP_GROUP_MIN_MAX : public TABLE_READ_PLAN ...@@ -1625,6 +1634,7 @@ class TRP_GROUP_MIN_MAX : public TABLE_READ_PLAN
if (key_infix_len) if (key_infix_len)
memcpy(this->key_infix, key_infix_arg, key_infix_len); memcpy(this->key_infix, key_infix_arg, key_infix_len);
} }
virtual ~TRP_GROUP_MIN_MAX() {} /* Remove gcc warning */
QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows, QUICK_SELECT_I *make_quick(PARAM *param, bool retrieve_full_rows,
MEM_ROOT *parent_alloc); MEM_ROOT *parent_alloc);
......
...@@ -49,6 +49,8 @@ struct File_option ...@@ -49,6 +49,8 @@ struct File_option
class Unknown_key_hook class Unknown_key_hook
{ {
public: public:
Unknown_key_hook() {} /* Remove gcc warning */
virtual ~Unknown_key_hook() {} /* Remove gcc warning */
virtual bool process_unknown_string(char *&unknown_key, gptr base, virtual bool process_unknown_string(char *&unknown_key, gptr base,
MEM_ROOT *mem_root, char *end)= 0; MEM_ROOT *mem_root, char *end)= 0;
}; };
...@@ -59,6 +61,7 @@ class Unknown_key_hook ...@@ -59,6 +61,7 @@ class Unknown_key_hook
class File_parser_dummy_hook: public Unknown_key_hook class File_parser_dummy_hook: public Unknown_key_hook
{ {
public: public:
File_parser_dummy_hook() {} /* Remove gcc warning */
virtual bool process_unknown_string(char *&unknown_key, gptr base, virtual bool process_unknown_string(char *&unknown_key, gptr base,
MEM_ROOT *mem_root, char *end); MEM_ROOT *mem_root, char *end);
}; };
......
...@@ -268,6 +268,7 @@ class Select_fetch_into_spvars: public select_result_interceptor ...@@ -268,6 +268,7 @@ class Select_fetch_into_spvars: public select_result_interceptor
List<struct sp_pvar> *spvar_list; List<struct sp_pvar> *spvar_list;
uint field_count; uint field_count;
public: public:
Select_fetch_into_spvars() {} /* Remove gcc warning */
uint get_field_count() { return field_count; } uint get_field_count() { return field_count; }
void set_spvar_list(List<struct sp_pvar> *vars) { spvar_list= vars; } void set_spvar_list(List<struct sp_pvar> *vars) { spvar_list= vars; }
......
...@@ -165,6 +165,8 @@ struct Geometry_buffer; ...@@ -165,6 +165,8 @@ struct Geometry_buffer;
class Geometry class Geometry
{ {
public: public:
Geometry() {} /* Remove gcc warning */
virtual ~Geometry() {} /* Remove gcc warning */
static void *operator new(size_t size, void *buffer) static void *operator new(size_t size, void *buffer)
{ {
return buffer; return buffer;
...@@ -302,6 +304,8 @@ class Geometry ...@@ -302,6 +304,8 @@ class Geometry
class Gis_point: public Geometry class Gis_point: public Geometry
{ {
public: public:
Gis_point() {} /* Remove gcc warning */
virtual ~Gis_point() {} /* Remove gcc warning */
uint32 get_data_size() const; uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb); bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res); uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
...@@ -349,6 +353,8 @@ class Gis_point: public Geometry ...@@ -349,6 +353,8 @@ class Gis_point: public Geometry
class Gis_line_string: public Geometry class Gis_line_string: public Geometry
{ {
public: public:
Gis_line_string() {} /* Remove gcc warning */
virtual ~Gis_line_string() {} /* Remove gcc warning */
uint32 get_data_size() const; uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb); bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res); uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
...@@ -375,6 +381,8 @@ class Gis_line_string: public Geometry ...@@ -375,6 +381,8 @@ class Gis_line_string: public Geometry
class Gis_polygon: public Geometry class Gis_polygon: public Geometry
{ {
public: public:
Gis_polygon() {} /* Remove gcc warning */
virtual ~Gis_polygon() {} /* Remove gcc warning */
uint32 get_data_size() const; uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb); bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res); uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
...@@ -401,6 +409,8 @@ class Gis_polygon: public Geometry ...@@ -401,6 +409,8 @@ class Gis_polygon: public Geometry
class Gis_multi_point: public Geometry class Gis_multi_point: public Geometry
{ {
public: public:
Gis_multi_point() {} /* Remove gcc warning */
virtual ~Gis_multi_point() {} /* Remove gcc warning */
uint32 get_data_size() const; uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb); bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res); uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
...@@ -423,6 +433,8 @@ class Gis_multi_point: public Geometry ...@@ -423,6 +433,8 @@ class Gis_multi_point: public Geometry
class Gis_multi_line_string: public Geometry class Gis_multi_line_string: public Geometry
{ {
public: public:
Gis_multi_line_string() {} /* Remove gcc warning */
virtual ~Gis_multi_line_string() {} /* Remove gcc warning */
uint32 get_data_size() const; uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb); bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res); uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
...@@ -447,6 +459,8 @@ class Gis_multi_line_string: public Geometry ...@@ -447,6 +459,8 @@ class Gis_multi_line_string: public Geometry
class Gis_multi_polygon: public Geometry class Gis_multi_polygon: public Geometry
{ {
public: public:
Gis_multi_polygon() {} /* Remove gcc warning */
virtual ~Gis_multi_polygon() {} /* Remove gcc warning */
uint32 get_data_size() const; uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb); bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res); uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
...@@ -471,6 +485,8 @@ class Gis_multi_polygon: public Geometry ...@@ -471,6 +485,8 @@ class Gis_multi_polygon: public Geometry
class Gis_geometry_collection: public Geometry class Gis_geometry_collection: public Geometry
{ {
public: public:
Gis_geometry_collection() {} /* Remove gcc warning */
virtual ~Gis_geometry_collection() {} /* Remove gcc warning */
uint32 get_data_size() const; uint32 get_data_size() const;
bool init_from_wkt(Gis_read_stream *trs, String *wkb); bool init_from_wkt(Gis_read_stream *trs, String *wkb);
uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res); uint init_from_wkb(const char *wkb, uint len, wkbByteOrder bo, String *res);
......
...@@ -687,11 +687,11 @@ void close_temporary_tables(THD *thd) ...@@ -687,11 +687,11 @@ void close_temporary_tables(THD *thd)
*/ */
TABLE_LIST *find_table_in_list(TABLE_LIST *table, TABLE_LIST *find_table_in_list(TABLE_LIST *table,
uint offset, st_table_list *TABLE_LIST::*link,
const char *db_name, const char *db_name,
const char *table_name) const char *table_name)
{ {
for (; table; table= *(TABLE_LIST **) ((char*) table + offset)) for (; table; table= table->*link )
{ {
if ((table->table == 0 || table->table->s->tmp_table == NO_TMP_TABLE) && if ((table->table == 0 || table->table->s->tmp_table == NO_TMP_TABLE) &&
strcmp(table->db, db_name) == 0 && strcmp(table->db, db_name) == 0 &&
......
...@@ -69,6 +69,7 @@ class Query_cache; ...@@ -69,6 +69,7 @@ class Query_cache;
struct Query_cache_block_table struct Query_cache_block_table
{ {
Query_cache_block_table() {} /* Remove gcc warning */
TABLE_COUNTER_TYPE n; // numbr in table (from 0) TABLE_COUNTER_TYPE n; // numbr in table (from 0)
Query_cache_block_table *next, *prev; Query_cache_block_table *next, *prev;
Query_cache_table *parent; Query_cache_table *parent;
...@@ -78,6 +79,7 @@ struct Query_cache_block_table ...@@ -78,6 +79,7 @@ struct Query_cache_block_table
struct Query_cache_block struct Query_cache_block
{ {
Query_cache_block() {} /* Remove gcc warning */
enum block_type {FREE, QUERY, RESULT, RES_CONT, RES_BEG, enum block_type {FREE, QUERY, RESULT, RES_CONT, RES_BEG,
RES_INCOMPLETE, TABLE, INCOMPLETE}; RES_INCOMPLETE, TABLE, INCOMPLETE};
...@@ -143,6 +145,7 @@ struct Query_cache_query ...@@ -143,6 +145,7 @@ struct Query_cache_query
struct Query_cache_table struct Query_cache_table
{ {
Query_cache_table() {} /* Remove gcc warning */
char *tbl; char *tbl;
uint32 key_len; uint32 key_len;
uint8 table_type; uint8 table_type;
...@@ -171,6 +174,7 @@ struct Query_cache_table ...@@ -171,6 +174,7 @@ struct Query_cache_table
struct Query_cache_result struct Query_cache_result
{ {
Query_cache_result() {} /* Remove gcc warning */
Query_cache_block *query; Query_cache_block *query;
inline gptr data() inline gptr data()
...@@ -197,6 +201,7 @@ extern "C" void query_cache_invalidate_by_MyISAM_filename(const char* filename); ...@@ -197,6 +201,7 @@ extern "C" void query_cache_invalidate_by_MyISAM_filename(const char* filename);
struct Query_cache_memory_bin struct Query_cache_memory_bin
{ {
Query_cache_memory_bin() {} /* Remove gcc warning */
#ifndef DBUG_OFF #ifndef DBUG_OFF
ulong size; ulong size;
#endif #endif
...@@ -215,6 +220,7 @@ struct Query_cache_memory_bin ...@@ -215,6 +220,7 @@ struct Query_cache_memory_bin
struct Query_cache_memory_bin_step struct Query_cache_memory_bin_step
{ {
Query_cache_memory_bin_step() {} /* Remove gcc warning */
ulong size; ulong size;
ulong increment; ulong increment;
uint idx; uint idx;
......
...@@ -69,7 +69,8 @@ class TC_LOG ...@@ -69,7 +69,8 @@ class TC_LOG
class TC_LOG_DUMMY: public TC_LOG // use it to disable the logging class TC_LOG_DUMMY: public TC_LOG // use it to disable the logging
{ {
public: public:
TC_LOG_DUMMY() {} /* Remove gcc warning */
int open(const char *opt_name) { return 0; } int open(const char *opt_name) { return 0; }
void close() { } void close() { }
int log(THD *thd, my_xid xid) { return 1; } int log(THD *thd, my_xid xid) { return 1; }
...@@ -930,6 +931,7 @@ void xid_cache_delete(XID_STATE *xid_state); ...@@ -930,6 +931,7 @@ void xid_cache_delete(XID_STATE *xid_state);
class Security_context { class Security_context {
public: public:
Security_context() {} /* Remove gcc warning */
/* /*
host - host of the client host - host of the client
user - user of the client, set to NULL until the user has been read from user - user of the client, set to NULL until the user has been read from
...@@ -1679,6 +1681,7 @@ class select_result :public Sql_alloc { ...@@ -1679,6 +1681,7 @@ class select_result :public Sql_alloc {
class select_result_interceptor: public select_result class select_result_interceptor: public select_result
{ {
public: public:
select_result_interceptor() {} /* Remove gcc warning */
uint field_count(List<Item> &fields) const { return 0; } uint field_count(List<Item> &fields) const { return 0; }
bool send_fields(List<Item> &fields, uint flag) { return FALSE; } bool send_fields(List<Item> &fields, uint flag) { return FALSE; }
}; };
...@@ -1966,6 +1969,7 @@ class Table_ident :public Sql_alloc ...@@ -1966,6 +1969,7 @@ class Table_ident :public Sql_alloc
class user_var_entry class user_var_entry
{ {
public: public:
user_var_entry() {} /* Remove gcc warning */
LEX_STRING name; LEX_STRING name;
char *value; char *value;
ulong length; ulong length;
......
...@@ -5979,10 +5979,11 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd, ...@@ -5979,10 +5979,11 @@ TABLE_LIST *st_select_lex::add_table_to_list(THD *thd,
/* /*
table_list.next points to the last inserted TABLE_LIST->next_local' table_list.next points to the last inserted TABLE_LIST->next_local'
element element
We don't use the offsetof() macro here to avoid warnings from gcc
*/ */
previous_table_ref= (TABLE_LIST*) (table_list.next - previous_table_ref= (TABLE_LIST*) ((char*) table_list.next -
offsetof(TABLE_LIST, next_local)); ((char*) &(ptr->next_local) -
DBUG_ASSERT(previous_table_ref); (char*) ptr));
/* /*
Set next_name_resolution_table of the previous table reference to point Set next_name_resolution_table of the previous table reference to point
to the current table reference. In effect the list to the current table reference. In effect the list
......
...@@ -104,6 +104,7 @@ typedef int (*Read_record_func)(struct st_join_table *tab); ...@@ -104,6 +104,7 @@ typedef int (*Read_record_func)(struct st_join_table *tab);
Next_select_func setup_end_select_func(JOIN *join); Next_select_func setup_end_select_func(JOIN *join);
typedef struct st_join_table { typedef struct st_join_table {
st_join_table() {} /* Remove gcc warning */
TABLE *table; TABLE *table;
KEYUSE *keyuse; /* pointer to first used key */ KEYUSE *keyuse; /* pointer to first used key */
SQL_SELECT *select; SQL_SELECT *select;
...@@ -287,7 +288,7 @@ class JOIN :public Sql_alloc ...@@ -287,7 +288,7 @@ class JOIN :public Sql_alloc
} }
JOIN(JOIN &join) JOIN(JOIN &join)
:fields_list(join.fields_list) :Sql_alloc(), fields_list(join.fields_list)
{ {
init(join.thd, join.fields_list, join.select_options, init(join.thd, join.fields_list, join.select_options,
join.result); join.result);
......
...@@ -1303,7 +1303,7 @@ bool multi_update::send_data(List<Item> &not_used_values) ...@@ -1303,7 +1303,7 @@ bool multi_update::send_data(List<Item> &not_used_values)
memcpy((char*) tmp_table->field[0]->ptr, memcpy((char*) tmp_table->field[0]->ptr,
(char*) table->file->ref, table->file->ref_length); (char*) table->file->ref, table->file->ref_length);
/* Write row, ignoring duplicated updates to a row */ /* Write row, ignoring duplicated updates to a row */
if (error= tmp_table->file->write_row(tmp_table->record[0])) if ((error= tmp_table->file->write_row(tmp_table->record[0])))
{ {
if (error != HA_ERR_FOUND_DUPP_KEY && if (error != HA_ERR_FOUND_DUPP_KEY &&
error != HA_ERR_FOUND_DUPP_UNIQUE && error != HA_ERR_FOUND_DUPP_UNIQUE &&
......
...@@ -187,6 +187,8 @@ typedef struct st_table_share ...@@ -187,6 +187,8 @@ typedef struct st_table_share
/* Information for one open table */ /* Information for one open table */
struct st_table { struct st_table {
st_table() {} /* Remove gcc warning */
TABLE_SHARE *s; TABLE_SHARE *s;
handler *file; handler *file;
#ifdef NOT_YET #ifdef NOT_YET
...@@ -444,6 +446,7 @@ class Natural_join_column: public Sql_alloc ...@@ -444,6 +446,7 @@ class Natural_join_column: public Sql_alloc
typedef struct st_table_list typedef struct st_table_list
{ {
st_table_list() {} /* Remove gcc warning */
/* /*
List of tables local to a subquery (used by SQL_LIST). Considers List of tables local to a subquery (used by SQL_LIST). Considers
views as leaves (unlike 'next_leaf' below). Created at parse time views as leaves (unlike 'next_leaf' below). Created at parse time
...@@ -675,6 +678,7 @@ class Item; ...@@ -675,6 +678,7 @@ class Item;
class Field_iterator: public Sql_alloc class Field_iterator: public Sql_alloc
{ {
public: public:
Field_iterator() {} /* Remove gcc warning */
virtual ~Field_iterator() {} virtual ~Field_iterator() {}
virtual void set(TABLE_LIST *)= 0; virtual void set(TABLE_LIST *)= 0;
virtual void next()= 0; virtual void next()= 0;
......
...@@ -961,6 +961,7 @@ static const String tz_SYSTEM_name("SYSTEM", 6, &my_charset_latin1); ...@@ -961,6 +961,7 @@ static const String tz_SYSTEM_name("SYSTEM", 6, &my_charset_latin1);
class Time_zone_system : public Time_zone class Time_zone_system : public Time_zone
{ {
public: public:
Time_zone_system() {} /* Remove gcc warning */
virtual my_time_t TIME_to_gmt_sec(const TIME *t, virtual my_time_t TIME_to_gmt_sec(const TIME *t,
my_bool *in_dst_time_gap) const; my_bool *in_dst_time_gap) const;
virtual void gmt_sec_to_TIME(TIME *tmp, my_time_t t) const; virtual void gmt_sec_to_TIME(TIME *tmp, my_time_t t) const;
...@@ -1054,6 +1055,7 @@ Time_zone_system::get_name() const ...@@ -1054,6 +1055,7 @@ Time_zone_system::get_name() const
class Time_zone_utc : public Time_zone class Time_zone_utc : public Time_zone
{ {
public: public:
Time_zone_utc() {} /* Remove gcc warning */
virtual my_time_t TIME_to_gmt_sec(const TIME *t, virtual my_time_t TIME_to_gmt_sec(const TIME *t,
my_bool *in_dst_time_gap) const; my_bool *in_dst_time_gap) const;
virtual void gmt_sec_to_TIME(TIME *tmp, my_time_t t) const; virtual void gmt_sec_to_TIME(TIME *tmp, my_time_t t) const;
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
class Time_zone: public Sql_alloc class Time_zone: public Sql_alloc
{ {
public: public:
Time_zone() {} /* Remove gcc warning */
/* /*
Converts local time in broken down TIME representation to Converts local time in broken down TIME representation to
my_time_t (UTC seconds since Epoch) represenation. my_time_t (UTC seconds since Epoch) represenation.
......
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