BUG #6128: A boolean variable doesn't evaluate properly in an IF conditional...

Поиск
Список
Период
Сортировка
От
Тема BUG #6128: A boolean variable doesn't evaluate properly in an IF conditional...
Дата
Msg-id 201107211848.p6LImSlt064768@wwwmaster.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #6128: A boolean variable doesn't evaluate properly in an IF conditional...  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: BUG #6128: A boolean variable doesn't evaluate properly in an IF conditional...  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-bugs
The following bug has been logged online:

Bug reference:      6128
Logged by:
Email address:      danielb@megasystems.us
PostgreSQL version: 8.3
Operating system:   Windows XP
Description:        A boolean variable doesn't evaluate properly in an IF
conditional...
Details:

I wrote some code in a PLPGSQL function to generate a printout string of
some information. Basically, I create a string of printed characters, which
my calling program will then print out...

I wrote an IF conditional to generate different printing based on what input
data I got...

I declared the variable "put_the_in_city_online boolean := false" in my
declaration section. I then had the following IF conditional inside a FOR
LOOP structure with a record variable called "rec"...

-- If the applicant has electric services,
-- then we display a line indicating such...
IF (rec.has_electric = 'Y') THEN
  IF (put_the_in_city_online = FALSE) THEN
    application_page_01 := application_page_01 ||
      '  SERVICES: ELECTRIC   ' ||
      rec.electric_rate_category || '              '
      || rec.in_or_out_of_city || end_of_line;

          put_the_in_city_online := true;
  ELSE
    application_page_01 := application_page_01 ||
      '            ELECTRIC   ' ||
      rec.electric_rate_category || end_of_line;
  END IF;
END IF;

The bug occurs in the execution of these statements. I enter inside the
first IF statement no problem, but the 2nd IF statement executes the
opposite of what it should. The ELSE code is executing when the IF code
should be executing!

For some reason, POSTGRESQL does not evaluate ((put_the_in_city_online =
FALSE) = true) correctly. This statement is true, but corresponding
statements are not executed; the statements for ((put_the_in_city_online =
FALSE) = false) end up being executed!

I don't see any flaw in my logic. Postgresql doesn't seem to work correctly
based on logic!

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: BUG #6127: pg_restore failing: unexpected message type 0x58 during COPY from stdin
Следующее
От: Greg Johnson
Дата:
Сообщение: Re: BUG #6127: pg_restore failing: unexpected message type 0x58 during COPY from stdin