mariadb/mysql-test/r/bdb-crash.result
unknown aab1e50e71 fixed bug #2342
"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)
2004-03-27 00:35:45 +04:00

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;