Patch resolve ERROR problem for non-goog query_txt.
Teodor Sigaev
This commit is contained in:
parent
2e0e430659
commit
52ee800ed3
@ -6,6 +6,8 @@ All work was done by Teodor Sigaev (teodor@stack.net) and Oleg Bartunov
|
||||
|
||||
CHANGES:
|
||||
|
||||
August 22, 2002
|
||||
Fix works with 'bad' queries
|
||||
August 13, 2002
|
||||
Use parser of OpenFTS v0.33.
|
||||
|
||||
|
@ -231,6 +231,9 @@ gtxtidx_consistent(PG_FUNCTION_ARGS) {
|
||||
((GISTENTRY *)PG_GETARG_POINTER(0))->key
|
||||
);
|
||||
|
||||
if ( !query->size )
|
||||
PG_RETURN_BOOL(false);
|
||||
|
||||
if ( ISSIGNKEY(key) ) {
|
||||
if ( ISALLTRUE(key) )
|
||||
PG_RETURN_BOOL(true);
|
||||
|
@ -419,7 +419,7 @@ execqtxt(PG_FUNCTION_ARGS)
|
||||
CHKVAL chkval;
|
||||
bool result;
|
||||
|
||||
if (!val->size)
|
||||
if (!val->size || !query->size)
|
||||
{
|
||||
PG_FREE_IF_COPY(val, 0);
|
||||
PG_FREE_IF_COPY(query, 1);
|
||||
@ -593,8 +593,9 @@ mqtxt_in(PG_FUNCTION_ARGS)
|
||||
res = clean_fakeval(GETQUERY(query), &len);
|
||||
if (!res)
|
||||
{
|
||||
pfree(query);
|
||||
PG_RETURN_NULL();
|
||||
query->len=HDRSIZEQT;
|
||||
query->size=0;
|
||||
PG_RETURN_POINTER(query);
|
||||
}
|
||||
memcpy((void *) GETQUERY(query), (void *) res, len * sizeof(ITEM));
|
||||
#ifdef BS_DEBUG
|
||||
@ -738,8 +739,11 @@ qtxt_out(PG_FUNCTION_ARGS)
|
||||
QUERYTYPE *query = (QUERYTYPE *) DatumGetPointer(PG_DETOAST_DATUM(PG_GETARG_DATUM(0)));
|
||||
INFIX nrm;
|
||||
|
||||
if (query->size == 0)
|
||||
elog(ERROR, "Empty");
|
||||
if (query->size == 0) {
|
||||
char *b=palloc(1);
|
||||
*b='\0';
|
||||
PG_RETURN_POINTER(b);
|
||||
}
|
||||
nrm.curpol = GETQUERY(query);
|
||||
nrm.buflen = 32;
|
||||
nrm.cur = nrm.buf = (char *) palloc(sizeof(char) * nrm.buflen);
|
||||
@ -765,8 +769,11 @@ querytree(PG_FUNCTION_ARGS)
|
||||
int4 len;
|
||||
|
||||
|
||||
if (query->size == 0)
|
||||
elog(ERROR, "Empty");
|
||||
if (query->size == 0) {
|
||||
res = (text *) palloc(VARHDRSZ);
|
||||
VARATT_SIZEP(res) = VARHDRSZ;
|
||||
PG_RETURN_POINTER(res);
|
||||
}
|
||||
|
||||
q = clean_NOT(GETQUERY(query), &len);
|
||||
|
||||
|
@ -283,7 +283,7 @@ clean_fakeval(ITEM * ptr, int4 *len)
|
||||
resroot = clean_fakeval_intree(root, &result);
|
||||
if (result != V_UNKNOWN)
|
||||
{
|
||||
elog(ERROR, "Your query contained only stopword(s), ignored");
|
||||
elog(NOTICE, "Query contains only stopword(s) or doesn't contain lexem(s), ignored");
|
||||
*len = 0;
|
||||
return NULL;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user