• Narayanan Venkateswaran's avatar
    WL#6161 Integrating with InnoDB codebase in MySQL 5.5 · 164080e4
    Narayanan Venkateswaran authored
          
    Changes in the InnoDB codebase required to compile and
    integrate the MEB codebase with MySQL 5.5.
    
    @ storage/innobase/btr/btr0btr.c
      Excluded buffer pool usage from MEB build.
     
      buf_pool_from_bpage calls are in buf0buf.ic, and
      the buffer pool functions from that file are
      disabled in MEB.
    @ storage/innobase/buf/buf0buf.c
      Disabling more buffer pool functions unused in MEB.
    @ storage/innobase/dict/dict0dict.c
      Disabling dict_ind_free that is unused in MEB.
    @ storage/innobase/dict/dict0mem.c
      The include
    
      #include "ha_prototypes.h"
    
      Was causing conflicts with definitions in my_global.h
    
      Linking C executable mysqlbackup
      libinnodb.a(dict0mem.c.o): In function `dict_mem_foreign_table_name_lookup_set':
      dict0mem.c:(.text+0x91c): undefined reference to `innobase_get_lower_case_table_names'
      libinnodb.a(dict0mem.c.o): In function `dict_mem_referenced_table_name_lookup_set':
      dict0mem.c:(.text+0x9fc): undefined reference to `innobase_get_lower_case_table_names'
      libinnodb.a(dict0mem.c.o): In function `dict_mem_foreign_table_name_lookup_set':
      dict0mem.c:(.text+0x96e): undefined reference to `innobase_casedn_str'
      libinnodb.a(dict0mem.c.o): In function `dict_mem_referenced_table_name_lookup_set':
      dict0mem.c:(.text+0xa4e): undefined reference to `innobase_casedn_str'
      collect2: ld returned 1 exit status
      make[2]: *** [mysqlbackup] Error 1
    
      innobase_get_lower_case_table_names
      innobase_casedn_str
      are functions that are part of ha_innodb.cc that is not part of the build
            
      dict_mem_foreign_table_name_lookup_set
      function is not there in the current codebase, meaning we do not use it in MEB.
    @ storage/innobase/fil/fil0fil.c
      The srv_fast_shutdown variable is declared in
      srv0srv.c that is not compiled in the
      mysqlbackup codebase.
    
      This throws an undeclared error.
    
      From the Manual
      ---------------
    
      innodb_fast_shutdown
      --------------------
    
      The InnoDB shutdown mode. The default value is 1
      as of MySQL 3.23.50, which causes a “fast� shutdown
      (the normal type of shutdown). If the value is 0,
      InnoDB does a full purge and an insert buffer merge
      before a shutdown. These operations can take minutes,
      or even hours in extreme cases. If the value is 1,
      InnoDB skips these operations at shutdown.
    
      This ideally does not matter from mysqlbackup
      @ storage/innobase/ha/ha0ha.c
      In file included from /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/ha/ha0ha.c:34:0:
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/btr0sea.h:286:17: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘*’ token
      make[2]: *** [CMakeFiles/innodb.dir/home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/ha/ha0ha.c.o] Error 1
      make[1]: *** [CMakeFiles/innodb.dir/all] Error 2
      make: *** [all] Error 2
    
      # include "sync0rw.h" is excluded from hotbackup compilation in dict0dict.h
    
      This causes extern rw_lock_t*	btr_search_latch_temp; to throw a failure because
      the definition of rw_lock_t is not found.
    @ storage/innobase/include/buf0buf.h
      Excluding buffer pool functions that are unused from the
      MEB codebase.
    @ storage/innobase/include/buf0buf.ic
      replicated the exclusion of
    
      #include "buf0flu.h"
      #include "buf0lru.h"
      #include "buf0rea.h"
    
      by looking at the current codebase in <meb-trunk>/src/innodb
      @ storage/innobase/include/dict0dict.h
      dict_table_x_lock_indexes, dict_table_x_unlock_indexes, dict_table_is_corrupted,
      dict_index_is_corrupted, buf_block_buf_fix_inc_func are unused in MEB and was
      leading to compilation errors and hence excluded.
    @ storage/innobase/include/dict0dict.ic
      dict_table_x_lock_indexes, dict_table_x_unlock_indexes, dict_table_is_corrupted,
      dict_index_is_corrupted, buf_block_buf_fix_inc_func are unused in MEB and was
      leading to compilation errors and hence excluded.
    @ storage/innobase/include/log0log.h
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/log0log.h: At top level:
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/log0log.h:767:2: error: expected specifier-qualifier-list before Ã¢â  ‚¬Ëœmutex_t’
    
      mutex_t definitions were excluded as seen from ambient code
      hence excluding definition for log_flush_order_mutex also.
    @ storage/innobase/include/os0file.h
      Bug in InnoDB code, create_mode should have been create.
    @ storage/innobase/include/srv0srv.h
      In file included from /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/buf/buf0buf.c:50:0:
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/srv0srv.h: At top level:
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/srv0srv.h:120:16: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘srv_use_native_aio’
    
      srv_use_native_aio - we do not use native aio of the OS anyway from MEB. MEB does not compile
      InnoDB with this option. Hence disabling it.
    @ storage/innobase/include/trx0sys.h
      [ 56%] Building C object CMakeFiles/innodb.dir/home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c.o
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c: In function ‘trx_sys_read_file_format_id’:
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c:1499:20: error: ‘TRX_SYS_FILE_FORMAT_TAG_MAGIC_N’   undeclared (first use in this function)
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c:1499:20: note: each undeclared identifier is reported only once for  each function it appears in
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c: At top level:
      /home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/include/buf0buf.h:607:1: warning: ‘buf_block_buf_fix_inc_func’ declared ‘static’ but never defined
      make[2]: *** [CMakeFiles/innodb.dir/home/narayanan/mysql-server/mysql-5.5-meb-rel3.8-innodb-integration-1/storage/innobase/trx/trx0sys.c.o] Error 1
    
      unused calls excluded to enable compilation
    @ storage/innobase/mem/mem0dbg.c
        excluding #include "ha_prototypes.h" that lead to definitions in ha_innodb.cc
    @ storage/innobase/os/os0file.c
        InnoDB not compiled with aio support from MEB anyway. Hence excluding this from
        the compilation.
    @ storage/innobase/page/page0zip.c
      page0zip.c:(.text+0x4e9e): undefined reference to `buf_pool_from_block'
      collect2: ld returned 1 exit status
    
      buf_pool_from_block defined in buf0buf.ic, most of the file is excluded for compilation of MEB
    @ storage/innobase/ut/ut0dbg.c
      excluding #include "ha_prototypes.h" since it leads to definitions in ha_innodb.cc
      innobase_basename(file) is defined in ha_innodb.cc. Hence excluding that also.
    @ storage/innobase/ut/ut0ut.c
      cal_tm unused from MEB, was leading to earnings, hence disabling for MEB.
    164080e4
ut0ut.c 17.4 KB