1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Update copyright

Fixed memory leak on shutdown (Affects the embedded version & MyODBC)
This commit is contained in:
monty@hundin.mysql.fi
2001-12-06 14:10:51 +02:00
parent b4da2fb0ab
commit b658662ae4
518 changed files with 4596 additions and 4433 deletions

View File

@ -23,17 +23,17 @@
/* TODO:
HANDLER blabla OPEN [ AS foobar ] [ (column-list) ]
the most natural (easiest, fastest) way to do it is to
compute List<Item> field_list not in mysql_ha_read
but in mysql_ha_open, and then store it in TABLE structure.
The problem here is that mysql_parse calls free_item to free all the
items allocated at the end of every query. The workaround would to
keep two item lists per THD - normal free_list and handler_items.
The second is to be freeed only on thread end. mysql_ha_open should
then do { handler_items=concat(handler_items, free_list); free_list=0; }
But !!! do_cammand calls free_root at the end of every query and frees up
all the sql_alloc'ed memory. It's harder to work around...
*/
@ -53,7 +53,7 @@ int mysql_ha_open(THD *thd, TABLE_LIST *tables)
HANDLER_TABLES_HACK(thd);
if (err)
return -1;
send_ok(&thd->net);
return 0;
}
@ -68,14 +68,14 @@ int mysql_ha_close(THD *thd, TABLE_LIST *tables)
close_thread_table(thd, ptr);
VOID(pthread_mutex_unlock(&LOCK_open));
}
send_ok(&thd->net);
return 0;
}
static enum enum_ha_read_modes rkey_to_rnext[]=
{ RNEXT, RNEXT, RPREV, RNEXT, RPREV, RNEXT, RPREV };
int mysql_ha_read(THD *thd, TABLE_LIST *tables,
enum enum_ha_read_modes mode, char *keyname, List<Item> *key_expr,
enum ha_rkey_function ha_rkey_mode, Item *cond,
@ -93,7 +93,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
if (cond && cond->fix_fields(thd,tables))
return -1;
if (keyname)
{
if ((keyno=find_type(keyname, &table->keynames, 1+2)-1)<0)
@ -115,7 +115,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
select_limit+=offset_limit;
send_fields(thd,list,1);
MYSQL_LOCK *lock=mysql_lock_tables(thd,&tables->table,1);
for (uint num_rows=0; num_rows < select_limit; )
@ -241,12 +241,12 @@ static TABLE **find_table_ptr_by_name(THD *thd, const char *db,
{
int dblen;
TABLE **ptr;
if (!db || ! *db)
db= thd->db ? thd->db : "";
dblen=strlen(db)+1;
ptr=&(thd->handler_tables);
for (TABLE *table=*ptr; table ; table=*ptr)
{
if (!memcmp(table->table_cache_key, db, dblen) &&