Loading myisam/mi_check.c +17 −9 Original line number Diff line number Diff line Loading @@ -3790,6 +3790,7 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) ha_rows max_records; ulonglong file_length,tmp_length; MI_CREATE_INFO create_info; DBUG_ENTER("recreate_table"); error=1; /* Default error */ info= **org_info; Loading @@ -3799,7 +3800,7 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) unpack= (share.options & HA_OPTION_COMPRESS_RECORD) && (param->testflag & T_UNPACK); if (!(keyinfo=(MI_KEYDEF*) my_alloca(sizeof(MI_KEYDEF)*share.base.keys))) return 0; DBUG_RETURN(0); memcpy((byte*) keyinfo,(byte*) share.keyinfo, (size_t) (sizeof(MI_KEYDEF)*share.base.keys)); Loading @@ -3808,14 +3809,14 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) (key_parts+share.base.keys)))) { my_afree((gptr) keyinfo); return 1; DBUG_RETURN(1); } if (!(recdef=(MI_COLUMNDEF*) my_alloca(sizeof(MI_COLUMNDEF)*(share.base.fields+1)))) { my_afree((gptr) keyinfo); my_afree((gptr) keysegs); return 1; DBUG_RETURN(1); } if (!(uniquedef=(MI_UNIQUEDEF*) my_alloca(sizeof(MI_UNIQUEDEF)*(share.state.header.uniques+1)))) Loading @@ -3823,7 +3824,7 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) my_afree((gptr) recdef); my_afree((gptr) keyinfo); my_afree((gptr) keysegs); return 1; DBUG_RETURN(1); } /* Copy the column definitions */ Loading Loading @@ -3896,6 +3897,11 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) create_info.language = (param->language ? param->language : share.state.header.language); create_info.key_file_length= status_info.key_file_length; /* Allow for creating an auto_increment key. This has an effect only if an auto_increment key exists in the original table. */ create_info.with_auto_increment= TRUE; /* We don't have to handle symlinks here because we are using HA_DONT_TOUCH_DATA */ if (mi_create(filename, Loading Loading @@ -3940,7 +3946,7 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) my_afree((gptr) keyinfo); my_afree((gptr) recdef); my_afree((gptr) keysegs); return error; DBUG_RETURN(error); } Loading Loading @@ -4043,6 +4049,8 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, my_bool repair_only) { byte *record; DBUG_ENTER("update_auto_increment_key"); if (!info->s->base.auto_key || !(((ulonglong) 1 << (info->s->base.auto_key-1) & info->s->state.key_map))) Loading @@ -4051,7 +4059,7 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, mi_check_print_info(param, "Table: %s doesn't have an auto increment key\n", param->isam_file_name); return; DBUG_VOID_RETURN; } if (!(param->testflag & T_SILENT) && !(param->testflag & T_REP)) Loading @@ -4064,7 +4072,7 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, MYF(0)))) { mi_check_print_error(param,"Not enough memory for extra record"); return; DBUG_VOID_RETURN; } mi_extra(info,HA_EXTRA_KEYREAD,0); Loading @@ -4075,7 +4083,7 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, mi_extra(info,HA_EXTRA_NO_KEYREAD,0); my_free((char*) record, MYF(0)); mi_check_print_error(param,"%d when reading last record",my_errno); return; DBUG_VOID_RETURN; } if (!repair_only) info->s->state.auto_increment=param->auto_increment_value; Loading @@ -4091,7 +4099,7 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, mi_extra(info,HA_EXTRA_NO_KEYREAD,0); my_free((char*) record, MYF(0)); update_state_info(param, info, UPDATE_AUTO_INC); return; DBUG_VOID_RETURN; } Loading mysql-test/r/func_misc.result +2 −2 Original line number Diff line number Diff line Loading @@ -76,13 +76,13 @@ IS_USED_LOCK('bug16501') = CONNECTION_ID() SELECT RELEASE_LOCK('bug16501'); RELEASE_LOCK('bug16501') 1 GET_LOCK('bug16501',600) 1 SELECT IS_USED_LOCK('bug16501') = connection_id FROM t1 WHERE conn = 'con1'; IS_USED_LOCK('bug16501') = connection_id 1 GET_LOCK('bug16501',600) 1 SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID(); IS_USED_LOCK('bug16501') = CONNECTION_ID() 1 Loading mysql-test/t/func_misc.test +3 −1 Original line number Diff line number Diff line Loading @@ -66,12 +66,14 @@ send SELECT GET_LOCK('bug16501',600); connection default; SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID(); SELECT RELEASE_LOCK('bug16501'); connection con1; reap; connection default; SELECT IS_USED_LOCK('bug16501') = connection_id FROM t1 WHERE conn = 'con1'; connection con1; reap; SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID(); SELECT RELEASE_LOCK('bug16501'); SELECT IS_USED_LOCK('bug16501'); Loading Loading
myisam/mi_check.c +17 −9 Original line number Diff line number Diff line Loading @@ -3790,6 +3790,7 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) ha_rows max_records; ulonglong file_length,tmp_length; MI_CREATE_INFO create_info; DBUG_ENTER("recreate_table"); error=1; /* Default error */ info= **org_info; Loading @@ -3799,7 +3800,7 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) unpack= (share.options & HA_OPTION_COMPRESS_RECORD) && (param->testflag & T_UNPACK); if (!(keyinfo=(MI_KEYDEF*) my_alloca(sizeof(MI_KEYDEF)*share.base.keys))) return 0; DBUG_RETURN(0); memcpy((byte*) keyinfo,(byte*) share.keyinfo, (size_t) (sizeof(MI_KEYDEF)*share.base.keys)); Loading @@ -3808,14 +3809,14 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) (key_parts+share.base.keys)))) { my_afree((gptr) keyinfo); return 1; DBUG_RETURN(1); } if (!(recdef=(MI_COLUMNDEF*) my_alloca(sizeof(MI_COLUMNDEF)*(share.base.fields+1)))) { my_afree((gptr) keyinfo); my_afree((gptr) keysegs); return 1; DBUG_RETURN(1); } if (!(uniquedef=(MI_UNIQUEDEF*) my_alloca(sizeof(MI_UNIQUEDEF)*(share.state.header.uniques+1)))) Loading @@ -3823,7 +3824,7 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) my_afree((gptr) recdef); my_afree((gptr) keyinfo); my_afree((gptr) keysegs); return 1; DBUG_RETURN(1); } /* Copy the column definitions */ Loading Loading @@ -3896,6 +3897,11 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) create_info.language = (param->language ? param->language : share.state.header.language); create_info.key_file_length= status_info.key_file_length; /* Allow for creating an auto_increment key. This has an effect only if an auto_increment key exists in the original table. */ create_info.with_auto_increment= TRUE; /* We don't have to handle symlinks here because we are using HA_DONT_TOUCH_DATA */ if (mi_create(filename, Loading Loading @@ -3940,7 +3946,7 @@ int recreate_table(MI_CHECK *param, MI_INFO **org_info, char *filename) my_afree((gptr) keyinfo); my_afree((gptr) recdef); my_afree((gptr) keysegs); return error; DBUG_RETURN(error); } Loading Loading @@ -4043,6 +4049,8 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, my_bool repair_only) { byte *record; DBUG_ENTER("update_auto_increment_key"); if (!info->s->base.auto_key || !(((ulonglong) 1 << (info->s->base.auto_key-1) & info->s->state.key_map))) Loading @@ -4051,7 +4059,7 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, mi_check_print_info(param, "Table: %s doesn't have an auto increment key\n", param->isam_file_name); return; DBUG_VOID_RETURN; } if (!(param->testflag & T_SILENT) && !(param->testflag & T_REP)) Loading @@ -4064,7 +4072,7 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, MYF(0)))) { mi_check_print_error(param,"Not enough memory for extra record"); return; DBUG_VOID_RETURN; } mi_extra(info,HA_EXTRA_KEYREAD,0); Loading @@ -4075,7 +4083,7 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, mi_extra(info,HA_EXTRA_NO_KEYREAD,0); my_free((char*) record, MYF(0)); mi_check_print_error(param,"%d when reading last record",my_errno); return; DBUG_VOID_RETURN; } if (!repair_only) info->s->state.auto_increment=param->auto_increment_value; Loading @@ -4091,7 +4099,7 @@ void update_auto_increment_key(MI_CHECK *param, MI_INFO *info, mi_extra(info,HA_EXTRA_NO_KEYREAD,0); my_free((char*) record, MYF(0)); update_state_info(param, info, UPDATE_AUTO_INC); return; DBUG_VOID_RETURN; } Loading
mysql-test/r/func_misc.result +2 −2 Original line number Diff line number Diff line Loading @@ -76,13 +76,13 @@ IS_USED_LOCK('bug16501') = CONNECTION_ID() SELECT RELEASE_LOCK('bug16501'); RELEASE_LOCK('bug16501') 1 GET_LOCK('bug16501',600) 1 SELECT IS_USED_LOCK('bug16501') = connection_id FROM t1 WHERE conn = 'con1'; IS_USED_LOCK('bug16501') = connection_id 1 GET_LOCK('bug16501',600) 1 SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID(); IS_USED_LOCK('bug16501') = CONNECTION_ID() 1 Loading
mysql-test/t/func_misc.test +3 −1 Original line number Diff line number Diff line Loading @@ -66,12 +66,14 @@ send SELECT GET_LOCK('bug16501',600); connection default; SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID(); SELECT RELEASE_LOCK('bug16501'); connection con1; reap; connection default; SELECT IS_USED_LOCK('bug16501') = connection_id FROM t1 WHERE conn = 'con1'; connection con1; reap; SELECT IS_USED_LOCK('bug16501') = CONNECTION_ID(); SELECT RELEASE_LOCK('bug16501'); SELECT IS_USED_LOCK('bug16501'); Loading