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
c59fac93
Commit
c59fac93
authored
Jun 27, 2006
by
jonas@perch.ndb.mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ndb - bug#20252
allow user to specify scan batch size in readTuples
parent
02de4368
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
35 additions
and
16 deletions
+35
-16
ndb/include/ndbapi/NdbIndexScanOperation.hpp
ndb/include/ndbapi/NdbIndexScanOperation.hpp
+4
-2
ndb/include/ndbapi/NdbScanOperation.hpp
ndb/include/ndbapi/NdbScanOperation.hpp
+3
-1
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
+4
-4
ndb/src/ndbapi/NdbReceiver.cpp
ndb/src/ndbapi/NdbReceiver.cpp
+9
-1
ndb/src/ndbapi/NdbScanOperation.cpp
ndb/src/ndbapi/NdbScanOperation.cpp
+15
-8
No files found.
ndb/include/ndbapi/NdbIndexScanOperation.hpp
View file @
c59fac93
...
@@ -41,7 +41,9 @@ public:
...
@@ -41,7 +41,9 @@ public:
* @param parallel No of fragments to scan in parallel (0=max)
* @param parallel No of fragments to scan in parallel (0=max)
*/
*/
virtual
int
readTuples
(
LockMode
lock_mode
=
LM_Read
,
virtual
int
readTuples
(
LockMode
lock_mode
=
LM_Read
,
Uint32
scan_flags
=
0
,
Uint32
parallel
=
0
);
Uint32
scan_flags
=
0
,
Uint32
parallel
=
0
,
Uint32
batch
=
0
);
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
#ifndef DOXYGEN_SHOULD_SKIP_INTERNAL
/**
/**
...
@@ -66,7 +68,7 @@ public:
...
@@ -66,7 +68,7 @@ public:
(
SF_OrderBy
&
-
(
Int32
)
order_by
)
|
(
SF_OrderBy
&
-
(
Int32
)
order_by
)
|
(
SF_Descending
&
-
(
Int32
)
order_desc
)
|
(
SF_Descending
&
-
(
Int32
)
order_desc
)
|
(
SF_ReadRangeNo
&
-
(
Int32
)
read_range_no
);
(
SF_ReadRangeNo
&
-
(
Int32
)
read_range_no
);
return
readTuples
(
lock_mode
,
scan_flags
,
parallel
);
return
readTuples
(
lock_mode
,
scan_flags
,
parallel
,
batch
);
}
}
#endif
#endif
...
...
ndb/include/ndbapi/NdbScanOperation.hpp
View file @
c59fac93
...
@@ -56,7 +56,9 @@ public:
...
@@ -56,7 +56,9 @@ public:
*/
*/
virtual
virtual
int
readTuples
(
LockMode
lock_mode
=
LM_Read
,
int
readTuples
(
LockMode
lock_mode
=
LM_Read
,
Uint32
scan_flags
=
0
,
Uint32
parallel
=
0
);
Uint32
scan_flags
=
0
,
Uint32
parallel
=
0
,
Uint32
batch
=
0
);
#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
#ifndef DOXYGEN_SHOULD_SKIP_DEPRECATED
/**
/**
...
...
ndb/src/kernel/blocks/dblqh/DblqhMain.cpp
View file @
c59fac93
...
@@ -7349,15 +7349,15 @@ void Dblqh::scanLockReleasedLab(Signal* signal)
...
@@ -7349,15 +7349,15 @@ void Dblqh::scanLockReleasedLab(Signal* signal)
scanptr
.
p
->
m_curr_batch_size_rows
=
0
;
scanptr
.
p
->
m_curr_batch_size_rows
=
0
;
scanptr
.
p
->
m_curr_batch_size_bytes
=
0
;
scanptr
.
p
->
m_curr_batch_size_bytes
=
0
;
closeScanLab
(
signal
);
closeScanLab
(
signal
);
}
else
if
(
scanptr
.
p
->
m_last_row
&&
!
scanptr
.
p
->
scanLockHold
)
{
jam
();
closeScanLab
(
signal
);
return
;
}
else
if
(
scanptr
.
p
->
check_scan_batch_completed
()
&&
}
else
if
(
scanptr
.
p
->
check_scan_batch_completed
()
&&
scanptr
.
p
->
scanLockHold
!=
ZTRUE
)
{
scanptr
.
p
->
scanLockHold
!=
ZTRUE
)
{
jam
();
jam
();
scanptr
.
p
->
scanState
=
ScanRecord
::
WAIT_SCAN_NEXTREQ
;
scanptr
.
p
->
scanState
=
ScanRecord
::
WAIT_SCAN_NEXTREQ
;
sendScanFragConf
(
signal
,
ZFALSE
);
sendScanFragConf
(
signal
,
ZFALSE
);
}
else
if
(
scanptr
.
p
->
m_last_row
&&
!
scanptr
.
p
->
scanLockHold
)
{
jam
();
closeScanLab
(
signal
);
return
;
}
else
{
}
else
{
jam
();
jam
();
/*
/*
...
...
ndb/src/ndbapi/NdbReceiver.cpp
View file @
c59fac93
...
@@ -121,7 +121,15 @@ NdbReceiver::calculate_batch_size(Uint32 key_size,
...
@@ -121,7 +121,15 @@ NdbReceiver::calculate_batch_size(Uint32 key_size,
* no more than MAX_SCAN_BATCH_SIZE is sent from all nodes in total per
* no more than MAX_SCAN_BATCH_SIZE is sent from all nodes in total per
* batch.
* batch.
*/
*/
batch_byte_size
=
max_batch_byte_size
;
if
(
batch_size
==
0
)
{
batch_byte_size
=
max_batch_byte_size
;
}
else
{
batch_byte_size
=
batch_size
*
tot_size
;
}
if
(
batch_byte_size
*
parallelism
>
max_scan_batch_size
)
{
if
(
batch_byte_size
*
parallelism
>
max_scan_batch_size
)
{
batch_byte_size
=
max_scan_batch_size
/
parallelism
;
batch_byte_size
=
max_scan_batch_size
/
parallelism
;
}
}
...
...
ndb/src/ndbapi/NdbScanOperation.cpp
View file @
c59fac93
...
@@ -117,7 +117,8 @@ NdbScanOperation::init(const NdbTableImpl* tab, NdbTransaction* myConnection)
...
@@ -117,7 +117,8 @@ NdbScanOperation::init(const NdbTableImpl* tab, NdbTransaction* myConnection)
int
int
NdbScanOperation
::
readTuples
(
NdbScanOperation
::
LockMode
lm
,
NdbScanOperation
::
readTuples
(
NdbScanOperation
::
LockMode
lm
,
Uint32
scan_flags
,
Uint32
scan_flags
,
Uint32
parallel
)
Uint32
parallel
,
Uint32
batch
)
{
{
m_ordered
=
m_descending
=
false
;
m_ordered
=
m_descending
=
false
;
Uint32
fragCount
=
m_currentTable
->
m_fragmentCount
;
Uint32
fragCount
=
m_currentTable
->
m_fragmentCount
;
...
@@ -181,9 +182,12 @@ NdbScanOperation::readTuples(NdbScanOperation::LockMode lm,
...
@@ -181,9 +182,12 @@ NdbScanOperation::readTuples(NdbScanOperation::LockMode lm,
bool
tupScan
=
(
scan_flags
&
SF_TupScan
);
bool
tupScan
=
(
scan_flags
&
SF_TupScan
);
if
(
tupScan
&&
rangeScan
)
if
(
tupScan
&&
rangeScan
)
tupScan
=
false
;
tupScan
=
false
;
theParallelism
=
parallel
;
if
(
rangeScan
&&
(
scan_flags
&
SF_OrderBy
))
parallel
=
fragCount
;
theParallelism
=
parallel
;
if
(
fix_receivers
(
parallel
)
==
-
1
){
if
(
fix_receivers
(
parallel
)
==
-
1
){
setErrorCodeAbort
(
4000
);
setErrorCodeAbort
(
4000
);
return
-
1
;
return
-
1
;
...
@@ -202,6 +206,7 @@ NdbScanOperation::readTuples(NdbScanOperation::LockMode lm,
...
@@ -202,6 +206,7 @@ NdbScanOperation::readTuples(NdbScanOperation::LockMode lm,
req
->
tableSchemaVersion
=
m_accessTable
->
m_version
;
req
->
tableSchemaVersion
=
m_accessTable
->
m_version
;
req
->
storedProcId
=
0xFFFF
;
req
->
storedProcId
=
0xFFFF
;
req
->
buddyConPtr
=
theNdbCon
->
theBuddyConPtr
;
req
->
buddyConPtr
=
theNdbCon
->
theBuddyConPtr
;
req
->
first_batch_size
=
batch
;
// Save user specified batch size
Uint32
reqInfo
=
0
;
Uint32
reqInfo
=
0
;
ScanTabReq
::
setParallelism
(
reqInfo
,
parallel
);
ScanTabReq
::
setParallelism
(
reqInfo
,
parallel
);
...
@@ -750,13 +755,14 @@ int NdbScanOperation::prepareSendScan(Uint32 aTC_ConnectPtr,
...
@@ -750,13 +755,14 @@ int NdbScanOperation::prepareSendScan(Uint32 aTC_ConnectPtr,
* The number of records sent by each LQH is calculated and the kernel
* The number of records sent by each LQH is calculated and the kernel
* is informed of this number by updating the SCAN_TABREQ signal
* is informed of this number by updating the SCAN_TABREQ signal
*/
*/
Uint32
batch_size
,
batch_byte_size
,
first_batch_size
;
ScanTabReq
*
req
=
CAST_PTR
(
ScanTabReq
,
theSCAN_TABREQ
->
getDataPtrSend
());
Uint32
batch_size
=
req
->
first_batch_size
;
// User specified
Uint32
batch_byte_size
,
first_batch_size
;
theReceiver
.
calculate_batch_size
(
key_size
,
theReceiver
.
calculate_batch_size
(
key_size
,
theParallelism
,
theParallelism
,
batch_size
,
batch_size
,
batch_byte_size
,
batch_byte_size
,
first_batch_size
);
first_batch_size
);
ScanTabReq
*
req
=
CAST_PTR
(
ScanTabReq
,
theSCAN_TABREQ
->
getDataPtrSend
());
ScanTabReq
::
setScanBatch
(
req
->
requestInfo
,
batch_size
);
ScanTabReq
::
setScanBatch
(
req
->
requestInfo
,
batch_size
);
req
->
batch_byte_size
=
batch_byte_size
;
req
->
batch_byte_size
=
batch_byte_size
;
req
->
first_batch_size
=
first_batch_size
;
req
->
first_batch_size
=
first_batch_size
;
...
@@ -1206,13 +1212,14 @@ error:
...
@@ -1206,13 +1212,14 @@ error:
int
int
NdbIndexScanOperation
::
readTuples
(
LockMode
lm
,
NdbIndexScanOperation
::
readTuples
(
LockMode
lm
,
Uint32
scan_flags
,
Uint32
scan_flags
,
Uint32
parallel
)
Uint32
parallel
,
Uint32
batch
)
{
{
const
bool
order_by
=
scan_flags
&
SF_OrderBy
;
const
bool
order_by
=
scan_flags
&
SF_OrderBy
;
const
bool
order_desc
=
scan_flags
&
SF_Descending
;
const
bool
order_desc
=
scan_flags
&
SF_Descending
;
const
bool
read_range_no
=
scan_flags
&
SF_ReadRangeNo
;
const
bool
read_range_no
=
scan_flags
&
SF_ReadRangeNo
;
int
res
=
NdbScanOperation
::
readTuples
(
lm
,
scan_flags
,
0
);
int
res
=
NdbScanOperation
::
readTuples
(
lm
,
scan_flags
,
parallel
,
batch
);
if
(
!
res
&&
read_range_no
)
if
(
!
res
&&
read_range_no
)
{
{
m_read_range_no
=
1
;
m_read_range_no
=
1
;
...
...
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