CHKVAL chkval;
bool result;
- if (!val->size)
+ if (!val->size || !query->size)
{
PG_FREE_IF_COPY(val, 0);
PG_FREE_IF_COPY(query, 1);
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
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);
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);
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;
}