inheritance of functions - Mailing list pgsql-hackers
From | Andrzej Mazurkiewicz |
---|---|
Subject | inheritance of functions |
Date | |
Msg-id | 13288F4408ADD11186FF0060B06A43130164F976@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|pror > etset|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:39 > To: 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 function F ... > > > > > > create table B ( > > > .. > > > ) inherits (A); > > > > > > Now I assume that I can somehow use function F on table B > > 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 > be > inherited by table B. > > the manual is, as far as my experience has led me to believe, referring to > functions "bound" (for lack of a better word) to the parent table.... > > -- > Aaron J. Seigo > Sys Admin
pgsql-hackers by date: