Thread: Regarding niladic functions

Regarding niladic functions

From
"Chandra Sekhar Surapaneni"
Date:
Hi All,
   Can we write our own niladic functions in 8.0.0? I want to write a
niladic function similar to current_timestamp, but I did not find any
information in the documentation. Thank you for your time
Regards
chandu

Re: Regarding niladic functions

From
Neil Conway
Date:
Chandra Sekhar Surapaneni wrote:
>    Can we write our own niladic functions in 8.0.0? I want to write a
> niladic function similar to current_timestamp, but I did not find any
> information in the documentation.

If you mean a function without any arguments, it is trivial:

CREATE FUNCTION foo() RETURNS ... AS ...;
SELECT foo();

If you mean a function that doesn't take any arguments and can be
invoked without an empty set of parentheses (like current_timestamp),
there isn't a way to define such a function via SQL. You could probably
hack the SQL parser to add support for specific functions like this, as
is done for current_timestamp and friends.

-Neil

Re: Regarding niladic functions

From
Tom Lane
Date:
Neil Conway <neilc@samurai.com> writes:
> If you mean a function that doesn't take any arguments and can be
> invoked without an empty set of parentheses (like current_timestamp),
> there isn't a way to define such a function via SQL. You could probably
> hack the SQL parser to add support for specific functions like this, as
> is done for current_timestamp and friends.

It would in fact *require* a parser change, which is why we don't
support it.

(Personally I think it was tremendously stupid of the SQL committee
to define these things as keywords rather than functions, anyway ...
as is, they conflict with column names, which they would not do if
they were invoked as foo() ...)

            regards, tom lane

Re: Regarding niladic functions (another form)

From
Pavel Stehule
Date:
Hello,

  It's not really about subject - sorry. I tryed implement support of XML.
For it I need functions which know names of params.

example:
  create table foo(a integer);
  select xmlnode(a) from foo; -> <a>10</a> ....
  select xmlnode(a as b) from foo; -> <b>10</b> ...

I have particular solution, but maybe is better general support for it.
There is some ideas about functions with variable count of params?

Thank You
Pavel Stehule