inheritance of functions in postgres - Mailing list pgsql-bugs

From Andrzej Mazurkiewicz
Subject inheritance of functions in postgres
Date
Msg-id 13288F4408ADD11186FF0060B06A431303648BB2@MSGWAW1
Whole thread Raw
List pgsql-bugs
============================================================================
                        POSTGRESQL BUG REPORT TEMPLATE
============================================================================


Your name               : Andrzej Mazurkiewicz
Your email address      : andrzej.mazurkiewicz@polkomtel.com.pl


System Configuration
---------------------
  Architecture (example: Intel Pentium)         : Intel pentium 686

  Operating System (example: Linux 2.0.26 ELF)  : Linux 2.2.6 (Slackware4.0)

  PostgreSQL version (example: PostgreSQL-6.5.2):   PostgreSQL-6.5.1

  Compiler used (example:  gcc 2.8.0)           : gcc 2.8.1


Please enter a FULL description of your problem:
------------------------------------------------

In Postgres Users Guide, CREATE TABLE section, the following is stated:

 Postgres automatically allows the created table to inherit functions on
tables above (!!!) it in the inheritance hierarchy.

          Aside: Inheritance of functions is done according to the
conventions of the Common Lisp Object System (CLOS).

I have tried different constructs but I have not been able to create such a
function.



Please describe a way to repeat the problem.   Please try to provide a
concise reproducible example, if at all possible:
----------------------------------------------------------------------

ccbslin2:~/lipa$ psql -c "drop database archimp0;" template1
DESTROYDB
ccbslin2:~/lipa$ psql -c "create database archimp0;" template1
CREATEDB
ccbslin2:~/lipa$ psql -f funinh1.sql archimp0
BEGIN WORK;
BEGIN
CREATE TABLE A (
        liczba float
);
CREATE
COMMIT WORK;
END

BEGIN WORK;
BEGIN
CREATE FUNCTION suma (A) RETURNS float
        AS 'SELECT $1.liczba AS suma;' LANGUAGE 'sql';
CREATE
COMMIT WORK;
END

BEGIN WORK;
BEGIN
CREATE TABLE B (
        liczwym float
) INHERITS (A)
;
CREATE
COMMIT WORK;
END

BEGIN WORK;
BEGIN
INSERT INTO A (liczba) VALUES (1.56);
INSERT 71414 1
COMMIT WORK;
END

BEGIN WORK;
BEGIN
INSERT INTO B (liczba, liczwym) VALUES (2.5, 3.2);
INSERT 71415 1
COMMIT WORK;
END

select liczba, suma(A) from A;
liczba|suma
------+----
  1.56|1.56
(1 row)

select liczba, suma(A) from A*;
liczba|suma
------+----
  1.56|1.56
   2.5| 2.5
(2 rows)

[Andrzej Mazurkiewicz]  --
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

select liczba, suma(B) from B; [Andrzej Mazurkiewicz]         !!!!!!!
ERROR:  Functions on sets are not yet supported [Andrzej Mazurkiewicz]
!!!!!!!

[Andrzej Mazurkiewicz]  --
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

EOF

----------------------------------------------------------------------------
--------------------------------------

After invoking psql:


archimp0=> select * from pg_proc where proname = 'suma';
proname|proowner|prolang|proisinh|proistrusted|proiscachable|pronargs|proret
set|prorettype|
proargtypes|probyte_pct|properbyte_cpu|propercall_cpu|proouti
n_ratio|prosrc                   |probin
-------+--------+-------+--------+------------+-------------+--------+------
---+----------+-------------------+-----------+--------------+--------------
+--------------+-------------------------+------
suma   |     302|     14|f       |t           |f            |       1|f
|       701|71393 0 0 0 0 0 0 0|        100|             0|             0|
100|SELECT $1.liczba AS suma;|-
(1 row)

archimp0=>




If you know how this problem might be fixed, list the solution below:
---------------------------------------------------------------------

pgsql-bugs by date:

Previous
From: Dirk Lutzebaeck
Date:
Subject: Re: [BUGS] vacuum analyze corrupts db with larger tuples (< 8k)
Next
From: Tom Lane
Date:
Subject: Re: [BUGS] vacuum analyze corrupts db with larger tuples (< 8k)