On Thu, Dec 11, 2008 at 12:40 PM, Pavel Stehule <[EMAIL PROTECTED]>wrote:
> Hello > > 2008/12/11 Rushabh Lathia <[EMAIL PROTECTED]>: > > Hi, > > > > Testcase: (8.4 CVS head) > > ==================== > > > > CREATE OR REPLACE FUNCTION myfunc(y int) > > RETURNS INTEGER AS $$ > > select 100; > > $$ language sql; > > > > CREATE OR REPLACE FUNCTION myfunc(y int, x integer DEFAULT 100) > > RETURNS INTEGER AS $$ > > select 200; > > $$ language sql; > > > > select myfunc(10); > > > > myfunc > > ---------- > > 100 > > (1 row) > > no, it's little bit different > > Default is only stored parameter value. You created two functions with > two different signatures > > myfunc(int) > myfunc(int, int) > > when you created function, we cannot check defaults, because we don't > know if anybody use default or not. And when you call function, then > postgres prefer function with most similar function. Ok, but what if I want to call a second function with the default values. How can I call that function with default values? > > regards > Pavel Stehule > > > > > When create the same function again by added one default value, while > > calling the function old function getting called. > > > > It seems that, function with defval not making any sense, if we want to > call > > the new function then we need to pass defval as well. > > > > select myfunc(10,10); > > > > myfunc > > ---------- > > 200 > > (1 row) > > > > I think second function should replace the old definition of the > function, > > inputs ? > > > > > > Thanks, > > Rushabh Lathia > > www.EnterpriseDB.com > > > -- Rushabh Lathia www.EnterpriseDB.com