@@ -399,7 +399,7 @@ class Item_exists_subselect :public Item_subselect
399
399
bool val_bool ();
400
400
bool fix_fields (THD *thd, Item **ref);
401
401
void fix_length_and_dec ();
402
- virtual void print (String *str, enum_query_type query_type);
402
+ void print (String *str, enum_query_type query_type);
403
403
bool select_transformer (JOIN *join);
404
404
void top_level_item () { abort_on_null=1 ; }
405
405
inline bool is_top_level_item () { return abort_on_null; }
@@ -616,7 +616,8 @@ class Item_in_subselect :public Item_exists_subselect
616
616
void update_null_value () { (void ) val_bool (); }
617
617
bool val_bool ();
618
618
bool test_limit (st_select_lex_unit *unit);
619
- virtual void print (String *str, enum_query_type query_type);
619
+ void print (String *str, enum_query_type query_type);
620
+ enum precedence precedence () const { return CMP_PRECEDENCE; }
620
621
bool fix_fields (THD *thd, Item **ref);
621
622
void fix_length_and_dec ();
622
623
void fix_after_pullout (st_select_lex *new_parent, Item **ref);
@@ -740,7 +741,7 @@ class Item_allany_subselect :public Item_in_subselect
740
741
subs_type substype () { return all?ALL_SUBS:ANY_SUBS; }
741
742
bool select_transformer (JOIN *join);
742
743
void create_comp_func (bool invert) { func= func_creator (invert); }
743
- virtual void print (String *str, enum_query_type query_type);
744
+ void print (String *str, enum_query_type query_type);
744
745
bool is_maxmin_applicable (JOIN *join);
745
746
bool transform_into_max_min (JOIN *join);
746
747
void no_rows_in_result ();
@@ -849,7 +850,7 @@ class subselect_single_select_engine: public subselect_engine
849
850
uint8 uncacheable ();
850
851
void exclude ();
851
852
table_map upper_select_const_tables ();
852
- virtual void print (String *str, enum_query_type query_type);
853
+ void print (String *str, enum_query_type query_type);
853
854
bool change_result (Item_subselect *si,
854
855
select_result_interceptor *result,
855
856
bool temp);
@@ -883,7 +884,7 @@ class subselect_union_engine: public subselect_engine
883
884
uint8 uncacheable ();
884
885
void exclude ();
885
886
table_map upper_select_const_tables ();
886
- virtual void print (String *str, enum_query_type query_type);
887
+ void print (String *str, enum_query_type query_type);
887
888
bool change_result (Item_subselect *si,
888
889
select_result_interceptor *result,
889
890
bool temp= FALSE );
@@ -940,7 +941,7 @@ class subselect_uniquesubquery_engine: public subselect_engine
940
941
uint8 uncacheable () { return UNCACHEABLE_DEPENDENT_INJECTED; }
941
942
void exclude ();
942
943
table_map upper_select_const_tables () { return 0 ; }
943
- virtual void print (String *str, enum_query_type query_type);
944
+ void print (String *str, enum_query_type query_type);
944
945
bool change_result (Item_subselect *si,
945
946
select_result_interceptor *result,
946
947
bool temp= FALSE );
@@ -998,7 +999,7 @@ class subselect_indexsubquery_engine: public subselect_uniquesubquery_engine
998
999
having(having_arg)
999
1000
{}
1000
1001
int exec ();
1001
- virtual void print (String *str, enum_query_type query_type);
1002
+ void print (String *str, enum_query_type query_type);
1002
1003
virtual enum_engine_type engine_type () { return INDEXSUBQUERY_ENGINE; }
1003
1004
};
1004
1005
@@ -1073,11 +1074,8 @@ class subselect_hash_sj_engine : public subselect_engine
1073
1074
void cleanup ();
1074
1075
int prepare (THD *);
1075
1076
int exec ();
1076
- virtual void print (String *str, enum_query_type query_type);
1077
- uint cols ()
1078
- {
1079
- return materialize_engine->cols ();
1080
- }
1077
+ void print (String *str, enum_query_type query_type);
1078
+ uint cols () { return materialize_engine->cols (); }
1081
1079
uint8 uncacheable () { return materialize_engine->uncacheable (); }
1082
1080
table_map upper_select_const_tables () { return 0 ; }
1083
1081
bool no_rows () { return !tmp_table->file ->stats .records ; }
0 commit comments