|
25 | 25 |
|
26 | 26 | typedef struct |
27 | 27 | { |
28 | | - WordEntry entry; /* must be first! */ |
| 28 | + WordEntry entry; /* must be first, see compareentry */ |
29 | 29 | WordEntryPos *pos; |
30 | 30 | int poslen; /* number of elements in pos */ |
31 | 31 | } WordEntryIN; |
@@ -79,16 +79,19 @@ uniquePos(WordEntryPos *a, int l) |
79 | 79 | return res + 1 - a; |
80 | 80 | } |
81 | 81 |
|
82 | | -/* Compare two WordEntryIN values for qsort */ |
| 82 | +/* |
| 83 | + * Compare two WordEntry structs for qsort_arg. This can also be used on |
| 84 | + * WordEntryIN structs, since those have WordEntry as their first field. |
| 85 | + */ |
83 | 86 | static int |
84 | 87 | compareentry(const void *va, const void *vb, void *arg) |
85 | 88 | { |
86 | | - const WordEntryIN *a = (const WordEntryIN *) va; |
87 | | - const WordEntryIN *b = (const WordEntryIN *) vb; |
| 89 | + const WordEntry *a = (const WordEntry *) va; |
| 90 | + const WordEntry *b = (const WordEntry *) vb; |
88 | 91 | char *BufferStr = (char *) arg; |
89 | 92 |
|
90 | | - return tsCompareString(&BufferStr[a->entry.pos], a->entry.len, |
91 | | - &BufferStr[b->entry.pos], b->entry.len, |
| 93 | + return tsCompareString(&BufferStr[a->pos], a->len, |
| 94 | + &BufferStr[b->pos], b->len, |
92 | 95 | false); |
93 | 96 | } |
94 | 97 |
|
@@ -167,12 +170,6 @@ uniqueentry(WordEntryIN *a, int l, char *buf, int *outbuflen) |
167 | 170 | return res + 1 - a; |
168 | 171 | } |
169 | 172 |
|
170 | | -static int |
171 | | -WordEntryCMP(WordEntry *a, WordEntry *b, char *buf) |
172 | | -{ |
173 | | - return compareentry(a, b, buf); |
174 | | -} |
175 | | - |
176 | 173 |
|
177 | 174 | Datum |
178 | 175 | tsvectorin(PG_FUNCTION_ARGS) |
@@ -511,7 +508,7 @@ tsvectorrecv(PG_FUNCTION_ARGS) |
511 | 508 |
|
512 | 509 | datalen += lex_len; |
513 | 510 |
|
514 | | - if (i > 0 && WordEntryCMP(&vec->entries[i], |
| 511 | + if (i > 0 && compareentry(&vec->entries[i], |
515 | 512 | &vec->entries[i - 1], |
516 | 513 | STRPTR(vec)) <= 0) |
517 | 514 | needSort = true; |
|
0 commit comments