mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Merge
Docs/manual.texi: Auto merged
This commit is contained in:
@@ -1,39 +0,0 @@
|
|||||||
Administrator@co3064164-a.
|
|
||||||
Administrator@co3064164-a.rochd1.qld.optushome.com.au
|
|
||||||
Administrator@fred.
|
|
||||||
Miguel@light.local
|
|
||||||
Sinisa@sinisa.nasamreza.org
|
|
||||||
ahlentz@co3064164-a.rochd1.qld.optusnet.com.au
|
|
||||||
arjen@co3064164-a.bitbike.com
|
|
||||||
davida@isil.mysql.com
|
|
||||||
heikki@donna.mysql.fi
|
|
||||||
jani@hynda.mysql.fi
|
|
||||||
jani@janikt.pp.saunalahti.fi
|
|
||||||
jcole@abel.spaceapes.com
|
|
||||||
jcole@main.burghcom.com
|
|
||||||
jcole@tetra.spaceapes.com
|
|
||||||
miguel@light.local
|
|
||||||
monty@bitch.mysql.fi
|
|
||||||
monty@donna.mysql.fi
|
|
||||||
monty@hundin.mysql.fi
|
|
||||||
monty@tik.mysql.fi
|
|
||||||
monty@tramp.mysql.fi
|
|
||||||
monty@work.mysql.com
|
|
||||||
mwagner@evoq.mwagner.org
|
|
||||||
paul@central.snake.net
|
|
||||||
paul@teton.kitebird.com
|
|
||||||
root@x3.internalnet
|
|
||||||
sasha@mysql.sashanet.com
|
|
||||||
serg@serg.mysql.com
|
|
||||||
tfr@sarvik.tfr.cafe.ee
|
|
||||||
tim@bitch.mysql.fi
|
|
||||||
tim@black.box
|
|
||||||
tim@hundin.mysql.fi
|
|
||||||
tim@threads.polyesthetic.msg
|
|
||||||
tim@white.box
|
|
||||||
tim@work.mysql.com
|
|
||||||
tonu@hundin.mysql.fi
|
|
||||||
tonu@volk.internalnet
|
|
||||||
tonu@x153.internalnet
|
|
||||||
tonu@x3.internalnet
|
|
||||||
jcole@sarvik.tfr.cafe.ee
|
|
227
Docs/manual.texi
227
Docs/manual.texi
@@ -8728,7 +8728,12 @@ it with a trace file or under @code{gdb}. @xref{Using gdb on mysqld}.
|
|||||||
* FreeBSD:: FreeBSD Notes
|
* FreeBSD:: FreeBSD Notes
|
||||||
* NetBSD:: NetBSD notes
|
* NetBSD:: NetBSD notes
|
||||||
* OpenBSD:: OpenBSD Notes
|
* OpenBSD:: OpenBSD Notes
|
||||||
|
* OpenBSD 2.5:: OpenBSD 2.5 Notes
|
||||||
|
* OpenBSD 2.8:: OpenBSD 2.8 Notes
|
||||||
* BSDI:: BSD/OS Notes
|
* BSDI:: BSD/OS Notes
|
||||||
|
* BSDI2:: BSD/OS Version 2.x Notes
|
||||||
|
* BSDI3:: BSD/OS Version 3.x Notes
|
||||||
|
* BSDI4:: BSD/OS Version 4.x Notes
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
@@ -8836,7 +8841,7 @@ crash when @code{make} tries to run @code{lint} on C++ files.
|
|||||||
|
|
||||||
This section contains notes on OpenBSD.
|
This section contains notes on OpenBSD.
|
||||||
|
|
||||||
@node OpenBSD 2.5, OpenBSD 2.8, OpenBSD, OpenBSD
|
@node OpenBSD 2.5, OpenBSD 2.8, OpenBSD, BSD Notes
|
||||||
@subsubsection OpenBSD 2.5 Notes
|
@subsubsection OpenBSD 2.5 Notes
|
||||||
|
|
||||||
On OpenBSD Version 2.5, you can compile MySQL with native threads
|
On OpenBSD Version 2.5, you can compile MySQL with native threads
|
||||||
@@ -8847,7 +8852,7 @@ CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no
|
|||||||
@end example
|
@end example
|
||||||
|
|
||||||
|
|
||||||
@node OpenBSD 2.8, BSDI, OpenBSD 2.5, OpenBSD
|
@node OpenBSD 2.8, BSDI, OpenBSD 2.5, BSD Notes
|
||||||
@subsubsection OpenBSD 2.8 Notes
|
@subsubsection OpenBSD 2.8 Notes
|
||||||
|
|
||||||
Our users have reported that OpenBSD 2.8 has a threading bug which causes
|
Our users have reported that OpenBSD 2.8 has a threading bug which causes
|
||||||
@@ -8868,7 +8873,7 @@ usage, and crashes.
|
|||||||
|
|
||||||
This section contains notes on BSD/OS.
|
This section contains notes on BSD/OS.
|
||||||
|
|
||||||
@node BSDI2, BSDI3, BSDI, BSDI
|
@node BSDI2, BSDI3, BSDI, BSD Notes
|
||||||
@subsubsection BSD/OS Version 2.x Notes
|
@subsubsection BSD/OS Version 2.x Notes
|
||||||
|
|
||||||
If you get the following error when compiling MySQL, your
|
If you get the following error when compiling MySQL, your
|
||||||
@@ -8893,7 +8898,7 @@ If you get problems with the current date in MySQL, setting the
|
|||||||
@code{TZ} variable will probably help. @xref{Environment variables}.
|
@code{TZ} variable will probably help. @xref{Environment variables}.
|
||||||
|
|
||||||
|
|
||||||
@node BSDI3, BSDI4, BSDI2, BSDI
|
@node BSDI3, BSDI4, BSDI2, BSD Notes
|
||||||
@subsubsection BSD/OS Version 3.x Notes
|
@subsubsection BSD/OS Version 3.x Notes
|
||||||
|
|
||||||
Upgrade to BSD/OS Version 3.1. If that is not possible, install
|
Upgrade to BSD/OS Version 3.1. If that is not possible, install
|
||||||
@@ -8934,7 +8939,7 @@ If this doesn't work and you are using @code{bash}, try switching to
|
|||||||
@code{bash} and @code{ulimit}.
|
@code{bash} and @code{ulimit}.
|
||||||
|
|
||||||
|
|
||||||
@node BSDI4, , BSDI3, BSDI
|
@node BSDI4, , BSDI3, BSD Notes
|
||||||
@subsubsection BSD/OS Version 4.x Notes
|
@subsubsection BSD/OS Version 4.x Notes
|
||||||
|
|
||||||
BSDI Version 4.x has some thread-related bugs. If you want to use
|
BSDI Version 4.x has some thread-related bugs. If you want to use
|
||||||
@@ -26048,6 +26053,7 @@ may find it useful to refer to the various indexes.
|
|||||||
* Basic User Commands:: Basic MySQL User Utility Commands
|
* Basic User Commands:: Basic MySQL User Utility Commands
|
||||||
* Transactional Commands:: MySQL Transactional and Locking Commands
|
* Transactional Commands:: MySQL Transactional and Locking Commands
|
||||||
* Fulltext Search:: MySQL Full-text Search
|
* Fulltext Search:: MySQL Full-text Search
|
||||||
|
* Query Cache:: MySQL Query Cache
|
||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
@@ -31225,10 +31231,11 @@ MySQL Version 3.23 this shouldn't normally be needed.
|
|||||||
@item
|
@item
|
||||||
@code{SQL_CACHE} tells MySQL to store the query result in the query cache
|
@code{SQL_CACHE} tells MySQL to store the query result in the query cache
|
||||||
if you are using @code{SQL_QUERY_CACHE_TYPE=2} (@code{DEMAND}).
|
if you are using @code{SQL_QUERY_CACHE_TYPE=2} (@code{DEMAND}).
|
||||||
|
@xref{Query Cache}.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
@code{SQL_NO_CACHE} tells MySQL to not allow the query result to be stored
|
@code{SQL_NO_CACHE} tells MySQL to not allow the query result to be stored
|
||||||
in the query cache.
|
in the query cache. @xref{Query Cache}.
|
||||||
|
|
||||||
@item
|
@item
|
||||||
@cindex @code{GROUP BY}, extensions to ANSI SQL
|
@cindex @code{GROUP BY}, extensions to ANSI SQL
|
||||||
@@ -33963,7 +33970,7 @@ future transactions.
|
|||||||
You can set the default isolation level for @code{mysqld} with
|
You can set the default isolation level for @code{mysqld} with
|
||||||
@code{--transaction-isolation=...}. @xref{Command-line options}.
|
@code{--transaction-isolation=...}. @xref{Command-line options}.
|
||||||
|
|
||||||
@node Fulltext Search, , Transactional Commands, Reference
|
@node Fulltext Search, Query Cache, Transactional Commands, Reference
|
||||||
@section MySQL Full-text Search
|
@section MySQL Full-text Search
|
||||||
|
|
||||||
@cindex searching, full-text
|
@cindex searching, full-text
|
||||||
@@ -34265,6 +34272,210 @@ parameters to @code{FULLTEXT} in @code{CREATE/ALTER TABLE}).
|
|||||||
@end itemize
|
@end itemize
|
||||||
|
|
||||||
|
|
||||||
|
@node Query Cache, , Fulltext Search, Reference
|
||||||
|
@section MySQL Query Cache
|
||||||
|
|
||||||
|
@cindex Query Cache
|
||||||
|
@cindex @code{SELECT}, Query Cache
|
||||||
|
|
||||||
|
From version 4.0.1, @code{MySQL server} features a @code{Query Cache}.
|
||||||
|
When in use, the query cache stores the text of a @code{SELECT} query
|
||||||
|
together with the corresponding result that is sent to a client.
|
||||||
|
If another identical query is received, the server can then retrieve
|
||||||
|
the results from the query cache rather than parsing and executing the
|
||||||
|
same query again.
|
||||||
|
|
||||||
|
The query cache is extremely useful in an environment where (some)
|
||||||
|
tables don't change very often and you have a lot of identical queries.
|
||||||
|
This is a typical situation for many web servers that use a lot of
|
||||||
|
dynamic content.
|
||||||
|
|
||||||
|
Following are some performance data for the query cache
|
||||||
|
(We got these by running the MySQL benchmark suite on a Linux Alpha
|
||||||
|
2x500 MHz with 2GB RAM and a 64MB query cache).
|
||||||
|
|
||||||
|
@itemize @bullet
|
||||||
|
@item
|
||||||
|
If want to disable the query cache code set @code{query_cache_size=0}.
|
||||||
|
By disabling the query cache code there is no noticeable overhead.
|
||||||
|
@item
|
||||||
|
If all of the queries you're preforming are simple (such as selecting a
|
||||||
|
row from a table with one row); but still differ so that the queries can
|
||||||
|
not be cached, the overhead for having the query cache active is 13%.
|
||||||
|
This could be regarded as the worst case scenario. However, in real life,
|
||||||
|
queries are much more complicated than our simple example so the overhead
|
||||||
|
is normally significantly lower.
|
||||||
|
@item
|
||||||
|
Searches after one row in a one row table is 238% faster.
|
||||||
|
This can be regarded as close to the minimum speedup to be expected for
|
||||||
|
a query that is cached.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
@menu
|
||||||
|
* Query Cache How:: How The Query Cache Operates
|
||||||
|
* Query Cache Configuration:: Query Cache Configuration
|
||||||
|
* Query Cache in SELECT:: Query Cache Options in @code{SELECT}
|
||||||
|
* Query Cache Status and Maintenance:: Query Cache Status and Maintenance
|
||||||
|
@end menu
|
||||||
|
|
||||||
|
|
||||||
|
@node Query Cache How, Query Cache Configuration, Query Cache, Query Cache
|
||||||
|
@subsection How The Query Cache Operates
|
||||||
|
|
||||||
|
Queries are compared before parsing, thus
|
||||||
|
|
||||||
|
@example
|
||||||
|
SELECT * FROM TABLE
|
||||||
|
@end example
|
||||||
|
|
||||||
|
and
|
||||||
|
|
||||||
|
@example
|
||||||
|
Select * from table
|
||||||
|
@end example
|
||||||
|
|
||||||
|
are regarded as different queries for query cache, so queries need
|
||||||
|
to be exactly the same (byte for byte) to be seen as identical.
|
||||||
|
In addition, a query may be seen as different if for instance one
|
||||||
|
client is using a new communication protocol format or another
|
||||||
|
character set than another client.
|
||||||
|
|
||||||
|
The cache does work for @code{SELECT CALC_ROWS ...} and
|
||||||
|
@code{SELECT FOUND_ROWS() ...} type queries because the number of
|
||||||
|
found rows is also stored in the cache.
|
||||||
|
|
||||||
|
If a table changes (@code{INSERT}, @code{UPDATE}, @code{DELETE},
|
||||||
|
@code{TRUNCATE}, @code{ALTER} or @code{DROP TABLE|DATABASE}),
|
||||||
|
then all cached queries that used this table (possibly through a
|
||||||
|
MRG_MyISAM table!) become invalid and are removed from the cache.
|
||||||
|
|
||||||
|
Currently all @code{InnoDB} tables are invalidated on @code{COMMIT},
|
||||||
|
in the future this will be changed so only tables changed in the
|
||||||
|
transaction cause the corresponding cache entries to be invalidated.
|
||||||
|
|
||||||
|
A query cannot be cached if it contains one of the functions:
|
||||||
|
@multitable @columnfractions .25 .25 .25 .25
|
||||||
|
@item @strong{Function} @tab @strong{Function}
|
||||||
|
@tab @strong{Function} @tab @strong{Function}
|
||||||
|
@item @code{User Defined Functions} @tab @code{CONNECTION_ID}
|
||||||
|
@tab @code{FOUND_ROWS} @tab @code{GET_LOCK}
|
||||||
|
@item @code{RELEASE_LOCK} @tab @code{LOAD_FILE}
|
||||||
|
@tab @code{MASTER_POS_WAIT} @tab @code{NOW}
|
||||||
|
@item @code{SYSDATE} @tab @code{CURRENT_TIMESTAMP}
|
||||||
|
@tab @code{CURDATE} @tab @code{CURRENT_DATE}
|
||||||
|
@item @code{CURTIME} @tab @code{CURRENT_TIME}
|
||||||
|
@tab @code{DATABASE} @tab @code{ENCRYPT} (with one parameter)
|
||||||
|
@item @code{LAST_INSERT_ID} @tab @code{RAND}
|
||||||
|
@tab @code{UNIX_TIMESTAMP} (without parameters) @tab @code{USER}
|
||||||
|
@item @code{BENCHMARK}
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
Nor can a query be cached if it contains user variables,
|
||||||
|
if it is of the form @code{SELECT ... IN SHARE MODE} or
|
||||||
|
of the form @code{SELECT * FROM AUTOINCREMENT_FIELD IS NULL}
|
||||||
|
(to retrieve last insert id - ODBC work around).
|
||||||
|
|
||||||
|
However, @code{FOUND ROWS()} will return the correct value,
|
||||||
|
even if the preceding query was fetched from the cache.
|
||||||
|
|
||||||
|
Queries that don't use any tables are not cached.
|
||||||
|
|
||||||
|
|
||||||
|
@node Query Cache Configuration, Query Cache in SELECT, Query Cache How, Query Cache
|
||||||
|
@subsection Query Cache Configuration
|
||||||
|
|
||||||
|
The query cache adds a few @code{MySQL} system variables for
|
||||||
|
@code{mysqld} which may be set in a configuration file, on the
|
||||||
|
command line when starting @code{mysqld}.
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item @code{query_cache_limit}
|
||||||
|
Don't cache results that are bigger than this. (Default 1M).
|
||||||
|
|
||||||
|
@item @code{query_cache_size}
|
||||||
|
The memory allocated to store results from old queries.
|
||||||
|
If this is 0, the query cache is disabled (default).
|
||||||
|
|
||||||
|
@item @code{query_cache_startup_type}
|
||||||
|
This may be set (only numeric) to
|
||||||
|
@multitable @columnfractions .3 .7
|
||||||
|
@item 0 @tab (OFF, don't cache or retrieve results)
|
||||||
|
@item 1 @tab (ON, cache all results except @code{SELECT SQL_NO_CACHE ...} queries)
|
||||||
|
@item 2 @tab (DEMAND, cache only @code{SELECT SQL_CACHE ...} queries)
|
||||||
|
@end multitable
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
|
||||||
|
Inside a thread (connection), the behaviour of the query cache can be
|
||||||
|
changed from the default. The syntax is as follows:
|
||||||
|
|
||||||
|
@code{SQL_QUERY_CACHE_TYPE = OFF | ON | DEMAND}
|
||||||
|
@code{SQL_QUERY_CACHE_TYPE = 0 | 1 | 2}
|
||||||
|
|
||||||
|
@multitable @columnfractions .3 .7
|
||||||
|
@item @strong{Option} @tab @strong{Description}
|
||||||
|
@item 0 or OFF @tab Don't cache or retrieve results.
|
||||||
|
@item 1 or ON @tab Cache all results except @code{SELECT SQL_NO_CACHE ...} queries.
|
||||||
|
@item 2 or DEMAND @tab Cache only @code{SELECT SQL_CACHE ...} queries.
|
||||||
|
@end multitable
|
||||||
|
|
||||||
|
By default @code{SQL_QUERY_CACHE_TYPE} depends on the value of
|
||||||
|
@code{query_cache_startup_type} when the thread was created.
|
||||||
|
|
||||||
|
|
||||||
|
@node Query Cache in SELECT, Query Cache Status and Maintenance, Query Cache Configuration, Query Cache
|
||||||
|
@subsection Query Cache Options in @code{SELECT}
|
||||||
|
|
||||||
|
There are two possible query cache related parameters that may be
|
||||||
|
specified in a @code{SELECT} query:
|
||||||
|
|
||||||
|
@findex SQL_CACHE
|
||||||
|
@findex SQL_NO_CACHE
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item @code{SQL_CACHE}
|
||||||
|
If @code{SQL_QUERY_CACHE_TYPE} is @code{DEMAND},
|
||||||
|
allow the query to be cached.
|
||||||
|
If @code{SQL_QUERY_CACHE_TYPE} is @code{ON}, this is the default.
|
||||||
|
If @code{SQL_QUERY_CACHE_TYPE} is @code{OFF}, do nothing.
|
||||||
|
@item @code{SQL_NO_CACHE}
|
||||||
|
Make this query non-cachable, don't allow this query to be stored
|
||||||
|
in the cache.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
|
||||||
|
@node Query Cache Status and Maintenance, , Query Cache in SELECT, Query Cache
|
||||||
|
@subsection Query Cache Status and Maintenance
|
||||||
|
|
||||||
|
With the @code{FLUSH QUERY CACHE} command you can defragment the query
|
||||||
|
cache to better utilise its memory. This command will not remove any
|
||||||
|
queries from the cache.
|
||||||
|
@code{FLUSH TABLES} also flushes the query cache.
|
||||||
|
|
||||||
|
The @code{RESET QUERY CACHE} command removes all query results from the
|
||||||
|
query cache.
|
||||||
|
|
||||||
|
You can monitor query cache performance in @code{SHOW STATUS}:
|
||||||
|
|
||||||
|
@itemize
|
||||||
|
@item @code{Qcache_queries_in_cache}
|
||||||
|
Number of queries registered in the cache.
|
||||||
|
@item @code{Qcache_inserts}
|
||||||
|
Number of queries added to the cache.
|
||||||
|
@item @code{Qcache_hits}
|
||||||
|
Number of cache hits
|
||||||
|
@item @code{Qcache_not_cached}
|
||||||
|
Number of non-cached queries
|
||||||
|
(not cachable, or due to SQL_QUERY_CACHE_TYPE)
|
||||||
|
@item @code{Qcache_free_memory}
|
||||||
|
Amount of free memory for query cache.
|
||||||
|
@end itemize
|
||||||
|
|
||||||
|
Please note:
|
||||||
|
Total number of queries =
|
||||||
|
@code{Qcache_inserts} + @code{Qcache_hits} + @code{Qcache_not_cached}.
|
||||||
|
|
||||||
|
|
||||||
@node Table types, Clients, Reference, Top
|
@node Table types, Clients, Reference, Top
|
||||||
@chapter MySQL Table Types
|
@chapter MySQL Table Types
|
||||||
|
|
||||||
@@ -44667,7 +44878,7 @@ Floating point numbers cause confusion sometimes, because these numbers
|
|||||||
are not stored as exact values inside computer architecture. What one
|
are not stored as exact values inside computer architecture. What one
|
||||||
can see on the screen usually is not the exact value of the number.
|
can see on the screen usually is not the exact value of the number.
|
||||||
|
|
||||||
Field types @code{FLOAT} and @code{DECIMAL} are such.
|
Field types @code{FLOAT}, @code{DOUBLE} and @code{DECIMAL} are such.
|
||||||
|
|
||||||
@example
|
@example
|
||||||
CREATE TABLE t1 (i int, d1 decimal(9,2), d2 decimal(9,2));
|
CREATE TABLE t1 (i int, d1 decimal(9,2), d2 decimal(9,2));
|
||||||
|
@@ -359,10 +359,11 @@ int ft_boolean_read_next(FT_INFO *ftb, char *record)
|
|||||||
|
|
||||||
float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
|
float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
|
||||||
{
|
{
|
||||||
TREE ptree;
|
|
||||||
FT_WORD word;
|
FT_WORD word;
|
||||||
FTB_WORD *ftbw;
|
FTB_WORD *ftbw;
|
||||||
FTB_EXPR *ftbe;
|
FTB_EXPR *ftbe;
|
||||||
|
FT_SEG_ITERATOR ftsi;
|
||||||
|
const byte *end;
|
||||||
uint i;
|
uint i;
|
||||||
my_off_t docid=ftb->info->lastpos;
|
my_off_t docid=ftb->info->lastpos;
|
||||||
|
|
||||||
@@ -393,33 +394,43 @@ float ft_boolean_find_relevance(FT_INFO *ftb, byte *record, uint length)
|
|||||||
else if (ftb->state != SCAN)
|
else if (ftb->state != SCAN)
|
||||||
return -3.0;
|
return -3.0;
|
||||||
|
|
||||||
bzero(&ptree, sizeof(ptree));
|
if (ftb->keynr==NO_SUCH_KEY)
|
||||||
if ((ftb->keynr==NO_SUCH_KEY)
|
_mi_ft_segiterator_dummy_init(record, length, &ftsi);
|
||||||
? ft_parse(& ptree, record, length)
|
else
|
||||||
: _mi_ft_parse(& ptree, ftb->info, ftb->keynr, record))
|
_mi_ft_segiterator_init(ftb->info, ftb->keynr, record, &ftsi);
|
||||||
return -4.0;
|
|
||||||
|
|
||||||
for (i=1; i<=ftb->queue.elements; i++)
|
while (_mi_ft_segiterator(&ftsi))
|
||||||
{
|
{
|
||||||
ftbw=(FTB_WORD *)(ftb->queue.root[i]);
|
if (!ftsi.pos)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
end=ftsi.pos+ftsi.len;
|
||||||
|
while (ft_simple_get_word((byte **)&ftsi.pos,(byte *)end,&word))
|
||||||
|
{
|
||||||
|
uint a, b, c;
|
||||||
|
for (a=1, b=ftb->queue.elements+1, c=(a+b)/2; b-a>1; c=(a+b)/2)
|
||||||
|
{
|
||||||
|
ftbw=(FTB_WORD *)(ftb->queue.root[c]);
|
||||||
|
if (_mi_compare_text(default_charset_info, word.pos,word.len,
|
||||||
|
(uchar*) ftbw->word+1,ftbw->len-1,ftbw->trunc) >0)
|
||||||
|
b=c;
|
||||||
|
else
|
||||||
|
a=c;
|
||||||
|
}
|
||||||
|
for (; c; c--)
|
||||||
|
{
|
||||||
|
ftbw=(FTB_WORD *)(ftb->queue.root[c]);
|
||||||
|
if (_mi_compare_text(default_charset_info, word.pos,word.len,
|
||||||
|
(uchar*) ftbw->word+1,ftbw->len-1,ftbw->trunc))
|
||||||
|
break;
|
||||||
|
if (ftbw->docid == docid)
|
||||||
|
continue;
|
||||||
ftbw->docid=docid;
|
ftbw->docid=docid;
|
||||||
ptree.custom_arg=(void *)(ftbw->trunc);
|
|
||||||
word.pos=ftbw->word+1;
|
|
||||||
word.len=ftbw->len-1;
|
|
||||||
if (tree_search(& ptree, & word))
|
|
||||||
{ /* found! */
|
|
||||||
_ftb_climb_the_tree(ftbw);
|
_ftb_climb_the_tree(ftbw);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{ /* not found! */
|
|
||||||
if (ftbw->yesno>0 && ftbw->up->up==0)
|
|
||||||
{ /* but this word MUST BE present in every document matched,
|
|
||||||
so we can stop the search right now */
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
delete_tree(& ptree);
|
|
||||||
ftbe=ftb->root;
|
ftbe=ftb->root;
|
||||||
if (ftbe->docid==docid && ftbe->cur_weight>0 &&
|
if (ftbe->docid==docid && ftbe->cur_weight>0 &&
|
||||||
ftbe->yesses>=ftbe->ythresh && !ftbe->nos)
|
ftbe->yesses>=ftbe->ythresh && !ftbe->nos)
|
||||||
|
@@ -55,12 +55,9 @@ void _mi_ft_segiterator_dummy_init(const byte *record, uint len,
|
|||||||
|
|
||||||
uint _mi_ft_segiterator(register FT_SEG_ITERATOR *ftsi)
|
uint _mi_ft_segiterator(register FT_SEG_ITERATOR *ftsi)
|
||||||
{
|
{
|
||||||
if(!ftsi->num)
|
if (!ftsi->num) return 0; else ftsi->num--;
|
||||||
return 0;
|
if (!ftsi->seg) return 1; else ftsi->seg--;
|
||||||
if (!ftsi->seg)
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
ftsi->seg--; ftsi->num--;
|
|
||||||
if (ftsi->seg->null_bit &&
|
if (ftsi->seg->null_bit &&
|
||||||
(ftsi->rec[ftsi->seg->null_pos] & ftsi->seg->null_bit))
|
(ftsi->rec[ftsi->seg->null_pos] & ftsi->seg->null_bit))
|
||||||
{
|
{
|
||||||
|
@@ -263,10 +263,9 @@ while test $# -gt 0; do
|
|||||||
$ECHO "Note: you will get more meaningful output on a source distribution compiled with debugging option when running tests with --gdb option"
|
$ECHO "Note: you will get more meaningful output on a source distribution compiled with debugging option when running tests with --gdb option"
|
||||||
fi
|
fi
|
||||||
DO_GDB=1
|
DO_GDB=1
|
||||||
# We must use manager, as things doesn't work on Linux without it
|
|
||||||
# This needs to be checked properly
|
# This needs to be checked properly
|
||||||
# USE_MANAGER=1
|
# USE_MANAGER=1
|
||||||
# USE_RUNNING_SERVER=""
|
USE_RUNNING_SERVER=""
|
||||||
;;
|
;;
|
||||||
--client-gdb )
|
--client-gdb )
|
||||||
if [ x$BINARY_DIST = x1 ] ; then
|
if [ x$BINARY_DIST = x1 ] ; then
|
||||||
|
Reference in New Issue
Block a user