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