mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 18:20:07 +01:00
Bug#44622: Using PARTITIONs with ARCHIVE engine reports 0 bytes in i_s.TABLES
Problem was that ha_archive::info did not use the flag argument correctly fixed so that it updated the correct values depending on the flag.
This commit is contained in:
parent
0f71f5db2e
commit
7850ae8b35
3 changed files with 58 additions and 8 deletions
|
@ -1,3 +1,25 @@
|
|||
CREATE TABLE t1 (f1 DATE NOT NULL)
|
||||
ENGINE = ARCHIVE PARTITION BY RANGE (TO_DAYS(f1))
|
||||
(partition p1 values less than (733751),
|
||||
partition p2 values less than MAXVALUE);
|
||||
INSERT INTO t1 VALUES(CURRENT_DATE);
|
||||
SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
|
||||
DATA_LENGTH INDEX_LENGTH
|
||||
190 0
|
||||
SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
|
||||
DATA_LENGTH INDEX_LENGTH
|
||||
190 0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 DATE NOT NULL)
|
||||
ENGINE = ARCHIVE;
|
||||
INSERT INTO t1 VALUES(CURRENT_DATE);
|
||||
SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
|
||||
DATA_LENGTH INDEX_LENGTH
|
||||
8658 0
|
||||
SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
|
||||
DATA_LENGTH INDEX_LENGTH
|
||||
8658 0
|
||||
DROP TABLE t1;
|
||||
drop database if exists db99;
|
||||
drop table if exists t1;
|
||||
create database db99;
|
||||
|
|
|
@ -10,6 +10,27 @@
|
|||
--source include/have_partition.inc
|
||||
--source include/have_archive.inc
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
#
|
||||
# Bug#44622: Using PARTITIONs with ARCHIVE engine reports 0 bytes in i_s.TABLES
|
||||
#
|
||||
CREATE TABLE t1 (f1 DATE NOT NULL)
|
||||
ENGINE = ARCHIVE PARTITION BY RANGE (TO_DAYS(f1))
|
||||
(partition p1 values less than (733751),
|
||||
partition p2 values less than MAXVALUE);
|
||||
|
||||
INSERT INTO t1 VALUES(CURRENT_DATE);
|
||||
|
||||
SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
|
||||
SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (f1 DATE NOT NULL)
|
||||
ENGINE = ARCHIVE;
|
||||
INSERT INTO t1 VALUES(CURRENT_DATE);
|
||||
SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
|
||||
SELECT DATA_LENGTH, INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA='test' AND TABLE_NAME='t1';
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# Bug 17310 Partitions: Bugs with archived partitioned tables
|
||||
|
|
|
@ -1466,20 +1466,27 @@ int ha_archive::info(uint flag)
|
|||
|
||||
DBUG_PRINT("ha_archive", ("Stats rows is %d\n", (int)stats.records));
|
||||
/* Costs quite a bit more to get all information */
|
||||
if (flag & HA_STATUS_TIME)
|
||||
if (flag & (HA_STATUS_TIME | HA_STATUS_CONST | HA_STATUS_VARIABLE))
|
||||
{
|
||||
MY_STAT file_stat; // Stat information for the data file
|
||||
|
||||
VOID(my_stat(share->data_file_name, &file_stat, MYF(MY_WME)));
|
||||
|
||||
stats.mean_rec_length= table->s->reclength + buffer.alloced_length();
|
||||
stats.data_file_length= file_stat.st_size;
|
||||
stats.create_time= (ulong) file_stat.st_ctime;
|
||||
stats.update_time= (ulong) file_stat.st_mtime;
|
||||
stats.max_data_file_length= share->rows_recorded * stats.mean_rec_length;
|
||||
if (flag & HA_STATUS_TIME)
|
||||
stats.update_time= (ulong) file_stat.st_mtime;
|
||||
if (flag & HA_STATUS_CONST)
|
||||
{
|
||||
stats.max_data_file_length= share->rows_recorded * stats.mean_rec_length;
|
||||
stats.create_time= (ulong) file_stat.st_ctime;
|
||||
}
|
||||
if (flag & HA_STATUS_VARIABLE)
|
||||
{
|
||||
stats.delete_length= 0;
|
||||
stats.data_file_length= file_stat.st_size;
|
||||
stats.index_file_length=0;
|
||||
stats.mean_rec_length= table->s->reclength + buffer.alloced_length();
|
||||
}
|
||||
}
|
||||
stats.delete_length= 0;
|
||||
stats.index_file_length=0;
|
||||
|
||||
if (flag & HA_STATUS_AUTO)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue