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
34c7229a
Commit
34c7229a
authored
Nov 04, 2000
by
sasha@mysql.sashanet.com
Browse files
Options
Browse Files
Download
Plain Diff
Merge work.mysql.com:/home/bk/mysql
into mysql.sashanet.com:/home/sasha/src/bk/mysql
parents
8f162b8b
342ad607
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
329 additions
and
236 deletions
+329
-236
BitKeeper/etc/logging_ok
BitKeeper/etc/logging_ok
+1
-5
Docs/manual.texi
Docs/manual.texi
+39
-0
client/mysqldump.c
client/mysqldump.c
+213
-131
configure.in
configure.in
+1
-1
include/ft_global.h
include/ft_global.h
+3
-2
myisam/ft_search.c
myisam/ft_search.c
+0
-4
sql/ha_myisam.cc
sql/ha_myisam.cc
+10
-23
sql/ha_myisam.h
sql/ha_myisam.h
+3
-2
sql/handler.h
sql/handler.h
+3
-3
sql/item_func.cc
sql/item_func.cc
+36
-37
sql/item_func.h
sql/item_func.h
+2
-2
sql/opt_ft.h
sql/opt_ft.h
+1
-10
sql/opt_range.h
sql/opt_range.h
+1
-1
sql/sql_select.cc
sql/sql_select.cc
+16
-15
No files found.
BitKeeper/etc/logging_ok
View file @
34c7229a
monty@donna.mysql.com
mwagner@evoq.home.mwagner.org
paul@central.snake.net
sasha@mysql.sashanet.com
sasha@mysql.sashanet.com
serg@serg.mysql.com
sasha@work.mysql.com
tim@threads.polyesthetic.msg
Docs/manual.texi
View file @
34c7229a
...
@@ -3879,6 +3879,14 @@ Italy [tzone.it] @
...
@@ -3879,6 +3879,14 @@ Italy [tzone.it] @
@c @uref{http://mysql.iol.ie, WWW}
@c @uref{http://mysql.iol.ie, WWW}
@c @uref{ftp://ftp.iol.ie/pub/mysql, FTP}
@c @uref{ftp://ftp.iol.ie/pub/mysql, FTP}
@item
@c Added 20001031
@c EMAIL: dave@esat.net (Dave Rynne)
@c @image{Flags/ireland}
Ireland [Esat Net] @
@uref{http://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/, WWW}
@uref{ftp://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/, FTP}
@item
@item
@c EMAIL: W.Sylwestrzak@icm.edu.pl (Wojtek Sylwestrzak)
@c EMAIL: W.Sylwestrzak@icm.edu.pl (Wojtek Sylwestrzak)
@c mirroring nightly at 05:25
@c mirroring nightly at 05:25
...
@@ -3900,6 +3908,14 @@ Poland [Sunsite] @
...
@@ -3900,6 +3908,14 @@ Poland [Sunsite] @
@c @uref{http://mysql.leirianet.pt, WWW}
@c @uref{http://mysql.leirianet.pt, WWW}
@c @uref{ftp://ftp.leirianet.pt/pub/mysql/,FTP}
@c @uref{ftp://ftp.leirianet.pt/pub/mysql/,FTP}
@item
@c Added 20001031
@c bofh@netc.pt (Bruno Rodrigues)
@c @image{Flags/portugal}
Portugal [Netc] @
@uref{http://ftp.netc.pt/pub/mysql/, WWW}
@uref{ftp://ftp.netc.pt/pub/mysql/, FTP}
@item
@item
@c EMAIL: kuzmin@dn.ru (Roma Kuzmin)
@c EMAIL: kuzmin@dn.ru (Roma Kuzmin)
@c @image{Flags/russia}
@c @image{Flags/russia}
...
@@ -4133,11 +4149,26 @@ USA [LinuxWired/Scottsdale, AZ] @
...
@@ -4133,11 +4149,26 @@ USA [LinuxWired/Scottsdale, AZ] @
@uref{http://mysql.linuxwired.net/, WWW}
@uref{http://mysql.linuxwired.net/, WWW}
@uref{ftp://ftp.linuxwired.net/pub/mirrors/mysql/, FTP}
@uref{ftp://ftp.linuxwired.net/pub/mirrors/mysql/, FTP}
@item
@c EMAIL: dan@surfsouth.com (Dan Muntz)
@c @image{Flags/usa}
USA [Venoma.Org/Valdosta, GA] @
@uref{http://mysql.venoma.org/, WWW}
@end itemize
@end itemize
@strong{South America:}
@strong{South America:}
@itemize @bullet
@itemize @bullet
@item
@c Added 20001102
@c EMAIL: nico@bannerlandia.com (Nicolas Moldavsky)
@c @image{Flags/argentina}
Argentina [bannerlandia.com] @
@uref{http://mysql.bannerlandia.com.ar/, WWW}
@uref{ftp://mysql.bannerlandia.com.ar/mirrors/mysql/, FTP}
@c @item
@c @item
@c Not ok 20000919; Non-existent (Matt)
@c Not ok 20000919; Non-existent (Matt)
@c EMAIL: gaiser@matrix.com.br (Roberto Gaiser)
@c EMAIL: gaiser@matrix.com.br (Roberto Gaiser)
...
@@ -4273,6 +4304,14 @@ Taiwan [TTN] @
...
@@ -4273,6 +4304,14 @@ Taiwan [TTN] @
@c EX: serge@oneway.net
@c EX: serge@oneway.net
@c @image{Flags/taiwan} Taiwan [Oneway] @
@c @image{Flags/taiwan} Taiwan [Oneway] @
@c @uref{ftp://ftp.oneway.com.tw/pub/mysql/, FTP}
@c @uref{ftp://ftp.oneway.com.tw/pub/mysql/, FTP}
@item
@c Added 20001031
@c EMAIL: ijliao@php.nctu.edu.tw (Ying-Chieh Liao)
@c @image{Flags/taiwan}
Taiwan [nctu.edu/HsinChu] @
@uref{http://mysql.nctu.edu.tw/, WWW}
@end itemize
@end itemize
@strong{Australia:}
@strong{Australia:}
client/mysqldump.c
View file @
34c7229a
...
@@ -594,7 +594,88 @@ static uint getTableStructure(char *table, char* db)
...
@@ -594,7 +594,88 @@ static uint getTableStructure(char *table, char* db)
if
(
verbose
)
if
(
verbose
)
fprintf
(
stderr
,
"# Retrieving table structure for table %s...
\n
"
,
table
);
fprintf
(
stderr
,
"# Retrieving table structure for table %s...
\n
"
,
table
);
sprintf
(
insert_pat
,
"SET OPTION SQL_QUOTE_SHOW_CREATE=%d"
,
opt_quoted
);
table_name
=
quote_name
(
table
,
table_buff
);
table_name
=
quote_name
(
table
,
table_buff
);
if
(
mysql_query
(
sock
,
insert_pat
))
{
/* using SHOW CREATE statement */
if
(
!
tFlag
)
{
/* Make an sql-file, if path was given iow. option -T was given */
char
buff
[
20
+
FN_REFLEN
];
sprintf
(
buff
,
"show create table %s"
,
table_name
);
if
(
mysql_query
(
sock
,
buff
))
{
fprintf
(
stderr
,
"%s: Can't get CREATE TABLE for table '%s' (%s)
\n
"
,
my_progname
,
table
,
mysql_error
(
sock
));
safe_exit
(
EX_MYSQLERR
);
DBUG_RETURN
(
0
);
}
if
(
path
)
{
char
filename
[
FN_REFLEN
],
tmp_path
[
FN_REFLEN
];
strmov
(
tmp_path
,
path
);
convert_dirname
(
tmp_path
);
sql_file
=
my_fopen
(
fn_format
(
filename
,
table
,
tmp_path
,
".sql"
,
4
),
O_WRONLY
,
MYF
(
MY_WME
));
if
(
!
sql_file
)
/* If file couldn't be opened */
{
safe_exit
(
EX_MYSQLERR
);
DBUG_RETURN
(
0
);
}
write_heder
(
sql_file
,
db
);
}
fprintf
(
sql_file
,
"
\n
#
\n
# Table structure for table '%s'
\n
#
\n\n
"
,
table
);
if
(
opt_drop
)
fprintf
(
sql_file
,
"DROP TABLE IF EXISTS %s;
\n
"
,
table_name
);
tableRes
=
mysql_store_result
(
sock
);
row
=
mysql_fetch_row
(
tableRes
);
fprintf
(
sql_file
,
"%s;
\n
"
,
row
[
1
]);
mysql_free_result
(
tableRes
);
}
sprintf
(
insert_pat
,
"show fields from %s"
,
table_name
);
if
(
mysql_query
(
sock
,
insert_pat
)
||
!
(
tableRes
=
mysql_store_result
(
sock
)))
{
fprintf
(
stderr
,
"%s: Can't get info about table: '%s'
\n
error: %s
\n
"
,
my_progname
,
table
,
mysql_error
(
sock
));
safe_exit
(
EX_MYSQLERR
);
DBUG_RETURN
(
0
);
}
if
(
cFlag
)
sprintf
(
insert_pat
,
"INSERT %sINTO %s ("
,
delayed
,
table_name
);
else
{
sprintf
(
insert_pat
,
"INSERT %sINTO %s VALUES "
,
delayed
,
table_name
);
if
(
!
extended_insert
)
strcat
(
insert_pat
,
"("
);
}
strpos
=
strend
(
insert_pat
);
while
((
row
=
mysql_fetch_row
(
tableRes
)))
{
ulong
*
lengths
=
mysql_fetch_lengths
(
tableRes
);
if
(
init
)
{
if
(
cFlag
)
strpos
=
strmov
(
strpos
,
", "
);
}
init
=
1
;
if
(
cFlag
)
strpos
=
strmov
(
strpos
,
quote_name
(
row
[
SHOW_FIELDNAME
],
name_buff
));
}
numFields
=
(
uint
)
mysql_num_rows
(
tableRes
);
mysql_free_result
(
tableRes
);
}
else
{
/* fprintf(stderr, "%s: Can't set SQL_QUOTE_SHOW_CREATE option (%s)\n",
my_progname, mysql_error(sock)); */
sprintf
(
insert_pat
,
"show fields from %s"
,
table_name
);
sprintf
(
insert_pat
,
"show fields from %s"
,
table_name
);
if
(
mysql_query
(
sock
,
insert_pat
)
||
!
(
tableRes
=
mysql_store_result
(
sock
)))
if
(
mysql_query
(
sock
,
insert_pat
)
||
!
(
tableRes
=
mysql_store_result
(
sock
)))
{
{
...
@@ -695,10 +776,10 @@ static uint getTableStructure(char *table, char* db)
...
@@ -695,10 +776,10 @@ static uint getTableStructure(char *table, char* db)
if
(
atoi
(
row
[
3
])
==
1
)
if
(
atoi
(
row
[
3
])
==
1
)
{
{
keynr
++
;
keynr
++
;
#ifdef FORCE_PRIMARY_KEY
#ifdef FORCE_PRIMARY_KEY
if
(
atoi
(
row
[
1
])
==
0
&&
primary_key
==
INT_MAX
)
if
(
atoi
(
row
[
1
])
==
0
&&
primary_key
==
INT_MAX
)
primary_key
=
keynr
;
primary_key
=
keynr
;
#endif
#endif
if
(
!
strcmp
(
row
[
2
],
"PRIMARY"
))
if
(
!
strcmp
(
row
[
2
],
"PRIMARY"
))
{
{
primary_key
=
keynr
;
primary_key
=
keynr
;
...
@@ -765,6 +846,7 @@ static uint getTableStructure(char *table, char* db)
...
@@ -765,6 +846,7 @@ static uint getTableStructure(char *table, char* db)
}
}
fputs
(
";
\n
"
,
sql_file
);
fputs
(
";
\n
"
,
sql_file
);
}
}
}
if
(
cFlag
)
if
(
cFlag
)
{
{
strpos
=
strmov
(
strpos
,
") VALUES "
);
strpos
=
strmov
(
strpos
,
") VALUES "
);
...
...
configure.in
View file @
34c7229a
...
@@ -16,7 +16,7 @@ SHARED_LIB_VERSION=10:0:0
...
@@ -16,7 +16,7 @@ SHARED_LIB_VERSION=10:0:0
# Remember that regexps needs to quote [ and ] since this is run through m4
# Remember that regexps needs to quote [ and ] since this is run through m4
MYSQL_NO_DASH_VERSION
=
`
echo
$VERSION
|
sed
-e
"s|-.*
$|
|"
`
MYSQL_NO_DASH_VERSION
=
`
echo
$VERSION
|
sed
-e
"s|-.*
$|
|"
`
MYSQL_BASE_VERSION
=
`
echo
$MYSQL_NO_DASH_VERSION
|
sed
-e
"s|
\.
[[^.]]*
$|
|"
`
MYSQL_BASE_VERSION
=
`
echo
$MYSQL_NO_DASH_VERSION
|
sed
-e
"s|
\.
[[^.]]*
$|
|"
`
F_PART
=
`
echo
$MYSQL_BASE_VERSION
|
sed
-e
"s|
\.
||g"
|
sed
-e
"s|[
[a-zA-Z]]
\+
|
|"
`
F_PART
=
`
echo
$MYSQL_BASE_VERSION
|
sed
-e
"s|
\.
||g"
|
sed
-e
"s|[
a-zA-Z]
\+
||"
|sed
-e
"s|^
\(
..
\)
$|
\\
10
|"
`
L_PART
=
`
echo
$MYSQL_NO_DASH_VERSION
|
sed
-e
"s|^[[0-9]]
\.
[[0-9]]*
\.
||"
|
sed
-e
"s|^
\(
.
\)
$|
0
\\
1|"
|
sed
-e
"s|[[a-z]]||"
`
L_PART
=
`
echo
$MYSQL_NO_DASH_VERSION
|
sed
-e
"s|^[[0-9]]
\.
[[0-9]]*
\.
||"
|
sed
-e
"s|^
\(
.
\)
$|
0
\\
1|"
|
sed
-e
"s|[[a-z]]||"
`
MYSQL_VERSION_ID
=
${
F_PART
}${
L_PART
}
MYSQL_VERSION_ID
=
${
F_PART
}${
L_PART
}
...
...
include/ft_global.h
View file @
34c7229a
...
@@ -49,6 +49,7 @@ FT_DOCLIST * ft_init_search(void *, uint, byte *, uint, my_bool);
...
@@ -49,6 +49,7 @@ FT_DOCLIST * ft_init_search(void *, uint, byte *, uint, my_bool);
int
ft_read_next
(
FT_DOCLIST
*
,
char
*
);
int
ft_read_next
(
FT_DOCLIST
*
,
char
*
);
#define ft_close_search(handler) my_free(((gptr)(handler)),MYF(0))
#define ft_close_search(handler) my_free(((gptr)(handler)),MYF(0))
#define ft_get_relevance(handler) ((handler)->doc[(handler)->curdoc].weight)
#define ft_get_relevance(handler) ((handler)->doc[(handler)->curdoc].weight)
#define ft_reinit_search(handler) (((FT_DOCLIST *)(handler))->curdoc=-1)
#ifdef __cplusplus
#ifdef __cplusplus
}
}
...
...
myisam/ft_search.c
View file @
34c7229a
...
@@ -158,7 +158,6 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key,
...
@@ -158,7 +158,6 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key,
ALL_IN_ONE
aio
;
ALL_IN_ONE
aio
;
FT_DOCLIST
*
dlist
;
FT_DOCLIST
*
dlist
;
FT_DOC
*
dptr
;
FT_DOC
*
dptr
;
my_off_t
saved_lastpos
;
/* black magic ON */
/* black magic ON */
if
((
int
)
(
keynr
=
_mi_check_index
((
MI_INFO
*
)
info
,
keynr
))
<
0
)
if
((
int
)
(
keynr
=
_mi_check_index
((
MI_INFO
*
)
info
,
keynr
))
<
0
)
...
@@ -174,8 +173,6 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key,
...
@@ -174,8 +173,6 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key,
aio
.
keyinfo
=
aio
.
info
->
s
->
keyinfo
+
keynr
;
aio
.
keyinfo
=
aio
.
info
->
s
->
keyinfo
+
keynr
;
aio
.
key_root
=
aio
.
info
->
s
->
state
.
key_root
[
keynr
];
aio
.
key_root
=
aio
.
info
->
s
->
state
.
key_root
[
keynr
];
saved_lastpos
=
aio
.
info
->
lastpos
;
if
(
!
(
wtree
=
ft_parse
(
NULL
,
key
,
key_len
)))
return
NULL
;
if
(
!
(
wtree
=
ft_parse
(
NULL
,
key
,
key_len
)))
return
NULL
;
init_tree
(
&
aio
.
dtree
,
0
,
sizeof
(
FT_SUPERDOC
),(
qsort_cmp
)
&
FT_SUPERDOC_cmp
,
0
,
init_tree
(
&
aio
.
dtree
,
0
,
sizeof
(
FT_SUPERDOC
),(
qsort_cmp
)
&
FT_SUPERDOC_cmp
,
0
,
...
@@ -204,7 +201,6 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key,
...
@@ -204,7 +201,6 @@ FT_DOCLIST * ft_init_search(void *info, uint keynr, byte *key,
}
}
err:
err:
aio
.
info
->
lastpos
=
saved_lastpos
;
delete_tree
(
&
aio
.
dtree
);
delete_tree
(
&
aio
.
dtree
);
delete_tree
(
wtree
);
delete_tree
(
wtree
);
my_free
((
char
*
)
wtree
,
MYF
(
0
));
my_free
((
char
*
)
wtree
,
MYF
(
0
));
...
...
sql/ha_myisam.cc
View file @
34c7229a
...
@@ -1079,20 +1079,6 @@ ha_rows ha_myisam::records_in_range(int inx,
...
@@ -1079,20 +1079,6 @@ ha_rows ha_myisam::records_in_range(int inx,
end_search_flag
);
end_search_flag
);
}
}
int
ha_myisam
::
ft_init
(
uint
inx
,
const
byte
*
key
,
uint
keylen
,
bool
presort
)
{
if
(
ft_handler
)
return
-
1
;
// Do the search!
ft_handler
=
ft_init_search
(
file
,
inx
,(
byte
*
)
key
,
keylen
,
presort
);
if
(
!
ft_handler
)
return
(
my_errno
?
my_errno
:
-
1
);
return
0
;
}
int
ha_myisam
::
ft_read
(
byte
*
buf
)
int
ha_myisam
::
ft_read
(
byte
*
buf
)
{
{
int
error
;
int
error
;
...
@@ -1102,7 +1088,8 @@ int ha_myisam::ft_read(byte * buf)
...
@@ -1102,7 +1088,8 @@ int ha_myisam::ft_read(byte * buf)
thread_safe_increment
(
ha_read_next_count
,
&
LOCK_status
);
// why ?
thread_safe_increment
(
ha_read_next_count
,
&
LOCK_status
);
// why ?
error
=
ft_read_next
((
FT_DOCLIST
*
)
ft_handler
,(
char
*
)
buf
);
if
(
error
=
ft_read_next
((
FT_DOCLIST
*
)
ft_handler
,(
char
*
)
buf
))
ft_handler
=
NULL
;
// Magic here ! See Item_func_match::val()
table
->
status
=
error
?
STATUS_NOT_FOUND
:
0
;
table
->
status
=
error
?
STATUS_NOT_FOUND
:
0
;
return
error
;
return
error
;
...
...
sql/ha_myisam.h
View file @
34c7229a
...
@@ -71,8 +71,9 @@ class ha_myisam: public handler
...
@@ -71,8 +71,9 @@ class ha_myisam: public handler
int
index_first
(
byte
*
buf
);
int
index_first
(
byte
*
buf
);
int
index_last
(
byte
*
buf
);
int
index_last
(
byte
*
buf
);
int
index_next_same
(
byte
*
buf
,
const
byte
*
key
,
uint
keylen
);
int
index_next_same
(
byte
*
buf
,
const
byte
*
key
,
uint
keylen
);
int
ft_init
(
uint
inx
,
const
byte
*
key
,
uint
keylen
,
bool
presort
=
1
);
int
ft_init
()
void
*
ft_init_ext
(
uint
inx
,
const
byte
*
key
,
uint
keylen
,
bool
presort
=
0
)
{
if
(
!
ft_handler
)
return
1
;
ft_reinit_search
(
ft_handler
);
return
0
;
}
void
*
ft_init_ext
(
uint
inx
,
const
byte
*
key
,
uint
keylen
,
bool
presort
)
{
return
ft_init_search
(
file
,
inx
,(
byte
*
)
key
,
keylen
,
presort
);
}
{
return
ft_init_search
(
file
,
inx
,(
byte
*
)
key
,
keylen
,
presort
);
}
int
ft_read
(
byte
*
buf
);
int
ft_read
(
byte
*
buf
);
int
rnd_init
(
bool
scan
=
1
);
int
rnd_init
(
bool
scan
=
1
);
...
...
sql/handler.h
View file @
34c7229a
...
@@ -222,9 +222,9 @@ public:
...
@@ -222,9 +222,9 @@ public:
virtual
int
index_first
(
byte
*
buf
)
=
0
;
virtual
int
index_first
(
byte
*
buf
)
=
0
;
virtual
int
index_last
(
byte
*
buf
)
=
0
;
virtual
int
index_last
(
byte
*
buf
)
=
0
;
virtual
int
index_next_same
(
byte
*
buf
,
const
byte
*
key
,
uint
keylen
);
virtual
int
index_next_same
(
byte
*
buf
,
const
byte
*
key
,
uint
keylen
);
virtual
int
ft_init
(
uint
inx
,
const
byte
*
key
,
uint
keylen
,
bool
presort
=
1
)
virtual
int
ft_init
()
{
return
-
1
;
}
{
return
-
1
;
}
virtual
void
*
ft_init_ext
(
uint
inx
,
const
byte
*
key
,
uint
keylen
,
bool
presort
=
0
)
virtual
void
*
ft_init_ext
(
uint
inx
,
const
byte
*
key
,
uint
keylen
,
bool
presort
)
{
return
(
void
*
)
NULL
;
}
{
return
(
void
*
)
NULL
;
}
virtual
int
ft_read
(
byte
*
buf
)
{
return
-
1
;
}
virtual
int
ft_read
(
byte
*
buf
)
{
return
-
1
;
}
virtual
int
rnd_init
(
bool
scan
=
1
)
=
0
;
virtual
int
rnd_init
(
bool
scan
=
1
)
=
0
;
...
...
sql/item_func.cc
View file @
34c7229a
...
@@ -1840,21 +1840,19 @@ err:
...
@@ -1840,21 +1840,19 @@ err:
double
Item_func_match
::
val
()
double
Item_func_match
::
val
()
{
{
if
(
first_call
)
init_search
();
// Don't know how to return an error from val(), so NULL will be returned
// Don't know how to return an error from val(), so NULL will be returned
if
((
null_value
=
(
ft_handler
==
NULL
)))
if
((
null_value
=
(
ft_handler
==
NULL
)))
return
0.0
;
return
0.0
;
if
(
join_key
)
if
(
join_key
)
{
{
if
(
table
->
file
->
ft_handler
)
return
ft_get_relevance
(
ft_handler
);
return
ft_get_relevance
(
ft_handler
);
join_key
=
0
;
// Magic here ! See ha_myisam::ft_read()
}
}
else
{
/* we'll have to find ft_relevance manually in ft_handler array */
/* implicit initialization was done, so we'll have to find
ft_relevance manually in ft_handler array */
int
a
,
b
,
c
;
int
a
,
b
,
c
;
FT_DOC
*
docs
=
ft_handler
->
doc
;
FT_DOC
*
docs
=
ft_handler
->
doc
;
...
@@ -1876,37 +1874,37 @@ double Item_func_match::val()
...
@@ -1876,37 +1874,37 @@ double Item_func_match::val()
return
docs
[
a
].
weight
;
return
docs
[
a
].
weight
;
else
else
return
0.0
;
return
0.0
;
}
}
}
void
Item_func_match
::
init_search
()
void
Item_func_match
::
init_search
(
bool
no_order
)
{
{
if
(
!
first_call
)
if
(
ft_handler
)
return
;
return
;
first_call
=
false
;
if
(
master
)
if
(
master
)
{
{
master
->
init_search
();
join_key
=
master
->
join_key
=
join_key
|
master
->
join_key
;
master
->
init_search
(
no_order
);
ft_handler
=
master
->
ft_handler
;
ft_handler
=
master
->
ft_handler
;
join_key
=
master
->
join_key
;
join_key
=
master
->
join_key
;
return
;
return
;
}
}
if
(
join_key
)
{
ft_handler
=
((
FT_DOCLIST
*
)
table
->
file
->
ft_handler
);
return
;
}
/* join won't use this ft-key, but we must to init it anyway */
String
*
ft_tmp
=
0
;
String
*
ft_tmp
=
0
;
char
tmp1
[
FT_QUERY_MAXLEN
];
char
tmp1
[
FT_QUERY_MAXLEN
];
String
tmp2
(
tmp1
,
sizeof
(
tmp1
));
String
tmp2
(
tmp1
,
sizeof
(
tmp1
));
ft_tmp
=
key_item
()
->
val_str
(
&
tmp2
);
ft_tmp
=
key_item
()
->
val_str
(
&
tmp2
);
ft_handler
=
(
FT_DOCLIST
*
)
ft_handler
=
(
FT_DOCLIST
*
)
table
->
file
->
ft_init_ext
(
key
,
(
byte
*
)
ft_tmp
->
ptr
(),
ft_tmp
->
length
());
table
->
file
->
ft_init_ext
(
key
,
(
byte
*
)
ft_tmp
->
ptr
(),
ft_tmp
->
length
(),
join_key
&&
!
no_order
);
if
(
join_key
)
{
table
->
file
->
ft_handler
=
ft_handler
;
return
;
}
}
}
bool
Item_func_match
::
fix_fields
(
THD
*
thd
,
struct
st_table_list
*
tlist
)
bool
Item_func_match
::
fix_fields
(
THD
*
thd
,
struct
st_table_list
*
tlist
)
...
@@ -1917,6 +1915,8 @@ bool Item_func_match::fix_fields(THD *thd,struct st_table_list *tlist)
...
@@ -1917,6 +1915,8 @@ bool Item_func_match::fix_fields(THD *thd,struct st_table_list *tlist)
/* Why testing for const_item ? Monty */
/* Why testing for const_item ? Monty */
/* I'll remove it later, but this should include modifications to
/* I'll remove it later, but this should include modifications to
find_best and auto_close as complement to auto_init code above. SerG */
find_best and auto_close as complement to auto_init code above. SerG */
/* I'd rather say now that const_item is assumed in quite a bit of
places, so it would be difficult to remove. SerG */
if
(
Item_func
::
fix_fields
(
thd
,
tlist
)
||
!
const_item
())
if
(
Item_func
::
fix_fields
(
thd
,
tlist
)
||
!
const_item
())
return
1
;
return
1
;
...
@@ -1996,7 +1996,6 @@ bool Item_func_match::fix_index()
...
@@ -1996,7 +1996,6 @@ bool Item_func_match::fix_index()
}
}
this
->
key
=
max_key
;
this
->
key
=
max_key
;
first_call
=
1
;
maybe_null
=
1
;
maybe_null
=
1
;
join_key
=
0
;
join_key
=
0
;
...
...
sql/item_func.h
View file @
34c7229a
...
@@ -838,7 +838,7 @@ public:
...
@@ -838,7 +838,7 @@ public:
List
<
Item
>
fields
;
List
<
Item
>
fields
;
TABLE
*
table
;
TABLE
*
table
;
uint
key
;
uint
key
;
bool
first_call
,
join_key
;
bool
join_key
;
Item_func_match
*
master
;
Item_func_match
*
master
;
FT_DOCLIST
*
ft_handler
;
FT_DOCLIST
*
ft_handler
;
...
@@ -863,5 +863,5 @@ public:
...
@@ -863,5 +863,5 @@ public:
longlong
val_int
()
{
return
val
()
!=
0.0
;
}
longlong
val_int
()
{
return
val
()
!=
0.0
;
}
bool
fix_index
();
bool
fix_index
();
void
init_search
();
void
init_search
(
bool
no_order
);
};
};
sql/opt_ft.h
View file @
34c7229a
...
@@ -31,16 +31,7 @@ public:
...
@@ -31,16 +31,7 @@ public:
FT_SELECT
(
TABLE
*
table
,
TABLE_REF
*
tref
)
:
FT_SELECT
(
TABLE
*
table
,
TABLE_REF
*
tref
)
:
QUICK_SELECT
(
table
,
tref
->
key
,
1
),
ref
(
tref
)
{}
QUICK_SELECT
(
table
,
tref
->
key
,
1
),
ref
(
tref
)
{}
int
init
()
int
init
()
{
return
error
=
file
->
ft_init
();
}
{
#if 0
if (cp_buffer_from_ref(ref)) // as ft-key doesn't use store_key's
return -1;
#endif
return
error
=
file
->
ft_init
(
ref
->
key
,
ref
->
key_buff
,
ref
->
key_length
);
}
int
get_next
()
{
return
error
=
file
->
ft_read
(
record
);
}
int
get_next
()
{
return
error
=
file
->
ft_read
(
record
);
}
};
};
...
...
sql/opt_range.h
View file @
34c7229a
...
@@ -71,7 +71,7 @@ public:
...
@@ -71,7 +71,7 @@ public:
double
read_time
;
double
read_time
;
QUICK_SELECT
(
TABLE
*
table
,
uint
index_arg
,
bool
no_alloc
=
0
);
QUICK_SELECT
(
TABLE
*
table
,
uint
index_arg
,
bool
no_alloc
=
0
);
virtual
~
QUICK_SELECT
();
// fixed by Sasha needs to be virtual
virtual
~
QUICK_SELECT
();
void
reset
(
void
)
{
next
=
0
;
it
.
rewind
();
}
void
reset
(
void
)
{
next
=
0
;
it
.
rewind
();
}
virtual
int
init
()
{
return
0
;
}
virtual
int
init
()
{
return
0
;
}
virtual
int
get_next
();
virtual
int
get_next
();
...
...
sql/sql_select.cc
View file @
34c7229a
...
@@ -486,7 +486,7 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
...
@@ -486,7 +486,7 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
as in other cases the join is done before the sort.
as in other cases the join is done before the sort.
*/
*/
if
((
order
||
group
)
&&
join
.
join_tab
[
join
.
const_tables
].
type
!=
JT_ALL
&&
if
((
order
||
group
)
&&
join
.
join_tab
[
join
.
const_tables
].
type
!=
JT_ALL
&&
join
.
join_tab
[
join
.
const_tables
].
type
!=
JT_FT
&&
/* Beware! SerG */
join
.
join_tab
[
join
.
const_tables
].
type
!=
JT_FT
&&
(
order
&&
simple_order
||
group
&&
simple_group
))
(
order
&&
simple_order
||
group
&&
simple_group
))
{
{
if
(
add_ref_to_table_cond
(
thd
,
&
join
.
join_tab
[
join
.
const_tables
]))
if
(
add_ref_to_table_cond
(
thd
,
&
join
.
join_tab
[
join
.
const_tables
]))
...
@@ -522,6 +522,19 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
...
@@ -522,6 +522,19 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
goto
err
;
goto
err
;
}
}
/* Perform FULLTEXT search before all regular searches */
if
(
ftfuncs
.
elements
)
{
List_iterator
<
Item_func_match
>
li
(
ftfuncs
);
Item_func_match
*
ifm
;
DBUG_PRINT
(
"info"
,(
"Performing FULLTEXT search"
));
thd
->
proc_info
=
"FULLTEXT searching"
;
while
((
ifm
=
li
++
))
{
ifm
->
init_search
(
test
(
order
));
}
}
/* Create a tmp table if distinct or if the sort is too complicated */
/* Create a tmp table if distinct or if the sort is too complicated */
if
(
need_tmp
)
if
(
need_tmp
)
{
{
...
@@ -4438,26 +4451,14 @@ join_ft_read_first(JOIN_TAB *tab)
...
@@ -4438,26 +4451,14 @@ join_ft_read_first(JOIN_TAB *tab)
if (cp_buffer_from_ref(&tab->ref)) // as ft-key doesn't use store_key's
if (cp_buffer_from_ref(&tab->ref)) // as ft-key doesn't use store_key's
return -1; // see also FT_SELECT::init()
return -1; // see also FT_SELECT::init()
#endif
#endif
if
((
error
=
table
->
file
->
ft_init
(
tab
->
ref
.
key
,
table
->
file
->
ft_init
();
tab
->
ref
.
key_buff
,
tab
->
ref
.
key_length
)))
{
if
(
error
!=
HA_ERR_KEY_NOT_FOUND
)
{
sql_print_error
(
"ft_read_first/init: Got error %d when reading table %s"
,
error
,
table
->
path
);
table
->
file
->
print_error
(
error
,
MYF
(
0
));
return
1
;
}
return
-
1
;
}
error
=
table
->
file
->
ft_read
(
table
->
record
[
0
]);
error
=
table
->
file
->
ft_read
(
table
->
record
[
0
]);
if
(
error
)
if
(
error
)
{
{
if
(
error
!=
HA_ERR_END_OF_FILE
)
if
(
error
!=
HA_ERR_END_OF_FILE
)
{
{
sql_print_error
(
"ft_read_first
/read
: Got error %d when reading table %s"
,
sql_print_error
(
"ft_read_first: Got error %d when reading table %s"
,
error
,
table
->
path
);
error
,
table
->
path
);
table
->
file
->
print_error
(
error
,
MYF
(
0
));
table
->
file
->
print_error
(
error
,
MYF
(
0
));
return
1
;
return
1
;
...
...
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