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