summaryrefslogtreecommitdiff
path: root/myisam/ft_update.c
diff options
context:
space:
mode:
authorunknown <monty@donna.mysql.com>2000-09-13 01:08:34 +0300
committerunknown <monty@donna.mysql.com>2000-09-13 01:08:34 +0300
commit1040f1ac8ec95fcd2f42bc3b4d74d5ee01584e8f (patch)
tree42c131dcc09b3b264d33b14120eaae7687ab2425 /myisam/ft_update.c
parentde04a97b613356f19bfbe67856cda64774865832 (diff)
downloadmariadb-git-1040f1ac8ec95fcd2f42bc3b4d74d5ee01584e8f.tar.gz
Fixes for FULLTEXT and TIME type
Docs/manual.texi: Update of Linux notes and mysql_install_db include/my_tree.h: new tree function myisam/ft_parser.c: Fix free() bug myisam/ft_search.c: Fix free() bug myisam/ft_update.c: Fix free() bug scripts/safe_mysqld.sh: Check if we run as root sql-bench/Results-linux/ATIS-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/ATIS-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/RUN-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/RUN-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/alter-table-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/alter-table-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/big-tables-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/connect-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/connect-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/create-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/create-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/insert-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/insert-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/select-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/select-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-mysql-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/Results-linux/wisconsin-mysql_fast-Linux_2.2.13_SMP_alpha: ***MISSING WEAVE*** sql-bench/server-cfg.sh: Added use of OPTIMIZE TABLE sql-bench/test-ATIS.sh: Added use of OPTIMIZE TABLE sql-bench/test-insert.sh: Added use of OPTIMIZE TABLE sql-bench/test-select.sh: Added use of OPTIMIZE TABLE sql-bench/test-wisconsin.sh: Added use of OPTIMIZE TABLE sql/field.cc: Fix TIME type sql/item_func.h: Fixed Free bug
Diffstat (limited to 'myisam/ft_update.c')
-rw-r--r--myisam/ft_update.c32
1 files changed, 23 insertions, 9 deletions
diff --git a/myisam/ft_update.c b/myisam/ft_update.c
index cff5cb36baa..1c16a77ab5b 100644
--- a/myisam/ft_update.c
+++ b/myisam/ft_update.c
@@ -29,7 +29,8 @@
/* parses a document i.e. calls _mi_ft_parse for every keyseg */
-static FT_WORD * _mi_ft_parserecord(MI_INFO *info, uint keynr, byte *keybuf, const byte *record)
+static FT_WORD * _mi_ft_parserecord(MI_INFO *info, uint keynr, byte *keybuf,
+ const byte *record)
{
TREE *parsed=NULL;
MI_KEYSEG *keyseg;
@@ -62,7 +63,7 @@ static FT_WORD * _mi_ft_parserecord(MI_INFO *info, uint keynr, byte *keybuf, con
len=keyseg->length;
parsed=ft_parse(parsed, pos, len);
- if(parsed==NULL) return NULL;
+ if (parsed==NULL) return NULL;
}
return ft_linearize(info, keynr, keybuf, parsed);
}
@@ -150,23 +151,36 @@ int _mi_ft_cmp(MI_INFO *info, uint keynr, const byte *rec1, const byte *rec2)
}
/* adds a document to the collection */
-int _mi_ft_add(MI_INFO *info, uint keynr, byte *keybuf, const byte *record, my_off_t pos)
+int _mi_ft_add(MI_INFO *info, uint keynr, byte *keybuf, const byte *record,
+ my_off_t pos)
{
+ int error= -1;
FT_WORD *wlist;
- if(!(wlist=_mi_ft_parserecord(info, keynr, keybuf, record))) return -1;
- return _mi_ft_store(info,keynr,keybuf,wlist,pos);
+ if ((wlist=_mi_ft_parserecord(info, keynr, keybuf, record)))
+ {
+ error=_mi_ft_store(info,keynr,keybuf,wlist,pos);
+ my_free((char*) wlist,MYF(0));
+ }
+ return error;
}
/* removes a document from the collection */
-int _mi_ft_del(MI_INFO *info, uint keynr, byte *keybuf, const byte *record, my_off_t pos)
+int _mi_ft_del(MI_INFO *info, uint keynr, byte *keybuf, const byte *record,
+ my_off_t pos)
{
+ int error= -1;
FT_WORD *wlist;
- if(!(wlist=_mi_ft_parserecord(info, keynr, keybuf, record))) return -1;
- return _mi_ft_erase(info,keynr,keybuf,wlist,pos);
+ if ((wlist=_mi_ft_parserecord(info, keynr, keybuf, record)))
+ {
+ error=_mi_ft_erase(info,keynr,keybuf,wlist,pos);
+ my_free((char*) wlist,MYF(0));
+ }
+ return error;
}
-uint _ft_make_key(MI_INFO *info, uint keynr, byte *keybuf, FT_WORD *wptr, my_off_t filepos)
+uint _ft_make_key(MI_INFO *info, uint keynr, byte *keybuf, FT_WORD *wptr,
+ my_off_t filepos)
{
byte buf[HA_FT_MAXLEN+16];