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
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
b1e97c86
Commit
b1e97c86
authored
Feb 04, 2008
by
tomas@poseidon.ndb.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.1-ndb
into poseidon.ndb.mysql.com:/home/tomas/cge-5.1
parents
6a55195f
04c26018
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
45 additions
and
46 deletions
+45
-46
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+44
-39
sql/ha_ndbcluster.h
sql/ha_ndbcluster.h
+1
-7
No files found.
sql/ha_ndbcluster.cc
View file @
b1e97c86
...
...
@@ -313,6 +313,10 @@ int execute_no_commit_ie(ha_ndbcluster *h, NdbTransaction *trans,
/*
Place holder for ha_ndbcluster thread specific data
*/
typedef
struct
st_thd_ndb_share
{
const
void
*
key
;
struct
Ndb_local_table_statistics
stat
;
}
THD_NDB_SHARE
;
static
uchar
*
thd_ndb_share_get_key
(
THD_NDB_SHARE
*
thd_ndb_share
,
size_t
*
length
,
my_bool
not_used
__attribute__
((
unused
)))
...
...
@@ -369,41 +373,6 @@ Thd_ndb::init_open_tables()
my_hash_reset
(
&
open_tables
);
}
THD_NDB_SHARE
*
Thd_ndb
::
get_open_table
(
THD
*
thd
,
const
void
*
key
)
{
DBUG_ENTER
(
"Thd_ndb::get_open_table"
);
HASH_SEARCH_STATE
state
;
THD_NDB_SHARE
*
thd_ndb_share
=
(
THD_NDB_SHARE
*
)
hash_first
(
&
open_tables
,
(
uchar
*
)
&
key
,
sizeof
(
key
),
&
state
);
while
(
thd_ndb_share
&&
thd_ndb_share
->
key
!=
key
)
thd_ndb_share
=
(
THD_NDB_SHARE
*
)
hash_next
(
&
open_tables
,
(
uchar
*
)
&
key
,
sizeof
(
key
),
&
state
);
if
(
thd_ndb_share
==
0
)
{
thd_ndb_share
=
(
THD_NDB_SHARE
*
)
alloc_root
(
&
thd
->
transaction
.
mem_root
,
sizeof
(
THD_NDB_SHARE
));
if
(
!
thd_ndb_share
)
{
mem_alloc_error
(
sizeof
(
THD_NDB_SHARE
));
DBUG_RETURN
(
NULL
);
}
thd_ndb_share
->
key
=
key
;
thd_ndb_share
->
stat
.
last_count
=
count
;
thd_ndb_share
->
stat
.
no_uncommitted_rows_count
=
0
;
thd_ndb_share
->
stat
.
records
=
~
(
ha_rows
)
0
;
my_hash_insert
(
&
open_tables
,
(
uchar
*
)
thd_ndb_share
);
}
else
if
(
thd_ndb_share
->
stat
.
last_count
!=
count
)
{
thd_ndb_share
->
stat
.
last_count
=
count
;
thd_ndb_share
->
stat
.
no_uncommitted_rows_count
=
0
;
thd_ndb_share
->
stat
.
records
=
~
(
ha_rows
)
0
;
}
DBUG_PRINT
(
"exit"
,
(
"thd_ndb_share: 0x%lx key: 0x%lx"
,
(
long
)
thd_ndb_share
,
(
long
)
key
));
DBUG_RETURN
(
thd_ndb_share
);
}
inline
Ndb
*
ha_ndbcluster
::
get_ndb
()
{
...
...
@@ -4554,12 +4523,48 @@ int ha_ndbcluster::init_handler_for_statement(THD *thd, Thd_ndb *thd_ndb)
thd_ndb
->
trans_options
|=
TNTO_INJECTED_APPLY_STATUS
;
}
#endif
// TODO remove double pointers...
if
(
!
(
m_thd_ndb_share
=
thd_ndb
->
get_open_table
(
thd
,
m_table
)
))
if
(
thd
->
options
&
(
OPTION_NOT_AUTOCOMMIT
|
OPTION_BEGIN
))
{
const
void
*
key
=
m_table
;
HASH_SEARCH_STATE
state
;
THD_NDB_SHARE
*
thd_ndb_share
=
(
THD_NDB_SHARE
*
)
hash_first
(
&
thd_ndb
->
open_tables
,
(
uchar
*
)
&
key
,
sizeof
(
key
),
&
state
);
while
(
thd_ndb_share
&&
thd_ndb_share
->
key
!=
key
)
thd_ndb_share
=
(
THD_NDB_SHARE
*
)
hash_next
(
&
thd_ndb
->
open_tables
,
(
uchar
*
)
&
key
,
sizeof
(
key
),
&
state
);
if
(
thd_ndb_share
==
0
)
{
thd_ndb_share
=
(
THD_NDB_SHARE
*
)
alloc_root
(
&
thd
->
transaction
.
mem_root
,
sizeof
(
THD_NDB_SHARE
));
if
(
!
thd_ndb_share
)
{
mem_alloc_error
(
sizeof
(
THD_NDB_SHARE
));
DBUG_RETURN
(
1
);
}
m_table_info
=
&
m_thd_ndb_share
->
stat
;
thd_ndb_share
->
key
=
key
;
thd_ndb_share
->
stat
.
last_count
=
thd_ndb
->
count
;
thd_ndb_share
->
stat
.
no_uncommitted_rows_count
=
0
;
thd_ndb_share
->
stat
.
records
=
~
(
ha_rows
)
0
;
my_hash_insert
(
&
thd_ndb
->
open_tables
,
(
uchar
*
)
thd_ndb_share
);
}
else
if
(
thd_ndb_share
->
stat
.
last_count
!=
thd_ndb
->
count
)
{
thd_ndb_share
->
stat
.
last_count
=
thd_ndb
->
count
;
thd_ndb_share
->
stat
.
no_uncommitted_rows_count
=
0
;
thd_ndb_share
->
stat
.
records
=
~
(
ha_rows
)
0
;
}
DBUG_PRINT
(
"exit"
,
(
"thd_ndb_share: 0x%lx key: 0x%lx"
,
(
long
)
thd_ndb_share
,
(
long
)
key
));
m_table_info
=
&
thd_ndb_share
->
stat
;
}
else
{
struct
Ndb_local_table_statistics
&
stat
=
m_table_info_instance
;
stat
.
last_count
=
thd_ndb
->
count
;
stat
.
no_uncommitted_rows_count
=
0
;
stat
.
records
=
~
(
ha_rows
)
0
;
m_table_info
=
&
stat
;
}
DBUG_RETURN
(
0
);
}
...
...
sql/ha_ndbcluster.h
View file @
b1e97c86
...
...
@@ -195,11 +195,6 @@ struct Ndb_local_table_statistics {
ha_rows
records
;
};
typedef
struct
st_thd_ndb_share
{
const
void
*
key
;
struct
Ndb_local_table_statistics
stat
;
}
THD_NDB_SHARE
;
class
Thd_ndb
{
public:
...
...
@@ -207,7 +202,6 @@ class Thd_ndb
~
Thd_ndb
();
void
init_open_tables
();
THD_NDB_SHARE
*
get_open_table
(
THD
*
thd
,
const
void
*
key
);
Ndb
*
ndb
;
ulong
count
;
...
...
@@ -514,6 +508,7 @@ private:
NdbScanOperation
*
m_active_cursor
;
const
NdbDictionary
::
Table
*
m_table
;
struct
Ndb_local_table_statistics
*
m_table_info
;
struct
Ndb_local_table_statistics
m_table_info_instance
;
char
m_dbname
[
FN_HEADLEN
];
//char m_schemaname[FN_HEADLEN];
char
m_tabname
[
FN_HEADLEN
];
...
...
@@ -522,7 +517,6 @@ private:
bool
m_lock_tuple
;
NDB_SHARE
*
m_share
;
NDB_INDEX_DATA
m_index
[
MAX_KEY
];
THD_NDB_SHARE
*
m_thd_ndb_share
;
// NdbRecAttr has no reference to blob
NdbValue
m_value
[
NDB_MAX_ATTRIBUTES_IN_TABLE
];
uchar
m_ref
[
NDB_HIDDEN_PRIMARY_KEY_LENGTH
];
...
...
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