Commit 341a08ed authored by unknown's avatar unknown

Added support for delete_all_rows() for archive. This fixes bug #12836.


mysql-test/r/archive.result:
  Update for test case to make sure that TRUNCATE and DELETE function(hah!) as designed.
mysql-test/t/archive.test:
  Add TRUNCATE and DELETE support.
sql/examples/ha_archive.cc:
  Added delete_all_rows() support.
sql/examples/ha_archive.h:
  Added delete_all_rows() support.
sql/handler.h:
  Added flags for fast delete support for archive and federated.
parent 56b8fc52
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -1310,6 +1310,19 @@ rename table t3 to t4; ...@@ -1310,6 +1310,19 @@ rename table t3 to t4;
select * from t4 where fld3='bonfire'; select * from t4 where fld3='bonfire';
select count(*) from t4; select count(*) from t4;
drop table t1, t2, t4;
# End of 4.1 tests # End of 4.1 tests
#
# For bug #12836
# Delete was allowing all rows to be removed
DELETE FROM t2;
SELECT * FROM t2;
INSERT INTO t2 VALUES (2,011401,37,'breaking','dreaded','Steinberg','W');
INSERT INTO t2 VALUES (3,011402,37,'Romans','scholastics','jarring','');
INSERT INTO t2 VALUES (4,011403,37,'intercepted','audiology','tinily','');
SELECT * FROM t2;
TRUNCATE TABLE t2;
SELECT * FROM t2;
drop table t1, t2, t4;
...@@ -1001,4 +1001,15 @@ ha_rows ha_archive::records_in_range(uint inx, key_range *min_key, ...@@ -1001,4 +1001,15 @@ ha_rows ha_archive::records_in_range(uint inx, key_range *min_key,
DBUG_ENTER("ha_archive::records_in_range "); DBUG_ENTER("ha_archive::records_in_range ");
DBUG_RETURN(records); // HA_ERR_WRONG_COMMAND DBUG_RETURN(records); // HA_ERR_WRONG_COMMAND
} }
/*
We cancel a truncate command. The only way to delete an archive table is to drop it.
This is done for security reasons. In a later version we will enable this by
allowing the user to select a different row format.
*/
int ha_archive::delete_all_rows()
{
DBUG_ENTER("ha_archive::delete_all_rows");
DBUG_RETURN(0);
}
#endif /* HAVE_ARCHIVE_DB */ #endif /* HAVE_ARCHIVE_DB */
...@@ -95,6 +95,7 @@ class ha_archive: public handler ...@@ -95,6 +95,7 @@ class ha_archive: public handler
int write_row(byte * buf); int write_row(byte * buf);
int update_row(const byte * old_data, byte * new_data); int update_row(const byte * old_data, byte * new_data);
int delete_row(const byte * buf); int delete_row(const byte * buf);
int delete_all_rows();
int index_read(byte * buf, const byte * key, int index_read(byte * buf, const byte * key,
uint key_len, enum ha_rkey_function find_flag); uint key_len, enum ha_rkey_function find_flag);
int index_read_idx(byte * buf, uint idx, const byte * key, int index_read_idx(byte * buf, uint idx, const byte * key,
......
...@@ -531,6 +531,8 @@ extern TYPELIB tx_isolation_typelib; ...@@ -531,6 +531,8 @@ extern TYPELIB tx_isolation_typelib;
#define ha_supports_generate(T) (T != DB_TYPE_INNODB && \ #define ha_supports_generate(T) (T != DB_TYPE_INNODB && \
T != DB_TYPE_BERKELEY_DB && \ T != DB_TYPE_BERKELEY_DB && \
T != DB_TYPE_ARCHIVE_DB && \
T != DB_TYPE_FEDERATED_DB && \
T != DB_TYPE_NDBCLUSTER) T != DB_TYPE_NDBCLUSTER)
bool ha_caching_allowed(THD* thd, char* table_key, bool ha_caching_allowed(THD* thd, char* table_key,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment