mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 13:32:33 +01:00
aab1e50e71
"Running ANALYZE TABLE on bdb table inside a transaction hangs server thread" 1. added new status HA_ADMIN_REJECT and processing of it in mysql_admin_table 2. got ha_berkley::analyze to return HA_ADMIN_REJECT if there are any transactions with the table.. mysql-test/r/bdb-crash.result: added test for bug #2342 "Running ANALYZE TABLE on bdb table inside a transaction hangs server thread" mysql-test/t/bdb-crash.test: added test for bug #2342 "Running ANALYZE TABLE on bdb table inside a transaction hangs server thread" sql/ha_berkeley.cc: fixed bug #2342 "Running ANALYZE TABLE on bdb table inside a transaction hangs server thread" we have to return new status "HA_ADMIN_REJECT" for ha_berkley::analyze if there are any transaction for this table so as bdb documentation says: "The DB->stat method cannot be transaction protected" sql/handler.h: added new status of table info "HA_ADMIN_REJECT" We have to return this status for bdb tables which have any active transactions so as bdb-documentation says: "The DB->stat method cannot be transaction-protected" sql/sql_table.cc: added processing of the new status HA_ADMIN_REJECT in mysql_admin_table (reason to add this status is explained in comment for commit on sql/handler.h)
39 lines
1.3 KiB
Text
39 lines
1.3 KiB
Text
drop table if exists t1;
|
|
CREATE TABLE t1 (
|
|
ChargeID int(10) unsigned NOT NULL auto_increment,
|
|
ServiceID int(10) unsigned DEFAULT '0' NOT NULL,
|
|
ChargeDate date DEFAULT '0000-00-00' NOT NULL,
|
|
ChargeAmount decimal(20,2) DEFAULT '0.00' NOT NULL,
|
|
FedTaxes decimal(20,2) DEFAULT '0.00' NOT NULL,
|
|
ProvTaxes decimal(20,2) DEFAULT '0.00' NOT NULL,
|
|
ChargeStatus enum('New','Auth','Unauth','Sale','Denied','Refund')
|
|
DEFAULT 'New' NOT NULL,
|
|
ChargeAuthorizationMessage text,
|
|
ChargeComment text,
|
|
ChargeTimeStamp varchar(20),
|
|
PRIMARY KEY (ChargeID),
|
|
KEY ServiceID (ServiceID),
|
|
KEY ChargeDate (ChargeDate)
|
|
) type=BDB;
|
|
BEGIN;
|
|
INSERT INTO t1
|
|
VALUES(NULL,1,'2001-03-01',1,1,1,'New',NULL,NULL,'now');
|
|
COMMIT;
|
|
BEGIN;
|
|
UPDATE t1 SET ChargeAuthorizationMessage = 'blablabla' WHERE
|
|
ChargeID = 1;
|
|
COMMIT;
|
|
INSERT INTO t1
|
|
VALUES(NULL,1,'2001-03-01',1,1,1,'New',NULL,NULL,'now');
|
|
select * from t1;
|
|
ChargeID ServiceID ChargeDate ChargeAmount FedTaxes ProvTaxes ChargeStatus ChargeAuthorizationMessage ChargeComment ChargeTimeStamp
|
|
1 1 2001-03-01 1.00 1.00 1.00 New blablabla NULL now
|
|
2 1 2001-03-01 1.00 1.00 1.00 New NULL NULL now
|
|
drop table t1;
|
|
create table t1 (a int) engine=bdb;
|
|
set autocommit=0;
|
|
insert into t1 values(1);
|
|
analyze table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 analyze status Operation need committed state
|
|
drop table t1;
|