Inheritance of functions - Mailing list pgsql-hackers
From | Andrzej Mazurkiewicz |
---|---|
Subject | Inheritance of functions |
Date | |
Msg-id | 13288F4408ADD11186FF0060B06A43130164F994@MSGWAW1 Whole thread Raw |
List | pgsql-hackers |
Hello. I have not got any help from SQL and GENERAL groups so I send my problem to you. 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. Can anybody send me an example of a function that will be inherited by inherited table? I. e. create table A ( . . ); create function F ... create table B ( .. ) inherits (A); Now I assume that I can somehow use function F on table B The specific example is given below !! Thank you, Regards, Andrzej Mazurkiewicz -----Original Message----- From: Andrzej Mazurkiewicz Sent: 27 paYdziernika 1999 18:09 To: 'pgsql-general@hub.org' Subject: RE: [GENERAL] FW: inheritance of functions Hello. Here is an example of my problem: 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=> I am looking for working example !!!!! Regards, Andrzej Mazurkiewicz-----Original Message-----From: Aaron J. Seigo [SMTP:aaron@gtv.ca]Sent: 27 paYdziernika 1999 17:39To: Andrzej Mazurkiewicz; 'pgsql-general@hub.org'Subject: Re: [GENERAL] FW: inheritance of functions hi... > > Postgres automatically allows the created table to inherit functions on> > tables above it in the inheritance hierarchy. > > create table A (> > .> > .> > );> > > > create functionF ...> > > > create table B (> > ..> > ) inherits (A);> > > > Now I assume that I can somehow use function F on tableB you would be able to use function F on table B even if it didn't inherit A. however, if you construct rules, triggers, etc... on table A, these should beinherited by table B. the manual is, as far as my experience has led me to believe, referring tofunctions "bound" (for lack of a better word) to the parent table.... -- Aaron J. Seigo Sys Admin
pgsql-hackers by date: