1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

fix_max_connections to resize alarm_queue (Bug #1435)

include/queues.h:
  resize_queue()
include/thr_alarm.h:
  resize_thr_alarm() to resize alarm_queue
mysys/queues.c:
  resize_queue()
mysys/thr_alarm.c:
  resize_thr_alarm() to resize alarm_queue
This commit is contained in:
unknown
2003-10-06 14:11:16 +02:00
parent 08504cfe27
commit 08a08a67db
5 changed files with 44 additions and 13 deletions

View File

@ -44,25 +44,35 @@ int init_queue(QUEUE *queue, uint max_elements, uint offset_to_key,
}
/*
Reinitialize queue for new usage; Note that you can't currently resize
the number of elements! If you need this, fix it :)
Reinitialize queue for new usage;
*/
int reinit_queue(QUEUE *queue, uint max_elements, uint offset_to_key,
pbool max_at_top, int (*compare) (void *, byte *, byte *),
void *first_cmp_arg)
{
DBUG_ENTER("reinit_queue");
if (queue->max_elements < max_elements)
/* It's real easy to do realloc here, just don't want to bother */
DBUG_RETURN(my_errno=EE_OUTOFMEMORY);
queue->elements=0;
queue->compare=compare;
queue->first_cmp_arg=first_cmp_arg;
queue->offset_to_key=offset_to_key;
queue->max_at_top= max_at_top ? (-1 ^ 1) : 0;
resize_queue(queue, max_elements);
DBUG_RETURN(0);
}
int resize_queue(QUEUE *queue, uint max_elements)
{
byte **new_root;
DBUG_ENTER("resize_queue");
if (queue->max_elements == max_elements)
DBUG_RETURN(0);
if ((new_root= (byte **) my_realloc((void *)queue->root,
(max_elements+1)*sizeof(void*), MYF(MY_WME))) == 0)
DBUG_RETURN(1);
set_if_smaller(queue->elements, max_elements);
queue->max_elements=max_elements;
queue->root=new_root;
DBUG_RETURN(0);
}