~ubuntu-branches/ubuntu/lucid/mysql-dfsg-5.1/lucid

« back to all changes in this revision

Viewing changes to storage/myisam/ft_boolean_search.c

  • Committer: Bazaar Package Importer
  • Author(s): Mathias Gug, Mathias Gug
  • Date: 2009-08-05 11:40:21 UTC
  • mfrom: (1.1.3 upstream) (0.1.9 sid)
  • Revision ID: james.westby@ubuntu.com-20090805114021-59bj0bgfm2ufllbk
Tags: 5.1.37-1ubuntu1
[ Mathias Gug ]
* Merge from debian unstable and 5.0, remaining changes:
  - debian/control:
    + Properly upgrade libmysqlclient16-dev packages to
    libmysqlclient-dev:
      * Make libmysqlclient16-dev a transitional package depending on
        libmysqlclient-dev.
      * Make libmysqlclient-dev replace libmysqlclient16-dev.
    + Don't provide a libmysqlclient15-dev package as long as there are
      packages still build-depending on libmysqlclient15-dev and
      mysql-dsfg-5.0 is in the archive.
    + Lower mailx from a Recommends to a Suggests to avoid pulling in
      a full MTA on all installs of mysql-server. (LP: #259477)
  - debian/rules:
    + added -fno-strict-aliasing to CFLAGS to get around mysql testsuite
      build failures.
  - debian/additions/debian-start.inc.sh: support ANSI mode (LP: #310211)
  - Add AppArmor profile:
    - debian/apparmor-profile: apparmor profile.
    - debian/rules, debian/mysql-server-5.1.files: install apparmor profile.
    - debian/mysql-server-5.1.dirs: add etc/apparmor.d/force-complain
    - debian/mysql-server-5.1.postrm: remove symlink in force-complain/ on
      purge.
    - debian/mysql-server-5.1.README.Debian: add apparmor documentation.
    - debian/additions/my.cnf: Add warning about apparmor. (LP: #201799)
    - debian/mysql-server-5.1.postinst: reload apparmor profiles.
  - debian/additions/my.cnf: remove language option. Error message files are
    located in a different directory in MySQL 5.0. Setting the language
    option to use /usr/share/mysql/english breaks 5.0. Both 5.0 and 5.1
    use a default value that works. (LP: #316974)
  - debian/mysql-server-5.1.mysql.init:
    + Clearly indicate that we do not support running multiple instances
      of mysqld by duplicating the init script.
      (closes: #314785, #324834, #435165, #444216)
    + Properly parameterize all existing references to the mysql config
      file (/etc/mysql/my.cnf).
  - debian/mysql-server-5.1.postinst: Clear out the second password
    when setting up mysql. (LP: #344816)
  - mysql-server-core-5.1 package for files needed by Akonadi:
    + debian/control: create mysql-server-core-5.1 package.
    + debian/mysql-server-core-5.1.files, debian/mysql-server-5.1.files:
      move core mysqld files to mysql-server-core-5.1 package.
* debian/libmysqlclient16.symbols.amd64: remove amd64 symbols as it has
  not been correctly generated in Debian.
* Add Apport hook: (LP: #354188)
  - debian/mysql-server-5.1.py: apport package hook.
  - debian/mysql-server-5.1.files, debian/rules: install apport package
    hook.
* debian/additions/my.cnf: 
  - drop old_password option.
  - fix commented logging options to use general_log and general_log_file.
* Dropped - accepted in Debian:
  - debian/mysql-server-5.1.config:
    + ask for MySQL root password at priority high instead of medium so
      that the password prompt is seen on a default install. (LP: #319843)
    + don't ask for root password when upgrading from a 5.0 install.

Show diffs side-by-side

added added

removed removed

Lines of Context:
335
335
  return CMP_NUM((*((my_off_t*)a)), (*((my_off_t*)b)));
336
336
}
337
337
 
338
 
/* returns 1 if the search was finished (must-word wasn't found) */
 
338
/*
 
339
  When performing prefix search (a word with truncation operator), we
 
340
  must preserve original prefix to ensure that characters which may be
 
341
  expanded/contracted do not break the prefix. This is done by storing
 
342
  newly found key immediatly after the original word in ftbw->word
 
343
  buffer.
 
344
 
 
345
  ftbw->word= LENGTH WORD [ LENGTH1 WORD1 ] WEIGHT REFERENCE
 
346
  LENGTH - 1 byte, length of the WORD
 
347
  WORD - LENGTH bytes, the word itself
 
348
  LENGTH1 - 1 byte, length of the WORD1, present in case of prefix search
 
349
  WORD1 - LENGTH bytes, the word itself, present in case of prefix search
 
350
  WEIGHT - 4 bytes (HA_FT_WLEN), either weight or number of subkeys
 
351
  REFERENCE - rec_reflength bytes, pointer to the record
 
352
 
 
353
  returns 1 if the search was finished (must-word wasn't found)
 
354
*/
339
355
static int _ft2_search(FTB *ftb, FTB_WORD *ftbw, my_bool init_search)
340
356
{
341
357
  int r;
369
385
    if (ftbw->docid[0] < max_docid)
370
386
    {
371
387
      sflag|= SEARCH_SAME;
372
 
      _mi_dpointer(info, (uchar *)(ftbw->word + ftbw->len + HA_FT_WLEN),
 
388
      _mi_dpointer(info, (uchar*) (lastkey_buf + HA_FT_WLEN +
 
389
                                   (ftbw->off ? 0 : lastkey_buf[0] + 1)),
373
390
                   max_docid);
374
391
    }
375
392
    r=_mi_search(info, ftbw->keyinfo, (uchar*) lastkey_buf,