Обсуждение: Re: [COMMITTERS] pgsql: Add column storage type to psql \d+ display.

Поиск
Список
Период
Сортировка

Re: [COMMITTERS] pgsql: Add column storage type to psql \d+ display.

От
Alvaro Herrera
Дата:
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


Re: [COMMITTERS] pgsql: Add column storage type to psql \d+ display.

От
Bruce Momjian
Дата:
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. +


Re: Re: [COMMITTERS] pgsql: Add column storage type to psql \d+ display.

От
Alvaro Herrera
Дата:
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.


Re: Re: [COMMITTERS] pgsql: Add column storage type to psql \d+ display.

От
Tom Lane
Дата:
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