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
06cba627
Commit
06cba627
authored
May 28, 2007
by
istruewing@chilla.local
Browse files
Options
Browse Files
Download
Plain Diff
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-engines
into chilla.local:/home/mydev/mysql-5.1-axmrg
parents
9d965f8a
5d71c2f8
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
56 additions
and
22 deletions
+56
-22
sql/set_var.cc
sql/set_var.cc
+19
-0
storage/myisam/ft_boolean_search.c
storage/myisam/ft_boolean_search.c
+31
-20
storage/myisam/ft_nlq_search.c
storage/myisam/ft_nlq_search.c
+6
-2
No files found.
sql/set_var.cc
View file @
06cba627
...
...
@@ -1489,6 +1489,25 @@ Item *sys_var::item(THD *thd, enum_var_type var_type, LEX_STRING *base)
pthread_mutex_unlock
(
&
LOCK_global_system_variables
);
return
new
Item_int
(
value
,
1
);
}
case
SHOW_CHAR_PTR
:
{
Item
*
tmp
;
pthread_mutex_lock
(
&
LOCK_global_system_variables
);
char
*
str
=
*
(
char
**
)
value_ptr
(
thd
,
var_type
,
base
);
if
(
str
)
{
uint
length
=
strlen
(
str
);
tmp
=
new
Item_string
(
thd
->
strmake
(
str
,
length
),
length
,
system_charset_info
,
DERIVATION_SYSCONST
);
}
else
{
tmp
=
new
Item_null
();
tmp
->
collation
.
set
(
system_charset_info
,
DERIVATION_SYSCONST
);
}
pthread_mutex_unlock
(
&
LOCK_global_system_variables
);
return
tmp
;
}
case
SHOW_CHAR
:
{
Item
*
tmp
;
...
...
storage/myisam/ft_boolean_search.c
View file @
06cba627
...
...
@@ -286,8 +286,8 @@ static int ftb_parse_query_internal(MYSQL_FTPARSER_PARAM *param,
}
static
void
_ftb_parse_query
(
FTB
*
ftb
,
byte
*
query
,
uint
len
,
struct
st_mysql_ftparser
*
parser
)
static
int
_ftb_parse_query
(
FTB
*
ftb
,
byte
*
query
,
uint
len
,
struct
st_mysql_ftparser
*
parser
)
{
MYSQL_FTPARSER_PARAM
*
param
;
MY_FTB_PARAM
ftb_param
;
...
...
@@ -295,9 +295,9 @@ static void _ftb_parse_query(FTB *ftb, byte *query, uint len,
DBUG_ASSERT
(
parser
);
if
(
ftb
->
state
!=
UNINITIALIZED
)
DBUG_
VOID_RETURN
;
DBUG_
RETURN
(
0
)
;
if
(
!
(
param
=
ftparser_call_initializer
(
ftb
->
info
,
ftb
->
keynr
,
0
)))
DBUG_
VOID_RETURN
;
DBUG_
RETURN
(
1
)
;
ftb_param
.
ftb
=
ftb
;
ftb_param
.
depth
=
0
;
...
...
@@ -312,8 +312,7 @@ static void _ftb_parse_query(FTB *ftb, byte *query, uint len,
param
->
length
=
len
;
param
->
flags
=
0
;
param
->
mode
=
MYSQL_FTPARSER_FULL_BOOLEAN_INFO
;
parser
->
parse
(
param
);
DBUG_VOID_RETURN
;
DBUG_RETURN
(
parser
->
parse
(
param
));
}
...
...
@@ -538,9 +537,10 @@ FT_INFO * ft_init_boolean_search(MI_INFO *info, uint keynr, byte *query,
ftbe
->
phrase
=
NULL
;
ftbe
->
document
=
0
;
ftb
->
root
=
ftbe
;
_ftb_parse_query
(
ftb
,
query
,
query_len
,
keynr
==
NO_SUCH_KEY
?
&
ft_default_parser
:
info
->
s
->
keyinfo
[
keynr
].
parser
);
if
(
unlikely
(
_ftb_parse_query
(
ftb
,
query
,
query_len
,
keynr
==
NO_SUCH_KEY
?
&
ft_default_parser
:
info
->
s
->
keyinfo
[
keynr
].
parser
)))
goto
err
;
/*
Hack: instead of init_queue, we'll use reinit queue to be able
to alloc queue with alloc_root()
...
...
@@ -621,7 +621,7 @@ static int ftb_check_phrase_internal(MYSQL_FTPARSER_PARAM *param,
{
param
->
mysql_add_word
(
param
,
word
.
pos
,
word
.
len
,
0
);
if
(
phrase_param
->
match
)
return
1
;
break
;
}
return
0
;
}
...
...
@@ -639,6 +639,7 @@ static int ftb_check_phrase_internal(MYSQL_FTPARSER_PARAM *param,
RETURN VALUE
1 is returned if phrase found, 0 else.
-1 is returned if error occurs.
*/
static
int
_ftb_check_phrase
(
FTB
*
ftb
,
const
byte
*
document
,
uint
len
,
...
...
@@ -667,12 +668,13 @@ static int _ftb_check_phrase(FTB *ftb, const byte *document, uint len,
param
->
length
=
len
;
param
->
flags
=
0
;
param
->
mode
=
MYSQL_FTPARSER_WITH_STOPWORDS
;
parser
->
parse
(
param
);
if
(
unlikely
(
parser
->
parse
(
param
)))
return
-
1
;
DBUG_RETURN
(
ftb_param
.
match
?
1
:
0
);
}
static
void
_ftb_climb_the_tree
(
FTB
*
ftb
,
FTB_WORD
*
ftbw
,
FT_SEG_ITERATOR
*
ftsi_orig
)
static
int
_ftb_climb_the_tree
(
FTB
*
ftb
,
FTB_WORD
*
ftbw
,
FT_SEG_ITERATOR
*
ftsi_orig
)
{
FT_SEG_ITERATOR
ftsi
;
FTB_EXPR
*
ftbe
;
...
...
@@ -704,17 +706,19 @@ static void _ftb_climb_the_tree(FTB *ftb, FTB_WORD *ftbw, FT_SEG_ITERATOR *ftsi_
weight
=
ftbe
->
cur_weight
*
ftbe
->
weight
;
if
(
mode
&&
ftbe
->
phrase
)
{
int
not_found
=
1
;
int
found
=
0
;
memcpy
(
&
ftsi
,
ftsi_orig
,
sizeof
(
ftsi
));
while
(
_mi_ft_segiterator
(
&
ftsi
)
&&
not_
found
)
while
(
_mi_ft_segiterator
(
&
ftsi
)
&&
!
found
)
{
if
(
!
ftsi
.
pos
)
continue
;
not_found
=
!
_ftb_check_phrase
(
ftb
,
ftsi
.
pos
,
ftsi
.
len
,
ftbe
,
parser
);
found
=
_ftb_check_phrase
(
ftb
,
ftsi
.
pos
,
ftsi
.
len
,
ftbe
,
parser
);
if
(
unlikely
(
found
<
0
))
return
1
;
}
if
(
not_found
)
break
;
if
(
!
found
)
break
;
}
/* ftbe->quot */
}
else
...
...
@@ -746,6 +750,7 @@ static void _ftb_climb_the_tree(FTB *ftb, FTB_WORD *ftbw, FT_SEG_ITERATOR *ftsi_
weight
*=
ftbe
->
weight
;
}
}
return
0
;
}
...
...
@@ -778,7 +783,11 @@ int ft_boolean_read_next(FT_INFO *ftb, char *record)
{
while
(
curdoc
==
(
ftbw
=
(
FTB_WORD
*
)
queue_top
(
&
ftb
->
queue
))
->
docid
[
0
])
{
_ftb_climb_the_tree
(
ftb
,
ftbw
,
0
);
if
(
unlikely
(
_ftb_climb_the_tree
(
ftb
,
ftbw
,
0
)))
{
my_errno
=
HA_ERR_OUT_OF_MEM
;
goto
err
;
}
/* update queue */
_ft2_search
(
ftb
,
ftbw
,
0
);
...
...
@@ -854,7 +863,8 @@ static int ftb_find_relevance_add_word(MYSQL_FTPARSER_PARAM *param,
if
(
ftbw
->
docid
[
1
]
==
ftb
->
info
->
lastpos
)
continue
;
ftbw
->
docid
[
1
]
=
ftb
->
info
->
lastpos
;
_ftb_climb_the_tree
(
ftb
,
ftbw
,
ftb_param
->
ftsi
);
if
(
unlikely
(
_ftb_climb_the_tree
(
ftb
,
ftbw
,
ftb_param
->
ftsi
)))
return
1
;
}
return
(
0
);
}
...
...
@@ -926,7 +936,8 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
continue
;
param
->
doc
=
(
byte
*
)
ftsi
.
pos
;
param
->
length
=
ftsi
.
len
;
parser
->
parse
(
param
);
if
(
unlikely
(
parser
->
parse
(
param
)))
return
0
;
}
ftbe
=
ftb
->
root
;
if
(
ftbe
->
docid
[
1
]
==
docid
&&
ftbe
->
cur_weight
>
0
&&
...
...
storage/myisam/ft_nlq_search.c
View file @
06cba627
...
...
@@ -257,8 +257,12 @@ FT_INFO *ft_init_nlq_search(MI_INFO *info, uint keynr, byte *query,
{
info
->
update
|=
HA_STATE_AKTIV
;
ftparser_param
->
flags
=
MYSQL_FTFLAGS_NEED_COPY
;
_mi_ft_parse
(
&
wtree
,
info
,
keynr
,
record
,
ftparser_param
,
&
wtree
.
mem_root
);
if
(
unlikely
(
_mi_ft_parse
(
&
wtree
,
info
,
keynr
,
record
,
ftparser_param
,
&
wtree
.
mem_root
)))
{
delete_queue
(
&
best
);
goto
err
;
}
}
}
delete_queue
(
&
best
);
...
...
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