postgresql/contrib/tsearch2/query.h

55 lines
1.2 KiB
C
Raw Normal View History

2003-07-21 18:27:44 +08:00
#ifndef __QUERY_H__
#define __QUERY_H__
/*
#define BS_DEBUG
*/
#include "ts_locale.h"
2003-07-21 18:27:44 +08:00
/*
* item in polish notation with back link
* to left operand
*/
typedef struct ITEM
{
int8 type;
int8 weight;
int2 left;
int4 val;
/* user-friendly value, must correlate with WordEntry */
2003-08-04 08:43:34 +08:00
uint32
istrue:1, /* use for ranking in Cover */
2003-08-04 08:43:34 +08:00
length:11,
distance:20;
2003-07-21 18:27:44 +08:00
} ITEM;
/*
*Storage:
* (len)(size)(array of ITEM)(array of operand in user-friendly form)
*/
typedef struct
{
int32 vl_len_; /* varlena header (do not touch directly!) */
2003-07-21 18:27:44 +08:00
int4 size;
char data[1];
} QUERYTYPE;
#define HDRSIZEQT ( VARHDRSZ + sizeof(int4) )
#define COMPUTESIZE(size,lenofoperand) ( HDRSIZEQT + (size) * sizeof(ITEM) + (lenofoperand) )
2003-07-21 18:27:44 +08:00
#define GETQUERY(x) (ITEM*)( (char*)(x)+HDRSIZEQT )
#define GETOPERAND(x) ( (char*)GETQUERY(x) + ((QUERYTYPE*)(x))->size * sizeof(ITEM) )
2003-07-21 18:27:44 +08:00
#define ISOPERATOR(x) ( pg_mblen(x)==1 && ( *(x)=='!' || *(x)=='&' || *(x)=='|' || *(x)=='(' || *(x)==')' ) )
2003-07-21 18:27:44 +08:00
#define END 0
#define ERR 1
#define VAL 2
#define OPR 3
#define OPEN 4
#define CLOSE 5
#define VALSTOP 6 /* for stop words */
2003-07-21 18:27:44 +08:00
2006-10-04 08:30:14 +08:00
bool TS_execute(ITEM * curitem, void *checkval,
bool calcnot, bool (*chkcond) (void *checkval, ITEM * val));
2003-07-21 18:27:44 +08:00
#endif