Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
1eff4744
Commit
1eff4744
authored
Mar 27, 2004
by
vva@eagle.mysql.r18.ru
Browse files
Options
Browse Files
Download
Plain Diff
Merge vvagin@bk-internal.mysql.com:/home/bk/mysql-4.0
into eagle.mysql.r18.ru:/home/vva/work/BUG_2342/mysql-4.0
parents
ff5cbb79
23d30c39
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
64 additions
and
0 deletions
+64
-0
mysql-test/r/bdb-crash.result
mysql-test/r/bdb-crash.result
+7
-0
mysql-test/t/bdb-crash.test
mysql-test/t/bdb-crash.test
+12
-0
sql/ha_berkeley.cc
sql/ha_berkeley.cc
+38
-0
sql/handler.h
sql/handler.h
+1
-0
sql/sql_table.cc
sql/sql_table.cc
+6
-0
No files found.
mysql-test/r/bdb-crash.result
View file @
1eff4744
...
...
@@ -30,3 +30,10 @@ ChargeID ServiceID ChargeDate ChargeAmount FedTaxes ProvTaxes ChargeStatus Charg
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;
mysql-test/t/bdb-crash.test
View file @
1eff4744
...
...
@@ -34,3 +34,15 @@ INSERT INTO t1
VALUES
(
NULL
,
1
,
'2001-03-01'
,
1
,
1
,
1
,
'New'
,
NULL
,
NULL
,
'now'
);
select
*
from
t1
;
drop
table
t1
;
#
# Test for bug #2342 "Running ANALYZE TABLE on bdb table
# inside a transaction hangs server thread"
#
create
table
t1
(
a
int
)
engine
=
bdb
;
set
autocommit
=
0
;
insert
into
t1
values
(
1
);
analyze
table
t1
;
drop
table
t1
;
\ No newline at end of file
sql/ha_berkeley.cc
View file @
1eff4744
...
...
@@ -2099,6 +2099,44 @@ int ha_berkeley::analyze(THD* thd, HA_CHECK_OPT* check_opt)
{
DB_BTREE_STAT
*
stat
=
0
;
uint
i
;
DB_TXN_STAT
*
txn_stat_ptr
=
0
;
/*
If it's a merge conflict here (4.0->4.1), please ignore it!
The reason of the conflict is the difference between versions of bdb:
mysql-4.0 uses bdb 3.2.9
mysql-4.1 uses bdb 4.1.24
Older one has global functions txn_stat and txn_id but
newer one has DB_ENV->txn_stat and DB_TXN->id
*/
if
(
!
txn_stat
(
db_env
,
&
txn_stat_ptr
,
0
)
&&
txn_stat_ptr
&&
txn_stat_ptr
->
st_nactive
>=
2
)
{
DB_TXN_ACTIVE
*
atxn_stmt
=
0
,
*
atxn_all
=
0
;
DB_TXN
*
txn_all
=
(
DB_TXN
*
)
thd
->
transaction
.
all
.
bdb_tid
;
u_int32_t
all_id
=
txn_id
(
txn_all
);
DB_TXN
*
txn_stmt
=
(
DB_TXN
*
)
thd
->
transaction
.
stmt
.
bdb_tid
;
u_int32_t
stmt_id
=
txn_id
(
txn_stmt
);
DB_TXN_ACTIVE
*
cur
=
txn_stat_ptr
->
st_txnarray
;
DB_TXN_ACTIVE
*
end
=
cur
+
txn_stat_ptr
->
st_nactive
;
for
(;
cur
!=
end
&&
(
!
atxn_stmt
||
!
atxn_all
);
cur
++
)
{
if
(
cur
->
txnid
==
all_id
)
atxn_all
=
cur
;
if
(
cur
->
txnid
==
stmt_id
)
atxn_stmt
=
cur
;
}
if
(
atxn_stmt
&&
atxn_all
&&
log_compare
(
&
atxn_stmt
->
lsn
,
&
atxn_all
->
lsn
))
{
free
(
txn_stat_ptr
);
return
HA_ADMIN_REJECT
;
}
free
(
txn_stat_ptr
);
}
for
(
i
=
0
;
i
<
table
->
keys
;
i
++
)
{
...
...
sql/handler.h
View file @
1eff4744
...
...
@@ -40,6 +40,7 @@
#define HA_ADMIN_CORRUPT -3
#define HA_ADMIN_INTERNAL_ERROR -4
#define HA_ADMIN_INVALID -5
#define HA_ADMIN_REJECT -6
/* Bits in table_flags() to show what database can do */
#define HA_READ_RND_SAME 1
/* Read RND-record to KEY-record
...
...
sql/sql_table.cc
View file @
1eff4744
...
...
@@ -1330,6 +1330,12 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
net_store_data
(
packet
,
"Operation failed"
);
break
;
case
HA_ADMIN_REJECT
:
net_store_data
(
packet
,
"status"
);
net_store_data
(
packet
,
"Operation need committed state"
);
open_for_modify
=
false
;
break
;
case
HA_ADMIN_ALREADY_DONE
:
net_store_data
(
packet
,
"status"
);
net_store_data
(
packet
,
"Table is already up to date"
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment