summaryrefslogtreecommitdiff
path: root/contrib/tsearch/txtidx.h
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2001-10-12 23:19:09 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2001-10-12 23:19:09 +0000
commitb57705673d02483b6e20d8a4d55a8aa182055d08 (patch)
treecb974bb78b96509ab7b8e69f1f43d2bb9658adcf /contrib/tsearch/txtidx.h
parentc24216bea8ae43b251900d1ce6ca9250943c33e0 (diff)
downloadpostgresql-b57705673d02483b6e20d8a4d55a8aa182055d08.tar.gz
txtidx datatype for full text indexing with GiST.
From Oleg Bartunov and Teodor Sigaev.
Diffstat (limited to 'contrib/tsearch/txtidx.h')
-rw-r--r--contrib/tsearch/txtidx.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/contrib/tsearch/txtidx.h b/contrib/tsearch/txtidx.h
new file mode 100644
index 0000000000..9a586ce518
--- /dev/null
+++ b/contrib/tsearch/txtidx.h
@@ -0,0 +1,46 @@
+#ifndef __TXTIDX_H__
+#define __TXTIDX_H__
+
+/*
+#define TXTIDX_DEBUG
+*/
+
+#include "postgres.h"
+
+#include "access/gist.h"
+#include "access/itup.h"
+#include "utils/elog.h"
+#include "utils/palloc.h"
+#include "utils/builtins.h"
+#include "storage/bufpage.h"
+
+typedef struct {
+ uint16 len;
+ uint16 pos;
+} WordEntry;
+
+typedef struct {
+ int4 len;
+ int4 size;
+ char data[1];
+} txtidx;
+
+#define DATAHDRSIZE (sizeof(int4)*2)
+#define CALCDATASIZE(x, lenstr) ( x * sizeof(WordEntry) + DATAHDRSIZE + lenstr )
+#define ARRPTR(x) ( (WordEntry*) ( (char*)x + DATAHDRSIZE ) )
+#define STRPTR(x) ( (char*)x + DATAHDRSIZE + ( sizeof(WordEntry) * ((txtidx*)x)->size ) )
+#define STRSIZE(x) ( ((txtidx*)x)->len - DATAHDRSIZE - ( sizeof(WordEntry) * ((txtidx*)x)->size ) )
+
+typedef struct {
+ char *prsbuf;
+ char *word;
+ char *curpos;
+ int4 len;
+ int4 state;
+ bool oprisdelim;
+} TI_IN_STATE;
+
+int4 gettoken_txtidx( TI_IN_STATE *state );
+
+#endif
+