|
22 | 22 |
|
23 | 23 | typedef struct
|
24 | 24 | {
|
25 |
| - WordEntry entry; /* must be first! */ |
| 25 | + WordEntry entry; /* must be first, see compareentry */ |
26 | 26 | WordEntryPos *pos;
|
27 | 27 | int poslen; /* number of elements in pos */
|
28 | 28 | } WordEntryIN;
|
@@ -78,16 +78,19 @@ uniquePos(WordEntryPos *a, int l)
|
78 | 78 | return res + 1 - a;
|
79 | 79 | }
|
80 | 80 |
|
81 |
| -/* Compare two WordEntryIN values for qsort */ |
| 81 | +/* |
| 82 | + * Compare two WordEntry structs for qsort_arg. This can also be used on |
| 83 | + * WordEntryIN structs, since those have WordEntry as their first field. |
| 84 | + */ |
82 | 85 | static int
|
83 | 86 | compareentry(const void *va, const void *vb, void *arg)
|
84 | 87 | {
|
85 |
| - const WordEntryIN *a = (const WordEntryIN *) va; |
86 |
| - const WordEntryIN *b = (const WordEntryIN *) vb; |
| 88 | + const WordEntry *a = (const WordEntry *) va; |
| 89 | + const WordEntry *b = (const WordEntry *) vb; |
87 | 90 | char *BufferStr = (char *) arg;
|
88 | 91 |
|
89 |
| - return tsCompareString(&BufferStr[a->entry.pos], a->entry.len, |
90 |
| - &BufferStr[b->entry.pos], b->entry.len, |
| 92 | + return tsCompareString(&BufferStr[a->pos], a->len, |
| 93 | + &BufferStr[b->pos], b->len, |
91 | 94 | false);
|
92 | 95 | }
|
93 | 96 |
|
@@ -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)
|
@@ -505,7 +502,7 @@ tsvectorrecv(PG_FUNCTION_ARGS)
|
505 | 502 |
|
506 | 503 | datalen += lex_len;
|
507 | 504 |
|
508 |
| - if (i > 0 && WordEntryCMP(&vec->entries[i], |
| 505 | + if (i > 0 && compareentry(&vec->entries[i], |
509 | 506 | &vec->entries[i - 1],
|
510 | 507 | STRPTR(vec)) <= 0)
|
511 | 508 | needSort = true;
|
|
0 commit comments