~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/join.cc

Merge from Dennis Schoen

Show diffs side-by-side

added added

removed removed

Lines of Context:
623
623
  {
624
624
    conds=new Item_int((int64_t) 0,1);  // Always false
625
625
  }
 
626
 
626
627
  if (make_join_select(this, select, conds))
627
628
  {
628
629
    zero_result_cause=
830
831
  if (setup_subquery_materialization())
831
832
    return 1;
832
833
 
 
834
  /* Cache constant expressions in WHERE, HAVING, ON clauses. */
 
835
  cache_const_exprs();
 
836
 
833
837
  /*
834
838
    is this simple IN subquery?
835
839
  */
2393
2397
}
2394
2398
 
2395
2399
/**
 
2400
  Cache constant expressions in WHERE, HAVING, ON conditions.
 
2401
*/
 
2402
 
 
2403
void JOIN::cache_const_exprs()
 
2404
{
 
2405
  bool cache_flag= false;
 
2406
  bool *analyzer_arg= &cache_flag;
 
2407
 
 
2408
  /* No need in cache if all tables are constant. */
 
2409
  if (const_tables == tables)
 
2410
    return;
 
2411
 
 
2412
  if (conds)
 
2413
    conds->compile(&Item::cache_const_expr_analyzer, (unsigned char **)&analyzer_arg,
 
2414
                  &Item::cache_const_expr_transformer, (unsigned char *)&cache_flag);
 
2415
  cache_flag= false;
 
2416
  if (having)
 
2417
    having->compile(&Item::cache_const_expr_analyzer, (unsigned char **)&analyzer_arg,
 
2418
                    &Item::cache_const_expr_transformer, (unsigned char *)&cache_flag);
 
2419
 
 
2420
  for (JoinTable *tab= join_tab + const_tables; tab < join_tab + tables ; tab++)
 
2421
  {
 
2422
    if (*tab->on_expr_ref)
 
2423
    {
 
2424
      cache_flag= false;
 
2425
      (*tab->on_expr_ref)->compile(&Item::cache_const_expr_analyzer,
 
2426
                                 (unsigned char **)&analyzer_arg,
 
2427
                                 &Item::cache_const_expr_transformer,
 
2428
                                 (unsigned char *)&cache_flag);
 
2429
    }
 
2430
  }
 
2431
}
 
2432
 
 
2433
/**
2396
2434
  @brief
2397
2435
  
2398
2436
  Process one record of the nested loop join.