~thomir-deactivatedaccount/drizzle/drizzle-fix-bug653747

« back to all changes in this revision

Viewing changes to plugin/innobase/trx/trx0i_s.c

  • Committer: Brian Aker
  • Date: 2010-10-10 02:07:52 UTC
  • mfrom: (1827.2.3 staging)
  • Revision ID: brian@tangent.org-20101010020752-ktv73isay5dxtvp3
Merge in switch on table_share_instance inheritance.

Show diffs side-by-side

added added

removed removed

Lines of Context:
64
64
/** @brief The maximum number of chunks to allocate for a table cache.
65
65
 
66
66
The rows of a table cache are stored in a set of chunks. When a new
67
 
row is added a new chunk is allocated if necessary. Assuming that the
 
67
row is added a new chunk is allocated if necessary.  Assuming that the
68
68
first one is 1024 rows (TABLE_CACHE_INITIAL_ROWSNUM) and each
69
69
subsequent is N/2 where N is the number of rows we have allocated till
70
70
now, then 39th chunk would accommodate 1677416425 rows and all chunks
242
242
}
243
243
 
244
244
/*******************************************************************//**
245
 
Frees a table cache. */
246
 
static
247
 
void
248
 
table_cache_free(
249
 
/*=============*/
250
 
        i_s_table_cache_t*      table_cache)    /*!< in/out: table cache */
251
 
{
252
 
        ulint   i;
253
 
 
254
 
        for (i = 0; i < MEM_CHUNKS_IN_TABLE_CACHE; i++) {
255
 
 
256
 
                /* the memory is actually allocated in
257
 
                table_cache_create_empty_row() */
258
 
                if (table_cache->chunks[i].base) {
259
 
                        mem_free(table_cache->chunks[i].base);
260
 
                        table_cache->chunks[i].base = NULL;
261
 
                }
262
 
        }
263
 
}
264
 
 
265
 
/*******************************************************************//**
266
245
Returns an empty row from a table cache. The row is allocated if no more
267
246
empty rows are available. The number of used rows is incremented.
268
247
If the memory limit is hit then NULL is returned and nothing is
1281
1260
}
1282
1261
 
1283
1262
/*******************************************************************//**
1284
 
Free the INFORMATION SCHEMA trx related cache. */
1285
 
UNIV_INTERN
1286
 
void
1287
 
trx_i_s_cache_free(
1288
 
/*===============*/
1289
 
        trx_i_s_cache_t*        cache)  /*!< in, own: cache to free */
1290
 
{
1291
 
        hash_table_free(cache->locks_hash);
1292
 
        ha_storage_free(cache->storage);
1293
 
        table_cache_free(&cache->innodb_trx);
1294
 
        table_cache_free(&cache->innodb_locks);
1295
 
        table_cache_free(&cache->innodb_lock_waits);
1296
 
        memset(cache, 0, sizeof *cache);
1297
 
}
1298
 
 
1299
 
/*******************************************************************//**
1300
1263
Issue a shared/read lock on the tables cache. */
1301
1264
UNIV_INTERN
1302
1265
void