Subject: Questions on Virtual Attributes

From: "WEIX%PTHWRK.allin1"@puget.com
Date: Sat, 1 Oct 1994 23:38 PDT

From:	NAME: Xinguo Wei                    
	FUNC:                                 
	TEL:                                  <WEIX AT A1 AT PTHWRK>
To:	smtp%"[email-masked]"@mrgate

Hi,

I am testing the virtual attribute function using the SET expression and I have
two questions here.
1. When define the attribute using X = setof Y, the keyword "setof" seems not
necessary if Y is a class name, i.e., "members = EMP" is the same as "members =
setof EMP".  If Y is not a class name, then "setof" is needed.  Am I right?

2. In the following test case, I defined a set attribute for DEPT. But I
couldn't find the way to retrive its value!!  Please help me.

create EMP (name = text, dept = text)\g
create DEPT (name = text, emp_no = setof int4) \g
append EMP (name = "a", dept = "candy")\g
append EMP (name = "b", dept = "candy")\g
append DEPT (name = "candy",
  EMP_no = "retrieve (a = count{EMP.name where EMP.dept = \\"candy\\"})") \g

retrieve (DEPT.name, DEPT.emp_no) \g

Query sent to backend is "retrieve (dept.name, dept.emp_no) "
-----------------------------
| name        | emp_no      |
-----------------------------
| candy       | 25252       |
-----------------------------

 The value of emp_no here looks like an OID. What kind of object is that? How
 can i get the correct value of 2 ?

 Thanks!!

 Xinguo Wei

 [email-masked]

==============================================================================
   To add/remove yourself to/from the POSTGRES mailing list: send mail with 
   the subject line ADD or DEL to "[email-masked]"

   If this fails, send mail to "[email-masked]" and
   a human will deal with it.  DO NOT post to the "postgres" mailing list.
==============================================================================

---

From: [email-masked] (Paul M. Aoki)
Date: Sun, 02 Oct 94 12:34:45 -0700

> create DEPT (name = text, emp_no = setof int4) \g

create FOO (a = int4) \g
create DEPT (name = text, emp_no = setof FOO) \g

>   emp_no = "retrieve (a = count{EMP.name where EMP.dept = \\"candy\\"})") \g

by dereferencing it.  the only thing you can do with a set is project
an attribute from it.

* retrieve (DEPT.name, DEPT.emp_no.a)\g

Query sent to backend is "retrieve (DEPT.name, DEPT.emp_no.a)"
-----------------------------
| name        | a           |
-----------------------------
| candy       | 2           |
-----------------------------

Go 
*
--
  Paul M. Aoki          |  University of California at Berkeley
  [email-masked]  |  Dept. of EECS, Computer Science Division (#1776) 
                        |  Berkeley, CA 94720-1776