Commit 3c223a34 authored by unknown's avatar unknown
Browse files

Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into mysql.com:/opt/local/work/mysql-5.0-root


sql/item.cc:
  Auto merged
sql/item.h:
  Auto merged
parents a8286537 39f8776f
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ bar@mysql.com
bar@noter.intranet.mysql.r18.ru
bell@51.0.168.192.in-addr.arpa
bell@52.0.168.192.in-addr.arpa
bell@book.sanja.is.com.ua
bell@laptop.sanja.is.com.ua
bell@sanja.is.com.ua
bk@admin.bk
+1 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ libedit_a_DEPENDENCIES = @LIBEDIT_LOBJECTS@

pkginclude_HEADERS =	readline/readline.h

noinst_HEADERS =	chared.h el.h histedit.h key.h parse.h refresh.h sig.h \
noinst_HEADERS =	chared.h el.h el_term.h histedit.h key.h parse.h refresh.h sig.h \
			sys.h tokenizer.h config.h hist.h map.h prompt.h read.h \
			search.h tty.h libedit_term.h

+1 −1
Original line number Diff line number Diff line
@@ -2,6 +2,6 @@
/**
 * GCC linking problem...
 */
#ifdef DEFINE_CXA_PURE_VIRTUAL
#if 0
extern "C" { int __cxa_pure_virtual() { return 0;} }
#endif
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ extern "C" {
  void (* ndb_new_handler)() = 0;
}

#ifdef USE_MYSYS_NEW
#if 0

void *operator new (size_t sz)
{
+67 −1
Original line number Diff line number Diff line
@@ -454,6 +454,7 @@ void Item_ident::cleanup()
  db_name= orig_db_name; 
  table_name= orig_table_name;
  field_name= orig_field_name;
  depended_from= 0;
  DBUG_VOID_RETURN;
}

@@ -2448,6 +2449,71 @@ static void mark_as_dependent(THD *thd, SELECT_LEX *last, SELECT_LEX *current,
}


/*
  Mark range of selects and resolved identifier (field/reference) item as
  dependent

  SYNOPSIS
    mark_select_range_as_dependent()
    thd           - thread handler
    last_select   - select where resolved_item was resolved
    current_sel   - current select (select where resolved_item was placed)
    found_field   - field which was found during resolving
    found_item    - Item which was found during resolving (if resolved
                    identifier belongs to VIEW)
    resolved_item - Identifier which was resolved

  NOTE:
    We have to mark all items between current_sel (including) and
    last_select (excluding) as dependend (select before last_select should
    be marked with actual table mask used by resolved item, all other with
    OUTER_REF_TABLE_BIT) and also write dependence information to Item of
    resolved identifier.
*/

void mark_select_range_as_dependent(THD *thd,
                                    SELECT_LEX *last_select,
                                    SELECT_LEX *current_sel,
                                    Field *found_field, Item *found_item,
                                    Item_ident *resolved_item)
{
  /*
    Go from current SELECT to SELECT where field was resolved (it
    have to be reachable from current SELECT, because it was already
    done once when we resolved this field and cached result of
    resolving)
  */
  SELECT_LEX *previous_select= current_sel;
  for(;
      previous_select->outer_select() != last_select;
      previous_select= previous_select->outer_select())
  {
    Item_subselect *prev_subselect_item=
      previous_select->master_unit()->item;
    prev_subselect_item->used_tables_cache|= OUTER_REF_TABLE_BIT;
    prev_subselect_item->const_item_cache= 0;
  }
  {
    Item_subselect *prev_subselect_item=
      previous_select->master_unit()->item;
    Item_ident *dependent= resolved_item;
    if (found_field == view_ref_found)
    {
      Item::Type type= found_item->type();
      prev_subselect_item->used_tables_cache|=
        found_item->used_tables();
      dependent= ((type == Item::REF_ITEM || type == Item::FIELD_ITEM) ?
                  (Item_ident*) found_item :
                  0);
    }
    else
      prev_subselect_item->used_tables_cache|=
        found_field->table->map;
    prev_subselect_item->const_item_cache= 0;
    mark_as_dependent(thd, last_select, current_sel, resolved_item,
                      dependent);
  }
}


/*
Loading