Обсуждение: Re: [COMMITTERS] pgsql: Implement table partitioning.
* Robert Haas (rhaas@postgresql.org) wrote: > Implement table partitioning. My compiler apparently doesn't care for this: .../src/backend/catalog/partition.c: In function ‘partition_rbound_cmp’: .../src/backend/catalog/partition.c:1787:13: warning: ‘cmpval’ may be used uninitialized in this function [-Wmaybe-uninitialized]if (cmpval == 0 && lower1 != lower2) ^ Thanks! Stephen
On Thu, Dec 8, 2016 at 1:49 PM, Stephen Frost <sfrost@snowman.net> wrote: > * Robert Haas (rhaas@postgresql.org) wrote: >> Implement table partitioning. > > My compiler apparently doesn't care for this: > > .../src/backend/catalog/partition.c: In function ‘partition_rbound_cmp’: > .../src/backend/catalog/partition.c:1787:13: warning: ‘cmpval’ may be used uninitialized in this function [-Wmaybe-uninitialized] > if (cmpval == 0 && lower1 != lower2) So, apparently your compiler doesn't recognize that the loop always has to execute at least once, because we don't support a table partitioned on zero attributes. If you initialize cmpval to 0 at the top of the function, does that fix it? -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Robert, * Robert Haas (robertmhaas@gmail.com) wrote: > On Thu, Dec 8, 2016 at 1:49 PM, Stephen Frost <sfrost@snowman.net> wrote: > > * Robert Haas (rhaas@postgresql.org) wrote: > >> Implement table partitioning. > > > > My compiler apparently doesn't care for this: > > > > .../src/backend/catalog/partition.c: In function ‘partition_rbound_cmp’: > > .../src/backend/catalog/partition.c:1787:13: warning: ‘cmpval’ may be used uninitialized in this function [-Wmaybe-uninitialized] > > if (cmpval == 0 && lower1 != lower2) > > So, apparently your compiler doesn't recognize that the loop always > has to execute at least once, because we don't support a table > partitioned on zero attributes. If you initialize cmpval to 0 at the > top of the function, does that fix it? Yes, that makes the compiler warning go away. ... your compiler knows that key->partnatts will always be >= 1? Thanks! Stephen
On Thu, Dec 8, 2016 at 2:11 PM, Stephen Frost <sfrost@snowman.net> wrote: > Yes, that makes the compiler warning go away. Great, pushed. > ... your compiler knows that key->partnatts will always be >= 1? :-) I think my compiler is too dumb to notice that int x; printf("%d", x); is a reference to an uninitialized variable. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
* Robert Haas (robertmhaas@gmail.com) wrote: > On Thu, Dec 8, 2016 at 2:11 PM, Stephen Frost <sfrost@snowman.net> wrote: > > Yes, that makes the compiler warning go away. > > Great, pushed. Awesome, thanks! > > ... your compiler knows that key->partnatts will always be >= 1? > > :-) > > I think my compiler is too dumb to notice that int x; printf("%d", x); > is a reference to an uninitialized variable. Made me laugh, thanks again. :) Stephen
Robert, * Robert Haas (robertmhaas@gmail.com) wrote: > On Thu, Dec 8, 2016 at 1:49 PM, Stephen Frost <sfrost@snowman.net> wrote: > > * Robert Haas (rhaas@postgresql.org) wrote: > >> Implement table partitioning. > > > > My compiler apparently doesn't care for this: > > > > .../src/backend/catalog/partition.c: In function ‘partition_rbound_cmp’: > > .../src/backend/catalog/partition.c:1787:13: warning: ‘cmpval’ may be used uninitialized in this function [-Wmaybe-uninitialized] > > if (cmpval == 0 && lower1 != lower2) > > So, apparently your compiler doesn't recognize that the loop always > has to execute at least once, because we don't support a table > partitioned on zero attributes. If you initialize cmpval to 0 at the > top of the function, does that fix it? Yes, that makes the compiler warning go away. ... your compiler knows that key->partnatts will always be >= 1? Thanks! Stephen
* Robert Haas (robertmhaas@gmail.com) wrote: > On Thu, Dec 8, 2016 at 2:11 PM, Stephen Frost <sfrost@snowman.net> wrote: > > Yes, that makes the compiler warning go away. > > Great, pushed. Awesome, thanks! > > ... your compiler knows that key->partnatts will always be >= 1? > > :-) > > I think my compiler is too dumb to notice that int x; printf("%d", x); > is a reference to an uninitialized variable. Made me laugh, thanks again. :) Stephen