mirror of
https://github.com/postgres/postgres.git
synced 2025-07-27 12:41:57 +03:00
New features for tsearch2:
1 Comparison operation for tsquery 2 Btree index on tsquery 3 numnode(tsquery) - returns 'length' of tsquery 4 tsquery @ tsquery, tsquery ~ tsquery - contains, contained for tsquery. Note: They don't gurantee exact result, only MAY BE, so it useful only for speed up rewrite functions 5 GiST index support for @,~ 6 rewrite(): select rewrite(orig, what, to); select rewrite(ARRAY[orig, what, to]) from tsquery_table; select rewrite(orig, 'select what, to from tsquery_table;'); 7 significantly improve cover algorithm
This commit is contained in:
44
contrib/tsearch2/query_util.h
Normal file
44
contrib/tsearch2/query_util.h
Normal file
@ -0,0 +1,44 @@
|
||||
#ifndef __QUERY_UTIL_H__
|
||||
#define __QUERY_UTIL_H__
|
||||
|
||||
#include "postgres.h"
|
||||
#include "utils/memutils.h"
|
||||
|
||||
#include "query.h"
|
||||
|
||||
typedef struct QTNode {
|
||||
ITEM *valnode;
|
||||
uint32 flags;
|
||||
int4 nchild;
|
||||
char *word;
|
||||
uint32 sign;
|
||||
struct QTNode **child;
|
||||
} QTNode;
|
||||
|
||||
#define QTN_NEEDFREE 0x01
|
||||
#define QTN_NOCHANGE 0x02
|
||||
#define QTN_WORDFREE 0x04
|
||||
|
||||
typedef enum {
|
||||
PlainMemory,
|
||||
SPIMemory,
|
||||
AggMemory
|
||||
} MemoryType;
|
||||
|
||||
QTNode* QT2QTN( ITEM *in, char *operand );
|
||||
QUERYTYPE* QTN2QT( QTNode* in, MemoryType memtype );
|
||||
void QTNFree( QTNode* in );
|
||||
void QTNSort( QTNode* in );
|
||||
void QTNTernary( QTNode* in );
|
||||
void QTNBinary( QTNode* in );
|
||||
int QTNodeCompare( QTNode *an, QTNode *bn );
|
||||
QTNode* QTNCopy( QTNode* in, MemoryType memtype);
|
||||
bool QTNEq( QTNode* a, QTNode* b );
|
||||
|
||||
|
||||
extern MemoryContext AggregateContext;
|
||||
|
||||
#define MEMALLOC(us, s) ( ((us)==SPIMemory) ? SPI_palloc(s) : ( ( (us)==PlainMemory ) ? palloc(s) : MemoryContextAlloc(AggregateContext, (s)) ) )
|
||||
#define MEMFREE(us, p) ( ((us)==SPIMemory) ? SPI_pfree(p) : pfree(p) )
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user