• unknown's avatar
    Bug #27084 partitioning by list seems failing when using case · 50563d39
    unknown authored
    creation of the partitioned table could fail as we created Item-s for
    it's list function in thd->mem_root, and then do Item->fix_fields
    in the context of other table->mem_root (so that memory alloced
    there was alloced in this table->mem_root). As we freed the
    table->mem_root before we do thd->free_items, our Item-s had
    pointers to the freed memory, that caused the crash
    
    
    mysql-test/r/partition.result:
      result
    mysql-test/t/partition.test:
      testcase
    sql/item_cmpfunc.cc:
      here is better place for the implementation
    sql/item_cmpfunc.h:
      implementation moved to .cc file
    sql/sql_partition.cc:
      work_part_info_used parameter added to mysql_unpack_partition
    sql/sql_partition.h:
      work_part_info_used parameter added to mysql_unpack_partition
    sql/table.cc:
      we do 'fix_partition_func' using the proper arena now.
      It's necessary as Item_*::fix_fields can alloc memory
      using thd->mem_root and this has to be same mem_root that
      we used to alloc these Item-s
    50563d39
item_cmpfunc.h 48.8 KB