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
3e2afcb3
Commit
3e2afcb3
authored
Feb 25, 2021
by
Daniel Black
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/10.2' into 10.3
parents
bf6484e7
577c970c
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
16 additions
and
15 deletions
+16
-15
debian/libmariadb3.install
debian/libmariadb3.install
+1
-0
mysys/lf_hash.c
mysys/lf_hash.c
+15
-15
No files found.
debian/libmariadb3.install
View file @
3e2afcb3
...
...
@@ -3,3 +3,4 @@ usr/lib/mysql/plugin/client_ed25519.so
usr
/
lib
/
mysql
/
plugin
/
dialog
.
so
usr
/
lib
/
mysql
/
plugin
/
mysql_clear_password
.
so
usr
/
lib
/
mysql
/
plugin
/
sha256_password
.
so
usr
/
lib
/
mysql
/
plugin
/
caching_sha2_password
.
so
mysys/lf_hash.c
View file @
3e2afcb3
...
...
@@ -31,10 +31,10 @@
/* An element of the list */
typedef
struct
{
intptr
volatile
link
;
/* a pointer to the next element in a list and a flag */
uint32
hashnr
;
/* reversed hash number, for sorting */
intptr
link
;
/* a pointer to the next element in a list and a flag */
const
uchar
*
key
;
size_t
keylen
;
uint32
hashnr
;
/* reversed hash number, for sorting */
/*
data is stored here, directly after the keylen.
thus the pointer to data is (void*)(slist_element_ptr+1)
...
...
@@ -48,7 +48,7 @@ const int LF_HASH_OVERHEAD= sizeof(LF_SLIST);
in a list) from l_find to l_insert/l_delete
*/
typedef
struct
{
intptr
volatile
*
prev
;
intptr
*
prev
;
LF_SLIST
*
curr
,
*
next
;
}
CURSOR
;
...
...
@@ -85,8 +85,8 @@ typedef struct {
0 - ok
1 - error (callbck returned 1)
*/
static
int
l_find
(
LF_SLIST
*
volatile
*
head
,
CHARSET_INFO
*
cs
,
uint32
hashnr
,
const
uchar
*
key
,
size_
t
keylen
,
CURSOR
*
cursor
,
LF_PINS
*
pins
,
static
int
l_find
(
LF_SLIST
**
head
,
CHARSET_INFO
*
cs
,
uint32
hashnr
,
const
uchar
*
key
,
uin
t
keylen
,
CURSOR
*
cursor
,
LF_PINS
*
pins
,
my_hash_walk_action
callback
)
{
uint32
cur_hashnr
;
...
...
@@ -168,7 +168,7 @@ static int l_find(LF_SLIST * volatile *head, CHARSET_INFO *cs, uint32 hashnr,
it uses pins[0..2], on return all pins are removed.
if there're nodes with the same key value, a new node is added before them.
*/
static
LF_SLIST
*
l_insert
(
LF_SLIST
*
volatile
*
head
,
CHARSET_INFO
*
cs
,
static
LF_SLIST
*
l_insert
(
LF_SLIST
**
head
,
CHARSET_INFO
*
cs
,
LF_SLIST
*
node
,
LF_PINS
*
pins
,
uint
flags
)
{
CURSOR
cursor
;
...
...
@@ -220,7 +220,7 @@ static LF_SLIST *l_insert(LF_SLIST * volatile *head, CHARSET_INFO *cs,
NOTE
it uses pins[0..2], on return all pins are removed.
*/
static
int
l_delete
(
LF_SLIST
*
volatile
*
head
,
CHARSET_INFO
*
cs
,
uint32
hashnr
,
static
int
l_delete
(
LF_SLIST
**
head
,
CHARSET_INFO
*
cs
,
uint32
hashnr
,
const
uchar
*
key
,
uint
keylen
,
LF_PINS
*
pins
)
{
CURSOR
cursor
;
...
...
@@ -278,7 +278,7 @@ static int l_delete(LF_SLIST * volatile *head, CHARSET_INFO *cs, uint32 hashnr,
it uses pins[0..2], on return the pin[2] keeps the node found
all other pins are removed.
*/
static
LF_SLIST
*
l_search
(
LF_SLIST
*
volatile
*
head
,
CHARSET_INFO
*
cs
,
static
LF_SLIST
*
l_search
(
LF_SLIST
**
head
,
CHARSET_INFO
*
cs
,
uint32
hashnr
,
const
uchar
*
key
,
uint
keylen
,
LF_PINS
*
pins
)
{
...
...
@@ -319,7 +319,7 @@ static inline my_hash_value_type calc_hash(CHARSET_INFO *cs,
#define MAX_LOAD 1.0
/* average number of elements in a bucket */
static
int
initialize_bucket
(
LF_HASH
*
,
LF_SLIST
*
volatile
*
,
uint
,
LF_PINS
*
);
static
int
initialize_bucket
(
LF_HASH
*
,
LF_SLIST
**
,
uint
,
LF_PINS
*
);
static
void
default_initializer
(
LF_HASH
*
hash
,
void
*
dst
,
const
void
*
src
)
{
...
...
@@ -398,7 +398,7 @@ void lf_hash_destroy(LF_HASH *hash)
int
lf_hash_insert
(
LF_HASH
*
hash
,
LF_PINS
*
pins
,
const
void
*
data
)
{
int
csize
,
bucket
,
hashnr
;
LF_SLIST
*
node
,
*
volatile
*
el
;
LF_SLIST
*
node
,
**
el
;
node
=
(
LF_SLIST
*
)
lf_alloc_new
(
pins
);
if
(
unlikely
(
!
node
))
...
...
@@ -437,7 +437,7 @@ int lf_hash_insert(LF_HASH *hash, LF_PINS *pins, const void *data)
*/
int
lf_hash_delete
(
LF_HASH
*
hash
,
LF_PINS
*
pins
,
const
void
*
key
,
uint
keylen
)
{
LF_SLIST
*
volatile
*
el
;
LF_SLIST
**
el
;
uint
bucket
,
hashnr
;
hashnr
=
hash
->
hash_function
(
hash
->
charset
,
(
uchar
*
)
key
,
keylen
)
&
INT_MAX32
;
...
...
@@ -473,7 +473,7 @@ void *lf_hash_search_using_hash_value(LF_HASH *hash, LF_PINS *pins,
my_hash_value_type
hashnr
,
const
void
*
key
,
uint
keylen
)
{
LF_SLIST
*
volatile
*
el
,
*
found
;
LF_SLIST
**
el
,
*
found
;
uint
bucket
;
/* hide OOM errors - if we cannot initialize a bucket, try the previous one */
...
...
@@ -507,7 +507,7 @@ int lf_hash_iterate(LF_HASH *hash, LF_PINS *pins,
CURSOR
cursor
;
uint
bucket
=
0
;
int
res
;
LF_SLIST
*
volatile
*
el
;
LF_SLIST
**
el
;
el
=
lf_dynarray_lvalue
(
&
hash
->
array
,
bucket
);
if
(
unlikely
(
!
el
))
...
...
@@ -539,13 +539,13 @@ static const uchar *dummy_key= (uchar*)"";
0 - ok
-1 - out of memory
*/
static
int
initialize_bucket
(
LF_HASH
*
hash
,
LF_SLIST
*
volatile
*
node
,
static
int
initialize_bucket
(
LF_HASH
*
hash
,
LF_SLIST
**
node
,
uint
bucket
,
LF_PINS
*
pins
)
{
uint
parent
=
my_clear_highest_bit
(
bucket
);
LF_SLIST
*
dummy
=
(
LF_SLIST
*
)
my_malloc
(
sizeof
(
LF_SLIST
),
MYF
(
MY_WME
));
LF_SLIST
**
tmp
=
0
,
*
cur
;
LF_SLIST
*
volatile
*
el
=
lf_dynarray_lvalue
(
&
hash
->
array
,
parent
);
LF_SLIST
**
el
=
lf_dynarray_lvalue
(
&
hash
->
array
,
parent
);
if
(
unlikely
(
!
el
||
!
dummy
))
return
-
1
;
if
(
*
el
==
NULL
&&
bucket
&&
...
...
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