mirror of
https://github.com/MariaDB/server.git
synced 2025-01-31 11:01:52 +01:00
Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/usr/home/ram/work/5.0.b12917
This commit is contained in:
commit
44619bb95d
1 changed files with 24 additions and 2 deletions
|
@ -6618,13 +6618,24 @@ void ndb_serialize_cond(const Item *item, void *arg)
|
||||||
case Item_func::BETWEEN:
|
case Item_func::BETWEEN:
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("BETWEEN, rewriting using AND"));
|
DBUG_PRINT("info", ("BETWEEN, rewriting using AND"));
|
||||||
|
Item_func_between *between_func= (Item_func_between *) func_item;
|
||||||
Ndb_rewrite_context *rewrite_context=
|
Ndb_rewrite_context *rewrite_context=
|
||||||
new Ndb_rewrite_context(func_item);
|
new Ndb_rewrite_context(func_item);
|
||||||
rewrite_context->next= context->rewrite_stack;
|
rewrite_context->next= context->rewrite_stack;
|
||||||
context->rewrite_stack= rewrite_context;
|
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"));
|
DBUG_PRINT("info", ("COND_AND_FUNC"));
|
||||||
curr_cond->ndb_item= new Ndb_item(Item_func::COND_AND_FUNC,
|
curr_cond->ndb_item=
|
||||||
func_item->argument_count() - 1);
|
new Ndb_item(Item_func::COND_AND_FUNC,
|
||||||
|
func_item->argument_count() - 1);
|
||||||
context->expect_only(Item::FIELD_ITEM);
|
context->expect_only(Item::FIELD_ITEM);
|
||||||
context->expect(Item::INT_ITEM);
|
context->expect(Item::INT_ITEM);
|
||||||
context->expect(Item::STRING_ITEM);
|
context->expect(Item::STRING_ITEM);
|
||||||
|
@ -6635,10 +6646,20 @@ void ndb_serialize_cond(const Item *item, void *arg)
|
||||||
case Item_func::IN_FUNC:
|
case Item_func::IN_FUNC:
|
||||||
{
|
{
|
||||||
DBUG_PRINT("info", ("IN_FUNC, rewriting using OR"));
|
DBUG_PRINT("info", ("IN_FUNC, rewriting using OR"));
|
||||||
|
Item_func_in *in_func= (Item_func_in *) func_item;
|
||||||
Ndb_rewrite_context *rewrite_context=
|
Ndb_rewrite_context *rewrite_context=
|
||||||
new Ndb_rewrite_context(func_item);
|
new Ndb_rewrite_context(func_item);
|
||||||
rewrite_context->next= context->rewrite_stack;
|
rewrite_context->next= context->rewrite_stack;
|
||||||
context->rewrite_stack= rewrite_context;
|
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"));
|
DBUG_PRINT("info", ("COND_OR_FUNC"));
|
||||||
curr_cond->ndb_item= new Ndb_item(Item_func::COND_OR_FUNC,
|
curr_cond->ndb_item= new Ndb_item(Item_func::COND_OR_FUNC,
|
||||||
func_item->argument_count() - 1);
|
func_item->argument_count() - 1);
|
||||||
|
@ -6960,6 +6981,7 @@ void ndb_serialize_cond(const Item *item, void *arg)
|
||||||
DBUG_PRINT("info", ("End of condition group"));
|
DBUG_PRINT("info", ("End of condition group"));
|
||||||
prev_cond= curr_cond;
|
prev_cond= curr_cond;
|
||||||
curr_cond= context->cond_ptr= new Ndb_cond();
|
curr_cond= context->cond_ptr= new Ndb_cond();
|
||||||
|
curr_cond->prev= prev_cond;
|
||||||
prev_cond->next= curr_cond;
|
prev_cond->next= curr_cond;
|
||||||
curr_cond->ndb_item= new Ndb_item(NDB_END_COND);
|
curr_cond->ndb_item= new Ndb_item(NDB_END_COND);
|
||||||
// Pop rewrite stack
|
// Pop rewrite stack
|
||||||
|
|
Loading…
Add table
Reference in a new issue