Commit 4e993175 authored by brian@zim.(none)'s avatar brian@zim.(none)

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

parent 5b35789d
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 @@ public: ...@@ -95,6 +95,7 @@ public:
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