Dear hackers, I found that postgres could not be built if a complier option HASH_STATISTICS is set [1]. Also, I found HASH_DEBUG option caused warnings [2]. Usage of the are mentioned at the code comments in dynahash.c.
I'm not sure whether we would keep supporting them because no one may not have used anymore now. Anyway, I tried to fix the error/warnings. Please see attached. [1]: ``` dynahash.c: In function ‘hash_update_hash_key’: dynahash.c:1178:9: error: ‘hctl’ undeclared (first use in this function) 1178 | hctl->accesses++; | ^~~~ ``` [2]: ``` dynahash.c: In function ‘init_htab’: dynahash.c:779:68: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 12 has type ‘uint32’ {aka ‘unsigned int’} [-Wformat=] 779 | fprintf(stderr, "init_htab:\n%s%p\n%s%ld\n%s%ld\n%s%d\n%s%ld\n%s%u\n%s%x\n%s%x\n%s%ld\n", | ~~^ | | | long int | %d ...... 784 | "MAX BUCKET ", hctl->max_bucket, | ~~~~~~~~~~~~~~~~ | | | dynahash.c:779:86: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 18 has type ‘long int’ [-Wformat=] 779 | fprintf(stderr, "init_htab:\n%s%p\n%s%ld\n%s%ld\n%s%d\n%s%ld\n%s%u\n%s%x\n%s%x\n%s%ld\n", | ~^ | | | unsigned in | %lx ...... 787 | "NSEGS ", hctl->nsegs); | ~~~~~~~~~~~ | | | long int dynahash.c:779:90: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat=] 779 | fprintf(stderr, "init_htab:\n%s%p\n%s%ld\n%s%ld\n%s%d\n%s%ld\n%s%u\n%s%x\n%s%x\n%s%ld\n", | ~^ | | | char * dynahash.c:779:93: warning: format ‘%ld’ expects a matching ‘long int’ argument [-Wformat=] 779 | fprintf(stderr, "init_htab:\n%s%p\n%s%ld\n%s%ld\n%s%d\n%s%ld\n%s%u\n%s%x\n%s%x\n%s%ld\n", | ~~^ | | | long int ``` Best regards, Hayato Kuroda FUJITSU LIMITED
0001-Fix-broken-code-for-HASH_DEBUG-and-HASH_STATISTICS.patch
Description: 0001-Fix-broken-code-for-HASH_DEBUG-and-HASH_STATISTICS.patch