in src/pg_query_fingerprint.c [87:115]
static int compareFingerprintContext(const void *a, const void *b)
{
FingerprintContext *ca = *(FingerprintContext**) a;
FingerprintContext *cb = *(FingerprintContext**) b;
char strBufA[FINGERPRINT_CMP_STRBUF + 1] = {'\0'};
char strBufB[FINGERPRINT_CMP_STRBUF + 1] = {'\0'};
dlist_iter iterA;
dlist_iter iterB;
dlist_foreach(iterA, &ca->tokens)
{
FingerprintToken *token = dlist_container(FingerprintToken, list_node, iterA.cur);
strncat(strBufA, token->str, FINGERPRINT_CMP_STRBUF - strlen(strBufA));
}
dlist_foreach(iterB, &cb->tokens)
{
FingerprintToken *token = dlist_container(FingerprintToken, list_node, iterB.cur);
strncat(strBufB, token->str, FINGERPRINT_CMP_STRBUF - strlen(strBufB));
}
//printf("COMP %s <=> %s = %d\n", strBufA, strBufB, strcmp(strBufA, strBufB));
return strcmp(strBufA, strBufB);
}