diff options
author | unknown <monty@mysql.com> | 2003-11-23 14:36:41 +0200 |
---|---|---|
committer | unknown <monty@mysql.com> | 2003-11-23 14:36:41 +0200 |
commit | ce44db9fb1fc20133e05cab5cd99195c814f3b05 (patch) | |
tree | df2c427c1d086dc0727fa8656815cece6df4aeb2 | |
parent | b1a563c39233b6af3939f23e4b50d89d7b28a74a (diff) | |
download | mariadb-git-ce44db9fb1fc20133e05cab5cd99195c814f3b05.tar.gz |
Fixed compiler warnings from Intel compiler in Win64
Added option --max-record-length=# to myisamchk
Don't try repair twice if doing myisamchk --repair --force
Shared memory handler didn't clean up things on errors or shutdown
VC++Files/libmysqltest/mytest.c:
Fixed compiler warnings from Intel compiler
include/myisam.h:
Added option --max-record-length=# to myisamchk
include/mysql_com.h:
Fixed compiler warnings from Intel compiler
innobase/btr/btr0btr.c:
Fixed compiler warnings from Intel compiler
innobase/btr/btr0cur.c:
Fixed compiler warnings from Intel compiler
innobase/include/btr0btr.ic:
Fixed compiler warnings from Intel compiler
innobase/include/buf0buf.ic:
Fixed compiler warnings from Intel compiler
innobase/include/row0sel.ic:
Fixed compiler warnings from Intel compiler
innobase/include/row0upd.ic:
Fixed compiler warnings from Intel compiler
innobase/include/trx0rseg.ic:
Fixed compiler warnings from Intel compiler
innobase/pars/pars0opt.c:
Fixed compiler warnings from Intel compiler
innobase/que/que0que.c:
Fixed compiler warnings from Intel compiler
myisam/mi_check.c:
Added option --max-record-length=# to myisamchk
Better error messages
myisam/myisamchk.c:
Added option --max-record-length=# to myisamchk
Don't try repair twice if doing myisamchk --repair --force
mysql-test/r/create.result:
Updated test results
mysql-test/t/create.test:
Better initialization
sql/ha_innodb.cc:
Fixed compiler warnings from Intel compiler
sql/item_func.cc:
Fixed compiler warnings from Intel compiler
sql/mysqld.cc:
Fixed compiler warnings from Intel compiler
Cleaned up handle_connections_shared_memory
Shared memory handler didn't clean up things on errors or shutdown
strings/bmove512.c:
Fixed compiler warnings from Intel compiler
-rw-r--r-- | VC++Files/libmysqltest/mytest.c | 48 | ||||
-rw-r--r-- | include/myisam.h | 1 | ||||
-rw-r--r-- | include/mysql_com.h | 2 | ||||
-rw-r--r-- | innobase/btr/btr0btr.c | 34 | ||||
-rw-r--r-- | innobase/btr/btr0cur.c | 27 | ||||
-rw-r--r-- | innobase/include/btr0btr.ic | 2 | ||||
-rw-r--r-- | innobase/include/buf0buf.ic | 8 | ||||
-rw-r--r-- | innobase/include/row0sel.ic | 2 | ||||
-rw-r--r-- | innobase/include/row0upd.ic | 4 | ||||
-rw-r--r-- | innobase/include/trx0rseg.ic | 4 | ||||
-rw-r--r-- | innobase/pars/pars0opt.c | 5 | ||||
-rw-r--r-- | innobase/que/que0que.c | 13 | ||||
-rw-r--r-- | myisam/mi_check.c | 91 | ||||
-rw-r--r-- | myisam/myisamchk.c | 15 | ||||
-rw-r--r-- | mysql-test/r/create.result | 5 | ||||
-rw-r--r-- | mysql-test/t/create.test | 6 | ||||
-rw-r--r-- | sql/ha_innodb.cc | 7 | ||||
-rw-r--r-- | sql/item_func.cc | 1 | ||||
-rw-r--r-- | sql/mysqld.cc | 224 | ||||
-rw-r--r-- | strings/bmove512.c | 2 |
20 files changed, 265 insertions, 236 deletions
diff --git a/VC++Files/libmysqltest/mytest.c b/VC++Files/libmysqltest/mytest.c index ceecbb19902..9af8c486e40 100644 --- a/VC++Files/libmysqltest/mytest.c +++ b/VC++Files/libmysqltest/mytest.c @@ -40,7 +40,7 @@ main( int argc, char * argv[] ) MYSQL_ROW row ;
//....just curious....
- printf( "sizeof( MYSQL ) == %d\n", sizeof( MYSQL ) ) ;
+ printf( "sizeof( MYSQL ) == %d\n", (int) sizeof( MYSQL ) ) ; if ( argc == 2 )
{
strcpy( szDB, argv[ 1 ] ) ;
@@ -49,27 +49,31 @@ main( int argc, char * argv[] ) {
strcpy( szDB, "mysql" ) ;
printf("Some mysql struct information (size and offset):\n");
- printf("net:\t%3d %3d\n",sizeof(myData->net),offsetof(MYSQL,net));
- printf("host:\t%3d %3d\n",sizeof(myData->host),offsetof(MYSQL,host));
- printf("port:\t%3d %3d\n",sizeof(myData->port),offsetof(MYSQL,port));
- printf("protocol_version:\t%3d %3d\n",sizeof(myData->protocol_version),
- offsetof(MYSQL,protocol_version));
- printf("thread_id:\t%3d %3d\n",sizeof(myData->thread_id),
- offsetof(MYSQL,thread_id));
- printf("affected_rows:\t%3d %3d\n",sizeof(myData->affected_rows),
- offsetof(MYSQL,affected_rows));
- printf("packet_length:\t%3d %3d\n",sizeof(myData->packet_length),
- offsetof(MYSQL,packet_length));
- printf("status:\t%3d %3d\n",sizeof(myData->status),
- offsetof(MYSQL,status));
- printf("fields:\t%3d %3d\n",sizeof(myData->fields),
- offsetof(MYSQL,fields));
- printf("field_alloc:\t%3d %3d\n",sizeof(myData->field_alloc),
- offsetof(MYSQL,field_alloc));
- printf("free_me:\t%3d %3d\n",sizeof(myData->free_me),
- offsetof(MYSQL,free_me));
- printf("options:\t%3d %3d\n",sizeof(myData->options),
- offsetof(MYSQL,options));
+ printf("net:\t%3d %3d\n",(int) sizeof(myData->net), + (int) offsetof(MYSQL,net)); + printf("host:\t%3d %3d\n",(int) sizeof(myData->host), + (int) offsetof(MYSQL,host)); + printf("port:\t%3d %3d\n", (int) sizeof(myData->port), + (int) offsetof(MYSQL,port)); + printf("protocol_version:\t%3d %3d\n", + (int) sizeof(myData->protocol_version), + (int) offsetof(MYSQL,protocol_version)); + printf("thread_id:\t%3d %3d\n",(int) sizeof(myData->thread_id), + (int) offsetof(MYSQL,thread_id)); + printf("affected_rows:\t%3d %3d\n",(int) sizeof(myData->affected_rows), + (int) offsetof(MYSQL,affected_rows)); + printf("packet_length:\t%3d %3d\n",(int) sizeof(myData->packet_length), + (int) offsetof(MYSQL,packet_length)); + printf("status:\t%3d %3d\n",(int) sizeof(myData->status), + (int) offsetof(MYSQL,status)); + printf("fields:\t%3d %3d\n",(int) sizeof(myData->fields), + (int) offsetof(MYSQL,fields)); + printf("field_alloc:\t%3d %3d\n",(int) sizeof(myData->field_alloc), + (int) offsetof(MYSQL,field_alloc)); + printf("free_me:\t%3d %3d\n",(int) sizeof(myData->free_me), + (int) offsetof(MYSQL,free_me)); + printf("options:\t%3d %3d\n",(int) sizeof(myData->options), + (int) offsetof(MYSQL,options)); puts("");
}
}
diff --git a/include/myisam.h b/include/myisam.h index 613a9965832..2285f996464 100644 --- a/include/myisam.h +++ b/include/myisam.h @@ -318,6 +318,7 @@ typedef struct st_mi_check_param ulonglong auto_increment_value; ulonglong max_data_file_length; ulonglong keys_in_use; + ulonglong max_record_length; my_off_t search_after_block; my_off_t new_file_pos,key_file_blocks; my_off_t keydata,totaldata,key_blocks,start_check_pos; diff --git a/include/mysql_com.h b/include/mysql_com.h index 3031b883e98..39e9c48146d 100644 --- a/include/mysql_com.h +++ b/include/mysql_com.h @@ -118,7 +118,7 @@ enum enum_server_command #define CLIENT_SECURE_CONNECTION 32768 /* New 4.1 authentication */ #define CLIENT_MULTI_STATEMENTS 65536 /* Enable/disable multi-stmt support */ #define CLIENT_MULTI_RESULTS 131072 /* Enable/disable multi-results */ -#define CLIENT_REMEMBER_OPTIONS (1L << 31) +#define CLIENT_REMEMBER_OPTIONS ((ulong) (1L << 31)) #define SERVER_STATUS_IN_TRANS 1 /* Transaction has started */ #define SERVER_STATUS_AUTOCOMMIT 2 /* Server in auto_commit mode */ diff --git a/innobase/btr/btr0btr.c b/innobase/btr/btr0btr.c index 3d11cbe1748..686c35d1300 100644 --- a/innobase/btr/btr0btr.c +++ b/innobase/btr/btr0btr.c @@ -600,8 +600,8 @@ btr_page_get_father_for_rec( "InnoDB: father ptr page no %lu, child page no %lu\n", (UT_LIST_GET_FIRST(tree->tree_indexes))->table_name, (UT_LIST_GET_FIRST(tree->tree_indexes))->name, - btr_node_ptr_get_child_page_no(node_ptr), - buf_frame_get_page_no(page)); + (unsigned long) btr_node_ptr_get_child_page_no(node_ptr), + (unsigned long) buf_frame_get_page_no(page)); page_rec_print(page_rec_get_next(page_get_infimum_rec(page))); page_rec_print(node_ptr); @@ -877,7 +877,9 @@ btr_page_reorganize_low( "InnoDB: Error: page old data size %lu new data size %lu\n" "InnoDB: Error: page old max ins size %lu new max ins size %lu\n" "InnoDB: Make a detailed bug report and send it to mysql@lists.mysql.com\n", - data_size1, data_size2, max_ins_size1, max_ins_size2); + (unsigned long) data_size1, (unsigned long) data_size2, + (unsigned long) max_ins_size1, + (unsigned long) max_ins_size2); } buf_frame_free(new_page); @@ -2356,8 +2358,10 @@ btr_index_rec_validate( "InnoDB: Record in index %s in table %s, page %lu, at offset %lu\n" "InnoDB: has %lu fields, should have %lu\n", index->name, index->table_name, - buf_frame_get_page_no(page), (ulint)(rec - page), - rec_get_n_fields(rec), n); + (unsigned long) buf_frame_get_page_no(page), + (unsigned long) (rec - page), + (unsigned long) rec_get_n_fields(rec), + (unsigned long) n); if (!dump_on_error) { @@ -2390,9 +2394,11 @@ btr_index_rec_validate( "InnoDB: Record in index %s in table %s, page %lu, at offset %lu\n" "InnoDB: field %lu len is %lu, should be %lu\n", index->name, index->table_name, - buf_frame_get_page_no(page), - (ulint)(rec - page), - i, len, dtype_get_fixed_size(type)); + (unsigned long) buf_frame_get_page_no(page), + (unsigned long) (rec - page), + (unsigned long) i, + (unsigned long) len, + (unsigned long) dtype_get_fixed_size(type)); if (!dump_on_error) { @@ -2541,7 +2547,7 @@ loop: fprintf(stderr, "InnoDB: Error on pages %lu and %lu in index %s table %s\n", buf_frame_get_page_no(page), - right_page_no, + (unsigned long) right_page_no, index->name, index->table_name); fprintf(stderr, @@ -2581,7 +2587,7 @@ loop: &mtr)) { fprintf(stderr, "InnoDB: Error on page %lu in index %s table %s\n", - buf_frame_get_page_no(page), + (unsigned long) buf_frame_get_page_no(page), index->name, index->table_name); fprintf(stderr, @@ -2596,7 +2602,7 @@ loop: fprintf(stderr, "InnoDB: node ptr child page n:o %lu\n", - btr_node_ptr_get_child_page_no(node_ptr)); + (unsigned long) btr_node_ptr_get_child_page_no(node_ptr)); rec_sprintf(err_buf, 900, btr_page_get_father_for_rec(tree, page, @@ -2679,7 +2685,7 @@ loop: fprintf(stderr, "InnoDB: Error on page %lu in index %s table %s\n", - buf_frame_get_page_no(page), + (unsigned long) buf_frame_get_page_no(page), index->name, index->table_name); buf_page_print(father_page); @@ -2699,7 +2705,7 @@ loop: fprintf(stderr, "InnoDB: Error on page %lu in index %s table %s\n", - buf_frame_get_page_no(page), + (unsigned long) buf_frame_get_page_no(page), index->name, index->table_name); buf_page_print(father_page); @@ -2717,7 +2723,7 @@ loop: fprintf(stderr, "InnoDB: Error on page %lu in index %s table %s\n", - buf_frame_get_page_no(page), + (unsigned long) buf_frame_get_page_no(page), index->name, index->table_name); buf_page_print(father_page); diff --git a/innobase/btr/btr0cur.c b/innobase/btr/btr0cur.c index 5743ba54544..93e9e815c99 100644 --- a/innobase/btr/btr0cur.c +++ b/innobase/btr/btr0cur.c @@ -874,8 +874,8 @@ btr_cur_optimistic_insert( if (btr_cur_print_record_ops && thr) { printf( "Trx with id %lu %lu going to insert to table %s index %s\n", - ut_dulint_get_high(thr_get_trx(thr)->id), - ut_dulint_get_low(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_high(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_low(thr_get_trx(thr)->id), index->table_name, index->name); dtuple_print(entry); } @@ -978,7 +978,8 @@ calculate_sizes_again: fprintf(stderr, "InnoDB: Error: cannot insert tuple %s to index %s of table %s\n" "InnoDB: max insert size %lu\n", - err_buf, index->name, index->table->name, max_size); + err_buf, index->name, index->table->name, + (unsigned long) max_size); mem_free(err_buf); } @@ -1343,8 +1344,8 @@ btr_cur_update_sec_rec_in_place( if (btr_cur_print_record_ops && thr) { printf( "Trx with id %lu %lu going to update table %s index %s\n", - ut_dulint_get_high(thr_get_trx(thr)->id), - ut_dulint_get_low(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_high(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_low(thr_get_trx(thr)->id), index->table_name, index->name); rec_print(rec); } @@ -1407,8 +1408,8 @@ btr_cur_update_in_place( if (btr_cur_print_record_ops && thr) { printf( "Trx with id %lu %lu going to update table %s index %s\n", - ut_dulint_get_high(thr_get_trx(thr)->id), - ut_dulint_get_low(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_high(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_low(thr_get_trx(thr)->id), index->table_name, index->name); rec_print(rec); } @@ -1509,8 +1510,8 @@ btr_cur_optimistic_update( if (btr_cur_print_record_ops && thr) { printf( "Trx with id %lu %lu going to update table %s index %s\n", - ut_dulint_get_high(thr_get_trx(thr)->id), - ut_dulint_get_low(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_high(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_low(thr_get_trx(thr)->id), index->table_name, index->name); rec_print(rec); } @@ -2059,8 +2060,8 @@ btr_cur_del_mark_set_clust_rec( if (btr_cur_print_record_ops && thr) { printf( "Trx with id %lu %lu going to del mark table %s index %s\n", - ut_dulint_get_high(thr_get_trx(thr)->id), - ut_dulint_get_low(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_high(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_low(thr_get_trx(thr)->id), index->table_name, index->name); rec_print(rec); } @@ -2199,8 +2200,8 @@ btr_cur_del_mark_set_sec_rec( if (btr_cur_print_record_ops && thr) { printf( "Trx with id %lu %lu going to del mark table %s index %s\n", - ut_dulint_get_high(thr_get_trx(thr)->id), - ut_dulint_get_low(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_high(thr_get_trx(thr)->id), + (unsigned long) ut_dulint_get_low(thr_get_trx(thr)->id), cursor->index->table_name, cursor->index->name); rec_print(rec); } diff --git a/innobase/include/btr0btr.ic b/innobase/include/btr0btr.ic index 16057d2c8a6..301a73b3444 100644 --- a/innobase/include/btr0btr.ic +++ b/innobase/include/btr0btr.ic @@ -203,7 +203,7 @@ btr_node_ptr_get_child_page_no( if (page_no == 0) { fprintf(stderr, "InnoDB: a nonsensical page number 0 in a node ptr record at offset %lu\n", - (ulint)(rec - buf_frame_align(rec))); + (unsigned long)(rec - buf_frame_align(rec))); buf_page_print(buf_frame_align(rec)); } diff --git a/innobase/include/buf0buf.ic b/innobase/include/buf0buf.ic index 281bb1ea527..eb22bae7ff0 100644 --- a/innobase/include/buf0buf.ic +++ b/innobase/include/buf0buf.ic @@ -219,8 +219,8 @@ buf_block_align( "InnoDB: corruption. If this happens in an InnoDB database recovery,\n" "InnoDB: you can look from section 6.1 at http://www.innodb.com/ibman.html\n" "InnoDB: how to force recovery.\n", - (ulint)ptr, (ulint)frame_zero, - (ulint)(buf_pool->high_end)); + (long)ptr, (long)frame_zero, + (long)(buf_pool->high_end)); ut_a(0); } @@ -255,8 +255,8 @@ buf_frame_align( "InnoDB: corruption. If this happens in an InnoDB database recovery,\n" "InnoDB: you can look from section 6.1 at http://www.innodb.com/ibman.html\n" "InnoDB: how to force recovery.\n", - (ulint)ptr, (ulint)(buf_pool->frame_zero), - (ulint)(buf_pool->high_end)); + (long)ptr, (long)(buf_pool->frame_zero), + (long)(buf_pool->high_end)); ut_a(0); } diff --git a/innobase/include/row0sel.ic b/innobase/include/row0sel.ic index 9005624b6ca..994638790c0 100644 --- a/innobase/include/row0sel.ic +++ b/innobase/include/row0sel.ic @@ -77,7 +77,7 @@ open_step( if (err != DB_SUCCESS) { /* SQL error detected */ - printf("SQL error %lu\n", err); + printf("SQL error %lu\n", (unsigned long) err); ut_error; que_thr_handle_error(thr, err, NULL, 0); diff --git a/innobase/include/row0upd.ic b/innobase/include/row0upd.ic index 7015b2eda13..1878431d1a4 100644 --- a/innobase/include/row0upd.ic +++ b/innobase/include/row0upd.ic @@ -86,8 +86,8 @@ upd_field_set_field_no( fprintf(stderr, "InnoDB: Error: trying to access field %lu in table %s\n" "InnoDB: index %s, but index has only %lu fields\n", - field_no, index->table_name, index->name, - dict_index_get_n_fields(index)); + (unsigned long) field_no, index->table_name, index->name, + (unsigned long) dict_index_get_n_fields(index)); } dtype_copy(dfield_get_type(&(upd_field->new_val)), diff --git a/innobase/include/trx0rseg.ic b/innobase/include/trx0rseg.ic index 423447d5566..6b242b66c09 100644 --- a/innobase/include/trx0rseg.ic +++ b/innobase/include/trx0rseg.ic @@ -63,7 +63,7 @@ trx_rsegf_get_nth_undo( { if (n >= TRX_RSEG_N_SLOTS) { fprintf(stderr, - "InnoDB: Error: trying to get slot %lu of rseg\n", n); + "InnoDB: Error: trying to get slot %lu of rseg\n", (unsigned long) n); ut_a(0); } @@ -84,7 +84,7 @@ trx_rsegf_set_nth_undo( { if (n >= TRX_RSEG_N_SLOTS) { fprintf(stderr, - "InnoDB: Error: trying to set slot %lu of rseg\n", n); + "InnoDB: Error: trying to set slot %lu of rseg\n", (unsigned long) n); ut_a(0); } diff --git a/innobase/pars/pars0opt.c b/innobase/pars/pars0opt.c index 4faf83b47a3..9b0495a01cd 100644 --- a/innobase/pars/pars0opt.c +++ b/innobase/pars/pars0opt.c @@ -1235,7 +1235,8 @@ opt_print_query_plan( printf( "Table %s index %s; exact m. %lu, match %lu, end conds %lu\n", plan->table->name, plan->index->name, - plan->n_exact_match, n_fields, - UT_LIST_GET_LEN(plan->end_conds)); + (unsigned long) plan->n_exact_match, + (unsigned long) n_fields, + (unsigned long) UT_LIST_GET_LEN(plan->end_conds)); } } diff --git a/innobase/que/que0que.c b/innobase/que/que0que.c index 3f28a4b40a5..7e4babd43ef 100644 --- a/innobase/que/que0que.c +++ b/innobase/que/que0que.c @@ -513,7 +513,7 @@ que_graph_free_recursive( if (thr->magic_n != QUE_THR_MAGIC_N) { fprintf(stderr, "que_thr struct appears corrupt; magic n %lu\n", - thr->magic_n); + (unsigned long) thr->magic_n); mem_analyze_corruption((byte*)thr); ut_a(0); } @@ -625,7 +625,7 @@ que_graph_free_recursive( default: fprintf(stderr, "que_node struct appears corrupt; type %lu\n", - que_node_get_type(node)); + (unsigned long) que_node_get_type(node)); mem_analyze_corruption((byte*)node); ut_a(0); } @@ -1105,7 +1105,8 @@ que_thr_move_to_run_state_for_mysql( { if (thr->magic_n != QUE_THR_MAGIC_N) { fprintf(stderr, - "que_thr struct appears corrupt; magic n %lu\n", thr->magic_n); + "que_thr struct appears corrupt; magic n %lu\n", + (unsigned long) thr->magic_n); mem_analyze_corruption((byte*)thr); @@ -1141,7 +1142,8 @@ que_thr_stop_for_mysql_no_error( if (thr->magic_n != QUE_THR_MAGIC_N) { fprintf(stderr, - "que_thr struct appears corrupt; magic n %lu\n", thr->magic_n); + "que_thr struct appears corrupt; magic n %lu\n", + (unsigned long) thr->magic_n); mem_analyze_corruption((byte*)thr); @@ -1216,7 +1218,8 @@ que_node_print_info( str = (char *) "UNKNOWN NODE TYPE"; } - printf("Node type %lu: %s, address %lx\n", type, str, addr); + printf("Node type %lu: %s, address %lx\n", (unsigned long) type, str, + (unsigned long) addr); } /************************************************************************** diff --git a/myisam/mi_check.c b/myisam/mi_check.c index fd4c897983f..bd8c8c60e33 100644 --- a/myisam/mi_check.c +++ b/myisam/mi_check.c @@ -77,6 +77,7 @@ void myisamchk_init(MI_CHECK *param) param->tmpfile_createflag=O_RDWR | O_TRUNC | O_EXCL; param->myf_rw=MYF(MY_NABP | MY_WME | MY_WAIT_IF_FULL); param->start_check_pos=0; + param->max_record_length= LONGLONG_MAX; param->key_cache_block_size= KEY_CACHE_BLOCK_SIZE; } @@ -523,7 +524,7 @@ static int chk_index(MI_CHECK *param, MI_INFO *info, MI_KEYDEF *keyinfo, if (!(temp_buff=(uchar*) my_alloca((uint) keyinfo->block_length))) { - mi_check_print_error(param,"Not Enough memory"); + mi_check_print_error(param,"Not enough memory for keyblock"); DBUG_RETURN(-1); } @@ -712,7 +713,7 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) if (!(record= (byte*) my_malloc(info->s->base.pack_reclength,MYF(0)))) { - mi_check_print_error(param,"Not Enough memory"); + mi_check_print_error(param,"Not enough memory for record"); DBUG_RETURN(-1); } records=del_blocks=0; @@ -815,16 +816,17 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) goto next; } mi_check_print_error(param,"Wrong bytesec: %d-%d-%d at linkstart: %s", - block_info.header[0],block_info.header[1], - block_info.header[2], - llstr(start_block,llbuff)); + block_info.header[0],block_info.header[1], + block_info.header[2], + llstr(start_block,llbuff)); goto err2; } if (info->state->data_file_length < block_info.filepos+ block_info.block_len) { - mi_check_print_error(param,"Recordlink that points outside datafile at %s", - llstr(pos,llbuff)); + mi_check_print_error(param, + "Recordlink that points outside datafile at %s", + llstr(pos,llbuff)); got_error=1; break; } @@ -835,9 +837,9 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) pos=block_info.filepos+block_info.block_len; if (block_info.rec_len > (uint) info->s->base.max_pack_length) { - mi_check_print_error(param,"Found too long record (%d) at %s", - block_info.rec_len, - llstr(start_recpos,llbuff)); + mi_check_print_error(param,"Found too long record (%lu) at %s", + (ulong) block_info.rec_len, + llstr(start_recpos,llbuff)); got_error=1; break; } @@ -846,8 +848,10 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) if (!(to= mi_alloc_rec_buff(info, block_info.rec_len, &info->rec_buff))) { - mi_check_print_error(param,"Not enough memory for blob at %s", - llstr(start_recpos,llbuff)); + mi_check_print_error(param, + "Not enough memory (%lu) for blob at %s", + (ulong) block_info.rec_len, + llstr(start_recpos,llbuff)); got_error=1; break; } @@ -858,9 +862,11 @@ int chk_data_link(MI_CHECK *param, MI_INFO *info,int extend) } if (left_length < block_info.data_len) { - mi_check_print_error(param,"Found too long record at %s", - llstr(start_recpos,llbuff)); - got_error=1; break; + mi_check_print_error(param,"Found too long record (%lu) at %s", + (ulong) block_info.data_len, + llstr(start_recpos,llbuff)); + got_error=1; + break; } if (_mi_read_cache(¶m->read_cache,(byte*) to,block_info.filepos, (uint) block_info.data_len, @@ -1167,7 +1173,7 @@ int mi_repair(MI_CHECK *param, register MI_INFO *info, MYF(0))) || !mi_alloc_rec_buff(info, -1, &sort_param.rec_buff)) { - mi_check_print_error(param,"Not enough memory for extra record"); + mi_check_print_error(param, "Not enough memory for extra record"); goto err; } @@ -1630,7 +1636,7 @@ static int sort_one_index(MI_CHECK *param, MI_INFO *info, MI_KEYDEF *keyinfo, if (!(buff=(uchar*) my_alloca((uint) keyinfo->block_length))) { - mi_check_print_error(param,"Not Enough memory"); + mi_check_print_error(param,"Not enough memory for key block"); DBUG_RETURN(-1); } if (!_mi_fetch_keypage(info,keyinfo,pagepos,DFLT_INIT_HITS,buff,0)) @@ -1842,7 +1848,7 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info, MYF(0))) || !mi_alloc_rec_buff(info, -1, &sort_param.rec_buff)) { - mi_check_print_error(param,"Not enough memory for extra record"); + mi_check_print_error(param, "Not enough memory for extra record"); goto err; } if (!rep_quick) @@ -2278,17 +2284,19 @@ int mi_repair_parallel(MI_CHECK *param, register MI_INFO *info, rec_length=share->base.min_block_length; else rec_length=share->base.pack_reclength; + /* + +1 below is required hack for parallel repair mode. + The info->state->records value, that is compared later + to sort_info.max_records and cannot exceed it, is + increased in sort_key_write. In mi_repair_by_sort, sort_key_write + is called after sort_key_read, where the comparison is performed, + but in parallel mode master thread can call sort_key_write + before some other repair thread calls sort_key_read. + Furthermore I'm not even sure +1 would be enough. + May be sort_info.max_records shold be always set to max value in + parallel mode. + */ sort_info.max_records= - /* +1 below is required hack for parallel repair mode. - The info->state->records value, that is compared later - to sort_info.max_records and cannot exceed it, is - increased in sort_key_write. In mi_repair_by_sort, sort_key_write - is called after sort_key_read, where the comparison is performed, - but in parallel mode master thread can call sort_key_write - before some other repair thread calls sort_key_read. - Furthermore I'm not even sure +1 would be enough. - May be sort_info.max_records shold be always set to max value in - parallel mode. */ ((param->testflag & T_CREATE_MISSING_KEYS) ? info->state->records + 1: (ha_rows) (sort_info.filelength/rec_length+1)); @@ -2302,7 +2310,7 @@ int mi_repair_parallel(MI_CHECK *param, register MI_INFO *info, (sizeof(MI_SORT_PARAM) + share->base.pack_reclength), MYF(MY_ZEROFILL)))) { - mi_check_print_error(param,"Not enough memory!"); + mi_check_print_error(param,"Not enough memory for key!"); goto err; } total_key_length=0; @@ -2858,9 +2866,20 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param) if (!(to=mi_alloc_rec_buff(info,block_info.rec_len, &(sort_param->rec_buff)))) { - mi_check_print_error(param,"Not enough memory for blob at %s (need %lu)", - llstr(sort_param->start_recpos,llbuff), block_info.rec_len); - DBUG_RETURN(1); + if (param->max_record_length >= block_info.rec_len) + { + mi_check_print_error(param,"Not enough memory for blob at %s (need %lu)", + llstr(sort_param->start_recpos,llbuff), + (ulong) block_info.rec_len); + DBUG_RETURN(1); + } + else + { + mi_check_print_info(param,"Not enough memory for blob at %s (need %lu); Row skipped", + llstr(sort_param->start_recpos,llbuff), + (ulong) block_info.rec_len); + goto try_next; + } } } else @@ -2868,14 +2887,16 @@ static int sort_get_next_record(MI_SORT_PARAM *sort_param) } if (left_length < block_info.data_len || ! block_info.data_len) { - mi_check_print_info(param,"Found block with too small length at %s; Skipped", + mi_check_print_info(param, + "Found block with too small length at %s; Skipped", llstr(sort_param->start_recpos,llbuff)); goto try_next; } if (block_info.filepos + block_info.data_len > sort_param->read_cache.end_of_file) { - mi_check_print_info(param,"Found block that points outside data file at %s", + mi_check_print_info(param, + "Found block that points outside data file at %s", llstr(sort_param->start_recpos,llbuff)); goto try_next; } @@ -3510,7 +3531,7 @@ static SORT_KEY_BLOCKS *alloc_key_blocks(MI_CHECK *param, uint blocks, buffer_length+IO_SIZE)*blocks, MYF(0)))) { - mi_check_print_error(param,"Not Enough memory for sort-key-blocks"); + mi_check_print_error(param,"Not enough memory for sort-key-blocks"); return(0); } for (i=0 ; i < blocks ; i++) diff --git a/myisam/myisamchk.c b/myisam/myisamchk.c index f034d6ae406..61a1736c521 100644 --- a/myisam/myisamchk.c +++ b/myisam/myisamchk.c @@ -110,7 +110,8 @@ int main(int argc, char **argv) VOID(fflush(stderr)); if ((check_param.error_printed | check_param.warning_printed) && (check_param.testflag & T_FORCE_CREATE) && - (!(check_param.testflag & (T_REP | T_SORT_RECORDS | T_SORT_INDEX)))) + (!(check_param.testflag & (T_REP | T_REP_BY_SORT | T_SORT_RECORDS | + T_SORT_INDEX)))) { uint old_testflag=check_param.testflag; if (!(check_param.testflag & T_REP)) @@ -153,7 +154,7 @@ enum options_mc { OPT_KEY_CACHE_BLOCK_SIZE, OPT_MYISAM_BLOCK_SIZE, OPT_READ_BUFFER_SIZE, OPT_WRITE_BUFFER_SIZE, OPT_SORT_BUFFER_SIZE, OPT_SORT_KEY_BLOCKS, OPT_DECODE_BITS, OPT_FT_MIN_WORD_LEN, - OPT_FT_MAX_WORD_LEN, OPT_FT_MAX_WORD_LEN_FOR_SORT + OPT_FT_MAX_WORD_LEN, OPT_FT_MAX_WORD_LEN_FOR_SORT, OPT_MAX_RECORD_LENGTH }; static struct my_option my_long_options[] = @@ -215,6 +216,11 @@ static struct my_option my_long_options[] = (gptr*) &check_param.keys_in_use, (gptr*) &check_param.keys_in_use, 0, GET_ULL, REQUIRED_ARG, -1, 0, 0, 0, 0, 0}, + {"max-record-length", OPT_MAX_RECORD_LENGTH, + "Skip rows bigger than this if myisamchk can't allocate memory to hold it", + (gptr*) &check_param.max_record_length, + (gptr*) &check_param.max_record_length, + 0, GET_ULL, REQUIRED_ARG, LONGLONG_MAX, 0, LONGLONG_MAX, 0, 0, 0}, {"medium-check", 'm', "Faster than extend-check, but only finds 99.99% of all errors. Should be good enough for most cases.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}, @@ -327,7 +333,7 @@ static struct my_option my_long_options[] = static void print_version(void) { - printf("%s Ver 2.6 for %s at %s\n", my_progname, SYSTEM_TYPE, + printf("%s Ver 2.7 for %s at %s\n", my_progname, SYSTEM_TYPE, MACHINE_TYPE); } @@ -394,6 +400,9 @@ static void usage(void) -k, --keys-used=# Tell MyISAM to update only some specific keys. # is a\n\ bit mask of which keys to use. This can be used to\n\ get faster inserts.\n\ + --max-record-length=#\n\ + Skip rows bigger than this if myisamchk can't allocate\n\ + memory to hold it.\n\ -r, --recover Can fix almost anything except unique keys that aren't\n\ unique.\n\ -n, --sort-recover Forces recovering with sorting even if the temporary\n\ diff --git a/mysql-test/r/create.result b/mysql-test/r/create.result index 28f06f0bf47..a3a47ea6952 100644 --- a/mysql-test/r/create.result +++ b/mysql-test/r/create.result @@ -1,4 +1,5 @@ drop table if exists t1,t2,t3; +drop database if exists test_$1; create table t1 (b char(0)); insert into t1 values (""),(null); select * from t1; @@ -302,9 +303,6 @@ t3 CREATE TABLE `t3` ( select * from t3; id name drop table t2, t3; -drop database if exists test_$1; -Warnings: -Note 1008 Can't drop database 'test_$1'; database doesn't exist create database test_$1; create table test_$1.t3 like t1; create temporary table t3 like test_$1.t3; @@ -411,7 +409,6 @@ a b c d e f g h dd 1 -7 7 2000-01-01 b 2000-01-01 00:00:00 05:04:03 yet another binary data 02:00:00 2 -2 2 1825-12-14 a 2003-01-01 03:02:01 04:03:02 binary data 02:00:00 drop table t1, t2; -drop database if exists test_$1; create database test_$1; use test_$1; select database(); diff --git a/mysql-test/t/create.test b/mysql-test/t/create.test index 0c1280751bc..dc4d2701bee 100644 --- a/mysql-test/t/create.test +++ b/mysql-test/t/create.test @@ -4,6 +4,7 @@ --disable_warnings drop table if exists t1,t2,t3; +drop database if exists test_$1; --enable_warnings create table t1 (b char(0)); @@ -57,6 +58,7 @@ select 1ea10.1a20,1e+ 1e+10 from 1ea10; drop table 1ea10; create table t1 (t1.index int); drop table t1; +# Test that we get warning for this drop database if exists test_$1; create database test_$1; create table test_$1.$test1 (a$1 int, $b int, c$ int); @@ -245,7 +247,6 @@ drop table t3; show create table t3; select * from t3; drop table t2, t3; -drop database if exists test_$1; create database test_$1; create table test_$1.t3 like t1; create temporary table t3 like test_$1.t3; @@ -326,9 +327,6 @@ drop table t1, t2; # Bug #1209 # ---disable_warnings -drop database if exists test_$1; ---enable_warnings create database test_$1; use test_$1; select database(); diff --git a/sql/ha_innodb.cc b/sql/ha_innodb.cc index 31ef4f7b7d7..11870e4cc29 100644 --- a/sql/ha_innodb.cc +++ b/sql/ha_innodb.cc @@ -1536,7 +1536,7 @@ ha_innobase::open( fprintf(stderr, "InnoDB: Warning: table %s key_used_on_scan is %lu even though there is no\n" "InnoDB: primary key inside InnoDB.\n", - name, (ulint)key_used_on_scan); + name, (ulong)key_used_on_scan); } } @@ -3216,7 +3216,7 @@ ha_innobase::position( if (len != ref_length) { fprintf(stderr, "InnoDB: Error: stored ref len is %lu, but table ref len is %lu\n", - (ulint)len, (ulint)ref_length); + (ulong)len, (ulong)ref_length); } } @@ -4187,7 +4187,8 @@ ha_innobase::info( "InnoDB: .frm files from different installations? See section\n" "InnoDB: 15.1 at http://www.innodb.com/ibman.html\n", index->name, - ib_table->name, index->n_uniq, + ib_table->name, + (unsigned long) index->n_uniq, j + 1); break; } diff --git a/sql/item_func.cc b/sql/item_func.cc index 2a07341d97a..54bdfb9dab3 100644 --- a/sql/item_func.cc +++ b/sql/item_func.cc @@ -2701,6 +2701,7 @@ void Item_func_match::init_search(bool no_order) bool Item_func_match::fix_fields(THD *thd, TABLE_LIST *tlist, Item **ref) { Item *item; + LINT_INIT(item); // Safe as arg_count is > 1 maybe_null=1; join_key=0; diff --git a/sql/mysqld.cc b/sql/mysqld.cc index a0b5d910986..b811c4a4b67 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -3320,35 +3320,22 @@ extern "C" pthread_handler_decl(handle_connections_namedpipes,arg) #ifdef HAVE_SMEM pthread_handler_decl(handle_connections_shared_memory,arg) { -/* - event_connect_request is event object for start connection actions - event_connect_answer is event object for confirm, that server put data - handle_connect_file_map is file-mapping object, use for create shared memory - handle_connect_map is pointer on shared memory - handle_map is pointer on shared memory for client - event_server_wrote, - event_server_read, - event_client_wrote, - event_client_read are events for transfer data between server and client - handle_file_map is file-mapping object, use for create shared memory -*/ - HANDLE handle_connect_file_map = NULL; - char *handle_connect_map = NULL; - HANDLE event_connect_request = NULL; - HANDLE event_connect_answer = NULL; - ulong smem_buffer_length = shared_memory_buffer_length + 4; - ulong connect_number = 1; + /* file-mapping object, use for create shared memory */ + HANDLE handle_connect_file_map= 0; + char *handle_connect_map= 0; // pointer on shared memory + HANDLE event_connect_request= 0; // for start connection actions + HANDLE event_connect_answer= 0; + ulong smem_buffer_length= shared_memory_buffer_length + 4; + ulong connect_number= 1; my_bool error_allow; - THD *thd; char tmp[63]; char *suffix_pos; char connect_number_char[22], *p; - + const char *errmsg= 0; my_thread_init(); DBUG_ENTER("handle_connections_shared_memorys"); DBUG_PRINT("general",("Waiting for allocated shared memory.")); - /* The name of event and file-mapping events create agree next rule: shared_memory_base_name+unique_part @@ -3356,166 +3343,165 @@ pthread_handler_decl(handle_connections_shared_memory,arg) shared_memory_base_name is unique value for each server unique_part is unique value for each object (events and file-mapping) */ - suffix_pos = strxmov(tmp,shared_memory_base_name,"_",NullS); + suffix_pos= strxmov(tmp,shared_memory_base_name,"_",NullS); strmov(suffix_pos, "CONNECT_REQUEST"); - if ((event_connect_request = CreateEvent(NULL,FALSE,FALSE,tmp)) == 0) + if ((event_connect_request= CreateEvent(0,FALSE,FALSE,tmp)) == 0) { - sql_perror("Can't create shared memory service ! The request event don't create."); + errmsg= "Could not create request event"; goto error; } strmov(suffix_pos, "CONNECT_ANSWER"); - if ((event_connect_answer = CreateEvent(NULL,FALSE,FALSE,tmp)) == 0) + if ((event_connect_answer= CreateEvent(0,FALSE,FALSE,tmp)) == 0) { - sql_perror("Can't create shared memory service ! The answer event don't create."); + errmsg="Could not create answer event"; goto error; } strmov(suffix_pos, "CONNECT_DATA"); - if ((handle_connect_file_map = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE, - 0,sizeof(connect_number),tmp)) == 0) + if ((handle_connect_file_map= CreateFileMapping(INVALID_HANDLE_VALUE,0, + PAGE_READWRITE, + 0,sizeof(connect_number), + tmp)) == 0) { - sql_perror("Can't create shared memory service ! File mapping don't create."); + errmsg= "Could not create file mapping"; goto error; } - if ((handle_connect_map = (char *)MapViewOfFile(handle_connect_file_map,FILE_MAP_WRITE,0,0, - sizeof(DWORD))) == 0) + if ((handle_connect_map= (char *)MapViewOfFile(handle_connect_file_map, + FILE_MAP_WRITE,0,0, + sizeof(DWORD))) == 0) { - sql_perror("Can't create shared memory service ! Map of memory don't create."); + errmsg= "Could not create shared memory service"; goto error; } - while (!abort_loop) { -/* - Wait a request from client -*/ + /* Wait a request from client */ WaitForSingleObject(event_connect_request,INFINITE); - error_allow = FALSE; - HANDLE handle_client_file_map = NULL; - char *handle_client_map = NULL; - HANDLE event_client_wrote = NULL; - HANDLE event_client_read = NULL; - HANDLE event_server_wrote = NULL; - HANDLE event_server_read = NULL; + HANDLE handle_client_file_map= 0; + char *handle_client_map= 0; + HANDLE event_client_wrote= 0; + HANDLE event_client_read= 0; // for transfer data server <-> client + HANDLE event_server_wrote= 0; + HANDLE event_server_read= 0; + THD *thd= 0; - p = int2str(connect_number, connect_number_char, 10); -/* - The name of event and file-mapping events create agree next rule: - shared_memory_base_name+unique_part+number_of_connection - Where: - shared_memory_base_name is uniquel value for each server - unique_part is unique value for each object (events and file-mapping) - number_of_connection is number of connection between server and client -*/ - suffix_pos = strxmov(tmp,shared_memory_base_name,"_",connect_number_char,"_",NullS); + p= int2str(connect_number, connect_number_char, 10); + /* + The name of event and file-mapping events create agree next rule: + shared_memory_base_name+unique_part+number_of_connection + Where: + shared_memory_base_name is uniquel value for each server + unique_part is unique value for each object (events and file-mapping) + number_of_connection is connection-number between server and client + */ + suffix_pos= strxmov(tmp,shared_memory_base_name,"_",connect_number_char, + "_",NullS); strmov(suffix_pos, "DATA"); - if ((handle_client_file_map = CreateFileMapping(INVALID_HANDLE_VALUE,NULL, - PAGE_READWRITE,0,smem_buffer_length,tmp)) == 0) + if ((handle_client_file_map= CreateFileMapping(INVALID_HANDLE_VALUE,0, + PAGE_READWRITE,0, + smem_buffer_length, + tmp)) == 0) { - sql_perror("Can't create connection with client in shared memory service ! File mapping don't create."); - error_allow = TRUE; + errmsg= "Could not create file mapping"; goto errorconn; } - if ((handle_client_map = (char*)MapViewOfFile(handle_client_file_map,FILE_MAP_WRITE,0,0,smem_buffer_length)) == 0) + if ((handle_client_map= (char*)MapViewOfFile(handle_client_file_map, + FILE_MAP_WRITE,0,0, + smem_buffer_length)) == 0) { - sql_perror("Can't create connection with client in shared memory service ! Map of memory don't create."); - error_allow = TRUE; + errmsg= "Could not create memory map"; goto errorconn; } - strmov(suffix_pos, "CLIENT_WROTE"); - if ((event_client_wrote = CreateEvent(NULL,FALSE,FALSE,tmp)) == 0) + if ((event_client_wrote= CreateEvent(0,FALSE,FALSE,tmp)) == 0) { - sql_perror("Can't create connection with client in shared memory service ! CW event don't create."); - error_allow = TRUE; + errmsg= "Could not create client write event"; goto errorconn; } - strmov(suffix_pos, "CLIENT_READ"); - if ((event_client_read = CreateEvent(NULL,FALSE,FALSE,tmp)) == 0) + if ((event_client_read= CreateEvent(0,FALSE,FALSE,tmp)) == 0) { - sql_perror("Can't create connection with client in shared memory service ! CR event don't create."); - error_allow = TRUE; + errmsg= "Could not create client read event"; goto errorconn; } - strmov(suffix_pos, "SERVER_READ"); - if ((event_server_read = CreateEvent(NULL,FALSE,FALSE,tmp)) == 0) + if ((event_server_read= CreateEvent(0,FALSE,FALSE,tmp)) == 0) { - sql_perror("Can't create connection with client in shared memory service ! SR event don't create."); - error_allow = TRUE; + errmsg= "Could not create server read event"; goto errorconn; } - strmov(suffix_pos, "SERVER_WROTE"); - if ((event_server_wrote = CreateEvent(NULL,FALSE,FALSE,tmp)) == 0) + if ((event_server_wrote= CreateEvent(0,FALSE,FALSE,tmp)) == 0) { - sql_perror("Can't create connection with client in shared memory service ! SW event don't create."); - error_allow = TRUE; + errmsg= "Could not create server write event"; goto errorconn; } - - if (abort_loop) break; - if ( !(thd = new THD)) - { - error_allow = TRUE; + if (abort_loop) goto errorconn; - } - -/* -Send number of connection to client -*/ + if (!(thd= new THD)) + goto errorconn; + /* Send number of connection to client */ int4store(handle_connect_map, connect_number); - -/* - Send number of connection to client -*/ if (!SetEvent(event_connect_answer)) { - sql_perror("Can't create connection with client in shared memory service ! Can't send answer event."); - error_allow = TRUE; + errmsg= "Could not send answer event"; goto errorconn; } - -/* - Set event that client should receive data -*/ + /* Set event that client should receive data */ if (!SetEvent(event_client_read)) { - sql_perror("Can't create connection with client in shared memory service ! Can't set client to read's mode."); - error_allow = TRUE; + errmsg= "Could not set client to read mode"; goto errorconn; } - if (!(thd->net.vio = vio_new_win32shared_memory(&thd->net,handle_client_file_map,handle_client_map,event_client_wrote, - event_client_read,event_server_wrote,event_server_read)) || - my_net_init(&thd->net, thd->net.vio)) + if (!(thd->net.vio= vio_new_win32shared_memory(&thd->net, + handle_client_file_map, + handle_client_map, + event_client_wrote, + event_client_read, + event_server_wrote, + event_server_read)) || + my_net_init(&thd->net, thd->net.vio)) { close_connection(thd, ER_OUT_OF_RESOURCES, 1); - delete thd; - error_allow = TRUE; + errmsg= 0; + goto errorconn; } - /* host name is unknown */ + thd->host= my_strdup(my_localhost,MYF(0)); /* Host is unknown */ + create_new_thread(thd); + connect_number++; + continue; + errorconn: - if (error_allow) + /* Could not form connection; Free used handlers/memort and retry */ + if (errmsg) { - if (!handle_client_map) UnmapViewOfFile(handle_client_map); - if (!handle_client_file_map) CloseHandle(handle_client_file_map); - if (!event_server_wrote) CloseHandle(event_server_wrote); - if (!event_server_read) CloseHandle(event_server_read); - if (!event_client_wrote) CloseHandle(event_client_wrote); - if (!event_client_read) CloseHandle(event_client_read); - continue; + char buff[180]; + strxmov(buff, "Can't create shared memory connection: ", errmsg, ".", + NullS); + sql_perror(buff); } - thd->host = my_strdup(my_localhost,MYF(0)); /* Host is unknown */ - create_new_thread(thd); - uint4korr(connect_number++); + if (handle_client_file_map) CloseHandle(handle_client_file_map); + if (handle_client_map) UnmapViewOfFile(handle_client_map); + if (event_server_wrote) CloseHandle(event_server_wrote); + if (event_server_read) CloseHandle(event_server_read); + if (event_client_wrote) CloseHandle(event_client_wrote); + if (event_client_read) CloseHandle(event_client_read); + delete thd; } + + /* End shared memory handling */ error: - if (!handle_connect_map) UnmapViewOfFile(handle_connect_map); - if (!handle_connect_file_map) CloseHandle(handle_connect_file_map); - if (!event_connect_answer) CloseHandle(event_connect_answer); - if (!event_connect_request) CloseHandle(event_connect_request); + if (errmsg) + { + char buff[180]; + strxmov(buff, "Can't create shared memory service: ", errmsg, ".", NullS); + sql_perror(buff); + } + if (handle_connect_map) UnmapViewOfFile(handle_connect_map); + if (handle_connect_file_map) CloseHandle(handle_connect_file_map); + if (event_connect_answer) CloseHandle(event_connect_answer); + if (event_connect_request) CloseHandle(event_connect_request); decrement_handler_count(); DBUG_RETURN(0); diff --git a/strings/bmove512.c b/strings/bmove512.c index 30ac4b744b6..d4c748fe0ff 100644 --- a/strings/bmove512.c +++ b/strings/bmove512.c @@ -37,7 +37,7 @@ #define LONG ulonglong #endif -void bmove512(register gptr to, register const gptr from, register uint length) +void bmove512(gptr to, const gptr from, register uint length) { reg1 LONG *f,*t,*end= (LONG*) ((char*) from+length); |