Re: [GENERAL] plPGSQL bug in function creation
От | Dennis Gearon |
---|---|
Тема | Re: [GENERAL] plPGSQL bug in function creation |
Дата | |
Msg-id | 3F5C8EFB.7090101@fireserve.net обсуждение исходный текст |
Ответ на | plPGSQL bug in function creation ("Marek Lewczuk" <newsy@lewczuk.com>) |
Список | pgsql-bugs |
Marek Lewczuk wrote: >Hello, >I think that there is a bug in plPGSQL - or maybe I don't know something >about this language. Try to create this function > > >Ok., this is the function created in plPGSQL: > >CREATE FUNCTION "public"."test" (text, text) RETURNS text AS' >BEGIN > IF $1 THEN > RETURN $1; > ELSE > RETURN $2; > END IF; >END; >'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; > >If you will execute SELECT test('tess', 'erer') -> then "tess" will be >returned. If you will execute: SELECT test(NULL, 'buuu'); -> then it >will return NULL, but it should return "buuu". I tried to figure out why >it is happening so i modifye this function to this: > >CREATE FUNCTION "public"."test" (text, text) RETURNS text AS' >BEGIN > RETURN 'test'; >END; >'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; > >And when i execute: SELECT test(NULL, 'buuu'); -> it returns me NULL >value, when it should return "buuu". Well I think that something is >wrong here. > >If I will modify this function again to this: > >CREATE FUNCTION "public"."test" (varchar, varchar) RETURNS text AS' >BEGIN > IF $1 THEN > RETURN $1; > ELSE > RETURN $2; > END IF; >END; >'LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER; > >Everything is working OK.. So the problem is in TEXT type definition. > >I'm using PG 7.3.1 on Win/Cyg > > > > >---------------------------(end of broadcast)--------------------------- >TIP 8: explain analyze is your friend > > > You can only test for NULL with 'IS NULL'. NULL is NOT: FALSE, 0, or F
В списке pgsql-bugs по дате отправления: