[HACKERS] create c function with void argument bug?

2010-10-23 Thread A.M.
Hello,

It seems that this:
CREATE OR REPLACE FUNCTION test_fsync_speed() RETURNS float AS 
'$libdir/test_fsync_speed','\
test_fsync_speed' LANGUAGE C IMMUTABLE STRICT;

is not equivalent to this (note void argument):

CREATE OR REPLACE FUNCTION test_fsync_speed(void) RETURNS float AS 
'$libdir/test_fsync_speed','\
test_fsync_speed' LANGUAGE C IMMUTABLE STRICT;

Two functions are created.
test=# \df
  List of functions
 Schema |   Name   | Result data type | Argument data types |  Type  
+--+--+-+
 public | test_fsync_speed | double precision | | normal
 public | test_fsync_speed | double precision | void| normal

Furthermore, I can't figure out how to call the void argument variant. Why is 
void accepted as an argument? 

create function testvoid(void) returns void as '' LANGUAGE PLPGSQL;
ERROR:  PL/pgSQL functions cannot accept type void

I punched the void argument in just by chance- am I just stupid?

Cheers,
M
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] create c function with void argument bug?

2010-10-23 Thread Tom Lane
A.M. age...@themactionfaction.com writes:
 It seems that this:
 CREATE OR REPLACE FUNCTION test_fsync_speed() RETURNS float AS 
 '$libdir/test_fsync_speed','\
 test_fsync_speed' LANGUAGE C IMMUTABLE STRICT;

 is not equivalent to this (note void argument):

 CREATE OR REPLACE FUNCTION test_fsync_speed(void) RETURNS float AS 
 '$libdir/test_fsync_speed','\
 test_fsync_speed' LANGUAGE C IMMUTABLE STRICT;

Why would you think it would be?  void in SQL doesn't act the same way
as void in C, it's an actual type.

regards, tom lane

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers