Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
40271811
Commit
40271811
authored
Aug 26, 2011
by
Tom Lane
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improve comments describing tsvector data structure.
parent
928311a4
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
27 additions
and
25 deletions
+27
-25
src/include/tsearch/ts_type.h
src/include/tsearch/ts_type.h
+27
-25
No files found.
src/include/tsearch/ts_type.h
View file @
40271811
...
...
@@ -18,6 +18,23 @@
/*
* TSVector type.
*
* Structure of tsvector datatype:
* 1) standard varlena header
* 2) int4 size - number of lexemes (WordEntry array entries)
* 3) Array of WordEntry - one per lexeme; must be sorted according to
* tsCompareString() (ie, memcmp of lexeme strings).
* WordEntry->pos gives the number of bytes from end of WordEntry
* array to start of lexeme's string, which is of length len.
* 4) Per-lexeme data storage:
* lexeme string (not null-terminated)
* if haspos is true:
* padding byte if necessary to make the position data 2-byte aligned
* uint16 number of positions that follow
* WordEntryPos[] positions
*
* The positions for each lexeme must be sorted.
*
* Note, tsvectorsend/recv believe that sizeof(WordEntry) == 4
*/
...
...
@@ -46,7 +63,7 @@ typedef uint16 WordEntryPos;
typedef
struct
{
uint16
npos
;
WordEntryPos
pos
[
1
];
/* var length */
WordEntryPos
pos
[
1
];
/* var
iable
length */
}
WordEntryPosVector
;
...
...
@@ -60,40 +77,25 @@ typedef struct
#define MAXNUMPOS (256)
#define LIMITPOS(x) ( ( (x) >= MAXENTRYPOS ) ? (MAXENTRYPOS-1) : (x) )
/*
* Structure of tsvector datatype:
* 1) standard varlena header
* 2) int4 size - number of lexemes or WordEntry array, which is the same
* 3) Array of WordEntry - sorted array, comparison based on word's length
* and strncmp(). WordEntry->pos points number of
* bytes from end of WordEntry array to start of
* corresponding lexeme.
* 4) Lexeme's storage:
* lexeme (without null-terminator)
* if haspos is true:
* padding byte if necessary to make the number of positions 2-byte aligned
* uint16 number of positions that follow.
* uint16[] positions
*
* The positions must be sorted.
*/
/* This struct represents a complete tsvector datum */
typedef
struct
{
int32
vl_len_
;
/* varlena header (do not touch directly!) */
int32
size
;
WordEntry
entries
[
1
];
/* var
size
*/
/* lexemes follow */
WordEntry
entries
[
1
];
/* var
iable length
*/
/* lexemes follow
the entries[] array
*/
}
TSVectorData
;
typedef
TSVectorData
*
TSVector
;
#define DATAHDRSIZE (offsetof(TSVectorData, entries))
#define CALCDATASIZE(x, lenstr) (DATAHDRSIZE + (x) * sizeof(WordEntry) + (lenstr) )
#define CALCDATASIZE(nentries, lenstr) (DATAHDRSIZE + (nentries) * sizeof(WordEntry) + (lenstr) )
/* pointer to start of a tsvector's WordEntry array */
#define ARRPTR(x) ( (x)->entries )
/*
returns a pointer to the beginning of lexemes
*/
#define STRPTR(x) ( (char *) &(x)->entries[
x
->size] )
/*
pointer to start of a tsvector's lexeme storage
*/
#define STRPTR(x) ( (char *) &(x)->entries[
(x)
->size] )
#define _POSVECPTR(x, e) ((WordEntryPosVector *)(STRPTR(x) + SHORTALIGN((e)->pos + (e)->len)))
#define POSDATALEN(x,e) ( ( (e)->haspos ) ? (_POSVECPTR(x,e)->npos) : 0 )
...
...
@@ -231,7 +233,7 @@ typedef struct
{
int32
vl_len_
;
/* varlena header (do not touch directly!) */
int4
size
;
/* number of QueryItems */
char
data
[
1
];
char
data
[
1
];
/* data starts here */
}
TSQueryData
;
typedef
TSQueryData
*
TSQuery
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment