On Thu, Mar 7, 2024 at 2:14 PM Masahiko Sawada <sawada.m...@gmail.com> wrote: > > On Thu, Mar 7, 2024 at 4:01 PM John Naylor <johncnaylo...@gmail.com> wrote: > > > > On Thu, Mar 7, 2024 at 1:27 PM Masahiko Sawada <sawada.m...@gmail.com> > > wrote: > > > > > > On Thu, Mar 7, 2024 at 3:20 PM John Naylor <johncnaylo...@gmail.com> > > > wrote: > > > > > > > > On Thu, Mar 7, 2024 at 12:59 PM John Naylor <johncnaylo...@gmail.com> > > > > wrote: > > > > > > > ... cause "error: redefinition of typedef 'rt_radix_tree' is a C11 > > > > > feature [-Werror,-Wtypedef-redefinition]" > > > > > > > > > > I'll look in the other templates to see if what they do. > > > > > > > > Their "declare" sections have full typedefs. I found it works to leave > > > > out the typedef for the "define" section, but I first want to > > > > reproduce the build failure. > > > > > > Right. I've reproduced this build failure on my machine by specifying > > > flags "-Wtypedef-redefinition -std=gnu99" to clang. Something the > > > below change seems to fix the problem: > > > > Confirmed, will push shortly. > > mamba complained different build errors[1]: > > 2740 | fprintf(stderr, "num_keys = %ld\\n", tree->ctl->num_keys); > | ~~^ ~~~~~~~~~~~~~~~~~~~ > | | | > | long int int64 {aka long long > int} > | %lld > ../../../../src/include/lib/radixtree.h:2752:30: error: format '%ld' > expects argument of type 'long int', but argument 4 has type 'int64' > {aka 'long long int'} [-Werror=format=] > 2752 | fprintf(stderr, ", n%d = %ld", size_class.fanout, > tree->ctl->num_nodes[i]); > | ~~^ > ~~~~~~~~~~~~~~~~~~~~~~~ > | | > | > | long int > int64 {aka long long int} > | %lld > ../../../../src/include/lib/radixtree.h:2755:32: error: format '%ld' > expects argument of type 'long int', but argument 3 has type 'int64' > {aka 'long long int'} [-Werror=format=] > 2755 | fprintf(stderr, ", leaves = %ld", tree->ctl->num_leaves); > | ~~^ ~~~~~~~~~~~~~~~~~~~~~ > | | | > | long int int64 {aka long long int} > | %lld > > Regards, > > [1] > https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=mamba&dt=2024-03-07%2006%3A05%3A18
Yeah, the attached fixes it for me.
diff --git a/src/include/lib/radixtree.h b/src/include/lib/radixtree.h index 93e6a7d809..b8ad51c14d 100644 --- a/src/include/lib/radixtree.h +++ b/src/include/lib/radixtree.h @@ -2737,7 +2737,7 @@ RT_SCOPE void RT_STATS(RT_RADIX_TREE * tree) { fprintf(stderr, "max_val = " UINT64_FORMAT "\n", tree->ctl->max_val); - fprintf(stderr, "num_keys = %ld\n", tree->ctl->num_keys); + fprintf(stderr, "num_keys = %lld\n", (long long) tree->ctl->num_keys); #ifdef RT_SHMEM fprintf(stderr, "handle = " DSA_POINTER_FORMAT "\n", tree->ctl->handle); @@ -2749,10 +2749,10 @@ RT_STATS(RT_RADIX_TREE * tree) { RT_SIZE_CLASS_ELEM size_class = RT_SIZE_CLASS_INFO[i]; - fprintf(stderr, ", n%d = %ld", size_class.fanout, tree->ctl->num_nodes[i]); + fprintf(stderr, ", n%d = %lld", size_class.fanout, (long long) tree->ctl->num_nodes[i]); } - fprintf(stderr, ", leaves = %ld", tree->ctl->num_leaves); + fprintf(stderr, ", leaves = %lld", (long long) tree->ctl->num_leaves); fprintf(stderr, "\n"); }