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
3411ba8b
Commit
3411ba8b
authored
Apr 12, 2007
by
jonas@perch.ndb.mysql.com
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ndb - hugo - add new method for setting primary key(s)
parent
3ddd25f2
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
87 additions
and
148 deletions
+87
-148
storage/ndb/test/include/HugoOperations.hpp
storage/ndb/test/include/HugoOperations.hpp
+2
-0
storage/ndb/test/src/HugoAsynchTransactions.cpp
storage/ndb/test/src/HugoAsynchTransactions.cpp
+23
-35
storage/ndb/test/src/HugoOperations.cpp
storage/ndb/test/src/HugoOperations.cpp
+33
-60
storage/ndb/test/src/HugoTransactions.cpp
storage/ndb/test/src/HugoTransactions.cpp
+29
-53
No files found.
storage/ndb/test/include/HugoOperations.hpp
View file @
3411ba8b
...
...
@@ -83,6 +83,8 @@ public:
int
equalForAttr
(
NdbOperation
*
,
int
attrId
,
int
rowId
);
int
equalForRow
(
NdbOperation
*
,
int
rowid
);
int
setValues
(
NdbOperation
*
,
int
rowId
,
int
updateId
);
...
...
storage/ndb/test/src/HugoAsynchTransactions.cpp
View file @
3411ba8b
...
...
@@ -188,14 +188,11 @@ HugoAsynchTransactions::pkUpdateRecordsAsynch(Ndb* pNdb,
// Read
// Define primary keys
check
=
pOp
->
readTupleExclusive
();
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
)
{
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
)
{
if
(
equalForAttr
(
pOp
,
a
,
cReadRecords
)
!=
0
){
ERR
(
transactions
[
t
]
->
getNdbError
());
pNdb
->
closeTransaction
(
transactions
[
t
]);
return
NDBT_FAILED
;
}
}
if
(
equalForRow
(
pOp
,
cReadRecords
)
!=
0
)
{
ERR
(
transactions
[
t
]
->
getNdbError
());
pNdb
->
closeTransaction
(
transactions
[
t
]);
return
NDBT_FAILED
;
}
// Define attributes to read
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
)
{
...
...
@@ -259,15 +256,12 @@ HugoAsynchTransactions::pkUpdateRecordsAsynch(Ndb* pNdb,
}
// Set search condition for the record
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
)
{
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
)
{
if
(
equalForAttr
(
pOp
,
a
,
cRecords
)
!=
0
)
{
ERR
(
transactions
[
t
]
->
getNdbError
());
pNdb
->
closeTransaction
(
transactions
[
t
]);
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
cReadRecords
)
!=
0
)
{
ERR
(
transactions
[
t
]
->
getNdbError
());
pNdb
->
closeTransaction
(
transactions
[
t
]);
return
NDBT_FAILED
;
}
// Update the record
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
)
{
...
...
@@ -396,15 +390,12 @@ HugoAsynchTransactions::executeAsynchOperation(Ndb* pNdb,
case
NO_READ
:
// Define primary keys
check
=
pOp
->
readTuple
();
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
)
{
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
)
{
if
(
equalForAttr
(
pOp
,
a
,
cRecords
)
!=
0
){
ERR
(
transactions
[
t
]
->
getNdbError
());
pNdb
->
closeTransaction
(
transactions
[
t
]);
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
cRecords
)
!=
0
)
{
ERR
(
transactions
[
t
]
->
getNdbError
());
pNdb
->
closeTransaction
(
transactions
[
t
]);
return
NDBT_FAILED
;
}
// Define attributes to read
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
)
{
if
((
rows
[
cIndex
]
->
attributeStore
(
a
)
=
...
...
@@ -425,15 +416,12 @@ HugoAsynchTransactions::executeAsynchOperation(Ndb* pNdb,
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
)
{
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
cRecords
)
!=
0
)
{
ERR
(
transactions
[
t
]
->
getNdbError
());
pNdb
->
closeTransaction
(
transactions
[
t
]);
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
cRecords
)
!=
0
)
{
ERR
(
transactions
[
t
]
->
getNdbError
());
pNdb
->
closeTransaction
(
transactions
[
t
]);
return
NDBT_FAILED
;
}
break
;
default:
// Should not happen...
...
...
storage/ndb/test/src/HugoOperations.cpp
View file @
3411ba8b
...
...
@@ -111,14 +111,8 @@ rand_lock_mode:
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
r
+
recordNo
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
r
+
recordNo
)
!=
0
)
return
NDBT_FAILED
;
if
(
pIndexScanOp
)
pIndexScanOp
->
end_of_bound
(
r
);
...
...
@@ -143,7 +137,6 @@ int HugoOperations::pkUpdateRecord(Ndb* pNdb,
int
recordNo
,
int
numRecords
,
int
updatesValue
){
int
a
;
allocRows
(
numRecords
);
int
check
;
for
(
int
r
=
0
;
r
<
numRecords
;
r
++
){
...
...
@@ -172,14 +165,8 @@ HugoOperations::setValues(NdbOperation* pOp, int rowId, int updateId)
{
// Define primary keys
int
a
;
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
rowId
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
rowId
)
!=
0
)
return
NDBT_FAILED
;
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
false
){
...
...
@@ -198,7 +185,7 @@ int HugoOperations::pkInsertRecord(Ndb* pNdb,
int
numRecords
,
int
updatesValue
){
int
a
,
check
;
int
check
;
for
(
int
r
=
0
;
r
<
numRecords
;
r
++
){
NdbOperation
*
pOp
=
getOperation
(
pTrans
,
NdbOperation
::
InsertRequest
);
if
(
pOp
==
NULL
)
{
...
...
@@ -240,14 +227,8 @@ int HugoOperations::pkWriteRecord(Ndb* pNdb,
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
r
+
recordNo
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
r
+
recordNo
)
!=
0
)
return
NDBT_FAILED
;
// Define attributes to update
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
...
...
@@ -266,7 +247,7 @@ int HugoOperations::pkWritePartialRecord(Ndb* pNdb,
int
recordNo
,
int
numRecords
){
int
a
,
check
;
int
check
;
for
(
int
r
=
0
;
r
<
numRecords
;
r
++
){
NdbOperation
*
pOp
=
pTrans
->
getNdbOperation
(
tab
.
getName
());
if
(
pOp
==
NULL
)
{
...
...
@@ -281,14 +262,8 @@ int HugoOperations::pkWritePartialRecord(Ndb* pNdb,
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
r
+
recordNo
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
r
+
recordNo
)
!=
0
)
return
NDBT_FAILED
;
}
return
NDBT_OK
;
}
...
...
@@ -297,7 +272,7 @@ int HugoOperations::pkDeleteRecord(Ndb* pNdb,
int
recordNo
,
int
numRecords
){
int
a
,
check
;
int
check
;
for
(
int
r
=
0
;
r
<
numRecords
;
r
++
){
NdbOperation
*
pOp
=
getOperation
(
pTrans
,
NdbOperation
::
DeleteRequest
);
if
(
pOp
==
NULL
)
{
...
...
@@ -312,14 +287,8 @@ int HugoOperations::pkDeleteRecord(Ndb* pNdb,
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
r
+
recordNo
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
r
+
recordNo
)
!=
0
)
return
NDBT_FAILED
;
}
return
NDBT_OK
;
}
...
...
@@ -518,6 +487,22 @@ HugoOperations::~HugoOperations(){
}
}
int
HugoOperations
::
equalForRow
(
NdbOperation
*
pOp
,
int
row
)
{
for
(
int
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
)
{
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
)
{
if
(
equalForAttr
(
pOp
,
a
,
row
)
!=
0
)
{
ERR
(
pOp
->
getNdbError
());
return
NDBT_FAILED
;
}
}
}
return
NDBT_OK
;
}
int
HugoOperations
::
equalForAttr
(
NdbOperation
*
pOp
,
int
attrId
,
...
...
@@ -676,14 +661,8 @@ int HugoOperations::indexReadRecords(Ndb*, const char * idxName, int recordNo,
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
r
+
recordNo
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
r
+
recordNo
)
!=
0
)
return
NDBT_FAILED
;
// Define attributes to read
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
...
...
@@ -720,14 +699,8 @@ HugoOperations::indexUpdateRecord(Ndb*,
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
r
+
recordNo
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
return
NDBT_FAILED
;
}
}
}
if
(
equalForRow
(
pOp
,
r
+
recordNo
)
!=
0
)
return
NDBT_FAILED
;
// Define attributes to update
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
...
...
storage/ndb/test/src/HugoTransactions.cpp
View file @
3411ba8b
...
...
@@ -520,10 +520,9 @@ HugoTransactions::loadTable(Ndb* pNdb,
bool
oneTrans
,
int
value
,
bool
abort
){
int
check
,
a
;
int
check
;
int
retryAttempt
=
0
;
int
retryMax
=
5
;
NdbOperation
*
pOp
;
bool
first_batch
=
true
;
const
int
org
=
batch
;
...
...
@@ -667,10 +666,9 @@ HugoTransactions::loadTable(Ndb* pNdb,
int
HugoTransactions
::
fillTable
(
Ndb
*
pNdb
,
int
batch
){
int
check
,
a
,
b
;
int
check
;
int
retryAttempt
=
0
;
int
retryMax
=
5
;
NdbOperation
*
pOp
;
const
int
org
=
batch
;
const
int
cols
=
tab
.
getNoOfColumns
();
...
...
@@ -791,7 +789,7 @@ HugoTransactions::pkReadRecords(Ndb* pNdb,
int
reads
=
0
;
int
r
=
0
;
int
retryAttempt
=
0
;
int
check
,
a
;
int
check
;
if
(
batch
==
0
)
{
g_info
<<
"ERROR: Argument batch == 0 in pkReadRecords(). Not allowed."
<<
endl
;
...
...
@@ -910,8 +908,7 @@ HugoTransactions::pkUpdateRecords(Ndb* pNdb,
int
updated
=
0
;
int
r
=
0
;
int
retryAttempt
=
0
;
int
check
,
a
,
b
;
NdbOperation
*
pOp
;
int
check
,
b
;
allocRows
(
batch
);
...
...
@@ -1097,14 +1094,10 @@ HugoTransactions::pkInterpretedUpdateRecords(Ndb* pNdb,
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
r
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
}
if
(
equalForRow
(
pOp
,
r
)
!=
0
)
{
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
// Read update value
...
...
@@ -1153,14 +1146,10 @@ HugoTransactions::pkInterpretedUpdateRecords(Ndb* pNdb,
}
// PKs
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pUpdOp
,
a
,
r
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
}
if
(
equalForRow
(
pOp
,
r
)
!=
0
)
{
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
// Update col
...
...
@@ -1236,8 +1225,7 @@ HugoTransactions::pkDelRecords(Ndb* pNdb,
int
deleted
=
0
;
int
r
=
0
;
int
retryAttempt
=
0
;
int
check
,
a
;
NdbOperation
*
pOp
;
int
check
;
g_info
<<
"|- Deleting records..."
<<
endl
;
while
(
r
<
records
){
...
...
@@ -1335,8 +1323,7 @@ HugoTransactions::lockRecords(Ndb* pNdb,
// and lock som other records
int
r
=
0
;
int
retryAttempt
=
0
;
int
check
,
a
,
b
;
NdbOperation
*
pOp
;
int
check
;
NdbOperation
::
LockMode
lm
=
NdbOperation
::
LM_Exclusive
;
// Calculate how many records to lock in each batch
...
...
@@ -1522,14 +1509,10 @@ HugoTransactions::indexReadRecords(Ndb* pNdb,
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
r
+
b
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
}
if
(
equalForRow
(
pOp
,
r
+
b
)
!=
0
)
{
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
// Define attributes to read
...
...
@@ -1663,14 +1646,10 @@ HugoTransactions::indexUpdateRecords(Ndb* pNdb,
}
// Define primary keys
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pOp
,
a
,
r
+
b
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
}
if
(
equalForRow
(
pOp
,
r
+
b
)
!=
0
)
{
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
// Define attributes to read
...
...
@@ -1733,16 +1712,13 @@ HugoTransactions::indexUpdateRecords(Ndb* pNdb,
return
NDBT_FAILED
;
}
if
(
!
ordered
){
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
if
(
tab
.
getColumn
(
a
)
->
getPrimaryKey
()
==
true
){
if
(
equalForAttr
(
pUpdOp
,
a
,
r
+
b
)
!=
0
){
ERR
(
pTrans
->
getNdbError
());
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
}
}
if
(
!
ordered
)
{
if
(
equalForRow
(
pOp
,
r
+
b
)
!=
0
)
{
closeTransaction
(
pNdb
);
return
NDBT_FAILED
;
}
}
for
(
a
=
0
;
a
<
tab
.
getNoOfColumns
();
a
++
){
...
...
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