@ -6707,144 +6707,6 @@ dict_sys_get_size()
return size ;
}
/** Look for any dictionary objects that are found in the given tablespace.
@ param [ in ] space_id Tablespace ID to search for .
@ return true if tablespace is empty . */
bool
dict_space_is_empty (
ulint space_id )
{
btr_pcur_t pcur ;
const rec_t * rec ;
mtr_t mtr ;
bool found = false ;
rw_lock_x_lock ( & dict_operation_lock ) ;
mutex_enter ( & dict_sys - > mutex ) ;
mtr_start ( & mtr ) ;
for ( rec = dict_startscan_system ( & pcur , & mtr , SYS_TABLES ) ;
rec ! = NULL ;
rec = dict_getnext_system ( & pcur , & mtr ) ) {
const byte * field ;
ulint len ;
ulint space_id_for_table ;
field = rec_get_nth_field_old (
rec , DICT_FLD__SYS_TABLES__SPACE , & len ) ;
ut_ad ( len = = 4 ) ;
space_id_for_table = mach_read_from_4 ( field ) ;
if ( space_id_for_table = = space_id ) {
found = true ;
}
}
mtr_commit ( & mtr ) ;
mutex_exit ( & dict_sys - > mutex ) ;
rw_lock_x_unlock ( & dict_operation_lock ) ;
return ( ! found ) ;
}
/** Find the space_id for the given name in sys_tablespaces.
@ param [ in ] name Tablespace name to search for .
@ return the tablespace ID . */
ulint
dict_space_get_id (
const char * name )
{
btr_pcur_t pcur ;
const rec_t * rec ;
mtr_t mtr ;
ulint name_len = strlen ( name ) ;
ulint id = ULINT_UNDEFINED ;
rw_lock_x_lock ( & dict_operation_lock ) ;
mutex_enter ( & dict_sys - > mutex ) ;
mtr_start ( & mtr ) ;
for ( rec = dict_startscan_system ( & pcur , & mtr , SYS_TABLESPACES ) ;
rec ! = NULL ;
rec = dict_getnext_system ( & pcur , & mtr ) ) {
const byte * field ;
ulint len ;
field = rec_get_nth_field_old (
rec , DICT_FLD__SYS_TABLESPACES__NAME , & len ) ;
ut_ad ( len > 0 ) ;
ut_ad ( len < OS_FILE_MAX_PATH ) ;
if ( len = = name_len & & ut_memcmp ( name , field , len ) = = 0 ) {
field = rec_get_nth_field_old (
rec , DICT_FLD__SYS_TABLESPACES__SPACE , & len ) ;
ut_ad ( len = = 4 ) ;
id = mach_read_from_4 ( field ) ;
/* This is normally called by dict_getnext_system()
at the end of the index . */
btr_pcur_close ( & pcur ) ;
break ;
}
}
mtr_commit ( & mtr ) ;
mutex_exit ( & dict_sys - > mutex ) ;
rw_lock_x_unlock ( & dict_operation_lock ) ;
return ( id ) ;
}
/** Determine the extent size (in pages) for the given table
@ param [ in ] table the table whose extent size is being
calculated .
@ return extent size in pages ( 256 , 128 or 64 ) */
ulint
dict_table_extent_size (
const dict_table_t * table )
{
const ulint mb_1 = 1024 * 1024 ;
const ulint mb_2 = 2 * mb_1 ;
const ulint mb_4 = 4 * mb_1 ;
page_size_t page_size = dict_table_page_size ( table ) ;
ulint pages_in_extent = FSP_EXTENT_SIZE ;
if ( page_size . is_compressed ( ) ) {
ulint disk_page_size = page_size . physical ( ) ;
switch ( disk_page_size ) {
case 1024 :
pages_in_extent = mb_1 / 1024 ;
break ;
case 2048 :
pages_in_extent = mb_1 / 2048 ;
break ;
case 4096 :
pages_in_extent = mb_1 / 4096 ;
break ;
case 8192 :
pages_in_extent = mb_1 / 8192 ;
break ;
case 16384 :
pages_in_extent = mb_1 / 16384 ;
break ;
case 32768 :
pages_in_extent = mb_2 / 32768 ;
break ;
case 65536 :
pages_in_extent = mb_4 / 65536 ;
break ;
default :
ut_ad ( 0 ) ;
}
}
return ( pages_in_extent ) ;
}
size_t
dict_table_t : : get_overflow_field_local_len ( ) const
{