Thread: Re: [COMMITTERS] pgsql: Add column storage type to psql \d+ display.
Bruce Momjian wrote: > Log Message: > ----------- > Add column storage type to psql \d+ display. I think this patch has caused this new warning in psql: /pgsql//source/00head/src/bin/psql/describe.c: In function ‘describeOneTableDetails’: /pgsql//source/00head/src/bin/psql/describe.c:832: warning: ‘tableinfo.relkind’ may be used uninitialized in this function -- Alvaro Herrera http://www.CommandPrompt.com/ PostgreSQL Replication, Consulting, Custom Development, 24x7 support
Alvaro Herrera wrote: > Bruce Momjian wrote: > > Log Message: > > ----------- > > Add column storage type to psql \d+ display. > > I think this patch has caused this new warning in psql: > > /pgsql//source/00head/src/bin/psql/describe.c: In function ?describeOneTableDetails?: > /pgsql//source/00head/src/bin/psql/describe.c:832: warning: ?tableinfo.relkind? may be used uninitialized in this function I don't see that warning with my compiler so I have no way of testing this, but I do see this line pretty high in the function: tableinfo.relkind = *(PQgetvalue(res, 0, 1)); Do you have any idea how relkind could be accessed before this assignment? The line number is it complaining about is the definition of relkind in the structure, not any reference to the variable. The only crazy idea I have is that the variable name appears in a string above the assignment: "SELECT relhasindex, relkind, relchecks, reltriggers, relhasrules, " And relkind is the only column that matches a structure member. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + If your life is a hard drive, Christ can be your backup. +
Bruce Momjian wrote: > Alvaro Herrera wrote: > > I think this patch has caused this new warning in psql: > > > > /pgsql//source/00head/src/bin/psql/describe.c: In function ?describeOneTableDetails?: > > /pgsql//source/00head/src/bin/psql/describe.c:832: warning: ?tableinfo.relkind? may be used uninitialized in this function > > I don't see that warning with my compiler so I have no way of testing > this, but I do see this line pretty high in the function: > > tableinfo.relkind = *(PQgetvalue(res, 0, 1)); But it's before the first "goto error_return", after which it is checked. -- Alvaro Herrera http://www.CommandPrompt.com/ The PostgreSQL Company - Command Prompt, Inc.
Alvaro Herrera <alvherre@commandprompt.com> writes: > Bruce Momjian wrote: >> I don't see that warning with my compiler so I have no way of testing >> this, but I do see this line pretty high in the function: >> tableinfo.relkind = *(PQgetvalue(res, 0, 1)); > But it's before the first "goto error_return", after which it is checked. Ah. That code is indeed broken, or at least risky in the extreme. What the cleanup code ought to be checking is just whether or not the arrays have gotten allocated yet. Checking a condition that should later lead to the array getting allocated is just asking for trouble --- even if there's not a "goto error_return" in between today, someday someone will insert one. Patch applied ... regards, tom lane