|
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