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
4ea2f42e
Commit
4ea2f42e
authored
Nov 25, 2002
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
myisammrg::index_next_same
myisammrg/Makefile.am: myrg_rnext_same.c added
parent
10491758
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
79 additions
and
18 deletions
+79
-18
include/myisammrg.h
include/myisammrg.h
+1
-0
myisam/mi_rkey.c
myisam/mi_rkey.c
+9
-8
myisam/mi_rrnd.c
myisam/mi_rrnd.c
+4
-1
myisam/myisamdef.h
myisam/myisamdef.h
+5
-1
myisammrg/Makefile.am
myisammrg/Makefile.am
+2
-1
myisammrg/myrg_rkey.c
myisammrg/myrg_rkey.c
+2
-2
myisammrg/myrg_rnext_same.c
myisammrg/myrg_rnext_same.c
+40
-0
sql/ha_myisammrg.cc
sql/ha_myisammrg.cc
+10
-0
sql/ha_myisammrg.h
sql/ha_myisammrg.h
+6
-5
No files found.
include/myisammrg.h
View file @
4ea2f42e
...
...
@@ -84,6 +84,7 @@ extern int myrg_rfirst(MYRG_INFO *file,byte *buf,int inx);
extern
int
myrg_rlast
(
MYRG_INFO
*
file
,
byte
*
buf
,
int
inx
);
extern
int
myrg_rnext
(
MYRG_INFO
*
file
,
byte
*
buf
,
int
inx
);
extern
int
myrg_rprev
(
MYRG_INFO
*
file
,
byte
*
buf
,
int
inx
);
extern
int
myrg_rnext_same
(
MYRG_INFO
*
file
,
byte
*
buf
);
extern
int
myrg_rkey
(
MYRG_INFO
*
file
,
byte
*
buf
,
int
inx
,
const
byte
*
key
,
uint
key_len
,
enum
ha_rkey_function
search_flag
);
extern
int
myrg_rrnd
(
MYRG_INFO
*
file
,
byte
*
buf
,
ulonglong
pos
);
...
...
myisam/mi_rkey.c
View file @
4ea2f42e
...
...
@@ -38,7 +38,15 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
info
->
update
&=
(
HA_STATE_CHANGED
|
HA_STATE_ROW_CHANGED
);
info
->
last_key_func
=
search_flag
;
if
(
!
info
->
use_packed_key
)
if
(
info
->
once_flags
&
USE_PACKED_KEYS
)
{
/* key is already packed! */
key_buff
=
info
->
lastkey
+
info
->
s
->
base
.
max_key_length
;
info
->
last_rkey_length
=
pack_key_length
=
key_len
;
bmove
(
key_buff
,
key
,
key_len
);
info
->
once_flags
&=
~
USE_PACKED_KEYS
;
}
else
{
if
(
key_len
==
0
)
key_len
=
USE_WHOLE_KEY
;
...
...
@@ -48,13 +56,6 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len,
DBUG_EXECUTE
(
"key"
,
_mi_print_key
(
DBUG_FILE
,
share
->
keyinfo
[
inx
].
seg
,
key_buff
,
pack_key_length
););
}
else
{
/* key is already packed! */
key_buff
=
info
->
lastkey
+
info
->
s
->
base
.
max_key_length
;
info
->
last_rkey_length
=
pack_key_length
=
key_len
;
bmove
(
key_buff
,
key
,
key_len
);
}
if
(
fast_mi_readinfo
(
info
))
goto
err
;
...
...
myisam/mi_rrnd.c
View file @
4ea2f42e
...
...
@@ -46,7 +46,10 @@ int mi_rrnd(MI_INFO *info, byte *buf, register my_off_t filepos)
filepos
=
info
->
nextpos
;
}
info
->
lastinx
=
-
1
;
/* Can't forward or backward */
if
(
info
->
once_flags
&
RRND_PRESERVE_LASTINX
)
info
->
once_flags
&=
~
RRND_PRESERVE_LASTINX
;
else
info
->
lastinx
=
-
1
;
/* Can't forward or backward */
/* Init all but update-flag */
info
->
update
&=
(
HA_STATE_CHANGED
|
HA_STATE_ROW_CHANGED
);
...
...
myisam/myisamdef.h
View file @
4ea2f42e
...
...
@@ -267,7 +267,7 @@ struct st_myisam_info {
my_bool
quick_mode
;
my_bool
page_changed
;
/* If info->buff can't be used for rnext */
my_bool
buff_used
;
/* If info->buff has to be reread for rnext */
my_bool
use_packed_key
;
/* For MYISAMMRG */
my_bool
once_flags
;
/* For MYISAMMRG */
#ifdef THREAD
THR_LOCK_DATA
lock
;
#endif
...
...
@@ -288,6 +288,10 @@ struct st_myisam_info {
#define WRITEINFO_UPDATE_KEYFILE 1
#define WRITEINFO_NO_UNLOCK 2
/* once_flags */
#define USE_PACKED_KEYS 1
#define RRND_PRESERVE_LASTINX 2
/* bits in state.changed */
#define STATE_CHANGED 1
...
...
myisammrg/Makefile.am
View file @
4ea2f42e
...
...
@@ -21,7 +21,8 @@ libmyisammrg_a_SOURCES = myrg_open.c myrg_extra.c myrg_info.c myrg_locking.c \
myrg_rrnd.c myrg_update.c myrg_delete.c myrg_rsame.c
\
myrg_panic.c myrg_close.c myrg_create.c myrg_static.c
\
myrg_rkey.c myrg_rfirst.c myrg_rlast.c myrg_rnext.c
\
myrg_rprev.c myrg_queue.c myrg_write.c myrg_range.c
myrg_rprev.c myrg_queue.c myrg_write.c myrg_range.c
\
myrg_rnext_same.c
# Don't update the files from bitkeeper
%
::
SCCS/s.%
myisammrg/myrg_rkey.c
View file @
4ea2f42e
...
...
@@ -62,9 +62,8 @@ int myrg_rkey(MYRG_INFO *info,byte *record,int inx, const byte *key,
}
else
{
mi
->
use_packed_key
=
1
;
mi
->
once_flags
|=
USE_PACKED_KEYS
;
err
=
mi_rkey
(
mi
,
0
,
inx
,
key_buff
,
pack_key_length
,
search_flag
);
mi
->
use_packed_key
=
0
;
}
info
->
last_used_table
=
table
+
1
;
...
...
@@ -83,5 +82,6 @@ int myrg_rkey(MYRG_INFO *info,byte *record,int inx, const byte *key,
return
HA_ERR_KEY_NOT_FOUND
;
mi
=
(
info
->
current_table
=
(
MYRG_TABLE
*
)
queue_top
(
&
(
info
->
by_key
)))
->
table
;
mi
->
once_flags
|=
RRND_PRESERVE_LASTINX
;
return
mi_rrnd
(
mi
,
record
,
mi
->
lastpos
);
}
myisammrg/myrg_rnext_same.c
0 → 100644
View file @
4ea2f42e
/* Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
#include "myrg_def.h"
int
myrg_rnext_same
(
MYRG_INFO
*
info
,
byte
*
buf
)
{
uint
err
;
MI_INFO
*
mi
;
if
(
!
info
->
current_table
)
return
(
HA_ERR_KEY_NOT_FOUND
);
err
=
mi_rnext_same
(
info
->
current_table
->
table
,
buf
);
if
(
err
==
HA_ERR_END_OF_FILE
)
{
queue_remove
(
&
(
info
->
by_key
),
0
);
if
(
!
info
->
by_key
.
elements
)
return
HA_ERR_END_OF_FILE
;
mi
=
(
info
->
current_table
=
(
MYRG_TABLE
*
)
queue_top
(
&
(
info
->
by_key
)))
->
table
;
mi
->
once_flags
|=
RRND_PRESERVE_LASTINX
;
return
mi_rrnd
(
mi
,
buf
,
mi
->
lastpos
);
}
return
err
;
}
sql/ha_myisammrg.cc
View file @
4ea2f42e
...
...
@@ -160,6 +160,16 @@ int ha_myisammrg::index_last(byte * buf)
return
error
;
}
int
ha_myisammrg
::
index_next_same
(
byte
*
buf
,
const
byte
*
key
__attribute__
((
unused
)),
uint
length
__attribute__
((
unused
)))
{
statistic_increment
(
ha_read_next_count
,
&
LOCK_status
);
int
error
=
myrg_rnext_same
(
file
,
buf
);
table
->
status
=
error
?
STATUS_NOT_FOUND
:
0
;
return
error
;
}
int
ha_myisammrg
::
rnd_init
(
bool
scan
)
{
return
myrg_extra
(
file
,
HA_EXTRA_RESET
,
0
);
...
...
sql/ha_myisammrg.h
View file @
4ea2f42e
...
...
@@ -65,15 +65,16 @@ class ha_myisammrg: public handler
int
index_prev
(
byte
*
buf
);
int
index_first
(
byte
*
buf
);
int
index_last
(
byte
*
buf
);
int
index_next_same
(
byte
*
buf
,
const
byte
*
key
,
uint
keylen
);
int
rnd_init
(
bool
scan
=
1
);
int
rnd_next
(
byte
*
buf
);
int
rnd_pos
(
byte
*
buf
,
byte
*
pos
);
void
position
(
const
byte
*
record
);
ha_rows
ha_myisammrg
::
records_in_range
(
int
inx
,
const
byte
*
start_key
,
uint
start_key_len
,
enum
ha_rkey_function
start_search_flag
,
const
byte
*
end_key
,
uint
end_key_len
,
enum
ha_rkey_function
end_search_flag
);
ha_rows
records_in_range
(
int
inx
,
const
byte
*
start_key
,
uint
start_key_len
,
enum
ha_rkey_function
start_search_flag
,
const
byte
*
end_key
,
uint
end_key_len
,
enum
ha_rkey_function
end_search_flag
);
my_off_t
row_position
()
{
return
myrg_position
(
file
);
}
void
info
(
uint
);
int
extra
(
enum
ha_extra_function
operation
);
...
...
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