Loading sql/ha_ndbcluster.cc +24 −2 Original line number Diff line number Diff line Loading @@ -6618,12 +6618,23 @@ void ndb_serialize_cond(const Item *item, void *arg) case Item_func::BETWEEN: { DBUG_PRINT("info", ("BETWEEN, rewriting using AND")); Item_func_between *between_func= (Item_func_between *) func_item; Ndb_rewrite_context *rewrite_context= new Ndb_rewrite_context(func_item); rewrite_context->next= context->rewrite_stack; context->rewrite_stack= rewrite_context; if (between_func->negated) { DBUG_PRINT("info", ("NOT_FUNC")); curr_cond->ndb_item= new Ndb_item(Item_func::NOT_FUNC, 1); prev_cond= curr_cond; curr_cond= context->cond_ptr= new Ndb_cond(); curr_cond->prev= prev_cond; prev_cond->next= curr_cond; } DBUG_PRINT("info", ("COND_AND_FUNC")); curr_cond->ndb_item= new Ndb_item(Item_func::COND_AND_FUNC, curr_cond->ndb_item= new Ndb_item(Item_func::COND_AND_FUNC, func_item->argument_count() - 1); context->expect_only(Item::FIELD_ITEM); context->expect(Item::INT_ITEM); Loading @@ -6635,10 +6646,20 @@ void ndb_serialize_cond(const Item *item, void *arg) case Item_func::IN_FUNC: { DBUG_PRINT("info", ("IN_FUNC, rewriting using OR")); Item_func_in *in_func= (Item_func_in *) func_item; Ndb_rewrite_context *rewrite_context= new Ndb_rewrite_context(func_item); rewrite_context->next= context->rewrite_stack; context->rewrite_stack= rewrite_context; if (in_func->negated) { DBUG_PRINT("info", ("NOT_FUNC")); curr_cond->ndb_item= new Ndb_item(Item_func::NOT_FUNC, 1); prev_cond= curr_cond; curr_cond= context->cond_ptr= new Ndb_cond(); curr_cond->prev= prev_cond; prev_cond->next= curr_cond; } DBUG_PRINT("info", ("COND_OR_FUNC")); curr_cond->ndb_item= new Ndb_item(Item_func::COND_OR_FUNC, func_item->argument_count() - 1); Loading Loading @@ -6960,6 +6981,7 @@ void ndb_serialize_cond(const Item *item, void *arg) DBUG_PRINT("info", ("End of condition group")); prev_cond= curr_cond; curr_cond= context->cond_ptr= new Ndb_cond(); curr_cond->prev= prev_cond; prev_cond->next= curr_cond; curr_cond->ndb_item= new Ndb_item(NDB_END_COND); // Pop rewrite stack Loading Loading
sql/ha_ndbcluster.cc +24 −2 Original line number Diff line number Diff line Loading @@ -6618,12 +6618,23 @@ void ndb_serialize_cond(const Item *item, void *arg) case Item_func::BETWEEN: { DBUG_PRINT("info", ("BETWEEN, rewriting using AND")); Item_func_between *between_func= (Item_func_between *) func_item; Ndb_rewrite_context *rewrite_context= new Ndb_rewrite_context(func_item); rewrite_context->next= context->rewrite_stack; context->rewrite_stack= rewrite_context; if (between_func->negated) { DBUG_PRINT("info", ("NOT_FUNC")); curr_cond->ndb_item= new Ndb_item(Item_func::NOT_FUNC, 1); prev_cond= curr_cond; curr_cond= context->cond_ptr= new Ndb_cond(); curr_cond->prev= prev_cond; prev_cond->next= curr_cond; } DBUG_PRINT("info", ("COND_AND_FUNC")); curr_cond->ndb_item= new Ndb_item(Item_func::COND_AND_FUNC, curr_cond->ndb_item= new Ndb_item(Item_func::COND_AND_FUNC, func_item->argument_count() - 1); context->expect_only(Item::FIELD_ITEM); context->expect(Item::INT_ITEM); Loading @@ -6635,10 +6646,20 @@ void ndb_serialize_cond(const Item *item, void *arg) case Item_func::IN_FUNC: { DBUG_PRINT("info", ("IN_FUNC, rewriting using OR")); Item_func_in *in_func= (Item_func_in *) func_item; Ndb_rewrite_context *rewrite_context= new Ndb_rewrite_context(func_item); rewrite_context->next= context->rewrite_stack; context->rewrite_stack= rewrite_context; if (in_func->negated) { DBUG_PRINT("info", ("NOT_FUNC")); curr_cond->ndb_item= new Ndb_item(Item_func::NOT_FUNC, 1); prev_cond= curr_cond; curr_cond= context->cond_ptr= new Ndb_cond(); curr_cond->prev= prev_cond; prev_cond->next= curr_cond; } DBUG_PRINT("info", ("COND_OR_FUNC")); curr_cond->ndb_item= new Ndb_item(Item_func::COND_OR_FUNC, func_item->argument_count() - 1); Loading Loading @@ -6960,6 +6981,7 @@ void ndb_serialize_cond(const Item *item, void *arg) DBUG_PRINT("info", ("End of condition group")); prev_cond= curr_cond; curr_cond= context->cond_ptr= new Ndb_cond(); curr_cond->prev= prev_cond; prev_cond->next= curr_cond; curr_cond->ndb_item= new Ndb_item(NDB_END_COND); // Pop rewrite stack Loading