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
3879b149
Commit
3879b149
authored
Dec 10, 2004
by
unknown
Browse files
Options
Browse Files
Download
Plain Diff
Merge tulin@bk-internal.mysql.com:/home/bk/mysql-5.0-ndb
into poseidon.ndb.mysql.com:/home/tomas/mysql-5.0-ndb
parents
4d83b7a5
07735208
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
124 additions
and
40 deletions
+124
-40
ndb/include/kernel/ndb_limits.h
ndb/include/kernel/ndb_limits.h
+1
-0
ndb/include/kernel/signaldata/TupFrag.hpp
ndb/include/kernel/signaldata/TupFrag.hpp
+2
-1
ndb/include/util/Bitmask.hpp
ndb/include/util/Bitmask.hpp
+1
-1
ndb/src/common/util/Bitmask.cpp
ndb/src/common/util/Bitmask.cpp
+67
-1
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp
+8
-1
ndb/src/ndbapi/ndberror.c
ndb/src/ndbapi/ndberror.c
+2
-1
ndb/test/ndbapi/testBitfield.cpp
ndb/test/ndbapi/testBitfield.cpp
+39
-35
ndb/test/run-test/daily-basic-tests.txt
ndb/test/run-test/daily-basic-tests.txt
+4
-0
No files found.
ndb/include/kernel/ndb_limits.h
View file @
3879b149
...
...
@@ -61,6 +61,7 @@
#define MAX_FIXED_KEY_LENGTH_IN_WORDS 8
#define MAX_KEY_SIZE_IN_WORDS 1023
#define MAX_FRM_DATA_SIZE 6000
#define MAX_NULL_BITS 4096
#define MIN_ATTRBUF ((MAX_ATTRIBUTES_IN_TABLE/24) + 1)
/*
...
...
ndb/include/kernel/signaldata/TupFrag.hpp
View file @
3879b149
...
...
@@ -145,7 +145,8 @@ public:
STATIC_CONST
(
SignalLength
=
2
);
enum
ErrorCode
{
NoError
=
0
,
InvalidCharset
=
743
InvalidCharset
=
743
,
TooManyBitsUsed
=
831
};
private:
Uint32
userPtr
;
...
...
ndb/include/util/Bitmask.hpp
View file @
3879b149
...
...
@@ -818,7 +818,7 @@ BitmaskImpl::getField(unsigned size, const Uint32 src[],
src
+=
(
pos
>>
5
);
Uint32
offset
=
pos
&
31
;
dst
[
0
]
=
(
*
src
>>
offset
)
&
(
len
>=
32
?
~
0
:
(
1
<<
len
)
-
1
);
*
dst
=
(
*
src
>>
offset
)
&
(
len
>=
32
?
~
0
:
(
1
<<
len
)
-
1
);
if
(
offset
+
len
<=
32
)
{
...
...
ndb/src/common/util/Bitmask.cpp
View file @
3879b149
...
...
@@ -26,6 +26,9 @@ BitmaskImpl::getFieldImpl(const Uint32 src[],
unsigned
shiftR
=
32
-
shiftL
;
unsigned
undefined
=
shiftL
?
~
0
:
0
;
*
dst
=
shiftL
?
*
dst
:
0
;
while
(
len
>=
32
)
{
*
dst
++
|=
(
*
src
)
<<
shiftL
;
...
...
@@ -169,6 +172,69 @@ void simple(int pos, int size)
require
(
cmp
(
src
,
dst
,
size
+
31
));
};
static
void
simple2
(
int
size
,
int
loops
)
{
ndbout_c
(
"simple2 %d - "
,
size
);
Vector
<
Uint32
>
_mask
;
Vector
<
Uint32
>
_src
;
Vector
<
Uint32
>
_dst
;
Uint32
sz32
=
(
size
+
32
)
>>
5
;
Uint32
sz
=
sz32
<<
2
;
Uint32
zero
=
0
;
_mask
.
fill
(
sz32
+
1
,
zero
);
_src
.
fill
(
sz32
+
1
,
zero
);
_dst
.
fill
(
sz32
+
1
,
zero
);
Uint32
*
src
=
_src
.
getBase
();
Uint32
*
dst
=
_dst
.
getBase
();
Uint32
*
mask
=
_mask
.
getBase
();
Vector
<
Uint32
>
save
;
for
(
int
i
=
0
;
i
<
loops
;
i
++
)
{
memset
(
mask
,
0xFF
,
sz
);
memset
(
dst
,
0xFF
,
sz
);
int
len
;
int
pos
=
0
;
while
(
pos
+
1
<
size
)
{
memset
(
src
,
0xFF
,
sz
);
while
(
!
(
len
=
rand
()
%
(
size
-
pos
)));
BitmaskImpl
::
setField
(
sz32
,
mask
,
pos
,
len
,
src
);
if
(
memcmp
(
dst
,
mask
,
sz
))
{
ndbout_c
(
"pos: %d len: %d"
,
pos
,
len
);
print
(
mask
,
size
);
abort
();
}
printf
(
"[ %d %d ]"
,
pos
,
len
);
save
.
push_back
(
pos
);
save
.
push_back
(
len
);
pos
+=
len
;
}
for
(
int
j
=
0
;
j
<
save
.
size
();
)
{
pos
=
save
[
j
++
];
len
=
save
[
j
++
];
memset
(
src
,
0xFF
,
sz
);
BitmaskImpl
::
getField
(
sz32
,
mask
,
pos
,
len
,
src
);
if
(
memcmp
(
dst
,
src
,
sz
))
{
ndbout_c
(
"pos: %d len: %d"
,
pos
,
len
);
printf
(
"src: "
);
print
(
src
,
size
);
printf
(
"
\n
"
);
printf
(
"dst: "
);
print
(
dst
,
size
);
printf
(
"
\n
"
);
printf
(
"msk: "
);
print
(
mask
,
size
);
printf
(
"
\n
"
);
abort
();
}
}
ndbout_c
(
""
);
}
}
static
void
do_test
(
int
bitmask_size
)
{
...
...
ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp
View file @
3879b149
...
...
@@ -311,6 +311,7 @@ void Dbtup::execTUP_ADD_ATTRREQ(Signal* signal)
setTabDescrWord
(
firstTabDesIndex
,
attrDescriptor
);
Uint32
attrLen
=
AttributeDescriptor
::
getSize
(
attrDescriptor
);
Uint32
nullBitPos
=
fragOperPtr
.
p
->
currNullBit
;
Uint32
bitCount
=
0
;
if
(
AttributeDescriptor
::
getNullable
(
attrDescriptor
))
{
if
(
!
AttributeDescriptor
::
getDynamic
(
attrDescriptor
))
{
...
...
@@ -342,7 +343,7 @@ void Dbtup::execTUP_ADD_ATTRREQ(Signal* signal)
else
{
ljam
();
Uint32
bitCount
=
AttributeDescriptor
::
getArraySize
(
attrDescriptor
);
bitCount
=
AttributeDescriptor
::
getArraySize
(
attrDescriptor
);
fragOperPtr
.
p
->
currNullBit
+=
bitCount
;
break
;
}
...
...
@@ -351,6 +352,12 @@ void Dbtup::execTUP_ADD_ATTRREQ(Signal* signal)
ndbrequire
(
false
);
break
;
}
//switch
if
(
nullBitPos
+
bitCount
+
1
>=
MAX_NULL_BITS
)
{
terrorCode
=
TupAddAttrRef
::
TooManyBitsUsed
;
addattrrefuseLab
(
signal
,
regFragPtr
,
fragOperPtr
,
regTabPtr
.
p
,
fragId
);
return
;
}
AttributeOffset
::
setOffset
(
attrDes2
,
attributePos
);
AttributeOffset
::
setNullFlagPos
(
attrDes2
,
nullBitPos
);
}
else
{
...
...
ndb/src/ndbapi/ndberror.c
View file @
3879b149
...
...
@@ -259,6 +259,7 @@ ErrorBundle ErrorCodes[] = {
* Application error
*/
{
823
,
AE
,
"Too much attrinfo from application in tuple manager"
},
{
831
,
AE
,
"Too many nullable/bitfields in table definition"
},
{
876
,
AE
,
"876"
},
{
877
,
AE
,
"877"
},
{
878
,
AE
,
"878"
},
...
...
ndb/test/ndbapi/testBitfield.cpp
View file @
3879b149
...
...
@@ -7,7 +7,7 @@
static
const
char
*
opt_connect_str
=
0
;
static
const
char
*
_dbname
=
"TEST_DB"
;
static
int
g_loops
=
5
;
static
int
g_loops
=
7
;
static
struct
my_option
my_long_options
[]
=
{
NDB_STD_OPTS
(
"ndb_desc"
),
...
...
@@ -130,16 +130,17 @@ static
const
NdbDictionary
::
Table
*
create_random_table
(
Ndb
*
pNdb
)
{
do
{
NdbDictionary
::
Table
tab
;
Uint32
cols
=
1
+
(
rand
()
%
(
NDB_MAX_ATTRIBUTES_IN_TABLE
-
1
));
Uint32
keys
=
NDB_MAX_NO_OF_ATTRIBUTES_IN_KEY
;
Uint32
length
=
4096
;
Uint32
length
=
4090
;
Uint32
key_size
=
NDB_MAX_KEYSIZE_IN_WORDS
;
BaseString
name
;
name
.
assfmt
(
"TAB_%d"
,
rand
()
&
65535
);
tab
.
setName
(
name
.
c_str
());
for
(
int
i
=
0
;
i
<
cols
&&
length
>
0
;
i
++
)
for
(
int
i
=
0
;
i
<
cols
&&
length
>
2
;
i
++
)
{
NdbDictionary
::
Column
col
;
name
.
assfmt
(
"COL_%d"
,
i
);
...
...
@@ -156,18 +157,21 @@ create_random_table(Ndb* pNdb)
col
.
setType
(
NdbDictionary
::
Column
::
Bit
);
Uint32
len
=
1
+
(
rand
()
%
128
);
//
(length - 1));
Uint32
len
=
1
+
(
rand
()
%
(
length
-
1
));
col
.
setLength
(
len
);
length
-=
len
;
col
.
setNullable
((
rand
()
>>
16
)
&
1
);
int
nullable
=
(
rand
()
>>
16
)
&
1
;
col
.
setNullable
(
nullable
);
length
-=
nullable
;
col
.
setPrimaryKey
(
false
);
tab
.
addColumn
(
col
);
}
ndbout
<<
(
NDBT_Table
&
)
tab
<<
endl
;
pNdb
->
getDictionary
()
->
dropTable
(
tab
.
getName
())
;
if
(
pNdb
->
getDictionary
()
->
createTable
(
tab
)
==
0
)
{
ndbout
<<
(
NDBT_Table
&
)
tab
<<
endl
;
return
pNdb
->
getDictionary
()
->
getTable
(
tab
.
getName
());
}
}
while
(
0
);
return
0
;
}
...
...
ndb/test/run-test/daily-basic-tests.txt
View file @
3879b149
...
...
@@ -506,6 +506,10 @@ max-time: 2500
cmd: testOIBasic
args:
max-time: 2500
cmd: testBitfield
args:
#
#
# SYSTEM RESTARTS
...
...
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