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
a716d2c4
Commit
a716d2c4
authored
Oct 06, 2004
by
joreland@mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bug#5367
subqueries with "not in" and ndb
parent
761bc1ce
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
62 additions
and
8 deletions
+62
-8
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
+22
-4
sql/ha_ndbcluster.cc
sql/ha_ndbcluster.cc
+40
-4
No files found.
ndb/src/kernel/blocks/dbtc/DbtcMain.cpp
View file @
a716d2c4
...
...
@@ -1249,7 +1249,8 @@ void Dbtc::execTCRELEASEREQ(Signal* signal)
jam
();
signal
->
theData
[
0
]
=
tuserpointer
;
signal
->
theData
[
1
]
=
ZINVALID_CONNECTION
;
sendSignal
(
tapiBlockref
,
GSN_TCRELEASEREF
,
signal
,
2
,
JBB
);
signal
->
theData
[
2
]
=
__LINE__
;
sendSignal
(
tapiBlockref
,
GSN_TCRELEASEREF
,
signal
,
3
,
JBB
);
return
;
}
else
{
jam
();
...
...
@@ -1262,7 +1263,9 @@ void Dbtc::execTCRELEASEREQ(Signal* signal)
sendSignal
(
tapiBlockref
,
GSN_TCRELEASECONF
,
signal
,
1
,
JBB
);
}
else
{
if
(
tapiBlockref
==
apiConnectptr
.
p
->
ndbapiBlockref
)
{
if
(
apiConnectptr
.
p
->
apiConnectstate
==
CS_CONNECTED
)
{
if
(
apiConnectptr
.
p
->
apiConnectstate
==
CS_CONNECTED
||
(
apiConnectptr
.
p
->
apiConnectstate
==
CS_ABORTING
&&
apiConnectptr
.
p
->
abortState
==
AS_IDLE
)){
jam
();
/* JUST REPLY OK */
releaseApiCon
(
signal
,
apiConnectptr
.
i
);
signal
->
theData
[
0
]
=
tuserpointer
;
...
...
@@ -1272,14 +1275,19 @@ void Dbtc::execTCRELEASEREQ(Signal* signal)
jam
();
signal
->
theData
[
0
]
=
tuserpointer
;
signal
->
theData
[
1
]
=
ZINVALID_CONNECTION
;
signal
->
theData
[
2
]
=
__LINE__
;
signal
->
theData
[
3
]
=
apiConnectptr
.
p
->
apiConnectstate
;
sendSignal
(
tapiBlockref
,
GSN_TCRELEASEREF
,
signal
,
2
,
JBB
);
GSN_TCRELEASEREF
,
signal
,
4
,
JBB
);
}
}
else
{
jam
();
signal
->
theData
[
0
]
=
tuserpointer
;
signal
->
theData
[
1
]
=
ZINVALID_CONNECTION
;
sendSignal
(
tapiBlockref
,
GSN_TCRELEASEREF
,
signal
,
2
,
JBB
);
signal
->
theData
[
2
]
=
__LINE__
;
signal
->
theData
[
3
]
=
tapiBlockref
;
signal
->
theData
[
4
]
=
apiConnectptr
.
p
->
ndbapiBlockref
;
sendSignal
(
tapiBlockref
,
GSN_TCRELEASEREF
,
signal
,
5
,
JBB
);
}
//if
}
//if
}
//Dbtc::execTCRELEASEREQ()
...
...
@@ -3837,6 +3845,7 @@ void Dbtc::sendtckeyconf(Signal* signal, UintR TcommitFlag)
jam
();
return
;
// No queued TcKeyConf
}
//if
ndbout_c
(
"TopWords: %d"
,
TopWords
);
}
//if
if
(
TcommitFlag
){
jam
();
...
...
@@ -6081,6 +6090,7 @@ void Dbtc::timeOutFoundLab(Signal* signal, Uint32 TapiConPtr)
<<
" - place: "
<<
c_apiConTimer_line
[
apiConnectptr
.
i
]);
switch
(
apiConnectptr
.
p
->
apiConnectstate
)
{
case
CS_STARTED
:
ndbrequire
(
c_apiConTimer_line
[
apiConnectptr
.
i
]
!=
3615
);
if
(
apiConnectptr
.
p
->
lqhkeyreqrec
==
apiConnectptr
.
p
->
lqhkeyconfrec
){
jam
();
/*
...
...
@@ -11408,6 +11418,7 @@ void Dbtc::execTCKEYCONF(Signal* signal)
Uint32
Ttcindxrec
=
regApiPtr
->
tcindxrec
;
// Copy reply from TcKeyConf
ndbassert
(
regApiPtr
->
noIndexOp
);
regApiPtr
->
noIndexOp
--
;
// Decrease count
regApiPtr
->
tcIndxSendArray
[
Ttcindxrec
]
=
indexOp
->
tcIndxReq
.
senderData
;
regApiPtr
->
tcIndxSendArray
[
Ttcindxrec
+
1
]
=
...
...
@@ -11466,6 +11477,12 @@ void Dbtc::execTCKEYREF(Signal* signal)
abortErrorLab
(
signal
);
break
;
}
/**
* Increase count as it will be decreased below...
* (and the code is written to handle failing lookup on "real" table
* not lookup on index table)
*/
regApiPtr
->
noIndexOp
++
;
// else continue
}
case
(
IOS_INDEX_OPERATION
):
{
...
...
@@ -11475,6 +11492,7 @@ void Dbtc::execTCKEYREF(Signal* signal)
TcIndxReq
*
const
tcIndxReq
=
&
indexOp
->
tcIndxReq
;
TcIndxRef
*
const
tcIndxRef
=
(
TcIndxRef
*
)
signal
->
getDataPtrSend
();
ndbassert
(
regApiPtr
->
noIndexOp
);
regApiPtr
->
noIndexOp
--
;
// Decrease count
tcIndxRef
->
connectPtr
=
tcIndxReq
->
senderData
;
tcIndxRef
->
transId
[
0
]
=
tcKeyRef
->
transId
[
0
];
...
...
sql/ha_ndbcluster.cc
View file @
a716d2c4
...
...
@@ -2154,11 +2154,47 @@ int ha_ndbcluster::index_read(byte *buf,
DBUG_PRINT
(
"enter"
,
(
"active_index: %u, key_len: %u, find_flag: %d"
,
active_index
,
key_len
,
find_flag
));
int
error
;
ndb_index_type
type
=
get_index_type
(
active_index
);
const
KEY
*
key_info
=
table
->
key_info
+
active_index
;
switch
(
type
){
case
PRIMARY_KEY_ORDERED_INDEX
:
case
PRIMARY_KEY_INDEX
:
if
(
find_flag
==
HA_READ_KEY_EXACT
&&
key_info
->
key_length
==
key_len
)
{
DBUG_RETURN
(
pk_read
(
key
,
key_len
,
buf
));
}
else
if
(
type
==
PRIMARY_KEY_INDEX
)
{
DBUG_RETURN
(
1
);
}
break
;
case
UNIQUE_ORDERED_INDEX
:
case
UNIQUE_INDEX
:
if
(
find_flag
==
HA_READ_KEY_EXACT
&&
key_info
->
key_length
==
key_len
)
{
DBUG_RETURN
(
unique_index_read
(
key
,
key_len
,
buf
));
}
else
if
(
type
==
UNIQUE_INDEX
)
{
DBUG_RETURN
(
1
);
}
break
;
case
ORDERED_INDEX
:
break
;
default:
case
UNDEFINED_INDEX
:
DBUG_ASSERT
(
false
);
return
1
;
break
;
}
key_range
start_key
;
start_key
.
key
=
key
;
start_key
.
length
=
key_len
;
start_key
.
flag
=
find_flag
;
DBUG_RETURN
(
read_range_first_to_buf
(
&
start_key
,
NULL
,
false
,
true
,
buf
));
start_key
.
key
=
key
;
start_key
.
length
=
key_len
;
start_key
.
flag
=
find_flag
;
error
=
ordered_index_scan
(
&
start_key
,
0
,
true
,
buf
);
DBUG_RETURN
(
error
==
HA_ERR_END_OF_FILE
?
HA_ERR_KEY_NOT_FOUND
:
error
);
}
...
...
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