mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
merge
This commit is contained in:
@ -25,8 +25,9 @@
|
||||
We will need an updated Berkeley DB version for this.
|
||||
- Killing threads that has got a 'deadlock'
|
||||
- SHOW TABLE STATUS should give more information about the table.
|
||||
- Get a more accurate count of the number of rows.
|
||||
We could store the found number of rows when the table is scanned.
|
||||
- Get a more accurate count of the number of rows (estimate_number_of_rows()).
|
||||
We could store the found number of rows when the table is scanned and
|
||||
then increment the counter for each attempted write.
|
||||
- We will need a manager thread that calls flush_logs, removes old
|
||||
logs and makes checkpoints at given intervals.
|
||||
- When not using UPDATE IGNORE, don't make a sub transaction but abort
|
||||
@ -42,7 +43,6 @@
|
||||
- LOCK TABLES
|
||||
- CHAR keys
|
||||
- BLOBS
|
||||
- delete from t1;
|
||||
*/
|
||||
|
||||
|
||||
@ -60,6 +60,7 @@
|
||||
|
||||
#define HA_BERKELEY_ROWS_IN_TABLE 10000 /* to get optimization right */
|
||||
#define HA_BERKELEY_RANGE_COUNT 100
|
||||
#define HA_BERKELEY_MAX_ROWS 10000000 /* Max rows in table */
|
||||
|
||||
const char *ha_berkeley_ext=".db";
|
||||
bool berkeley_skip=0;
|
||||
@ -1297,7 +1298,7 @@ void ha_berkeley::info(uint flag)
|
||||
DBUG_ENTER("info");
|
||||
if (flag & HA_STATUS_VARIABLE)
|
||||
{
|
||||
records = HA_BERKELEY_ROWS_IN_TABLE; // Just to get optimisations right
|
||||
records = estimate_number_of_rows(); // Just to get optimisations right
|
||||
deleted = 0;
|
||||
}
|
||||
else if (flag & HA_STATUS_ERRKEY)
|
||||
@ -1607,4 +1608,21 @@ void ha_berkeley::update_auto_primary_key()
|
||||
pthread_mutex_unlock(&share->mutex);
|
||||
}
|
||||
|
||||
/*
|
||||
Return an estimated of the number of rows in the table.
|
||||
Used when sorting to allocate buffers and by the optimizer.
|
||||
*/
|
||||
|
||||
ha_rows ha_berkeley::estimate_number_of_rows()
|
||||
{
|
||||
ulonglong max_ident;
|
||||
ulonglong max_rows=table->max_rows ? table->max_rows : HA_BERKELEY_MAX_ROWS;
|
||||
if (!hidden_primary_key)
|
||||
return (ha_rows) max_rows;
|
||||
pthread_mutex_lock(&share->mutex);
|
||||
max_ident=share->auto_ident+EXTRA_RECORDS;
|
||||
pthread_mutex_unlock(&share->mutex);
|
||||
return (ha_rows) min(max_ident,max_rows);
|
||||
}
|
||||
|
||||
#endif /* HAVE_BERKELEY_DB */
|
||||
|
Reference in New Issue
Block a user