%!PS-Adobe-1.0
%%Creator: postgres:kemnitz (Greg &,278 Cory,6427520,8488453)
%%Title: stdin (ditroff)
%%CreationDate: Mon Jul 30 15:19:51 1990
%%EndComments
%	@(#)psdit.pro	1.3 4/15/88
% lib/psdit.pro -- prolog for psdit (ditroff) files
% Copyright (c) 1984, 1985 Adobe Systems Incorporated. All Rights Reserved.
% last edit: shore Sat Nov 23 20:28:03 1985
% RCSID: $Header: psdit.pro,v 2.1 85/11/24 12:19:43 shore Rel $

% Changed by Edward Wang (edward@ucbarpa.berkeley.edu) to handle graphics,
% 17 Feb, 87.

/$DITroff 140 dict def $DITroff begin
/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
/xi{0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
 /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
 /pagesave save def}def
/PB{save /psv exch def currentpoint translate 
 resolution 72 div dup neg scale 0 0 moveto}def
/PE{psv restore}def
/arctoobig 90 def /arctoosmall .05 def
/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
/tan{dup sin exch cos div}def
/point{resolution 72 div mul}def
/dround	{transform round exch round exch itransform}def
/xT{/devname exch def}def
/xr{/mh exch def /my exch def /resolution exch def}def
/xp{}def
/xs{docsave restore end}def
/xt{}def
/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
 {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
/xH{/fontheight exch def F}def
/xS{/fontslant exch def F}def
/s{/fontsize exch def /fontheight fontsize def F}def
/f{/fontnum exch def F}def
/F{fontheight 0 le{/fontheight fontsize def}if
 fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
 fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
 makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}def
/X{exch currentpoint exch pop moveto show}def
/N{3 1 roll moveto show}def
/Y{exch currentpoint pop exch moveto show}def
/S{show}def
/ditpush{}def/ditpop{}def
/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}def
/AN{4 2 roll moveto 0 exch ashow}def
/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}def
/AS{0 exch ashow}def
/MX{currentpoint exch pop moveto}def
/MY{currentpoint pop exch moveto}def
/MXY{moveto}def
/cb{pop}def	% action on unknown char -- nothing for now
/n{}def/w{}def
/p{pop showpage pagesave restore /pagesave save def}def
/Dt{/Dlinewidth exch def}def 1 Dt
/Ds{/Ddash exch def}def -1 Ds
/Di{/Dstipple exch def}def 1 Di
/Dsetlinewidth{2 Dlinewidth mul setlinewidth}def
/Dsetdash{Ddash 4 eq{[8 12]}{Ddash 16 eq{[32 36]}
 {Ddash 20 eq{[32 12 8 12]}{[]}ifelse}ifelse}ifelse 0 setdash}def
/Dstroke{gsave Dsetlinewidth Dsetdash 1 setlinecap stroke grestore
 currentpoint newpath moveto}def
/Dl{rlineto Dstroke}def
/arcellipse{/diamv exch def /diamh exch def oldmat currentmatrix pop
 currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
 currentpoint exch rad add exch rad -180 180 arc oldmat setmatrix}def
/Dc{dup arcellipse Dstroke}def
/De{arcellipse Dstroke}def
/Da{/endv exch def /endh exch def /centerv exch def /centerh exch def
 /cradius centerv centerv mul centerh centerh mul add sqrt def
 /eradius endv endv mul endh endh mul add sqrt def
 /endang endv endh atan def
 /startang centerv neg centerh neg atan def
 /sweep startang endang sub dup 0 lt{360 add}if def
 sweep arctoobig gt
 {/midang startang sweep 2 div sub def /midrad cradius eradius add 2 div def
  /midh midang cos midrad mul def /midv midang sin midrad mul def
  midh neg midv neg endh endv centerh centerv midh midv Da
  Da}
 {sweep arctoosmall ge
  {/controldelt 1 sweep 2 div cos sub 3 sweep 2 div sin mul div 4 mul def
   centerv neg controldelt mul centerh controldelt mul
   endv neg controldelt mul centerh add endh add
   endh controldelt mul centerv add endv add
   centerh endh add centerv endv add rcurveto Dstroke}
  {centerh endh add centerv endv add rlineto Dstroke}
  ifelse}
 ifelse}def
/Dpatterns[
[%cf[widthbits]
[8<0000000000000010>]
[8<0411040040114000>]
[8<0204081020408001>]
[8<0000103810000000>]
[8<6699996666999966>]
[8<0000800100001008>]
[8<81c36666c3810000>]
[8<0f0e0c0800000000>]
[8<0000000000000010>]
[8<0411040040114000>]
[8<0204081020408001>]
[8<0000001038100000>]
[8<6699996666999966>]
[8<0000800100001008>]
[8<81c36666c3810000>]
[8<0f0e0c0800000000>]
[8<0042660000246600>]
[8<0000990000990000>]
[8<0804020180402010>]
[8<2418814242811824>]
[8<6699996666999966>]
[8<8000000008000000>]
[8<00001c3e363e1c00>]
[8<0000000000000000>]
[32<00000040000000c00000004000000040000000e0000000000000000000000000>]
[32<00000000000060000000900000002000000040000000f0000000000000000000>]
[32<000000000000000000e0000000100000006000000010000000e0000000000000>]
[32<00000000000000002000000060000000a0000000f00000002000000000000000>]
[32<0000000e0000000000000000000000000000000f000000080000000e00000001>]
[32<0000090000000600000000000000000000000000000007000000080000000e00>]
[32<00010000000200000004000000040000000000000000000000000000000f0000>]
[32<0900000006000000090000000600000000000000000000000000000006000000>]]
[%ug
[8<0000020000000000>]
[8<0000020000002000>]
[8<0004020000002000>]
[8<0004020000402000>]
[8<0004060000402000>]
[8<0004060000406000>]
[8<0006060000406000>]
[8<0006060000606000>]
[8<00060e0000606000>]
[8<00060e000060e000>]
[8<00070e000060e000>]
[8<00070e000070e000>]
[8<00070e020070e000>]
[8<00070e020070e020>]
[8<04070e020070e020>]
[8<04070e024070e020>]
[8<04070e064070e020>]
[8<04070e064070e060>]
[8<06070e064070e060>]
[8<06070e066070e060>]
[8<06070f066070e060>]
[8<06070f066070f060>]
[8<060f0f066070f060>]
[8<060f0f0660f0f060>]
[8<060f0f0760f0f060>]
[8<060f0f0760f0f070>]
[8<0e0f0f0760f0f070>]
[8<0e0f0f07e0f0f070>]
[8<0e0f0f0fe0f0f070>]
[8<0e0f0f0fe0f0f0f0>]
[8<0f0f0f0fe0f0f0f0>]
[8<0f0f0f0ff0f0f0f0>]
[8<1f0f0f0ff0f0f0f0>]
[8<1f0f0f0ff1f0f0f0>]
[8<1f0f0f8ff1f0f0f0>]
[8<1f0f0f8ff1f0f0f8>]
[8<9f0f0f8ff1f0f0f8>]
[8<9f0f0f8ff9f0f0f8>]
[8<9f0f0f9ff9f0f0f8>]
[8<9f0f0f9ff9f0f0f9>]
[8<9f8f0f9ff9f0f0f9>]
[8<9f8f0f9ff9f8f0f9>]
[8<9f8f1f9ff9f8f0f9>]
[8<9f8f1f9ff9f8f1f9>]
[8<bf8f1f9ff9f8f1f9>]
[8<bf8f1f9ffbf8f1f9>]
[8<bf8f1fdffbf8f1f9>]
[8<bf8f1fdffbf8f1fd>]
[8<ff8f1fdffbf8f1fd>]
[8<ff8f1fdffff8f1fd>]
[8<ff8f1ffffff8f1fd>]
[8<ff8f1ffffff8f1ff>]
[8<ff9f1ffffff8f1ff>]
[8<ff9f1ffffff9f1ff>]
[8<ff9f9ffffff9f1ff>]
[8<ff9f9ffffff9f9ff>]
[8<ffbf9ffffff9f9ff>]
[8<ffbf9ffffffbf9ff>]
[8<ffbfdffffffbf9ff>]
[8<ffbfdffffffbfdff>]
[8<ffffdffffffbfdff>]
[8<ffffdffffffffdff>]
[8<fffffffffffffdff>]
[8<ffffffffffffffff>]]
[%mg
[8<8000000000000000>]
[8<0822080080228000>]
[8<0204081020408001>]
[8<40e0400000000000>]
[8<66999966>]
[8<8001000010080000>]
[8<81c36666c3810000>]
[8<f0e0c08000000000>]
[16<07c00f801f003e007c00f800f001e003c007800f001f003e007c00f801f003e0>]
[16<1f000f8007c003e001f000f8007c003e001f800fc007e003f001f8007c003e00>]
[8<c3c300000000c3c3>]
[16<0040008001000200040008001000200040008000000100020004000800100020>]
[16<0040002000100008000400020001800040002000100008000400020001000080>]
[16<1fc03fe07df0f8f8f07de03fc01f800fc01fe03ff07df8f87df03fe01fc00f80>]
[8<80>]
[8<8040201000000000>]
[8<84cc000048cc0000>]
[8<9900009900000000>]
[8<08040201804020100800020180002010>]
[8<2418814242811824>]
[8<66999966>]
[8<8000000008000000>]
[8<70f8d8f870000000>]
[8<0814224180402010>]
[8<aa00440a11a04400>]
[8<018245aa45820100>]
[8<221c224180808041>]
[8<88000000>]
[8<0855800080550800>]
[8<2844004482440044>]
[8<0810204080412214>]
[8<00>]]]def
/Dfill{
 transform /maxy exch def /maxx exch def
 transform /miny exch def /minx exch def
 minx maxx gt{/minx maxx /maxx minx def def}if
 miny maxy gt{/miny maxy /maxy miny def def}if
 Dpatterns Dstipple 1 sub get exch 1 sub get
 aload pop /stip exch def /stipw exch def /stiph 128 def
 /imatrix[stipw 0 0 stiph 0 0]def
 /tmatrix[stipw 0 0 stiph 0 0]def
 /minx minx cvi stiph idiv stiph mul def
 /miny miny cvi stipw idiv stipw mul def
 gsave eoclip 0 setgray
 miny stiph maxy{
  tmatrix exch 5 exch put
  minx stipw maxx{
   tmatrix exch 4 exch put tmatrix setmatrix
   stipw stiph true imatrix {stip} imagemask
  }for
 }for
 grestore
}def
/Dp{Dfill Dstroke}def
/DP{Dfill currentpoint newpath moveto}def
end

/ditstart{$DITroff begin
 /nfonts 60 def			% NFONTS makedev/ditroff dependent!
 /fonts[nfonts{0}repeat]def
 /fontnames[nfonts{()}repeat]def
/docsave save def
}def

% character outcalls
/oc{
 /pswid exch def /cc exch def /name exch def
 /ditwid pswid fontsize mul resolution mul 72000 div def
 /ditsiz fontsize resolution mul 72 div def
 ocprocs name known{ocprocs name get exec}{name cb}ifelse
}def
/fractm [.65 0 0 .6 0 0] def
/fraction{
 /fden exch def /fnum exch def gsave /cf currentfont def
 cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
 fnum show rmoveto currentfont cf setfont(\244)show setfont fden show 
 grestore ditwid 0 rmoveto
}def
/oce{grestore ditwid 0 rmoveto}def
/dm{ditsiz mul}def
/ocprocs 50 dict def ocprocs begin
(14){(1)(4)fraction}def
(12){(1)(2)fraction}def
(34){(3)(4)fraction}def
(13){(1)(3)fraction}def
(23){(2)(3)fraction}def
(18){(1)(8)fraction}def
(38){(3)(8)fraction}def
(58){(5)(8)fraction}def
(78){(7)(8)fraction}def
(sr){gsave 0 .06 dm rmoveto(\326)show oce}def
(is){gsave 0 .15 dm rmoveto(\362)show oce}def
(->){gsave 0 .02 dm rmoveto(\256)show oce}def
(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
(==){gsave 0 .05 dm rmoveto(\272)show oce}def
(uc){gsave currentpoint 400 .009 dm mul add translate
     8 -8 scale ucseal oce}def
end

% an attempt at a PostScript FONT to implement ditroff special chars
% this will enable us to 
%	cache the little buggers
%	generate faster, more compact PS out of psdit
%	confuse everyone (including myself)!
50 dict dup begin
/FontType 3 def
/FontName /DIThacks def
/FontMatrix [.001 0 0 .001 0 0] def
/FontBBox [-260 -260 900 900] def% a lie but ...
/Encoding 256 array def
0 1 255{Encoding exch /.notdef put}for
Encoding
 dup 8#040/space put %space
 dup 8#110/rc put %right ceil
 dup 8#111/lt put %left  top curl
 dup 8#112/bv put %bold vert
 dup 8#113/lk put %left  mid curl
 dup 8#114/lb put %left  bot curl
 dup 8#115/rt put %right top curl
 dup 8#116/rk put %right mid curl
 dup 8#117/rb put %right bot curl
 dup 8#120/rf put %right floor
 dup 8#121/lf put %left  floor
 dup 8#122/lc put %left  ceil
 dup 8#140/sq put %square
 dup 8#141/bx put %box
 dup 8#142/ci put %circle
 dup 8#143/br put %box rule
 dup 8#144/rn put %root extender
 dup 8#145/vr put %vertical rule
 dup 8#146/ob put %outline bullet
 dup 8#147/bu put %bullet
 dup 8#150/ru put %rule
 dup 8#151/ul put %underline
 pop
/DITfd 100 dict def
/BuildChar{0 begin
 /cc exch def /fd exch def
 /charname fd /Encoding get cc get def
 /charwid fd /Metrics get charname get def
 /charproc fd /CharProcs get charname get def
 charwid 0 fd /FontBBox get aload pop setcachedevice
 2 setlinejoin 40 setlinewidth
 newpath 0 0 moveto gsave charproc grestore
 end}def
/BuildChar load 0 DITfd put
/CharProcs 50 dict def
CharProcs begin
/space{}def
/.notdef{}def
/ru{500 0 rls}def
/rn{0 840 moveto 500 0 rls}def
/vr{0 800 moveto 0 -770 rls}def
/bv{0 800 moveto 0 -1000 rls}def
/br{0 840 moveto 0 -1000 rls}def
/ul{0 -140 moveto 500 0 rls}def
/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
/sq{80 0 rmoveto currentpoint dround newpath moveto
    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
/bx{80 0 rmoveto currentpoint dround newpath moveto
    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
/ci{500 360 rmoveto currentpoint newpath 333 0 360 arc
    50 setlinewidth stroke}def

/lt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
/lb{0 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
/rt{0 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
/rb{0 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
/lk{0 800 moveto 0 300 -300 300 s4 arcto pop pop 1000 sub
    0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
/rk{0 800 moveto 0 300 s2 300 s4 arcto pop pop 1000 sub
    0 300 4 2 roll s4 a4p 0 -200 lineto stroke}def
/lf{0 800 moveto 0 -1000 rlineto s4 0 rls}def
/rf{0 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
/lc{0 -200 moveto 0 1000 rlineto s4 0 rls}def
/rc{0 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
end

/Metrics 50 dict def Metrics begin
/.notdef 0 def
/space 500 def
/ru 500 def
/br 0 def
/lt 416 def
/lb 416 def
/rt 416 def
/rb 416 def
/lk 416 def
/rk 416 def
/rc 416 def
/lc 416 def
/rf 416 def
/lf 416 def
/bv 416 def
/ob 350 def
/bu 350 def
/ci 750 def
/bx 750 def
/sq 750 def
/rn 500 def
/ul 500 def
/vr 0 def
end

%% Psfig additions
/startFig {
	/SavedState save def
	userdict maxlength dict begin
	currentpoint transform

	DocumentInitState setmiterlimit setgray setdash setlinejoin setlinecap
		setlinewidth setmatrix

	itransform moveto

	/ury exch def
	/urx exch def
	/lly exch def
	/llx exch def
	/y exch 72 mul resolution div def
	/x exch 72 mul resolution div def
	
	currentpoint /cy exch def /cx exch def

	/sx x urx llx sub div def 	% scaling for x
	/sy y ury lly sub div def	% scaling for y

	sx sy scale			% scale by (sx,sy)

	cx sx div llx sub
	cy sy div ury sub translate
	
	/DefFigCTM matrix currentmatrix def

	/initmatrix {
		DefFigCTM setmatrix
	} def
	/defaultmatrix {
		DefFigCTM exch copy
	} def

	/initgraphics {
		DocumentInitState setmiterlimit setgray setdash 
			setlinejoin setlinecap setlinewidth setmatrix
		DefFigCTM setmatrix
	} def

	/showpage {
		initgraphics
	} def

} def
% Args are llx lly urx ury (in figure coordinates)
/clipFig {
	currentpoint 6 2 roll
	newpath 4 copy
	4 2 roll moveto
	6 -1 roll exch lineto
	exch lineto
	exch lineto
	closepath clip
	newpath
	moveto
} def
% doclip, if called, will always be just after a `startfig'
/doclip { llx lly urx ury clipFig } def
/endFig {
	end SavedState restore
} def
/globalstart {
	% Push details about the enviornment on the stack.
	fontnum fontsize fontslant fontheight firstpage 
	mh my resolution slotno currentpoint 
	pagesave restore gsave 
} def
/globalend {
	grestore moveto
	/slotno exch def /resolution exch def /my exch def
	/mh exch def /firstpage exch def /fontheight exch def
	/fontslant exch def /fontsize exch def /fontnum exch def
	F
	/pagesave save def
} def

%% end XMOD additions

DITfd begin
/s2 500 def /s4 250 def /s3 333 def
/a4p{arcto pop pop pop pop}def
/2cx{2 copy exch}def
/rls{rlineto stroke}def
/currx{currentpoint pop}def
/dround{transform round exch round exch itransform} def
end
end
/DIThacks exch definefont pop
ditstart
(psc)xT
576 1 1 xr
1(Times-Roman)xf 1 f
2(Times-Italic)xf 2 f
3(Times-Bold)xf 3 f
4(Times-BoldItalic)xf 4 f
5(Helvetica)xf 5 f
6(Helvetica-Bold)xf 6 f
7(Courier)xf 7 f
8(Courier-Bold)xf 8 f
9(Symbol)xf 9 f
10(DIThacks)xf 10 f
10 s
1 f
xi
%%EndProlog

%%Page: 1 1
10 s 0 xH 0 xS 1 f
12 s
3 f
1801 780(The)N
1985(POSTGRES)X
2521(Data)X
2742(Model)X
3004 732(\262)N
2 f
2053 996(Lawrence)N
2456(A.)X
2563(Rowe)X
1968 1104(Michael)N
2308(R.)X
2415(Stonebraker)X
1 f
1514 1320(Computer)N
1923(Science)X
2247(Division,)X
2626(EECS)X
2885(Department)X
1964 1428(University)N
2394(of)X
2498(California)X
2030 1536(Berkeley,)N
2426(CA)X
2583(94720)X
3 f
2248 2106(Abstract)N
1 f
755 2292(The)N
945(design)X
1236(of)X
1356(the)X
1514(POSTGRES)X
2033(data)X
2234(model)X
2515(is)X
2619(described.)X
3076(The)X
3266(data)X
3467(model)X
3748(is)X
3852(a)X
3934(relational)X
555 2412(model)N
825(that)X
999(has)X
1156(been)X
1367(extended)X
1744(with)X
1943(abstract)X
2271(data)X
2460(types)X
2691(including)X
3083(user-de\256ned)X
3586(operators)X
3972(and)X
4139(pro-)X
555 2532(cedures,)N
912(relation)X
1246(attributes)X
1644(of)X
1763(type)X
1968(procedure,)X
2416(and)X
2594(attribute)X
2954(and)X
3131(procedure)X
3554(inheritance.)X
4069(These)X
555 2652(mechanism)N
1025(can)X
1190(be)X
1312(used)X
1519(to)X
1624(simulate)X
1981(a)X
2054(wide)X
2271(variety)X
2569(of)X
2679(semantic)X
3052(and)X
3221(object-oriented)X
3835(data)X
4026(model-)X
555 2772(ing)N
703(constructs)X
1118(including)X
1507(aggregation)X
1987(and)X
2151 0.2277(generalization,)AX
2746(complex)X
3102(objects)X
3399(with)X
3594(shared)X
3869(subobjects,)X
555 2892(and)N
718(attributes)X
1101(that)X
1270(reference)X
1653(tuples)X
1907(in)X
2006(other)X
2228(relations.)X
3 f
555 3108(1.)N
675(Introduction)X
1 f
755 3261(This)N
953(paper)X
1194(describes)X
1579(the)X
1724(data)X
1912(model)X
2180(for)X
2319(POSTGRES,)X
2849(a)X
2919(next-generation)X
3550(extensible)X
3967(database)X
555 3381(management)N
1075(system)X
1369(being)X
1610(developed)X
2032(at)X
2128(the)X
2272(University)X
2704(of)X
2810(California)X
3227([StR86].)X
3605(The)X
3781(data)X
3968(model)X
4235(is)X
555 3501(based)N
810(on)X
941(the)X
1094(idea)X
1290(of)X
1405(extending)X
1820(the)X
1973(relational)X
2373(model)X
2649(developed)X
3080(by)X
3211(Codd)X
3454([Cod70])X
3809(with)X
4015(general)X
555 3621(mechanisms)N
1065(that)X
1244(can)X
1412(be)X
1537(used)X
1747(to)X
1856(simulate)X
2217(a)X
2294(variety)X
2596(of)X
2710(semantic)X
3087(data)X
3281(modeling)X
3678(constructs.)X
4149(The)X
555 3741(mechanisms)N
1070(include:)X
1419(1\))X
1537(abstract)X
1875(data)X
2074(types)X
2315(\(ADT's\),)X
2707(2\))X
2825(data)X
3024(of)X
3142(type)X
3346(procedure,)X
3793(and)X
3970(3\))X
4088(rules.)X
555 3861(These)N
826(mechanisms)X
1343(can)X
1518(be)X
1650(used)X
1867(to)X
1983(support)X
2312(complex)X
2685(objects)X
2999(or)X
3120(to)X
3236(implement)X
3689(a)X
3772(shared)X
4063(object)X
555 3981(hierarchy)N
963(for)X
1119(an)X
1254(object-oriented)X
1882(programming)X
2449(language)X
2840([Row86].)X
3272(Most)X
3512(of)X
3635(these)X
3876(ideas)X
4117(have)X
555 4101(appeared)N
927(elsewhere)X
1336([Ste84,)X
1627(Sto85,)X
1891(Sto86a,)X
2198(Sto86b].)X
755 4254(We)N
918(have)X
1129(discovered)X
1575(that)X
1749(some)X
1981(semantic)X
2353(constructs)X
2772(that)X
2946(were)X
3162(not)X
3314(directly)X
3638(supported)X
4046(can)X
4208(be)X
555 4374(easily)N
808(added)X
1066(to)X
1169(the)X
1314(system.)X
1656(Consequently,)X
2236(we)X
2375(have)X
2584(made)X
2820(several)X
3120(changes)X
3457(to)X
3559(the)X
3704(data)X
3892(model)X
4160(and)X
555 4494(the)N
709(syntax)X
996(of)X
1112(the)X
1266(query)X
1521(language)X
1905(that)X
2086(are)X
2240(documented)X
2747(here.)X
2996(These)X
3261(changes)X
3606(include)X
3925(providing)X
555 4614(support)N
871(for)X
1010(primary)X
1342(keys,)X
1569(inheritance)X
2025(of)X
2132(data)X
2320(and)X
2486(procedures,)X
2959(and)X
3125(attributes)X
3511(that)X
3683(reference)X
4069(tuples)X
555 4734(in)N
654(other)X
876(relations.)X
755 4887(The)N
931(major)X
1182(contribution)X
1679(of)X
1785(this)X
1950(paper)X
2190(is)X
2280(to)X
2381(show)X
2609(that)X
2780(inheritance)X
3235(can)X
3395(be)X
3511(added)X
3766(to)X
3866(a)X
3934(relational)X
555 5007(data)N
748(model)X
1021(with)X
1224(only)X
1427(a)X
1501(modest)X
1810(number)X
2135(of)X
2246(changes)X
2587(to)X
2693(the)X
2842(model)X
3114(and)X
3284(the)X
3433 0.2548(implementation)AX
4070(of)X
4181(the)X
555 5127(system.)N
900(The)X
1080(conclusion)X
1527(that)X
1702(we)X
1844(draw)X
2066(from)X
2283(this)X
2452(result)X
2696(is)X
2790(that)X
2965(the)X
3113(major)X
3367(concepts)X
3733(provided)X
4104(in)X
4208(an)X
10 f
555 5247(hhhhhhhhhhhhhhhhhhhhhhhh)N
1 f
727 5386(\262)N
822(This)X
1039(research)X
1406(was)X
1601(supported)X
2026(by)X
2168(the)X
2332(National)X
2710(Science)X
3056(Foundation)X
3540(under)X
3805(Grant)X
4070(DCR-)X
555 5506(8507256)N
928(and)X
1104(the)X
1259(Defense)X
1611(Advanced)X
2038(Research)X
2427(Projects)X
2773(Agency)X
3108(\(DoD\),)X
3418(Arpa)X
3646(Order)X
3906(No.)X
4083(4871,)X
555 5626(monitored)N
975(by)X
1095(Space)X
1349(and)X
1512(Naval)X
1766(Warfare)X
2106(Systems)X
2450(Command)X
2875(under)X
3118(Contract)X
3474(N00039-84-C-0089.)X
3 f
10 s
2407 6048(1)N

2 p
%%Page: 2 2
10 s 0 xH 0 xS 3 f
1 f
12 s
555 792(object-oriented)N
1164(data)X
1350(model)X
1616(\(e.g.,)X
1836(structured)X
2246(attribute)X
2592(types,)X
2843(inheritance,)X
3320(union)X
3563(type)X
3753(attributes,)X
4160(and)X
555 912(support)N
868(for)X
1005(shared)X
1281(subobjects\))X
1744(can)X
1903(be)X
2019(cleanly)X
2323(and)X
2487(ef\256ciently)X
2902(supported)X
3305(in)X
3404(an)X
3519(extensible)X
3934(relational)X
555 1032(database)N
917(management)X
1440(system.)X
1785(The)X
1965(features)X
2300(used)X
2506(to)X
2611(support)X
2929(these)X
3157(mechanisms)X
3662(are)X
3809(abstract)X
4138(data)X
555 1152(types)N
782(and)X
945(attributes)X
1328(of)X
1432(type)X
1622(procedure.)X
755 1305(The)N
936(remainder)X
1358(of)X
1469(the)X
1618(paper)X
1863(describes)X
2252(the)X
2401(POSTGRES)X
2911(data)X
3103(model)X
3375(and)X
3545(is)X
3640(organized)X
4050(as)X
4160(fol-)X
555 1425(lows.)N
812(Section)X
1129(2)X
1205(presents)X
1548(the)X
1694(data)X
1883(model.)X
2200(Section)X
2517(3)X
2593(describes)X
2979(the)X
3125(attribute)X
3475(type)X
3668(system.)X
4010(Section)X
555 1545(4)N
639(describes)X
1033(how)X
1234(the)X
1388(query)X
1643(language)X
2027(can)X
2197(be)X
2323(extended)X
2706(with)X
2912(user-de\256ned)X
3422(procedures.)X
3927(Section)X
4251(5)X
555 1665(compares)N
948(the)X
1090(model)X
1355(with)X
1550(other)X
1772(data)X
1957(models)X
2259(and)X
2422(section)X
2719(6)X
2791(summarizes)X
3275(the)X
3417(paper.)X
3 f
555 1881(2.)N
675(Data)X
896(Model)X
1 f
755 2034(A)N
864(database)X
1236(is)X
1340(composed)X
1770(of)X
1890(a)X
1973(collection)X
2394(of)X
2 f
2514(relations)X
1 f
2896(that)X
3080(contain)X
3403(tuples)X
3672(which)X
3946(represent)X
555 2154(real-world)N
993(entities)X
1309(\(e.g.,)X
1541(documents)X
1995(and)X
2171(people\))X
2497(or)X
2614(relationships)X
3143(\(e.g.,)X
3375(authorship\).)X
3898(A)X
4004(relation)X
555 2274(has)N
718(attributes)X
1112(of)X
1226(\256xed)X
1452(types)X
1689(that)X
1868(represent)X
2255(properties)X
2674(of)X
2788(the)X
2940(entities)X
3253(and)X
3426(relationships)X
3952(\(e.g.,)X
4181(the)X
555 2394(title)N
744(of)X
862(a)X
943(document\))X
1393(and)X
1570(a)X
1651(primary)X
1994(key.)X
2219(Attribute)X
2605(types)X
2845(can)X
3016(be)X
3144(atomic)X
3444(\(e.g.,)X
3676(integer,)X
4005(\257oating)X
555 2514(point,)N
815(or)X
933(boolean\))X
1308(or)X
1426(structured)X
1849(\(e.g.,)X
2082(array)X
2318(or)X
2436(procedure\).)X
2939(The)X
3127(primary)X
3470(key)X
3647(is)X
3749(a)X
3829(sequence)X
4219(of)X
555 2634(attributes)N
938(of)X
1042(the)X
1184(relation,)X
1527(when)X
1759(taken)X
1992(together,)X
2356(uniquely)X
2717(identify)X
3041(each)X
3242(tuple.)X
755 2787(A)N
852(simple)X
1137(university)X
1550(database)X
1910(will)X
2088(be)X
2207(used)X
2411(to)X
2514(illustrate)X
2880(the)X
3025(model.)X
3341(The)X
3518(following)X
3919(command)X
555 2907(de\256nes)N
851(a)X
918(relation)X
1237(that)X
1406(represents)X
1820(people:)X
3 f
9 s
635 3030(create)N
1 f
841(PERSON)X
1135(\()X
1177(Name)X
1367(=)X
1426(char[25],)X
750 3120(Birthdate)N
1036(=)X
1095(date,)X
1251(Height)X
1465(=)X
1524(int4,)X
750 3210(Weight)N
980(=)X
1039(int4,)X
1187(StreetAddress)X
1609(=)X
1668(char[25],)X
750 3300(City)N
892(=)X
951(char[25],)X
1231(State)X
1393(=)X
1452(char[2]\))X
12 s
555 3453(This)N
750(command)X
1154(de\256nes)X
1450(a)X
1517(relation)X
1836(and)X
1999(creates)X
2291(a)X
2358(structure)X
2719(for)X
2855(storing)X
3146(the)X
3288(tuples.)X
755 3606(The)N
936(de\256nition)X
1336(of)X
1447(a)X
1521(relation)X
1847(may)X
2044(optionally)X
2466(specify)X
2775(a)X
2849(primary)X
3184(key)X
3353(and)X
3522(other)X
3750(relations)X
4112(from)X
555 3726(which)N
823(to)X
931(inherit)X
1216(attributes.)X
1656(A)X
1757(primary)X
2094(key)X
2265(is)X
2361(a)X
2436(combination)X
2950(of)X
3062(attributes)X
3453(that)X
3630(uniquely)X
3999(identify)X
555 3846(each)N
756(tuple.)X
1021(The)X
1195(key)X
1358(is)X
1446(speci\256ed)X
1812(with)X
2007(a)X
3 f
2074(key)X
1 f
(-clause)S
2515(as)X
2619(follows:)X
3 f
9 s
635 3969(create)N
1 f
841(PERSON)X
1135(\()X
1177(.)X
1213(.)X
1249(.\))X
3 f
635 4059(key)N
1 f
761(\(Name\))X
12 s
555 4212(Tuples)N
861(must)X
1092(have)X
1318(a)X
1405(value)X
1658(for)X
1813(all)X
1953(key)X
2135(attributes.)X
2585(The)X
2778(speci\256cation)X
3308(of)X
3431(a)X
3517(key)X
3699(may)X
3908(optionally)X
555 4332(include)N
875(the)X
1029(name)X
1274(of)X
1390(an)X
1516(operator)X
1872(that)X
2052(is)X
2151(to)X
2261(be)X
2387(used)X
2598(when)X
2841(comparing)X
3288(two)X
3467(tuples.)X
3780(For)X
3948(example,)X
555 4452(suppose)N
889(a)X
957(relation)X
1277(had)X
1441(a)X
1509(key)X
1673(whose)X
1943(type)X
2134(was)X
2308(a)X
2376(user-de\256ned)X
2875(ADT.)X
3144(If)X
3232(an)X
3347(attribute)X
3693(of)X
3797(type)X
2 f
3987(box)X
1 f
4150(was)X
555 4572(part)N
734(of)X
842(the)X
988(primary)X
1321(key,)X
1512(the)X
1658(comparison)X
2135(operator)X
2484(must)X
2699(be)X
2818(speci\256ed)X
3188(since)X
3414(different)X
2 f
3774(box)X
1 f
3941(operators)X
555 4692(could)N
798(be)X
918(used)X
1123(to)X
1227(distinguish)X
1678(the)X
1825(entries)X
2111(\(e.g.,)X
2335(area)X
2525(equals)X
2800(or)X
2909(box)X
3082(equality\).)X
3478(The)X
3656(following)X
4058(exam-)X
555 4812(ple)N
706(shows)X
978(the)X
1129(de\256nition)X
1531(of)X
1644(a)X
1720(relation)X
2048(with)X
2252(a)X
2328(key)X
2500(attribute)X
2855(of)X
2967(type)X
2 f
3165(box)X
1 f
3336(that)X
3513(uses)X
3710(the)X
3860(area)X
4053(equals)X
555 4932(operator)N
900(\()X
2 f
932(AE)X
1 f
1050(\))X
1106(to)X
1205(determine)X
1615(key)X
1778(value)X
2011(equality:)X
3 f
9 s
635 5055(create)N
1 f
841(PICTURE\(Title)X
1319(=)X
1378(char[25],)X
1658(Item)X
1808(=)X
1867(box\))X
3 f
635 5145(key)N
1 f
761(\(Item)X
3 f
935(using)X
1 f
1117(AE\))X
12 s
755 5331(Data)N
966(inheritance)X
1424(is)X
1517(speci\256ed)X
1888(with)X
2087(an)X
3 f
2206(inherits)X
1 f
2521(-clause.)X
2870(Suppose,)X
3247(for)X
3387(example,)X
3766(that)X
3939(people)X
4224(in)X
555 5451(the)N
716(university)X
1144(database)X
1519(are)X
1680(employees)X
2135(and/or)X
2424(students)X
2782(and)X
2964(that)X
3152(different)X
3527(attributes)X
3929(are)X
4090(to)X
4208(be)X
555 5571(de\256ned)N
872(for)X
1018(each)X
1228(category.)X
1641(The)X
1824(relation)X
2152(for)X
2297(each)X
2507(category)X
2872(includes)X
3226(the)X
2 f
3377(PERSON)X
1 f
3768(attributes)X
4160(and)X
555 5691(the)N
703(attributes)X
1092(that)X
1267(are)X
1415(speci\256c)X
1739(to)X
1843(the)X
1990(category.)X
2399(These)X
2658(relations)X
3019(can)X
3182(be)X
3302(de\256ned)X
3614(by)X
3739(replicating)X
4181(the)X
2 f
555 5811(PERSON)N
1 f
966(attributes)X
1378(in)X
1506(each)X
1736(relation)X
2084(de\256nition)X
2506(or)X
2639(by)X
2788(inheriting)X
3216(them)X
3462(for)X
3627(the)X
3798(de\256nition)X
4219(of)X
3 f
10 s
2407 6048(2)N

3 p
%%Page: 3 3
10 s 0 xH 0 xS 3 f
2 f
12 s
555 792(PERSON)N
1 f
913(.)X
990(Figure)X
1270(1)X
1347(shows)X
1614(the)X
1760(relations)X
2120(and)X
2287(an)X
2406(inheritance)X
2863(hierarchy)X
3255(that)X
3428(could)X
3670(be)X
3789(used)X
3993(to)X
4096(share)X
555 912(the)N
703(de\256nition)X
1102(of)X
1212(the)X
1360(attributes.)X
1797(The)X
1977(commands)X
2424(that)X
2599(de\256ne)X
2864(the)X
3011(relations)X
3372(other)X
3599(than)X
3794(the)X
2 f
3941(PERSON)X
1 f
555 1032(relation)N
874(de\256ned)X
1181(above)X
1435(are:)X
3 f
9 s
635 1155(create)N
1 f
841(EMPLOYEE)X
1243(\(Dept)X
1425(=)X
1484(char[25],)X
750 1245(Status)N
944(=)X
1003(int2,)X
1151(Mgr)X
1293(=)X
1352(char[25],)X
750 1335(JobTitle)N
1004(=)X
1063(char[25],)X
1343(Salary)X
1545(=)X
1604(money\))X
3 f
635 1425(inherits)N
1 f
889(\(PERSON\))X
3 f
635 1560(create)N
1 f
841(STUDENT)X
1187(\(Sno)X
1341(=)X
1400(char[12],)X
750 1650(Status)N
944(=)X
1003(int2,)X
1151(Level)X
1333(=)X
1392(char[20]\))X
3 f
635 1740(inherits)N
1 f
889(\(PERSON\))X
3 f
635 1875(create)N
1 f
841(STUDEMP)X
1195(\(IsWorkStudy)X
1621(=)X
1680(bool\))X
3 f
635 1965(inherits)N
1 f
889(\(STUDENT,)X
1277(EMPLOYEE\))X
12 s
755 2151(A)N
863(relation)X
1197(inherits)X
1525(all)X
1661(attributes)X
2058(from)X
2283(its)X
2412(parent\(s\))X
2792(unless)X
3070(an)X
3199(attribute)X
3559(is)X
3661(overriden)X
4068(in)X
4181(the)X
555 2271(de\256nition.)N
1003(For)X
1167(example,)X
1549(the)X
2 f
1698(EMPLOYEE)X
1 f
2220(relation)X
2546(inherits)X
2866(the)X
2 f
3014(PERSON)X
1 f
3402(attributes)X
2 f
3791(Name)X
1 f
(,)S
2 f
4069(Birth-)X
555 2391(date)N
1 f
721(,)X
2 f
784(Height)X
1 f
1046(,)X
2 f
1109(Weight)X
1 f
1382(,)X
2 f
1445(StreetAddress)X
1 f
1979(,)X
2 f
2042(City)X
1 f
2203(,)X
2266(and)X
2 f
2444(State)X
1 f
2637(.)X
2724(Key)X
2922(speci\256cations)X
3484(are)X
3640(also)X
3833(inherited)X
4214(so)X
2 f
555 2511(Name)N
1 f
803(is)X
891(also)X
1070(the)X
1212(key)X
1375(for)X
1511(EMPLOYEE.)X
755 2664(Relations)N
1165(may)X
1377(inherit)X
1675(attributes)X
2080(from)X
2313(more)X
2557(than)X
2769(one)X
2954(parent.)X
3288(For)X
3466(example,)X
2 f
3862(STUDEMP)X
1 f
555 2784(inherits)N
881(attributes)X
1277(from)X
2 f
1501(STUDENT)X
1 f
1953(and)X
2 f
2129(EMPLOYEE)X
1 f
2620(.)X
2705(An)X
2859(inheritance)X
3325(con\257ict)X
3650(occurs)X
3937(when)X
4181(the)X
555 2904(same)N
794(attribute)X
1156(name)X
1405(is)X
1509(inherited)X
1892(from)X
2119(more)X
2357(than)X
2563(one)X
2742(parent)X
3023(\(e.g.,)X
2 f
3258(STUDEMP)X
1 f
3735(inherits)X
2 f
4064(Status)X
1 f
555 3024(from)N
2 f
776(EMPLOYEE)X
1 f
1301(and)X
2 f
1473(STUDENT)X
1 f
1904(\).)X
2017(If)X
2114(the)X
2265(inherited)X
2641(attributes)X
3033(have)X
3248(the)X
3399(same)X
3630(type,)X
3853(an)X
3977(attribute)X
555 3144(with)N
752(the)X
896(type)X
1088(is)X
1178(included)X
1536(in)X
1637(the)X
1781(relation)X
2101(that)X
2271(is)X
2360(being)X
2599(de\256ned.)X
2955(Otherwise,)X
3399(the)X
3542(declaration)X
3996(is)X
4085(disal-)X
10 f
555 3672(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
1 f
1870 5184(Figure)N
2145(1:)X
2244(Relation)X
2595(hierarchy.)X
10 f
555 5304(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
3 f
10 s
2407 6048(3)N

4 p
%%Page: 4 4
10 s 0 xH 0 xS 3 f
1 f
12 s
555 811(lowed.)N
9 s
814 773(1)N
12 s
755 964(The)N
929(POSTGRES)X
1432(query)X
1675(language)X
2047(is)X
2135(a)X
2202(generalized)X
2671(version)X
2978(of)X
3082(QUEL)X
3362([HSW75],)X
3783(called)X
2 f
4038(POST-)X
555 1084(QUEL)N
1 f
805(.)X
896(QUEL)X
1194(was)X
1385(extended)X
1775(in)X
1892(several)X
2207(directions.)X
2677(First,)X
2919(POSTQUEL)X
3451(has)X
3621(a)X
3 f
3706(from)X
1 f
3909(-clause)X
4224(to)X
555 1204(de\256ne)N
824(tuple-variables)X
1431(rather)X
1690(than)X
1889(a)X
3 f
1965(range)X
1 f
2233(command.)X
2694(Second,)X
3034(arbitrary)X
3399(relation-valued)X
4016(expres-)X
555 1324(sions)N
777(may)X
968(appear)X
1250(any)X
1414(place)X
1642(that)X
1811(a)X
1878(relation)X
2197(name)X
2430(could)X
2668(appear)X
2949(in)X
3048(QUEL.)X
3376(Third,)X
3638(transitive)X
4021(closure)X
555 1444(and)N
3 f
736(execute)X
1 f
1083(commands)X
1542(have)X
1766(been)X
1990(added)X
2262(to)X
2379(the)X
2539(language)X
2929([Kue84].)X
3339(And)X
3546(lastly,)X
3820(POSTGRES)X
555 1564(maintains)N
962(historical)X
1353(data)X
1546(so)X
1663(POSTQUEL)X
2185(allows)X
2468(queries)X
2778(to)X
2885(be)X
3008(run)X
3168(on)X
3296(past)X
3483(database)X
3847(states)X
4092(or)X
4203(on)X
555 1684(any)N
719(data)X
904(that)X
1073(was)X
1246(in)X
1345(the)X
1487(database)X
1843(at)X
1937(any)X
2100(time.)X
2344(These)X
2598(extensions)X
3028(are)X
3170(described)X
3563(in)X
3662(the)X
3804(remainder)X
4219(of)X
555 1804(this)N
718(section.)X
755 1957(The)N
3 f
940(from)X
1 f
1143(-clause)X
1451(was)X
1635(added)X
1900(to)X
2010(the)X
2163(language)X
2546(so)X
2666(that)X
2846(tuple-variable)X
3417(de\256nitions)X
3857(for)X
4003(a)X
4080(query)X
555 2077(could)N
805(be)X
932(easily)X
1193(determined)X
1663(at)X
1768 0.2552(compile-time.)AX
2366(This)X
2572(capability)X
2988(was)X
3172(needed)X
3480(because)X
3820(POSTGRES)X
555 2197(will,)N
766(at)X
873(the)X
1028(user's)X
1294(request,)X
1633(compile)X
1981(queries)X
2296(and)X
2472(save)X
2680(them)X
2910(in)X
3021(the)X
3175(system)X
3478(catalogs.)X
3878(The)X
3 f
4064(from)X
1 f
4267(-)X
555 2317(clause)N
820(is)X
908(illustrated)X
1318(in)X
1417(the)X
1559(following)X
1957(query)X
2200(that)X
2369(lists)X
2548(all)X
2669(work-study)X
3130(students)X
3469(who)X
3658(are)X
3800(sophomores:)X
3 f
9 s
635 2440(retrieve)N
1 f
893(\(SE.name\))X
3 f
635 2530(from)N
1 f
805(SE)X
3 f
907(in)X
1 f
985(STUDEMP)X
3 f
635 2620(where)N
1 f
841(SE.IsWorkStudy)X
3 f
707 2710(and)N
1 f
841(SE.Status)X
1137(=)X
1196(``sophomore'')X
12 s
555 2863(The)N
3 f
732(from)X
1 f
935(-clause)X
1235(speci\256es)X
1593(the)X
1738(set)X
1872(of)X
1978(tuples)X
2234(over)X
2431(which)X
2692(a)X
2761(tuple-variable)X
3323(will)X
3499(range.)X
3787(In)X
3893(this)X
4058(exam-)X
555 2983(ple,)N
721(the)X
863(tuple-variable)X
2 f
1423(SE)X
1 f
1554(ranges)X
1829(over)X
2024(the)X
2166(set)X
2297(of)X
2401(student)X
2703(employees.)X
755 3136(A)N
856(default)X
1156(tuple-variable)X
1724(with)X
1927(the)X
2077(same)X
2307(name)X
2548(is)X
2644(de\256ned)X
2959(for)X
3103(each)X
3311(relation)X
3637(referenced)X
4075(in)X
4181(the)X
555 3256(target-list)N
949(or)X
3 f
1053(where)X
1 f
1304(-clause)X
1601(of)X
1705(a)X
1772(query.)X
2063(For)X
2220(example,)X
2595(the)X
2737(query)X
2980(above)X
3234(could)X
3472(have)X
3678(been)X
3884(written:)X
3 f
9 s
635 3379(retrieve)N
1 f
893(\(STUDEMP.name\))X
3 f
635 3469(where)N
1 f
841(STUDEMP.IsWorkStudy)X
3 f
707 3559(and)N
1 f
841(STUDEMP.Status)X
1389(=)X
1448(``sophomore'')X
12 s
555 3712(Notice)N
837(that)X
1006(the)X
1148(attribute)X
2 f
1494(IsWorkStudy)X
1 f
2009(is)X
2097(a)X
2164(boolean-valued)X
2782(attribute)X
3128(so)X
3237(it)X
3315(does)X
3515(not)X
3662(require)X
3959(an)X
4074(expli-)X
555 3832(cit)N
676(value)X
909(test)X
1067(\(e.g.,)X
2 f
1286(STUDEMP.IsWorkStudy)X
2262(=)X
2351(``true'')X
1 f
2650(\).)X
755 3985(The)N
953(set)X
1108(of)X
1236(tuples)X
1514(that)X
1707(a)X
1798(tuple-variable)X
2382(may)X
2595(range)X
2856(over)X
3074(can)X
3255(be)X
3393(a)X
3483(named)X
3787(relation)X
4129(or)X
4256(a)X
555 4105(relation-expression.)N
1375(For)X
1542(example,)X
1927(suppose)X
2270(the)X
2422(user)X
2616(wanted)X
2928(to)X
3037(retrieve)X
3366(all)X
3497(students)X
3846(in)X
3955(the)X
4106(data-)X
555 4225(base)N
760(who)X
959(live)X
1138(in)X
1247(Berkeley)X
1629(regardless)X
2053(of)X
2167(whether)X
2511(they)X
2711(are)X
2863(students)X
3211(or)X
3324(student)X
3635(employees.)X
4128(This)X
555 4345(query)N
798(can)X
956(be)X
1071(written)X
1368(as)X
1472(follows:)X
3 f
9 s
635 4468(retrieve)N
1 f
893(\(S.name\))X
3 f
635 4558(from)N
1 f
805(S)X
3 f
863(in)X
1 f
941(STUDENT*)X
3 f
635 4648(where)N
1 f
841(S.city)X
1025(=)X
1084(``Berkeley'')X
12 s
555 4801(The)N
737(``*'')X
945(operator)X
1298(speci\256es)X
1661(the)X
1811(relation)X
2138(formed)X
2448(by)X
2576(taking)X
2849(the)X
2999(union)X
3250(of)X
3362(the)X
3511(named)X
3799(relation)X
4125(\(i.e.,)X
2 f
555 4921(STUDENT)N
1 f
970(\))X
1028(and)X
1193(all)X
1316(relations)X
1674(that)X
1845(inherit)X
2123(attributes)X
2508(from)X
2721(it)X
2801(\(i.e.,)X
2 f
3001(STUDEMP)X
1 f
3438(\).)X
3544(If)X
3634(the)X
3777(``*'')X
3978(operator)X
10 f
555 5041(hhhhhhhhhhhhhhhhhhhhhhhh)N
9 s
1 f
727 5161(1)N
12 s
801 5199(Most)N
1036(attribute)X
1396(inheritance)X
1863(models)X
2178(have)X
2397(a)X
2477(con\257ict)X
2803(resolution)X
3225(rule)X
3412(that)X
3594(selects)X
3888(one)X
4064(of)X
4181(the)X
555 5319(con\257icting)N
993(attributes.)X
1426(We)X
1586(chose)X
1831(to)X
1932(disallow)X
2283(inheritance)X
2737(because)X
3067(we)X
3204(could)X
3443(not)X
3591(discover)X
3942(an)X
4058(exam-)X
555 5439(ple)N
699(where)X
960(it)X
1040(made)X
1275(sense,)X
1533(except)X
1811(when)X
2045(the)X
2189(types)X
2418(were)X
2631(identical.)X
3038(On)X
3180(the)X
3323(other)X
3546(hand,)X
3782(procedure)X
4192(in-)X
555 5559(heritance)N
941(\(discussed)X
1373(below\))X
1672(does)X
1880(use)X
2040(a)X
2115(con\257ict)X
2436(resolution)X
2853(rule)X
3035(because)X
3371(many)X
3616(examples)X
4011(exist)X
4224(in)X
555 5679(which)N
814(one)X
977(procedure)X
1386(is)X
1474(prefered.)X
3 f
10 s
2407 6048(4)N

5 p
%%Page: 5 5
10 s 0 xH 0 xS 3 f
1 f
12 s
555 792(was)N
738(not)X
895(used,)X
1129(the)X
1281(query)X
1534(retrieves)X
1900(only)X
2105(tuples)X
2369(in)X
2478(the)X
2630(student)X
2942(relation)X
3271(\(i.e.,)X
3479(students)X
3827(who)X
4025(are)X
4176(not)X
555 912(student)N
865(employees\).)X
1388(In)X
1499(most)X
1717(data)X
1909(models)X
2218(that)X
2394(support)X
2713(inheritance)X
3173(the)X
3322(relation)X
3648(name)X
3888(defaults)X
4224(to)X
555 1032(the)N
714(union)X
974(of)X
1095(relations)X
1468(over)X
1680(the)X
1839(inheritance)X
2309(hierarchy)X
2714(\(i.e.,)X
2929(the)X
3088(data)X
3290(described)X
3700(by)X
2 f
3836(STUDENT*)X
1 f
555 1152(above\).)N
901(We)X
1071(chose)X
1326(a)X
1405(different)X
1773(default)X
2077(because)X
2418(queries)X
2732(that)X
2913(involve)X
3238(unions)X
3530(will)X
3716(be)X
3842(slower)X
4133(than)X
555 1272(queries)N
869(on)X
1001(a)X
1080(single)X
1346(relation.)X
1725(By)X
1873(forcing)X
2186(the)X
2339(user)X
2534(to)X
2644(request)X
2957(the)X
3110(union)X
3364(explicitly)X
3764(with)X
3970(the)X
4123(``*'')X
555 1392(operator,)N
924(he)X
1039(will)X
1213(be)X
1328(aware)X
1582(of)X
1686(this)X
1849(cost.)X
755 1545(Relation)N
1124(expressions)X
1614(may)X
1822(include)X
2148(other)X
2388(set)X
2537(operators:)X
2964(union)X
3225(\()X
2 f
15 s
9 f
3257 1569(\310)N
1 f
12 s
3349 1545(\),)N
3447(intersection)X
3939(\()X
2 f
15 s
9 f
3971 1569(\307)N
1 f
12 s
4063 1545(\),)N
4160(and)X
555 1665(difference)N
972(\()X
9 f
1004(-)X
1 f
1057(\).)X
1163(For)X
1322(example,)X
1699(the)X
1843(following)X
2243(query)X
2488(retrieves)X
2846(the)X
2990(names)X
3262(of)X
3368(people)X
3651(who)X
3841(are)X
3984(students)X
555 1785(or)N
659(employees)X
1095(but)X
1242(not)X
1389(student)X
1691(employees:)X
3 f
9 s
635 1908(retrieve)N
1 f
893(\(S.name\))X
3 f
635 1998(from)N
1 f
805(S)X
3 f
863(in)X
1 f
941(\(STUDENT)X
2 f
15 s
9 f
1311 2022(\310)N
1 f
9 s
1421 1998(EMPLOYEE\))N
12 s
555 2151(Suppose)N
907(a)X
977(tuple)X
1197(does)X
1400(not)X
1550(have)X
1759(an)X
1877(attribute)X
2226(referenced)X
2660(elsewhere)X
3072(in)X
3174(the)X
3319(query.)X
3613(If)X
3704(the)X
3849(reference)X
4235(is)X
555 2290(in)N
678(the)X
844(target-list,)X
1286(the)X
1452(return)X
1730(tuple)X
1971(will)X
2169(not)X
2340(contain)X
2672(the)X
2837(attribute.)X
9 s
3183 2252(2)N
12 s
3266 2290(If)N
3377(the)X
3542(reference)X
3948(is)X
4059(in)X
4181(the)X
555 2410(quali\256cation,)N
1085(the)X
1227(clause)X
1492(containing)X
1923(the)X
2065(quali\256cation)X
2571(is)X
2659(``false''.)X
755 2563(POSTQUEL)N
1277(also)X
1463(provides)X
1825(set)X
1963(comparison)X
2443(operators)X
2832(and)X
3002(a)X
3076(relation-constructor)X
3867(that)X
4043(can)X
4208(be)X
555 2683(used)N
765(to)X
874(specify)X
1186(some)X
1423(dif\256cult)X
1762(queries)X
2074(more)X
2306(easily)X
2565(than)X
2765(in)X
2874(a)X
2951(conventional)X
3483(query)X
3736(language.)X
4166(For)X
555 2803(example,)N
942(suppose)X
1287(that)X
1468(students)X
1819(could)X
2069(have)X
2287(several)X
2596(majors.)X
2942(The)X
3128(natural)X
3432(representation)X
4013(for)X
4160(this)X
555 2923(data)N
740(is)X
828(to)X
927(de\256ne)X
1186(a)X
1253(separate)X
1593(relation:)X
3 f
9 s
635 3046(create)N
1 f
841(MAJORS\(Sname)X
1363(=)X
1422(char[25],)X
750 3136(Mname)N
988(=)X
1047(char[25]\))X
12 s
555 3289(where)N
2 f
822(Sname)X
1 f
1110(is)X
1206(the)X
1356(student's)X
1735(name)X
1976(and)X
2 f
2147(Mname)X
1 f
2467(is)X
2563(the)X
2712(major.)X
3016(With)X
3240(this)X
3410(representation,)X
4011(the)X
4160(fol-)X
555 3409(lowing)N
846(query)X
1089(retrieves)X
1445(the)X
1587(names)X
1857(of)X
1961(students)X
2300(with)X
2495(the)X
2637(same)X
2859(majors)X
3145(as)X
3249(Smith:)X
3 f
9 s
635 3532(retrieve)N
1 f
893(\(M1.Sname\))X
3 f
635 3622(from)N
1 f
805(M1)X
3 f
923(in)X
1 f
1001(MAJORS)X
3 f
635 3712(where)N
1 f
841({\(x.Mname\))X
3 f
1216(from)X
1 f
1386(x)X
3 f
1440(in)X
1 f
1518(MAJORS)X
3 f
980 3802(where)N
1 f
1186(x.Sname)X
1454(=)X
1513(M1.Sname})X
9 f
689 3892(\314)N
1 f
758({\(x.Mname\))X
3 f
1133(from)X
1 f
1303(x)X
3 f
1357(in)X
1 f
1435(MAJORS)X
3 f
865 3982(where)N
1 f
1071(x.Sname=``Smith''})X
12 s
555 4135(The)N
729(expressions)X
1201(enclosed)X
1562(in)X
1661(set)X
1792(symbols)X
2136(\(``{...}''\))X
2516(are)X
2658(relation-constructors.)X
755 4307(The)N
929(general)X
1237(form)X
1448(of)X
1552(a)X
1619(relation-constructor)X
9 s
2379 4269(3)N
12 s
2439 4307(is)N
9 s
635 4430({\()N
2 f
694(target-list)X
1 f
990(\))X
3 f
1095(from)X
2 f
1265(from-clause)X
3 f
980 4520(where)N
2 f
1186(where-clause)X
1 f
1570(})X
12 s
555 4673(which)N
814(speci\256es)X
1169(the)X
1311(same)X
1533(relation)X
1852(as)X
1956(the)X
2098(query)X
10 f
555 4902(hhhhhhhhhhhhhhhhhhhhhhhh)N
9 s
1 f
727 5022(2)N
12 s
792 5060(The)N
970(application)X
1427(program)X
1781(interface)X
2147(to)X
2250(POSTGRES)X
2757(allows)X
3036(the)X
3182(stream)X
3467(of)X
3575(tuples)X
3833(passed)X
4117(back)X
555 5180(to)N
654(the)X
796(program)X
1146(to)X
1245(have)X
1451(dynamically)X
1952(varying)X
2270(columns)X
2620(and)X
2783(types.)X
9 s
727 5300(3)N
12 s
797 5338(Relation)N
1158(constructors)X
1662(are)X
1814(really)X
2068(aggregate)X
2477(functions.)X
2917(We)X
3085(have)X
3301(designed)X
3676(a)X
3752(mechanism)X
4224(to)X
555 5458(support)N
875(extensible)X
1298(aggregate)X
1705(functions,)X
2119(but)X
2274(have)X
2488(not)X
2643(yet)X
2793(worked)X
3113(out)X
3268(the)X
3418(query)X
3669(language)X
4048(syntax)X
555 5578(and)N
718(semantics.)X
3 f
10 s
2407 6048(5)N

6 p
%%Page: 6 6
10 s 0 xH 0 xS 3 f
9 s
635 762(retrieve)N
1 f
893(\()X
2 f
(target-list)S
1 f
1213(\))X
3 f
635 852(from)N
2 f
805(from-clause)X
3 f
635 942(where)N
2 f
841(where-clause)X
1 f
12 s
555 1095(Note)N
774(that)X
951(a)X
1026(tuple-variable)X
1594(de\256ned)X
1909(in)X
2016(the)X
2166(outer)X
2396(query)X
2647(\(e.g.,)X
2874(M1)X
3038(in)X
3144(the)X
3293(query)X
3543(above\))X
3836(can)X
4001(be)X
4123(used)X
555 1215(within)N
834(a)X
910(relation-constructor)X
1703(but)X
1858(that)X
2035(a)X
2110(tuple-variable)X
2678(de\256ned)X
2993(in)X
3100(the)X
3250(relation-constructor)X
4042(cannot)X
555 1335(be)N
682(used)X
894(in)X
1004(the)X
1157(outer)X
1390(query.)X
1692(Rede\256nition)X
2203(of)X
2318(a)X
2396(tuple-variable)X
2967(in)X
3077(a)X
3155(relation)X
3485(constructor)X
3953(creates)X
4256(a)X
555 1455(distinct)N
884(variable)X
1240(as)X
1365(in)X
1485(a)X
1573(block-structured)X
2249(programming)X
2818(language)X
3210(\(e.g.,)X
3449(PASCAL\).)X
3940(Relation-)X
555 1575(valued)N
843(expressions)X
1322(\(including)X
1749(attributes)X
2139(of)X
2250(type)X
2446(procedure)X
2861(described)X
3260(in)X
3365(the)X
3513(next)X
3709(section\))X
4044(can)X
4208(be)X
555 1695(used)N
755(any)X
918(place)X
1146(in)X
1245(a)X
1312(query)X
1555(that)X
1724(a)X
1791(named)X
2072(relation)X
2391(can)X
2549(be)X
2664(used.)X
755 1848(Database)N
1132(updates)X
1450(are)X
1592(speci\256ed)X
1958(with)X
2153(conventional)X
2675(update)X
2956(commands)X
3397(as)X
3501(shown)X
3775(in)X
3874(the)X
4016(follow-)X
555 1968(ing)N
702(examples:)X
9 s
635 2091(/*)N
709(Add)X
851(a)X
901(new)X
1039(employee)X
1337(to)X
1411(the)X
1517(database.)X
1801(*/)X
3 f
635 2181(append)N
881(to)X
1 f
959(EMPLOYEE\(name)X
1541(=)X
2 f
1600(value)X
1 f
1756(,)X
750 2271(age)N
868(=)X
2 f
927(value)X
1 f
1083(,)X
1119(...\))X
635 2451(/*)N
709(Change)X
947(state)X
1097(codes)X
1279(using)X
750 2541(MAP\(OldCode,)N
1226(NewCode\).)X
1574(*/)X
3 f
635 2631(replace)N
1 f
877(P\(State)X
1103(=)X
1162(MAP.NewCode\))X
3 f
635 2721(from)N
1 f
805(P)X
3 f
863(in)X
1 f
941(PERSON*)X
3 f
635 2811(where)N
1 f
841(P.State)X
1061(=)X
1120(MAP.OldCode)X
635 2991(/*)N
709(Delete)X
915(students)X
1169(born)X
1319(before)X
1521(today.)X
1717(*/)X
3 f
635 3081(delete)N
1 f
833(STUDENT)X
3 f
635 3171(where)N
1 f
841(STUDENT.Birthdate)X
1473(<)X
1532(``today'')X
12 s
555 3324(Deferred)N
921(update)X
1202(semantics)X
1606(are)X
1748(used)X
1948(for)X
2084(all)X
2205(updates)X
2523(commands.)X
755 3477(POSTQUEL)N
1280(supports)X
1640(the)X
1793(transitive)X
2187(closure)X
2500(commands)X
2951(developed)X
3381(in)X
3490(QUEL*)X
3828([Kue84].)X
4230(A)X
555 3597(``*'')N
769(command)X
1187(continues)X
1594(to)X
1707(execute)X
2040(until)X
2255(no)X
2388(tuples)X
2655(are)X
2810(retrieved)X
3190(\(e.g.,)X
3 f
3422(retrieve*)X
1 f
3808(\))X
3877(or)X
3994(updated)X
555 3717(\(e.g.,)N
3 f
781(append*)X
1 f
1132(,)X
3 f
1186(delete*)X
1 f
1475(,)X
1529(or)X
3 f
1639(replace*)X
1 f
2003(\).)X
2113(For)X
2276(example,)X
2657(the)X
2805(following)X
3209(query)X
3458(creates)X
3756(a)X
3829(relation)X
4154(that)X
555 3837(contains)N
900(all)X
1021(employees)X
1457(who)X
1646(work)X
1867(for)X
2003(Smith:)X
3 f
9 s
635 3960(retrieve*)N
929(into)X
1 f
1067(SUBORD\(E.Name,)X
1653(E.Mgr\))X
3 f
635 4050(from)N
1 f
805(E)X
3 f
867(in)X
1 f
945(EMPLOYEE,)X
1365(S)X
3 f
1423(in)X
1 f
1501(SUBORD)X
3 f
635 4140(where)N
1 f
841(E.Name)X
1093(=)X
1152(``Smith'')X
3 f
750 4230(or)N
1 f
836(E.Mgr)X
1040(=)X
1099(S.Name)X
12 s
555 4383(This)N
753(command)X
1159(continues)X
1554(to)X
1655(execute)X
1976(the)X
3 f
2120(retrieve-into)X
1 f
2660(command)X
3066(until)X
3269(there)X
3488(are)X
3632(no)X
3754(changes)X
4090(made)X
555 4503(to)N
654(the)X
2 f
796(SUBORD)X
1 f
1193(relation.)X
755 4656(Lastly,)N
1047(POSTGRES)X
1553(saves)X
1788(data)X
1976(deleted)X
2282(from)X
2496(or)X
2603(modi\256ed)X
2971(in)X
3072(a)X
3141(relation)X
3462(so)X
3573(that)X
3744(queries)X
4048(can)X
4208(be)X
555 4776(executed)N
932(on)X
1062(historical)X
1455(data.)X
1698(For)X
1865(example,)X
2250(the)X
2402(following)X
2810(query)X
3063(looks)X
3305(for)X
3451(students)X
3800(who)X
3998(lived)X
4224(in)X
555 4896(Berkeley)N
927(on)X
1047(August)X
1348(1,)X
1444(1980:)X
3 f
9 s
635 5019(retrieve)N
1 f
893(\(S.Name\))X
3 f
635 5109(from)N
1 f
805(S)X
3 f
863(in)X
1 f
941(STUDENT[``August)X
1567(1,)X
1639(1980''])X
3 f
635 5199(where)N
1 f
841(S.City)X
1041(=)X
1100(``Berkeley'')X
12 s
555 5352(The)N
733(date)X
922(speci\256ed)X
1292(in)X
1395(the)X
1541(brackets)X
1890(following)X
2292(the)X
2438(relation)X
2761(name)X
2997(speci\256es)X
3355(the)X
3500(relation)X
3822(at)X
3919(the)X
4064(desig-)X
555 5472(nated)N
798(time.)X
1052(The)X
1236(date)X
1431(can)X
1598(be)X
1722(speci\256ed)X
2097(in)X
2205(many)X
2452(different)X
2817(formats)X
3144(and)X
3316(optionally)X
3740(may)X
3939(include)X
4256(a)X
555 5592(time)N
771(of)X
895(day.)X
1126(The)X
1319(query)X
1581(above)X
1854(only)X
2068(examines)X
2475(students)X
2833(who)X
3041(are)X
3202(not)X
3368(student)X
3689(employees.)X
4192(To)X
555 5712(search)N
825(the)X
967(set)X
1098(of)X
1202(all)X
1323(students,)X
1686(the)X
3 f
1828(from)X
1 f
2031(-clause)X
2328(would)X
2592(be)X
3 f
10 s
2407 6048(6)N

7 p
%%Page: 7 7
10 s 0 xH 0 xS 3 f
1 f
9 s
653 762(...)N
3 f
(from)S
1 f
877(S)X
3 f
935(in)X
1 f
1013(STUDENT*[``August)X
1675(1,)X
1747(1980''])X
12 s
755 948(Queries)N
1080(can)X
1240(also)X
1421(be)X
1538(executed)X
1907(on)X
2029(all)X
2152(data)X
2339(that)X
2510(is)X
2600(currently)X
2974(in)X
3075(the)X
3219(relation)X
3540(or)X
3646(was)X
3821(in)X
3922(it)X
4001(at)X
4096(some)X
555 1068(time)N
767(in)X
882(the)X
1039(past)X
1233(\(i.e.,)X
1446(all)X
1582(data\).)X
1862(The)X
2051(following)X
2464(query)X
2722(retrieves)X
3093(all)X
3229(students)X
3583(who)X
3787(ever)X
3992(lived)X
4224(in)X
555 1188(Berkeley:)N
3 f
9 s
635 1311(retrieve)N
1 f
893(\(S.Name\))X
3 f
635 1401(from)N
1 f
805(S)X
3 f
863(in)X
1 f
941(STUDENT[])X
3 f
635 1491(where)N
1 f
841(S.City)X
1041(=)X
1100(``Berkeley'')X
12 s
555 1644(The)N
729(notation)X
1069(``[]'')X
1285(can)X
1443(be)X
1558(appended)X
1951(to)X
2050(any)X
2213(relation)X
2532(name.)X
755 1797(Queries)N
1088(can)X
1256(also)X
1445(be)X
1570(speci\256ed)X
1946(on)X
2076(data)X
2270(that)X
2448(was)X
2630(in)X
2738(the)X
2889(relation)X
3217(during)X
3501(a)X
3577(given)X
3824(time)X
4029(period.)X
555 1917(The)N
732(time)X
931(period)X
1203(is)X
1293(speci\256ed)X
1661(by)X
1783(giving)X
2055(a)X
2124(start-)X
2348(and)X
2513(end-time)X
2882(as)X
2988(shown)X
3264(in)X
3365(the)X
3509(following)X
3909(query)X
4154(that)X
555 2037(retrieves)N
911(students)X
1250(who)X
1439(lived)X
1656(in)X
1755(Berkeley)X
2127(at)X
2221(any)X
2384(time)X
2580(in)X
2679(August)X
2980(1980:)X
3 f
9 s
635 2160(retrieve)N
1 f
893(\(S.Name\))X
3 f
635 2250(from)N
1 f
805(S)X
3 f
863(in)X
1 f
941(STUDENT*[``August)X
1603(1,)X
1675(1980'',)X
1555 2340(``August)N
1829(31,)X
1937(1980''])X
3 f
635 2430(where)N
1 f
841(S.City)X
1041(=)X
1100(``Berkeley'')X
12 s
555 2583(Shorthand)N
1016(notations)X
1435(are)X
1619(supported)X
2064(for)X
2242(all)X
2405(tuples)X
2701(in)X
2841(a)X
2949(relation)X
3309(up)X
3470(to)X
3610(some)X
3878(date)X
4104(\(e.g.,)X
2 f
555 2703(STUDENT*[,``August)N
1442(1,)X
1546(1980''])X
1 f
1855(\))X
1919(or)X
2031(from)X
2250(some)X
2485(date)X
2678(to)X
2784(the)X
2933(present)X
3242(\(e.g.,)X
2 f
3468(STUDENT*[``August)X
555 2823(1,)N
651(1980'',)X
947(])X
1 f
1000(\).)X
755 2976(The)N
938(POSTGRES)X
1450(default)X
1751(is)X
1848(to)X
1955(save)X
2158(all)X
2287(data)X
2480(unless)X
2752(the)X
2902(user)X
3094(explicitly)X
3491(requests)X
3838(that)X
4015(data)X
4208(be)X
555 3096(purged.)N
898(Data)X
1108(can)X
1270(be)X
1389(purged)X
1684(before)X
1958(a)X
2029(speci\256c)X
2351(data)X
2540(\(e.g.,)X
2763(before)X
3037(January)X
3364(1,)X
3464(1987\))X
3716(or)X
3823(before)X
4096(some)X
555 3216(time)N
759(period)X
1037(\(e.g.,)X
1264(before)X
1542(six)X
1686(months)X
2001(ago\).)X
2252(The)X
2434(user)X
2626(may)X
2824(also)X
3011(request)X
3321(that)X
3498(all)X
3626(historical)X
4016(data)X
4208(be)X
555 3336(purged)N
846(so)X
955(that)X
1124(only)X
1319(the)X
1461(current)X
1758(data)X
1943(in)X
2042(the)X
2184(relation)X
2503(is)X
2591(stored.)X
755 3489(POSTGRES)N
1259(also)X
1439(supports)X
1789(versions)X
2134(of)X
2239(relations.)X
2644(A)X
2738(version)X
3046(of)X
3150(a)X
3217(relation)X
3536(can)X
3694(be)X
3809(created)X
4112(from)X
555 3609(a)N
634(relation)X
965(or)X
1081(a)X
1160(snapshot.)X
1580(A)X
1684(version)X
2002(is)X
2101(created)X
2415(by)X
2546(specifying)X
2982(the)X
3135(base)X
3341(relation)X
3671(as)X
3786(shown)X
4071(in)X
4181(the)X
555 3729(command)N
3 f
9 s
635 3852(create)N
841(version)X
1 f
1083(MYPEOPLE)X
3 f
1481(from)X
1 f
1651(PERSON)X
12 s
555 4005(that)N
739(creates)X
1046(a)X
1128(version,)X
1474(named)X
2 f
1770(MYPEOPLE)X
1 f
2261(,)X
2324(derived)X
2652(from)X
2878(the)X
2 f
3035(PERSON)X
1 f
3432(relation.)X
3814(Data)X
4035(can)X
4208(be)X
555 4125(retrieved)N
923(from)X
1135(and)X
1299(updated)X
1628(in)X
1727(a)X
1794(version)X
2101(just)X
2264(like)X
2433(a)X
2500(relation.)X
2867(Updates)X
3206(to)X
3305(the)X
3447(version)X
3754(do)X
3874(not)X
4021(modify)X
555 4245(the)N
700(base)X
898(relation.)X
1268(However,)X
1671(updates)X
1992(to)X
2094(the)X
2239(base)X
2437(relation)X
2759(are)X
2904(propagated)X
3359(to)X
3461(the)X
3606(version)X
3915(unless)X
4181(the)X
555 4365(value)N
809(has)X
982(been)X
1209(modi\256ed.)X
1644(For)X
1822(example,)X
2218(if)X
2322(George's)X
2718(birthdate)X
3105(is)X
3213(changed)X
3578(in)X
2 f
3697(MYPEOPLE)X
1 f
4188(,)X
4256(a)X
3 f
555 4485(replace)N
1 f
879(command)X
1283(that)X
1452(changes)X
1786(his)X
1922(birthdate)X
2289(in)X
2 f
2388(PERSON)X
1 f
2770(will)X
2944(not)X
3091(be)X
3206(propagated)X
3658(to)X
2 f
3757(MYPEOPLE)X
1 f
4248(.)X
755 4638(If)N
854(the)X
1007(user)X
1202(does)X
1413(not)X
1571(want)X
1792(updates)X
2120(to)X
2229(the)X
2381(base)X
2586(relation)X
2915(to)X
3024(propagate)X
3438(to)X
3547(the)X
3699(version,)X
4040(he)X
4165(can)X
555 4758(create)N
832(a)X
921(version)X
1250(of)X
1376(a)X
1465(snapshot.)X
1895(A)X
2009(snapshot)X
2390(is)X
2499(a)X
2587(copy)X
2819(of)X
2944(the)X
3107(current)X
3425(contents)X
3791(of)X
3916(a)X
4004(relation)X
555 4878([AdL80].)N
963(A)X
1056(version)X
1363(of)X
1467(a)X
1534(snapshot)X
1894(is)X
1982(created)X
2285(by)X
2405(the)X
2547(following)X
2945(command:)X
3 f
9 s
635 5001(create)N
841(version)X
1 f
1083(YOURPEOPLE)X
3 f
635 5091(from)N
1 f
805(PERSON[``now''])X
12 s
555 5244(The)N
734(snapshot)X
1099(version)X
1411(can)X
1574(be)X
1694(updated)X
2028(directly)X
2352(by)X
2477(issuing)X
2777(update)X
3062(commands)X
3507(on)X
3631(the)X
3777(version.)X
4136(But,)X
555 5364(updates)N
873(to)X
972(the)X
1114(base)X
1309(relation)X
1628(are)X
1770(not)X
1917(propagated)X
2369(to)X
2468(the)X
2610(version.)X
755 5517(A)N
3 f
849(merge)X
1 f
1131(command)X
1536(is)X
1625(provided)X
1992(to)X
2092(merge)X
2358(changes)X
2693(made)X
2927(to)X
3027(a)X
3095(version)X
3403(back)X
3610(into)X
3785(the)X
3927(base)X
4122(rela-)X
555 5637(tion.)N
777(An)X
918(example)X
1269(of)X
1373(this)X
1536(command)X
1940(is)X
3 f
10 s
2407 6048(7)N

8 p
%%Page: 8 8
10 s 0 xH 0 xS 3 f
9 s
635 762(merge)N
1 f
845(YOURPEOPLE)X
3 f
1331(into)X
1 f
1469(PERSON)X
12 s
555 915(that)N
728(will)X
906(merge)X
1175(the)X
1321(changes)X
1659(made)X
1896(to)X
2 f
1999(YOURPEOPLE)X
1 f
2635(back)X
2845(into)X
2 f
3023(PERSON)X
1 f
3381(.)X
3457(The)X
3 f
3635(merge)X
1 f
3919(command)X
555 1035(uses)N
756(a)X
835 0.2356(semi-automatic)AX
1466(procedure)X
1887(to)X
1998(resolve)X
2312(updates)X
2642(to)X
2753(the)X
2907(underlying)X
3359(relation)X
3689(and)X
3863(the)X
4016(version)X
555 1155(that)N
724(con\257ict)X
1037([Gae84].)X
755 1308(This)N
969(section)X
1285(described)X
1697(most)X
1927(of)X
2050(the)X
2211(data)X
2415(de\256nition)X
2827(and)X
3009(data)X
3213(manipulation)X
3765(commands)X
4224(in)X
555 1428(POSTQUEL.)N
1121(The)X
1299(commands)X
1744(that)X
1917(were)X
2132(not)X
2283(described)X
2680(are)X
2826(the)X
2972(commands)X
3417(for)X
3557(de\256ning)X
3900(rules,)X
4138(util-)X
555 1548(ity)N
691(commands)X
1142(that)X
1321(only)X
1526(affect)X
1780(the)X
1932(performance)X
2453(of)X
2567(the)X
2719(system)X
3020(\(e.g.,)X
3 f
3248(de\256ne)X
3526(index)X
1 f
3783(and)X
3 f
3955(modify)X
1 f
4243(\),)X
555 1668(and)N
724(other)X
952(miscellaneous)X
1528(utility)X
1789(commands)X
2236(\(e.g.,)X
3 f
2461(destroy)X
1 f
2795(and)X
3 f
2964(copy)X
1 f
(\).)S
3265(The)X
3444(next)X
3639(section)X
3941(describes)X
555 1788(the)N
697(type)X
887(system)X
1178(for)X
1314(relation)X
1633(attributes.)X
3 f
555 2004(3.)N
675(Data)X
896(Types)X
1 f
755 2157(POSTGRES)N
1268(provides)X
1633(a)X
1710(collection)X
2125(of)X
2239(atomic)X
2536(and)X
2709(structured)X
3128(types.)X
3413(The)X
3597(prede\256ned)X
4036(atomic)X
555 2277(types)N
790(include:)X
2 f
1133(int2)X
1 f
1283(,)X
2 f
1339(int4)X
1 f
1489(,)X
2 f
1545(\257oat4)X
1 f
1764(,)X
2 f
1820(\257oat8)X
1 f
2039(,)X
2 f
2095(bool)X
1 f
2266(,)X
2 f
2322(char)X
1 f
(,)S
2554(and)X
2 f
2725(date)X
1 f
2891(.)X
2970(The)X
3151(standard)X
3508(arithmetic)X
3931(and)X
4101(com-)X
555 2397(parison)N
871(operators)X
1262(are)X
1413(provided)X
1788(for)X
1933(the)X
2084(numeric)X
2433(and)X
2605(date)X
2799(data)X
2993(types)X
3229(and)X
3401(the)X
3551(standard)X
3909(string)X
4160(and)X
555 2517(comparison)N
1036(operators)X
1426(for)X
1570(character)X
1956(arrays.)X
2271(Users)X
2521(can)X
2687(extend)X
2976(the)X
3126(system)X
3425(by)X
3552(adding)X
3845(new)X
4036(atomic)X
555 2637(types)N
782(using)X
1014(an)X
1129(abstract)X
1453(data)X
1638(type)X
1828(\(ADT\))X
2113(de\256nition)X
2506(facility.)X
755 2790(All)N
908(atomic)X
1201(data)X
1392(types)X
1625(are)X
1773(de\256ned)X
2086(to)X
2191(the)X
2339(system)X
2635(as)X
2744(ADT's.)X
3087(An)X
3233(ADT)X
3459(is)X
3552(de\256ned)X
3864(by)X
3989(specify-)X
555 2910(ing)N
711(the)X
862(type)X
1061(name,)X
1327(the)X
1478(length)X
1752(of)X
1865(the)X
2016(internal)X
2344(representation)X
2923(in)X
3030(bytes,)X
3289(procedures)X
3743(for)X
3887(converting)X
555 3030(from)N
770(an)X
889(external)X
1228(to)X
1331(internal)X
1654(representation)X
2228(for)X
2368(a)X
2439(value)X
2676(and)X
2843(from)X
3058(an)X
3177(internal)X
3500(to)X
3603(external)X
3941(represen-)X
555 3150(tation,)N
823(and)X
986(a)X
1053(default)X
1345(value.)X
1626(The)X
1800(command)X
3 f
9 s
635 3273(de\256ne)N
837(type)X
1 f
987(int4)X
3 f
1117(is)X
1 f
1183(\(InternalLength)X
1653(=)X
1712(4,)X
750 3363(InputProc)N
1052(=)X
1111(CharToInt4,)X
750 3453(OutputProc)N
1100(=)X
1159(Int4ToChar,)X
1531(Default)X
1765(=)X
1824(``0''\))X
12 s
555 3606(de\256nes)N
863(the)X
1017(type)X
2 f
1219(int4)X
1 f
1405(which)X
1676(is)X
1776(prede\256ned)X
2218(in)X
2329(the)X
2483(system.)X
2 f
2834(CharToInt4)X
1 f
3323(and)X
2 f
3498(Int4ToChar)X
1 f
3986(are)X
4139(pro-)X
555 3726(cedures)N
875(that)X
1046(are)X
1190(coded)X
1446(in)X
1547(a)X
1616(conventional)X
2140(programming)X
2690(language)X
3064(\(e.g.,)X
3285(C\))X
3406(and)X
3594(de\256ned)X
3902(to)X
4002(the)X
4145(sys-)X
555 3846(tem)N
724(using)X
956(the)X
1098(commands)X
1539(described)X
1932(in)X
2031(section)X
2328(4.)X
755 3999(Operators)N
1170(on)X
1302(ADT's)X
1604(are)X
1758(de\256ned)X
2077(by)X
2209(specifying)X
2646(the)X
2800(the)X
2954(number)X
3284(and)X
3459(type)X
3660(of)X
3775(operands,)X
4181(the)X
555 4119(return)N
814(type,)X
1033(the)X
1180(precedence)X
1643(and)X
1811(associativity)X
2322(of)X
2431(the)X
2577(operator,)X
2950(and)X
3117(the)X
3263(procedure)X
3676(that)X
3849(implements)X
555 4239(it.)N
681(For)X
838(example,)X
1213(the)X
1355(command)X
3 f
9 s
635 4362(de\256ne)N
837(operator)X
1 f
1123(``+''\(int4,)X
1432(int4\))X
3 f
1586(returns)X
1 f
1832(int4)X
3 f
750 4452(is)N
1 f
816(\(Proc)X
990(=)X
1049(Plus,)X
1209(Precedence)X
1555(=)X
1614(5,)X
865 4542(Associativity)N
1263(=)X
1322(``left''\))X
12 s
555 4695(de\256nes)N
861(the)X
1013(plus)X
1207(operator.)X
1610(Precedence)X
2083(is)X
2181(speci\256ed)X
2557(by)X
2687(a)X
2764(number.)X
3140(Larger)X
3431(numbers)X
3795(imply)X
4053(higher)X
555 4815(precedence.)N
1083(The)X
1279(prede\256ned)X
1731(operators)X
2135(have)X
2363(the)X
2527(precedences)X
3044(shown)X
3339(in)X
3459(\256gure)X
3728(2.)X
3869(These)X
4144(pre-)X
555 4935(cedences)N
942(can)X
1115(be)X
1245(changed)X
1605(by)X
1740(changing)X
2132(the)X
2289(operator)X
2649(de\256nitions.)X
3142(Associativity)X
3689(is)X
3792(either)X
4051(left)X
4219(or)X
555 5055(right)N
767(depending)X
1198(on)X
1324(the)X
1472(semantics)X
1882(desired.)X
2238(This)X
2438(example)X
2794(de\256ned)X
3106(an)X
3226(operator)X
3576(denoted)X
3910(by)X
4035(a)X
4107(sym-)X
555 5175(bol)N
702(\(i.e.,)X
900(``+''\).)X
1186(Operators)X
1589(can)X
1747(also)X
1926(be)X
2041(denoted)X
2370(by)X
2490(identi\256ers)X
2899(as)X
3003(shown)X
3277(below.)X
755 5328(Another)N
1098(example)X
1452(of)X
1559(an)X
1677(ADT)X
1901(de\256nition)X
2297(is)X
2388(the)X
2533(following)X
2934(command)X
3341(that)X
3513(de\256nes)X
3812(an)X
3930(ADT)X
4154(that)X
555 5448(represents)N
969(boxes:)X
3 f
10 s
2407 6048(8)N

9 p
%%Page: 9 9
10 s 0 xH 0 xS 3 f
1 f
12 s
10 f
555 888(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
1815 1065(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
3 f
1863 1185(Precedence)N
2473(Operators)X
1 f
10 f
1815 1201(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1815 1217(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1 f
2048 1329(80)N
9 f
2473(\255)X
10 f
1815 1353(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1 f
2048 1473(70)N
3 f
2473(not)X
1 f
9 f
2630(-)X
1 f
2707(\(unary\))X
10 f
1815 1497(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1 f
2048 1617(60)N
2473(*)X
2545(/)X
10 f
1815 1641(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1 f
2048 1761(50)N
2473(+)X
9 f
2551(-)X
1 f
2628(\(binary\))X
10 f
1815 1785(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1 f
2048 1905(40)N
2473(<)X
9 f
2551(\243)X
1 f
2628(>)X
9 f
2706(\263)X
10 f
1815 1929(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1 f
2048 2049(30)N
2473(=)X
9 f
2551(\271)X
10 f
1815 2073(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1 f
2048 2193(20)N
3 f
2473(and)X
1 f
10 f
1815 2217(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1 f
2048 2337(10)N
3 f
2473(or)X
1 f
10 f
1815 2361(i)N
1838(iiiiiiiiiiiiiiiiiiiiiiiii)X
1815(c)X
2313(c)Y
2217(c)Y
2121(c)Y
2025(c)Y
1929(c)Y
1833(c)Y
1737(c)Y
1641(c)Y
1545(c)Y
1449(c)Y
1353(c)Y
1257(c)Y
1161(c)Y
2401 2361(c)N
2313(c)Y
2217(c)Y
2121(c)Y
2025(c)Y
1929(c)Y
1833(c)Y
1737(c)Y
1641(c)Y
1545(c)Y
1449(c)Y
1353(c)Y
1257(c)Y
1161(c)Y
3038 2361(c)N
2313(c)Y
2217(c)Y
2121(c)Y
2025(c)Y
1929(c)Y
1833(c)Y
1737(c)Y
1641(c)Y
1545(c)Y
1449(c)Y
1353(c)Y
1257(c)Y
1161(c)Y
1 f
1602 2634(Figure)N
1877(2:)X
1976(Prede\256ned)X
2411(operators)X
2793(precedence.)X
10 f
555 2754(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
3 f
9 s
635 3060(de\256ne)N
837(type)X
1 f
987(box)X
3 f
1113(is)X
1 f
1179(\(InternalLength)X
1649(=)X
1708(16,)X
750 3150(InputProc)N
1052(=)X
1111(CharToBox,)X
750 3240(OutputProc)N
1100(=)X
1159(BoxToChar,)X
1535(Default)X
1769(=)X
1828(``''\))X
12 s
555 3393(The)N
735(external)X
1076(representation)X
1652(of)X
1762(a)X
1835(box)X
2009(is)X
2103(a)X
2176(character)X
2560(string)X
2809(that)X
2984(contains)X
3335(two)X
3508(points)X
3772(that)X
3946(represent)X
555 3513(the)N
697(upper-left)X
1101(and)X
1264(lower-right)X
1721(corners)X
2028(of)X
2132(the)X
2274(box.)X
2490(With)X
2707(this)X
2870(representation,)X
3464(the)X
3606(constant)X
9 s
635 3636(``20,50:10,70'')N
12 s
555 3789(describes)N
955(a)X
1040(box)X
1225(whose)X
1511(upper-left)X
1932(corner)X
2219(is)X
2324(at)X
2435(\(20,)X
2628(50\))X
2797(and)X
2977(lower-right)X
3451(corner)X
3738(is)X
3843(at)X
3954(\(10,)X
4147(70\).)X
2 f
555 3909(CharToBox)N
1 f
1037(takes)X
1269(a)X
1346(character)X
1734(string)X
1987(like)X
2166(this)X
2339(one)X
2511(and)X
2683(returns)X
2983(a)X
3059(16)X
3188(byte)X
3387(representation)X
3966(of)X
4079(a)X
4155(box)X
555 4029(\(e.g.,)N
774(4)X
846(bytes)X
1073(per)X
1220(x-)X
1324(or)X
1428(y-coordinate)X
1939(value\).)X
2 f
2252(BoxToChar)X
1 f
2724(is)X
2812(the)X
2954(inverse)X
3256(of)X
2 f
3360(CharToBox)X
1 f
755 4182(Comparison)N
1266(operators)X
1665(can)X
1840(be)X
1972(de\256ned)X
2296(on)X
2433(ADT's)X
2740(that)X
2926(can)X
3101(be)X
3233(used)X
3450(in)X
3566(access)X
3853(methods)X
4219(or)X
555 4302(optimized)N
965(in)X
1064(queries.)X
1414(For)X
1571(example,)X
1946(the)X
2088(de\256nition)X
3 f
9 s
635 4425(de\256ne)N
837(operator)X
1 f
1123(AE\(box,)X
1387(box\))X
3 f
1537(returns)X
1 f
1783(bool)X
3 f
750 4515(is)N
1 f
816(\(Proc)X
990(=)X
1049(BoxAE,)X
1301(Precedence)X
1647(=)X
1706(3,)X
865 4605(Associativity)N
1263(=)X
1322(``left'',)X
1550(Sort)X
1688(=)X
1747(BoxArea,)X
865 4695(Hashes,)N
1109(Restrict)X
1351(=)X
1410(AERSelect,)X
865 4785(Join)N
1003(=)X
1062(AEJSelect,)X
1398(Negator)X
1648(=)X
1707(BoxAreaNE\))X
12 s
555 4938(de\256nes)N
859(an)X
982(operator)X
1335(``area)X
1592(equals'')X
1933(on)X
2060(boxes.)X
2363(In)X
2474(addition)X
2821(to)X
2927(the)X
3076(semantic)X
3450(information)X
3936(about)X
4181(the)X
555 5058(operator)N
905(itself,)X
1151(this)X
1319(speci\256cation)X
1835(includes)X
2185(information)X
2669(used)X
2874(by)X
2999(POSTGRES)X
3507(to)X
3611(build)X
3838(indexes)X
4160(and)X
555 5178(to)N
655(optimize)X
1018(queries)X
1321(using)X
1554(the)X
1697(operator.)X
2091(For)X
2249(example,)X
2625(suppose)X
2959(the)X
2 f
3102(PICTURE)X
1 f
3522(relation)X
3842(was)X
4016(de\256ned)X
555 5298(by)N
3 f
9 s
635 5421(create)N
1 f
841(PICTURE\(Title)X
1319(=)X
1378(char[],)X
1586(Item)X
1736(=)X
1795(box\))X
12 s
555 5574(and)N
718(the)X
860(query)X
3 f
10 s
2407 6048(9)N

10 p
%%Page: 10 10
10 s 0 xH 0 xS 3 f
9 s
635 762(retrieve)N
1 f
893(\(PICTURE.)X
3 f
1235(all)X
1 f
(\))S
3 f
635 852(where)N
1 f
841(PICTURE.Item)X
1309(AE)X
1423(``50,100:100,50'')X
12 s
555 1005(was)N
729(executed.)X
1145(The)X
2 f
1320(Sort)X
1 f
1505(property)X
1856(of)X
1961(the)X
2 f
2104(AE)X
1 f
2247(operator)X
2593(speci\256es)X
2949(the)X
3091(procedure)X
3500(to)X
3599(be)X
3714(used)X
3914(to)X
4013(sort)X
4181(the)X
555 1125(relation)N
882(if)X
973(a)X
1048(merge-sort)X
1497(join)X
1679(strategy)X
2016(was)X
2197(selected)X
2540(to)X
2647(implement)X
3092(the)X
3242(query.)X
3541(It)X
3632(also)X
3819(speci\256es)X
4181(the)X
555 1245(procedure)N
968(to)X
1071(use)X
1227(when)X
1463(building)X
1811(an)X
1929(ordered)X
2250(index)X
2491(\(e.g.,)X
2713(B-Tree\))X
3045(on)X
3168(an)X
3286(attribute)X
3635(of)X
3742(type)X
2 f
3935(box)X
1 f
4074(.)X
4149(The)X
2 f
555 1365(Hashes)N
1 f
864(property)X
1217(indicates)X
1587(that)X
1759(this)X
1925(operator)X
2273(can)X
2434(be)X
2552(used)X
2755(to)X
2857(build)X
3082(a)X
3152(hash)X
3355(index)X
3596(on)X
3719(a)X
2 f
3788(box)X
1 f
3953(attribute.)X
555 1485(Note)N
775(that)X
953(either)X
1206(type)X
1405(of)X
1517(index)X
1763(can)X
1929(be)X
2052(used)X
2260(to)X
2367(optimize)X
2737(the)X
2887(query)X
3138(above.)X
3448(The)X
2 f
3630(Restrict)X
1 f
3962(and)X
2 f
4133(Join)X
1 f
555 1605(properties)N
972(specify)X
1282(the)X
1432(procedure)X
1849(that)X
2025(is)X
2120(to)X
2226(be)X
2348(called)X
2610(by)X
2737(the)X
2886(query)X
3136(optimizer)X
3537(to)X
3643(compute)X
4006(the)X
4155(res-)X
555 1725(trict)N
736(and)X
900(join)X
1075(selectivities,)X
1580(respectively,)X
2095(of)X
2200(a)X
2268(clause)X
2534(involving)X
2928(the)X
3071(operator.)X
3464(These)X
3718(selectivity)X
4139(pro-)X
555 1845(perties)N
837(specify)X
1140(procedures)X
1587(that)X
1757(will)X
1932(return)X
2187(a)X
2255(\257oating)X
2573(point)X
2795(value)X
3028(between)X
3373(0.0)X
3517(and)X
3680(1.0)X
3824(that)X
3993(indicate)X
555 1965(the)N
702(attribute)X
1053(selectivity)X
1479(given)X
1722(the)X
1869(operator.)X
2267(Lastly,)X
2561(the)X
2 f
2708(Negator)X
1 f
3052(property)X
3407(speci\256es)X
3767(the)X
3914(procedure)X
555 2085(that)N
739(is)X
842(to)X
956(be)X
1086(used)X
1301(to)X
1415(compare)X
1786(two)X
1969(values)X
2254(when)X
2501(a)X
2583(query)X
2840(predicate)X
3232(requires)X
3580(the)X
3736(operator)X
4095(to)X
4208(be)X
555 2205(negated)N
879(as)X
983(in)X
3 f
9 s
635 2328(retrieve)N
1 f
893(\(PICTURE.)X
3 f
1235(all)X
1 f
(\))S
3 f
635 2418(where)N
841(not)X
1 f
959(\(PICTURE.Item)X
1210 2508(AE)N
1324(``50,100:100,50''\))X
12 s
555 2661(The)N
3 f
731(de\256ne)X
1002(operator)X
1 f
1386(command)X
1792(also)X
1973(may)X
2165(specify)X
2469(a)X
2538(procedure)X
2949(that)X
3120(can)X
3280(be)X
3397(used)X
3598(if)X
3682(the)X
3825(query)X
4069(predi-)X
555 2781(cate)N
743(includes)X
1096(an)X
1219(operator)X
1571(that)X
1747(is)X
1842(not)X
1996(commutative.)X
2579(For)X
2743(example,)X
3125(the)X
3274(commutator)X
3771(procedure)X
4187(for)X
555 2901(``area)N
814(less)X
992(than'')X
1256(\()X
2 f
1288(ALT)X
1 f
1453(\))X
1519(is)X
1617(the)X
1768(procedure)X
2186(that)X
2364(implements)X
2847(``area)X
3105(greater)X
3406(than)X
3605(or)X
3718(equal'')X
4024(\()X
2 f
4056(AGE)X
1 f
4243(\).)X
555 3021(More)N
787(details)X
1063(on)X
1183(the)X
1325(use)X
1477(of)X
1581(these)X
1803(properties)X
2212(is)X
2300(given)X
2538(elsewhere)X
2947([Sto86b].)X
755 3174(Type-constructors)N
1484(are)X
1631(provided)X
2002(to)X
2106(de\256ne)X
2370(structured)X
2784(types)X
3016(\(e.g.,)X
3240(arrays)X
3504(and)X
3672(procedures\))X
4154(that)X
555 3294(can)N
733(be)X
868(used)X
1088(to)X
1207(represent)X
1604(complex)X
1980(data.)X
2233(An)X
2 f
2394(array)X
1 f
2651(type-constructor)X
3326(can)X
3504(be)X
3639(used)X
3859(to)X
3978(de\256ne)X
4256(a)X
555 3414(variable-)N
930(or)X
1042(\256xed-size)X
1448(array.)X
1726(A)X
1827(\256xed-size)X
2233(array)X
2463(is)X
2559(declared)X
2918(by)X
3045(specifying)X
3477(the)X
3626(element)X
3963(type)X
4160(and)X
555 3534(upper)N
798(bound)X
1062(of)X
1166(the)X
1308(array)X
1530(as)X
1634(illustrated)X
2044(by)X
3 f
9 s
635 3657(create)N
1 f
841(PERSON\(Name)X
1331(=)X
1390(char[25]\))X
12 s
555 3810(which)N
825(de\256nes)X
1132(an)X
1258(array)X
1491(of)X
1606(twenty-\256ve)X
2078(characters.)X
2551(The)X
2735(elements)X
3112(of)X
3226(the)X
3378(array)X
3610(are)X
3762(referenced)X
4203(by)X
555 3930(indexing)N
919(the)X
1064(attribute)X
1413(by)X
1536(an)X
1654(integer)X
1948(between)X
2295(1)X
2369(and)X
2534(25)X
2656(\(e.g.,)X
2877(``)X
2 f
2941(PERSON.Name[4])X
1 f
('')S
3759(references)X
4181(the)X
555 4050(fourth)N
814(character)X
1192(in)X
1291(the)X
1433(person's)X
1782(name\).)X
755 4203(A)N
853(variable-size)X
1375(array)X
1602(is)X
1695(speci\256ed)X
2066(by)X
2191(omitting)X
2547(the)X
2694(upper)X
2942(bound)X
3211(in)X
3315(the)X
3462(type)X
3657(constructor.)X
4166(For)X
555 4323(example,)N
939(a)X
1015(variable-sized)X
1589(array)X
1820(of)X
1933(characters)X
2356(is)X
2452(speci\256ed)X
2826(by)X
2954(``char[].'')X
3368(Variable-size)X
3914(arrays)X
4181(are)X
555 4443(referenced)N
991(by)X
1116(indexing)X
1482(the)X
1629(attribute)X
1980(by)X
2104(an)X
2223(integer)X
2519(between)X
2868(1)X
2944(and)X
3111(the)X
3257(current)X
3558(upper)X
3805(bound)X
4073(of)X
4181(the)X
555 4563(array.)N
846(The)X
1041(prede\256ned)X
1492(function)X
2 f
1858(size)X
1 f
2047(returns)X
2359(the)X
2521(current)X
2838(upper)X
3101(bound.)X
3433(POSTGRES)X
3956(does)X
4176(not)X
555 4683(impose)N
870(a)X
950(limit)X
1170(on)X
1302(the)X
1456(size)X
1642(of)X
1758(a)X
1837(variable-size)X
2366(array.)X
2648(Built-in)X
2984(functions)X
3378(are)X
3532(provided)X
3910(to)X
4021(append)X
555 4803(arrays)N
824(and)X
997(to)X
1106(fetch)X
1333(array)X
1565(slices.)X
1861(For)X
2028(example,)X
2413(two)X
2591(character)X
2979(arrays)X
3247(can)X
3414(be)X
3538(appended)X
3940(using)X
4181(the)X
555 4923(concatenate)N
1039(operator)X
1388(\(``+''\))X
1662(and)X
1829(an)X
1948(array)X
2174(slice)X
2379(containing)X
2814(characters)X
3233(2)X
3308(through)X
3634(15)X
3757(in)X
3859(an)X
3977(attribute)X
555 5043(named)N
2 f
836(x)X
1 f
903(can)X
1061(be)X
1176(fetched)X
1484(by)X
1604(the)X
1746(expression)X
2181(``x[2:15].'')X
755 5196(The)N
940(second)X
1242(type-constructor)X
1908(allows)X
2194(values)X
2475(of)X
2590(type)X
2791(procedure)X
3211(to)X
3321(be)X
3447(stored)X
3717(in)X
3827(an)X
3953(attribute.)X
555 5316(Procedure)N
983(values)X
1267(are)X
1423(represented)X
1905(by)X
2039(a)X
2120(sequence)X
2511(of)X
2629(POSTQUEL)X
3156(commands.)X
3658(The)X
3845(value)X
4091(of)X
4208(an)X
555 5436(attribute)N
903(of)X
1009(type)X
1201(procedure)X
1612(is)X
1702(a)X
1771(relation)X
2092(because)X
2423(that)X
2594(is)X
2684(what)X
2897(a)X
3 f
2966(retrieve)X
1 f
3314(command)X
3719(returns.)X
4059(More-)X
555 5556(over,)N
775(the)X
918(value)X
1151(may)X
1341(include)X
1649(tuples)X
1903(from)X
2114(different)X
2470(relations)X
2826(\(i.e.,)X
3024(of)X
3128(different)X
3484(types\))X
3743(because)X
4072(a)X
4139(pro-)X
555 5676(cedure)N
848(composed)X
1274(of)X
1390(two)X
3 f
1570(retrieve)X
1 f
1928(commands)X
2381(returns)X
2684(the)X
2837(union)X
3091(of)X
3206(both)X
3412(commands.)X
3912(We)X
4081(call)X
4256(a)X
555 5796(relation)N
896(with)X
1113(different)X
1491(tuple)X
1730(types)X
1979(a)X
2 f
2067(multirelation)X
1 f
2570(.)X
2663(The)X
2858(POSTGRES)X
3382(programming)X
3951(language)X
3 f
10 s
2387 6048(10)N

11 p
%%Page: 11 11
10 s 0 xH 0 xS 3 f
1 f
12 s
555 792(interface)N
925(provides)X
1288(a)X
1363(cursor-like)X
1812(mechanism,)X
2307(called)X
2570(a)X
2 f
2645(portal)X
1 f
2880(,)X
2936(to)X
3043(fetch)X
3268(values)X
3545(from)X
3763(multirelations)X
555 912([StR86].)N
931(However,)X
1331(they)X
1521(are)X
1663(not)X
1810(stored)X
2069(by)X
2189(the)X
2331(system)X
2622(\(i.e.,)X
2820(only)X
3015(relations)X
3371(are)X
3513(stored\).)X
755 1065(The)N
932(system)X
1226(provides)X
1584(two)X
1754(kinds)X
1988(of)X
2094(procedure)X
2505(type-constructors:)X
3226(variable)X
3563(and)X
3728 0.2548(parameterized.)AX
555 1185(A)N
658(variable)X
1003(procedure-type)X
1620(allows)X
1905(a)X
1982(different)X
2347(POSTQUEL)X
2870(procedure)X
3288(to)X
3396(be)X
3520(stored)X
3788(in)X
3896(each)X
4106(tuple)X
555 1305(while)N
803 0.2760(parameterized)AX
1384(procedure-types)X
2038(store)X
2259(the)X
2411(same)X
2643(procedure)X
3062(in)X
3171(each)X
3381(tuple)X
3607(but)X
3763(with)X
3967(different)X
555 1425(parameters.)N
1058(We)X
1224(will)X
1406(illustrate)X
1776(the)X
1926(use)X
2086(of)X
2198(a)X
2273(variable)X
2616(procedure-type)X
3230(by)X
3357(showing)X
3713(another)X
4033(way)X
4224(to)X
555 1545(represent)N
948(student)X
1266(majors.)X
1615(Suppose)X
1979(a)X
2 f
2061(DEPARTMENT)X
1 f
2714(relation)X
3048(was)X
3236(de\256ned)X
3558(with)X
3768(the)X
3925(following)X
555 1665(command:)N
3 f
9 s
635 1788(create)N
1 f
841(DEPARTMENT\(Name)X
1539(=)X
1598(char[25],)X
750 1878(Chair)N
928(=)X
987(char[25],)X
1267(...\))X
12 s
555 2031(A)N
667(student's)X
1057(major\(s\))X
1426(can)X
1603(then)X
1812(be)X
1946(represented)X
2433(by)X
2571(a)X
2656(procedure)X
3083(in)X
3200(the)X
2 f
3360(STUDENT)X
1 f
3817(relation)X
4154(that)X
555 2151(retrieves)N
925(the)X
1081(appropriate)X
2 f
1558(DEPARTMENT)X
1 f
2210(tuple\(s\).)X
2590(The)X
2 f
2777(Majors)X
1 f
3091(attribute)X
3450(would)X
3727(be)X
3855(declared)X
4219(as)X
555 2271(follows:)N
3 f
9 s
635 2394(create)N
1 f
841(STUDENT\(...,)X
1283(Majors)X
1505(=)X
1564(postquel,)X
1844(...\))X
12 s
555 2547(Data)N
762(type)X
2 f
953(postquel)X
1 f
1304(represents)X
1719(a)X
1787(procedure-type.)X
2443(The)X
2618(value)X
2852(in)X
2 f
2952(Majors)X
1 f
3254(will)X
3429(be)X
3545(a)X
3613(query)X
3857(that)X
4026(fetches)X
555 2667(the)N
718(department)X
1196(relation)X
1535(tuples)X
1809(that)X
1998(represent)X
2395(the)X
2557(student's)X
2948(minors.)X
3307(The)X
3501(following)X
3919(command)X
555 2787(appends)N
894(a)X
961(student)X
1263(to)X
1362(the)X
1504(database)X
1860(who)X
2049(has)X
2201(a)X
2268(double)X
2554(major)X
2803(in)X
2902(mathematics)X
3414(and)X
3577(computer)X
3965(science:)X
3 f
9 s
635 2910(append)N
1 f
881(STUDENT\()X
1251(Name)X
1441(=)X
1500(``Smith'',)X
1804(...,)X
750 3000(Majors)N
972(=)X
865 3090(``)N
3 f
(retrieve)S
1 f
1171(\(D.)X
3 f
(all)S
1 f
(\))S
3 f
883 3180(from)N
1 f
1053(D)X
3 f
1123(in)X
1 f
1201(DEPARTMENT)X
3 f
883 3270(where)N
1 f
1089(D.Name)X
1349(=)X
1408(``Math'')X
3 f
973 3360(or)N
1 f
1071(D.Name)X
1331(=)X
1390(``CS''''\))X
12 s
755 3546(A)N
849(query)X
1093(that)X
1263(references)X
1684(the)X
2 f
1827(Majors)X
1 f
2129(attribute)X
2476(returns)X
2768(the)X
2910(string)X
3153(that)X
3322(contains)X
3667(the)X
3809(POSTQUEL)X
555 3666(commands.)N
1061(However,)X
1478(two)X
1663(notations)X
2057(are)X
2216(provided)X
2599(that)X
2785(will)X
2976(execute)X
3312(the)X
3471(query)X
3731(and)X
3911(return)X
4181(the)X
555 3786(result)N
797(rather)X
1050(than)X
1244(the)X
1390(de\256nition.)X
1835(First,)X
2063(nested-dot)X
2492(notation)X
2836(implicitly)X
3240(executes)X
3600(the)X
3746(query)X
3993(as)X
4101(illus-)X
555 3906(trated)N
799(by)X
3 f
9 s
635 4029(retrieve)N
1 f
893(\(S.Name,)X
1183(S.Majors.Name\))X
3 f
635 4119(from)N
1 f
805(S)X
3 f
863(in)X
1 f
941(STUDENT)X
12 s
555 4272(which)N
820(prints)X
1069(a)X
1142(list)X
1290(of)X
1399(names)X
1674(and)X
1842(majors)X
2133(of)X
2242(students.)X
2634(The)X
2813(result)X
3056(of)X
3165(the)X
3312(query)X
3560(in)X
2 f
3664(Majors)X
1 f
3970(is)X
4063(impli-)X
555 4392(citly)N
755(joined)X
1024(with)X
1223(the)X
1369(tuple)X
1590(speci\256ed)X
1960(by)X
2084(the)X
2230(rest)X
2396(of)X
2503(the)X
2648(target-list.)X
3093(In)X
3200(other)X
3425(words,)X
3710(if)X
3796(a)X
3866(student)X
4171(has)X
555 4512(two)N
726(majors,)X
1038(this)X
1203(query)X
1448(will)X
1624(return)X
1880(two)X
2050(tuples)X
2306(with)X
2503(the)X
2 f
2647(Name)X
1 f
2897(attribute)X
3245(repeated.)X
3646(The)X
3822(implicit)X
4149(join)X
555 4632(is)N
643(performed)X
1068(to)X
1167(guarantee)X
1566(that)X
1735(a)X
1802(relation)X
2121(is)X
2209(returned.)X
755 4785(The)N
941(second)X
1244(way)X
1440(to)X
1551(execute)X
1882(the)X
2036(query)X
2291(is)X
2391(to)X
2502(use)X
2666(the)X
3 f
2820(execute)X
1 f
3161(command.)X
3625(For)X
3794(example,)X
4181(the)X
555 4905(query)N
3 f
9 s
635 5028(execute)N
1 f
881(\(S.Majors\))X
3 f
635 5118(from)N
1 f
805(S)X
3 f
863(in)X
1 f
941(STUDENT)X
3 f
635 5208(where)N
1 f
841(S.Name)X
1089(=)X
1148(``Smith'')X
12 s
555 5361(returns)N
846(a)X
913(relation)X
1232(that)X
1401(contains)X
2 f
1746(DEPARTMENT)X
1 f
2384(tuples)X
2638(for)X
2774(all)X
2895(of)X
2999(Smith's)X
3322(majors.)X
755 5514(Parameterized)N
1332(procedure-types)X
1977(are)X
2120(used)X
2320(when)X
2552(the)X
2694(query)X
2937(to)X
3036(be)X
3151(stored)X
3410(in)X
3509(an)X
3624(attribute)X
3970(is)X
4058(nearly)X
555 5634(the)N
698(same)X
921(for)X
1058(every)X
1297(tuple.)X
1563(The)X
1738(query)X
1982(parameters)X
2430(can)X
2589(be)X
2705(taken)X
2939(from)X
3151(other)X
3374(attributes)X
3758(in)X
3858(the)X
4001(tuple)X
4219(or)X
555 5754(they)N
771(may)X
987(be)X
1128(explicitly)X
1543(speci\256ed.)X
1983(For)X
2166(example,)X
2567(suppose)X
2926(an)X
3067(attribute)X
3438(in)X
2 f
3562(STUDENT)X
1 f
4026(was)X
4224(to)X
3 f
10 s
2387 6048(11)N

12 p
%%Page: 12 12
10 s 0 xH 0 xS 3 f
1 f
12 s
555 792(represent)N
932(the)X
1074(student's)X
1445(current)X
1742(class)X
1953(list.)X
2143(Given)X
2402(the)X
2544(following)X
2942(de\256nition)X
3335(for)X
3471(enrollments:)X
3 f
9 s
635 915(create)N
1 f
841(ENROLLMENT\(Student)X
1591(=)X
1650(char[25],)X
750 1005(Class)N
924(=)X
983(char[25]\))X
12 s
555 1158(Bill's)N
793(class)X
1004(list)X
1146(can)X
1304(be)X
1419(retrieved)X
1786(by)X
1906(the)X
2048(query)X
3 f
9 s
635 1281(retrieve)N
1 f
893(\(ClassName)X
1263(=)X
1322(E.Class\))X
3 f
635 1371(from)N
1 f
805(E)X
3 f
867(in)X
1 f
945(ENROLLMENT)X
3 f
635 1461(where)N
1 f
841(E.Student)X
1141(=)X
1200(``Bill'')X
12 s
555 1614(This)N
755(query)X
1002(will)X
1180(be)X
1299(the)X
1445(same)X
1671(for)X
1811(every)X
2053(student)X
2359(except)X
2639(for)X
2779(the)X
2925(constant)X
3274(that)X
3447(speci\256es)X
3806(the)X
3952(student's)X
555 1734(name.)N
755 1887(A)N
848 0.2760(parameterized)AX
1419(procedure-type)X
2026(could)X
2264(be)X
2379(de\256ned)X
2686(to)X
2785(represent)X
3162(this)X
3325(query)X
3568(as)X
3672(follows:)X
3 f
9 s
635 2010(de\256ne)N
837(type)X
1 f
987(classes)X
3 f
1205(is)X
750 2100(retrieve)N
1 f
1008(\(ClassName)X
1378(=)X
1437(E.Class\))X
3 f
750 2190(from)N
1 f
920(E)X
3 f
982(in)X
1 f
1060(ENROLLMENT)X
3 f
750 2280(where)N
1 f
956(E.Student)X
1256(=)X
1315($.Name)X
3 f
635 2370(end)N
1 f
12 s
555 2523(The)N
739(dollar-sign)X
1190(symbol)X
1507(\(``$''\))X
1781(refers)X
2034(to)X
2143(the)X
2295(tuple)X
2522(in)X
2631(which)X
2900(the)X
3051(query)X
3303(is)X
3400(stored)X
3668(\(i.e.,)X
3875(the)X
4026(current)X
555 2643(tuple\).)N
861(The)X
1044(parameter)X
1463(for)X
1608(each)X
1818(instance)X
2167(of)X
2280(this)X
2452(type)X
2651(\(i.e.,)X
2858(a)X
2934(query\))X
3218(is)X
3314(the)X
2 f
3464(Name)X
1 f
3720(attribute)X
4074(in)X
4181(the)X
555 2763(tuple)N
772(in)X
871(which)X
1130(the)X
1272(instance)X
1612(is)X
1700(stored.)X
2007(This)X
2202(type)X
2392(is)X
2480(then)X
2670(used)X
2870(in)X
2969(the)X
3 f
3111(create)X
1 f
3387(command)X
3791(as)X
3895(follows)X
3 f
9 s
635 2886(create)N
1 f
841(STUDENT\(Name)X
1383(=)X
1442(char[25],)X
1722(...,)X
750 2976(ClassList)N
1036(=)X
1095(classes\))X
12 s
555 3129(to)N
657(de\256ne)X
919(an)X
1037(attribute)X
1386(that)X
1558(represents)X
1975(the)X
2120(student's)X
2494(current)X
2794(class)X
3008(list.)X
3200(This)X
3397(attribute)X
3745(can)X
3905(be)X
4022(used)X
4224(in)X
555 3249(a)N
622(query)X
865(to)X
964(return)X
1218(a)X
1285(list)X
1427(of)X
1531(students)X
1870(and)X
2033(the)X
2175(classes)X
2466(they)X
2656(are)X
2798(taking:)X
3 f
9 s
750 3372(retrieve)N
1 f
1008(\(S.Name,)X
1298(S.ClassList.ClassName\))X
12 s
555 3525(Notice)N
839(that)X
1011(for)X
1149(a)X
1218(particular)X
2 f
1614(STUDENT)X
1 f
2055(tuple,)X
2298(the)X
2442(expression)X
2879(``)X
2 f
2943($.)X
3031(Name)X
1 f
('')S
3345(in)X
3446(the)X
3590(query)X
3835(refers)X
4080(to)X
4181(the)X
555 3645(name)N
789(of)X
894(that)X
1064(student.)X
1414(The)X
1588(symbol)X
1895(``$'')X
2095(can)X
2253(be)X
2368(thought)X
2686(of)X
2790(as)X
2894(a)X
2961(tuple-variable)X
3521(bound)X
3785(to)X
3884(the)X
4026(current)X
555 3765(tuple.)N
755 3918(Parameterized)N
1333(procedure-types)X
1979(are)X
2123(extremely)X
2535(useful)X
2796(types,)X
3048(but)X
3196(sometimes)X
3633(it)X
3712(is)X
3801(inconvenient)X
555 4038(to)N
664(store)X
885(the)X
1037(parameters)X
1493(explicitly)X
1891(as)X
2004(attributes)X
2396(in)X
2504(the)X
2655(relation.)X
3031(Consequently,)X
3617(a)X
3693(notation)X
4042(is)X
4139(pro-)X
555 4158(vided)N
799(that)X
974(allows)X
1255(the)X
1403(parameters)X
1856(to)X
1961(be)X
2082(stored)X
2347(in)X
2452(the)X
2599(procedure-type)X
3211(value.)X
3497(This)X
3697(mechanism)X
4165(can)X
555 4278(be)N
673(used)X
876(to)X
978(simulate)X
1332(attribute)X
1681(types)X
1911(that)X
2082(reference)X
2467(tuples)X
2723(in)X
2824(other)X
3048(relations.)X
3454(For)X
3613(example,)X
3990(suppose)X
555 4398(you)N
735(wanted)X
1048(a)X
1126(type)X
1327(that)X
1507(referenced)X
1949(a)X
2027(tuple)X
2255(in)X
2365(the)X
2 f
2518(DEPARTMENT)X
1 f
3167(relation)X
3497(de\256ned)X
3815(above.)X
4128(This)X
555 4518(type)N
745(can)X
903(be)X
1018(de\256ned)X
1325(as)X
1429(follows:)X
3 f
9 s
635 4641(de\256ne)N
837(type)X
1 f
987(DEPARTMENT\(int4\))X
3 f
1649(is)X
750 4731(retrieve)N
1 f
1008(\(DEPARTMENT.)X
3 f
1534(all)X
1 f
(\))S
3 f
750 4821(where)N
1 f
956(DEPARTMENT.oid)X
1568(=)X
1627($1)X
3 f
635 4911(end)N
1 f
12 s
555 5064(The)N
736(relation)X
1062(name)X
1302(can)X
1466(be)X
1587(used)X
1793(for)X
1935(the)X
2083(type)X
2279(name)X
2518(because)X
2853(relations,)X
3239(types,)X
3496(and)X
3665(procedures)X
4117(have)X
555 5184(separate)N
911(name)X
1160(spaces.)X
1499(The)X
1689(query)X
1948(in)X
2063(type)X
2 f
2269(DEPARTMENT)X
1 f
2923(will)X
3113(retrieve)X
3448(a)X
3531(speci\256c)X
3865(department)X
555 5304(tuple)N
778(given)X
1022(a)X
1095(unique)X
1387(object)X
1653(identi\256er)X
2030(\()X
2 f
2062(oid)X
1 f
2201(\))X
2262(of)X
2371(the)X
2518(tuple.)X
2788(Each)X
3010(relation)X
3334(has)X
3491(an)X
3611(implicitly)X
4016(de\256ned)X
555 5424(attribute)N
905(named)X
2 f
1190(oid)X
1 f
1341(that)X
1513(contains)X
1861(the)X
2006(tuple's)X
2295(unique)X
2584(identi\256er.)X
3007(The)X
2 f
3184(oid)X
1 f
3334(attribute)X
3683(can)X
3844(be)X
3962(accessed)X
555 5544(but)N
719(not)X
883(updated)X
1229(by)X
1365(user)X
1565(queries.)X
2 f
1931(Oid)X
1 f
2115(values)X
2401(are)X
2559(created)X
2878(and)X
3057(maintained)X
3526(by)X
3662(the)X
3820(POSTGRES)X
555 5664(storage)N
872(system)X
1178([Sto87].)X
1553(The)X
1742(formal)X
2038(argument)X
2441(to)X
2555(this)X
2733(procedure-type)X
3354(is)X
3456(the)X
3612(type)X
3816(of)X
3934(an)X
4063(object)X
555 5784(identi\256er.)N
984(The)X
1167(parameter)X
1586(is)X
1683(referenced)X
2123(inside)X
2385(the)X
2535(de\256nition)X
2936(by)X
3064(``)X
2 f
3128($n)X
1 f
('')S
3320(where)X
2 f
3587(n)X
1 f
3667(is)X
3763(the)X
3913(parameter)X
3 f
10 s
2387 6048(12)N

13 p
%%Page: 13 13
10 s 0 xH 0 xS 3 f
1 f
12 s
555 792(number.)N
755 945(An)N
903(actual)X
1165(argument)X
1560(is)X
1655(supplied)X
2012(when)X
2251(a)X
2325(value)X
2565(is)X
2660(assigned)X
3022(to)X
3128(an)X
3250(attribute)X
3603(of)X
3713(type)X
2 f
3909(DEPART-)X
555 1065(MENT)N
1 f
(.)S
898(For)X
1069(example,)X
1458(a)X
2 f
1539(COURSE)X
1 f
1945(relation)X
2278(can)X
2450(be)X
2579(de\256ned)X
2900(that)X
3083(represents)X
3511(information)X
4004(about)X
4256(a)X
555 1185(speci\256c)N
873(course)X
1148(including)X
1536(the)X
1678(department)X
2136(that)X
2305(offers)X
2553(it.)X
2679(The)X
3 f
2853(create)X
1 f
3129(command)X
3533(is:)X
3 f
9 s
635 1308(create)N
1 f
841(COURSE\(Title)X
1303(=)X
1362(char[25],)X
750 1398(Dept)N
908(=)X
967(DEPARTMENT,)X
1487(...\))X
12 s
555 1551(The)N
734(attribute)X
2 f
1085(Dept)X
1 f
1301(represents)X
1719(the)X
1865(department)X
2327(that)X
2500(offers)X
2752(the)X
2898(course.)X
3225(The)X
3403(following)X
3805(query)X
4052(adds)X
4256(a)X
555 1671(course)N
830(to)X
929(the)X
1071(database:)X
3 f
9 s
635 1794(append)N
1 f
881(COURSE\()X
750 1884(Title)N
904(=)X
963(``Introductory)X
1389(Programming'',)X
750 1974(Dept)N
908(=)X
967(DEPARTMENT\(D.oid\)\))X
3 f
635 2064(from)N
1 f
805(D)X
3 f
875(in)X
1 f
953(DEPARTMENT)X
3 f
635 2154(where)N
1 f
841(D.Name)X
1101(=)X
1160(``computer)X
1498(science'')X
12 s
555 2307(The)N
730(procedure)X
2 f
1140(DEPARTMENT)X
1 f
1779(called)X
2034(in)X
2133(the)X
2275(target-list)X
2669(is)X
2757(implicitly)X
3157(de\256ned)X
3464(by)X
3584(the)X
3726(``)X
3 f
3790(de\256ne)X
4059(type)X
1 f
4235('')X
555 2427(command.)N
1013(It)X
1101(constructs)X
1520(a)X
1592(value)X
1830(of)X
1939(the)X
2086(speci\256ed)X
2457(type)X
2652(given)X
2895(actual)X
3155(arguments)X
3585(that)X
3759(are)X
3906(type)X
4101(com-)X
555 2547(patible)N
842(with)X
1037(the)X
1179(formal)X
1460(arguments,)X
1909(in)X
2008(this)X
2171(case)X
2361(an)X
2 f
2476(int4)X
1 f
2626(.)X
755 2700(Parameterized)N
1339(procedure-types)X
1991(that)X
2168(represent)X
2553(references)X
2981(to)X
3088(tuples)X
3350(in)X
3456(a)X
3530(speci\256c)X
3855(relation)X
4181(are)X
555 2820(so)N
680(commonly)X
1132(used)X
1347(that)X
1531(we)X
1682(plan)X
1887(to)X
2001(provide)X
2334(automatic)X
2754(support)X
3081(for)X
3232(them.)X
3512(First,)X
3751(every)X
4004(relation)X
555 2940(created)N
869(will)X
1054(have)X
1271(a)X
1349(type)X
1550(that)X
1730(represents)X
2155(a)X
2233(reference)X
2627(to)X
2737(a)X
2815(tuple)X
3043(implicitly)X
3453(de\256ned)X
3770(similar)X
4072(to)X
4181(the)X
2 f
555 3060(DEPARTMENT)N
1 f
1195(type)X
1387(above.)X
1691(And)X
1882(second,)X
2199(it)X
2279(will)X
2454(be)X
2570(possible)X
2910(to)X
3010(assign)X
3275(a)X
3343(tuple-variable)X
3904(directly)X
4224(to)X
555 3180(a)N
626(tuple)X
846(reference)X
1232(attribute.)X
1629(In)X
1736(other)X
1961(words,)X
2246(the)X
2391(assignment)X
2851(to)X
2953(the)X
3098(attribute)X
2 f
3447(Dept)X
1 f
3661(that)X
3833(is)X
3924(written)X
4224(in)X
555 3300(the)N
697(query)X
940(above)X
1194(as)X
9 s
653 3423(...)N
725(Dept)X
883(=)X
942(DEPARTMENT\(D.oid\))X
1654(...)X
12 s
555 3576(can)N
713(be)X
828(written)X
1125(as)X
9 s
653 3699(...)N
725(Dept)X
883(=)X
942(D)X
1012(...)X
12 s
755 3885(Parameterized)N
1334(procedure-types)X
1981(can)X
2142(also)X
2324(be)X
2441(used)X
2643(to)X
2744(implement)X
3183(a)X
3252(type)X
3444(that)X
3615(references)X
4037(a)X
4106(tuple)X
555 4005(in)N
654(an)X
769(arbitrary)X
1125(relation.)X
1492(The)X
1666(type)X
1856(de\256nition)X
2249(is:)X
3 f
9 s
635 4128(de\256ne)N
837(type)X
1 f
987(tuple\(char[],)X
1363(int4\))X
3 f
1517(is)X
750 4218(retrieve)N
1 f
1008(\($1.all\))X
3 f
750 4308(where)N
1 f
956($1.oid)X
1156(=)X
1215($2)X
3 f
635 4398(end)N
1 f
12 s
555 4551(The)N
735(\256rst)X
914(argument)X
1308(is)X
1402(the)X
1550(name)X
1789(of)X
1898(the)X
2045(relation)X
2369(and)X
2537(the)X
2684(second)X
2980(argument)X
3373(is)X
3466(the)X
2 f
3613(oid)X
1 f
3765(of)X
3874(the)X
4021(desired)X
555 4671(tuple)N
772(in)X
871(the)X
1013(relation.)X
1380(In)X
1484(effect,)X
1752(this)X
1915(type)X
2105(de\256nes)X
2401(a)X
2468(reference)X
2851(to)X
2950(an)X
3065(arbitrary)X
3421(tuple)X
3638(in)X
3737(the)X
3879(database.)X
755 4824(The)N
938(procedure-type)X
2 f
1554(tuple)X
1 f
1779(can)X
1945(be)X
2068(used)X
2276(to)X
2383(create)X
2646(a)X
2721(relation)X
3048(that)X
3225(represents)X
3647(people)X
3936(who)X
4133(help)X
555 4944(with)N
750(fund)X
950(raising:)X
3 f
9 s
635 5067(create)N
1 f
841(VOLUNTEER\(Person)X
1511(=)X
1570(tuple,)X
750 5157(TimeAvailable)N
1200(=)X
1259(integer,)X
1495(...\))X
12 s
555 5310(Because)N
902(volunteers)X
1329(may)X
1521(be)X
1638(students,)X
2003(employees,)X
2465(or)X
2571(people)X
2854(who)X
3045(are)X
3189(neither)X
3483(students)X
3824(nor)X
3978(employ-)X
555 5430(ees,)N
729(the)X
874(attribute)X
2 f
1223(Person)X
1 f
1522(must)X
1736(contain)X
2047(a)X
2117(reference)X
2503(to)X
2605(a)X
2675(tuple)X
2895(in)X
2996(an)X
3113(arbitrary)X
3471(relation.)X
3840(The)X
4016(follow-)X
555 5550(ing)N
702(command)X
1106(appends)X
1445(all)X
1566(students)X
1905(to)X
2 f
2004(VOLUNTEER)X
1 f
2548(:)X
3 f
10 s
2387 6048(13)N

14 p
%%Page: 14 14
10 s 0 xH 0 xS 3 f
9 s
635 762(append)N
1 f
881(VOLUNTEER\()X
750 852(Person)N
964(=)X
1023(tuple\(relation\(S\),)X
1535(S.oid\)\))X
3 f
635 942(from)N
1 f
805(S)X
3 f
863(in)X
1 f
941(STUDENT*)X
12 s
555 1095(The)N
732(prede\256ned)X
1165(function)X
2 f
1513(relation)X
1 f
1845(returns)X
2139(the)X
2284(name)X
2520(of)X
2627(the)X
2772(relation)X
3093(to)X
3194(which)X
3455(the)X
3599(tuple-variable)X
2 f
4161(S)X
1 f
4235(is)X
555 1215(bound.)N
755 1368(The)N
946(type)X
2 f
1153(tuple)X
1 f
1387(will)X
1578(also)X
1774(be)X
1906(special-cased)X
2461(to)X
2577(make)X
2827(it)X
2922(more)X
3161(convenient.)X
2 f
3673(Tuple)X
1 f
3933(will)X
4124(be)X
4256(a)X
555 1488(prede\256ned)N
989(type)X
1183(and)X
1350(it)X
1432(will)X
1610(be)X
1729(possible)X
2072(to)X
2175(assign)X
2443(tuple-variables)X
3044(directly)X
3367(to)X
3470(attributes)X
3857(of)X
3964(the)X
4109(type.)X
555 1608(Consequently,)N
1132(the)X
1274(assignment)X
1731(to)X
2 f
1830(Person)X
1 f
2126(written)X
2423(above)X
2677(as)X
9 s
653 1731(...)N
725(Person)X
939(=)X
998(tuple\(relation\(S\),)X
1510(S.oid\))X
1702(...)X
12 s
555 1884(can)N
713(be)X
828(written)X
9 s
653 2007(...)N
725(Person)X
939(=)X
998(S)X
1056(...)X
12 s
555 2160(We)N
714(expect)X
991(that)X
1161(as)X
1266(we)X
1403(get)X
1546(more)X
1769(experience)X
2212(with)X
2407(POSTGRES)X
2910(applications)X
3400(that)X
3569(more)X
3791(types)X
4018(may)X
4208(be)X
555 2280(special-cased.)N
3 f
555 2496(4.)N
675(User-De\256ned)X
1237(Procedures)X
1 f
755 2649(This)N
966(section)X
1279(describes)X
1676(language)X
2063(constructs)X
2492(for)X
2643(adding)X
2944(user-de\256ned)X
3458(procedures)X
3919(to)X
4033(POST-)X
555 2769(QUEL.)N
895(User-de\256ned)X
1426(procedures)X
1883(are)X
2036(written)X
2344(in)X
2454(a)X
2532(conventional)X
3065(programming)X
3624(language)X
4007(and)X
4181(are)X
555 2889(used)N
764(to)X
872(implement)X
1318(ADT)X
1548(operators)X
1939(or)X
2052(to)X
2159(move)X
2405(a)X
2480(computation)X
2994(from)X
3213(a)X
3288(front-end)X
3678(application)X
4139(pro-)X
555 3009(cess)N
739(to)X
838(the)X
980(back-end)X
1357(DBMS)X
1652(process.)X
755 3162(Moving)N
1087(a)X
1158(computation)X
1668(to)X
1771(the)X
1917(back-end)X
2298(opens)X
2550(up)X
2673(possibilities)X
3160(for)X
3299(the)X
3444(DBMS)X
3742(to)X
3844(precompute)X
555 3282(a)N
624(query)X
869(that)X
1039(includes)X
1385(the)X
1528(computation.)X
2083(For)X
2241(example,)X
2617(suppose)X
2951(that)X
3121(a)X
3189(front-end)X
3572(application)X
4026(needed)X
555 3402(to)N
659(fetch)X
881(the)X
1028(de\256nition)X
1426(of)X
1535(a)X
1607(form)X
1823(from)X
2039(a)X
2111(database)X
2472(and)X
2640(to)X
2744(construct)X
3126(a)X
3198(main-memory)X
3773(data)X
3962(structure)X
555 3522(that)N
729(the)X
876(run-time)X
1237(forms)X
1490(system)X
1786(used)X
1991(to)X
2095(display)X
2402(the)X
2549(form)X
2765(on)X
2890(the)X
3037(terminal)X
3388(screen)X
3663(for)X
3804(data)X
3993(entry)X
4219(or)X
555 3642(display.)N
914(A)X
1016(conventional)X
1547(relation)X
1875(database)X
2240(design)X
2524(would)X
2797(store)X
3017(the)X
3168(form)X
3387(components)X
3884(\(e.g.,)X
4111(titles)X
555 3762(and)N
727(\256eld)X
931(de\256nitions)X
1370(for)X
1515(different)X
1880(types)X
2116(of)X
2229(\256elds)X
2470(such)X
2679(as)X
2792(scalar)X
3050(\256elds,)X
3315(table)X
3536(\256elds,)X
3801(and)X
3973(graphics)X
555 3882(\256elds\))N
819(in)X
918(many)X
1156(different)X
1512(relations.)X
1916(An)X
2057(example)X
2408(database)X
2764(design)X
3039(is:)X
3 f
9 s
635 4005(create)N
1 f
841(FORM\(FormName,)X
1433(...\))X
3 f
635 4140(create)N
1 f
841(FIELDS\(FormName,)X
1473(FieldName,)X
750 4230(Origin,)N
974(Height,)X
1206(Width,)X
750 4320(FieldKind,)N
1078(...\))X
3 f
635 4455(create)N
1 f
841(SCALARFIELD\(FormName,)X
750 4545(FieldName,)N
1106(DataType,)X
750 4635(DisplayFormat,)N
1218(...\))X
3 f
635 4770(create)N
1 f
841(TABLEFIELD\(FormName,)X
750 4860(FieldName,)N
1106(NumberOfRows,)X
1618(...\))X
3 f
635 4995(create)N
1 f
841(TABLECOLUMNS\(FormName,)X
750 5085(FieldName,)N
1106(ColumnName,)X
1546(Height,)X
750 5175(Width,)N
966(FieldKind,)X
1294(...\))X
12 s
555 5328(The)N
734(query)X
982(that)X
1155(fetches)X
1456(the)X
1602(form)X
1817(from)X
2032(the)X
2178(database)X
2538(must)X
2753(execute)X
3076(at)X
3174(least)X
3379(one)X
3546(query)X
3793(per)X
3944(table)X
4160(and)X
555 5448(sort)N
727(through)X
1054(the)X
1200(return)X
1458(tuples)X
1716(to)X
1819(construct)X
2200(the)X
2346(main-memory)X
2920(data)X
3109(structure.)X
3522(This)X
3721(operation)X
4112(must)X
555 5568(take)N
745(less)X
918(than)X
1113(two)X
1286(seconds)X
1619(for)X
1760(an)X
1880(interactive)X
2317(application.)X
2823(Conventional)X
3371(relational)X
3765(DBMS's)X
4133(can-)X
555 5688(not)N
702(satisfy)X
977(this)X
1140(time)X
1336(constraint.)X
3 f
10 s
2387 6048(14)N

15 p
%%Page: 15 15
10 s 0 xH 0 xS 3 f
1 f
12 s
755 792(Our)N
933(approach)X
1314(to)X
1417(solving)X
1728(this)X
1895(problem)X
2244(is)X
2336(to)X
2439(move)X
2681(the)X
2827(computation)X
3337(that)X
3510(constructs)X
3928(the)X
4074(main-)X
555 912(memory)N
904(data)X
1093(structure)X
1457(to)X
1559(the)X
1704(database)X
2063(process.)X
2426(Suppose)X
2778(the)X
2923(procedure)X
2 f
3335(MakeForm)X
1 f
3789(built)X
3993(the)X
4138(data)X
555 1032(structure)N
918(given)X
1158(the)X
1302(name)X
1537(of)X
1643(a)X
1712(form.)X
1973(Using)X
2228(the)X
2372 0.2760(parameterized)AX
2944(procedure-type)X
3552(mechanism)X
4016(de\256ned)X
555 1152(above)N
817(an)X
940(attribute)X
1294(can)X
1460(be)X
1583(added)X
1845(to)X
1952(the)X
2 f
2102(FORM)X
1 f
2400(relation)X
2726(that)X
2902(stores)X
3157(the)X
3306(form)X
3524(representation)X
4101(com-)X
555 1272(puted)N
793(by)X
913(this)X
1076(procedure.)X
1533(The)X
1707(commands)X
3 f
9 s
635 1395(de\256ne)N
837(type)X
1 f
987(formrep)X
3 f
1237(is)X
750 1485(retrieve)N
1 f
1008(\(rep)X
1142(=)X
1201(MakeForm\($.FormName\)\))X
3 f
635 1575(end)N
635 1665(addattribute)N
1 f
1041(\(FormName,)X
1429(...,)X
750 1755(FormDataStructure)N
1324(=)X
1383(formrep\))X
3 f
635 1845(to)N
1 f
713(FORM)X
12 s
555 1998(de\256ne)N
814(the)X
956(procedure)X
1365(type)X
1555(and)X
1718(add)X
1881(an)X
1996(attribute)X
2342(to)X
2441(the)X
2 f
2583(FORM)X
1 f
2874(relation.)X
755 2151(The)N
940(advantage)X
1366(of)X
1481(this)X
1655(representation)X
2236(is)X
2335(that)X
2515(POSTGRES)X
3029(can)X
3198(precompute)X
3688(the)X
3841(answer)X
4147(to)X
4256(a)X
555 2271(procedure-type)N
1164(attribute)X
1512(and)X
1677(store)X
1890(it)X
1970(in)X
2071(the)X
2215(tuple.)X
2482(By)X
2620(precomputing)X
3180(the)X
3323(main-memory)X
3894(data)X
4080(struc-)X
555 2391(ture)N
729(representation,)X
1323(the)X
1465(form)X
1676(can)X
1834(be)X
1949(fetched)X
2257(from)X
2468(the)X
2610(database)X
2966(by)X
3086(a)X
3153(single-tuple)X
3632(retrieve:)X
3 f
9 s
635 2514(retrieve)N
1 f
893(\(x)X
971(=)X
1030(FORM.FormDataStructure\))X
3 f
635 2604(where)N
1 f
841(FORM.FormName)X
1409(=)X
1468(``foo'')X
12 s
555 2757(The)N
732(real-time)X
1108(constraint)X
1515(to)X
1617(fetch)X
1836(and)X
2001(display)X
2305(a)X
2374(form)X
2587(can)X
2747(be)X
2864(easily)X
3115(met)X
3286(if)X
3371(all)X
3494(the)X
3638(program)X
3990(must)X
4203(do)X
555 2877(is)N
653(a)X
730(single-tuple)X
1219(retrieve)X
1548(to)X
1657(fetch)X
1883(the)X
2034(data)X
2228(structure)X
2598(and)X
2770(call)X
2943(the)X
3094(library)X
3384(procedure)X
3802(to)X
3910(display)X
4221(it.)X
555 2997(This)N
772(example)X
1145(illustrates)X
1566(the)X
1730(advantage)X
2167(of)X
2292(moving)X
2631(a)X
2719(computation)X
3246(\(i.e.,)X
3465(constructing)X
3986(a)X
4074(main-)X
555 3117(memory)N
900(data)X
1085(structure\))X
1478(from)X
1689(the)X
1831(application)X
2284(process)X
2596(to)X
2695(the)X
2837(DBMS)X
3132(process.)X
755 3270(A)N
855(procedure)X
1271(is)X
1366(de\256ned)X
1680(to)X
1786(the)X
1935(system)X
2233(by)X
2359(specifying)X
2790(the)X
2938(names)X
3214(and)X
3383(types)X
3616(of)X
3726(the)X
3874(arguments,)X
555 3390(the)N
700(return)X
957(type,)X
1173(the)X
1317(language)X
1691(it)X
1771(is)X
1861(written)X
2160(in,)X
2285(and)X
2450(where)X
2711(the)X
2855(source)X
3132(and)X
3297(object)X
3559(code)X
3767(is)X
3857(stored.)X
4166(For)X
555 3510(example,)N
930(the)X
1072(de\256nition)X
3 f
9 s
635 3633(de\256ne)N
837(procedure)X
1 f
1171(AgeInYears\(date\))X
3 f
1705(returns)X
1 f
1951(int4)X
3 f
750 3723(is)N
1 f
816(\(language)X
1118(=)X
1177(``C'',)X
1357(\256lename)X
1623(=)X
1682(``AgeInYears''\))X
12 s
555 3876(de\256nes)N
860(a)X
936(procedure)X
2 f
1354(AgeInYears)X
1 f
1835(that)X
2013(takes)X
2244(a)X
2 f
2320(date)X
1 f
2519(value)X
2761(and)X
2933(returns)X
3233(the)X
3384(age)X
3551(of)X
3663(the)X
3813(person.)X
4149(The)X
555 3996(argument)N
947(and)X
1114(return)X
1372(types)X
1603(are)X
1749(speci\256ed)X
2119(using)X
2355(POSTGRES)X
2861(types.)X
3139(When)X
3396(the)X
3541(procedure)X
3953(is)X
4044(called,)X
555 4116(it)N
644(is)X
743(passed)X
1034(the)X
1187(arguments)X
1623(in)X
1733(the)X
1886(POSTGRES)X
2400(internal)X
2730(representation)X
3310(for)X
3456(the)X
3608(type.)X
3856(We)X
4024(plan)X
4224(to)X
555 4236(allow)N
796(procedures)X
1245(to)X
1347(be)X
1465(written)X
1765(in)X
1866(several)X
2165(different)X
2523(languages)X
2934(including)X
3324(C)X
3414(and)X
3579(Lisp)X
3776(which)X
4037(are)X
4181(the)X
555 4356(two)N
723(languages)X
1132(being)X
1370(used)X
1570(to)X
1669(implement)X
2106(the)X
2248(system.)X
755 4509(POSTGRES)N
1267(stores)X
1524(the)X
1675(information)X
2163(about)X
2410(a)X
2486(procedure)X
2903(in)X
3010(the)X
3160(system)X
3459(catalogs)X
3807(and)X
3978(dynami-)X
555 4629(cally)N
797(loads)X
1053(the)X
1224(object)X
1513(code)X
1748(when)X
2009(it)X
2116(is)X
2233(called)X
2517(in)X
2645(a)X
2741(query.)X
3061(The)X
3264(following)X
3691(query)X
3963(uses)X
4181(the)X
2 f
555 4749(AgeInYears)N
1 f
1027(procedure)X
1436(to)X
1535(retrieve)X
1854(the)X
1996(names)X
2266(and)X
2429(ages)X
2624(of)X
2728(all)X
2849(people)X
3130(in)X
3229(the)X
3371(example)X
3722(database:)X
3 f
9 s
635 4872(retrieve)N
1 f
893(\(P.Name,)X
865 4962(Age)N
1003(=)X
1062(AgeInYears\(P.Birthdate\)\))X
3 f
635 5052(from)N
1 f
805(P)X
3 f
863(in)X
1 f
941(PERSON*)X
12 s
755 5238(User-de\256ned)N
1282(procedures)X
1735(can)X
1900(also)X
2086(take)X
2278(tuple-variable)X
2845(arguments.)X
3324(For)X
3487(example,)X
3868(the)X
4016(follow-)X
555 5358(ing)N
708(command)X
1118(de\256nes)X
1420(a)X
1493(procedure,)X
1932(called)X
2 f
2193(Comp)X
1 f
2422(,)X
2476(that)X
2651(takes)X
2879(an)X
2999(EMPLOYEE)X
3540(tuple)X
3762(and)X
3930(computes)X
555 5478(the)N
698(person's)X
1048(compensation)X
1607(according)X
2011(to)X
2110(some)X
2337(formula)X
2666(that)X
2835(involves)X
3185(several)X
3482(attributes)X
3865(in)X
3964(the)X
4106(tuple)X
555 5598(\(e.g.,)N
774(the)X
916(employee's)X
1384(status,)X
1651(job)X
1798(title,)X
1997(and)X
2160(salary\):)X
3 f
10 s
2387 6048(15)N

16 p
%%Page: 16 16
10 s 0 xH 0 xS 3 f
9 s
635 762(de\256ne)N
837(procedure)X
1 f
1171(Comp\(EMPLOYEE\))X
3 f
750 852(returns)N
1 f
996(int4)X
3 f
1126(is)X
1 f
1192(\(language)X
1494(=)X
1553(``C'',)X
750 942(\256lename)N
1016(=)X
1075(``Comp1''\))X
12 s
555 1095(Recall)N
830(that)X
1003(a)X
1073 0.2760(parameterized)AX
1647(procedure-type)X
2257(is)X
2348(de\256ned)X
2658(for)X
2797(each)X
3001(relation)X
3323 0.2813(automatically)AX
3876(so)X
3988(the)X
4133(type)X
2 f
555 1215(EMPLOYEE)N
1 f
1085(represents)X
1514(a)X
1596(reference)X
1994(to)X
2108(a)X
2190(tuple)X
2422(in)X
2536(the)X
2 f
2693(EMPLOYEE)X
1 f
3222(relation.)X
3603(This)X
3812(procedure)X
4235(is)X
555 1335(called)N
810(in)X
909(the)X
1051(following)X
1449(query:)X
3 f
9 s
635 1458(retrieve)N
1 f
893(\(E.Name,)X
1187(Compensation)X
1621(=)X
1680(Comp\(E\)\))X
3 f
635 1548(from)N
1 f
805(E)X
3 f
867(in)X
1 f
945(EMPLOYEE)X
12 s
555 1701(The)N
730(C)X
819(function)X
1165(that)X
1335(implements)X
1810(this)X
1974(procedure)X
2384(is)X
2473(passed)X
2754(a)X
2822(data)X
3008(structure)X
3370(that)X
3540(contains)X
3886(the)X
4029(names,)X
555 1821(types,)N
806(and)X
969(values)X
1239(of)X
1343(the)X
1485(attributes)X
1868(in)X
1967(the)X
2109(tuple.)X
755 1974(User-de\256ned)N
1279(procedures)X
1729(can)X
1891(be)X
2010(passed)X
2294(tuples)X
2552(in)X
2655(other)X
2881(relations)X
3241(that)X
3414(inherit)X
3693(the)X
3838(attributes)X
4224(in)X
555 2094(the)N
720(relation)X
1062(declared)X
1435(as)X
1561(the)X
1725(argument)X
2135(to)X
2256(the)X
2420(procedure.)X
2899(For)X
3078(example,)X
3475(the)X
2 f
3639(Comp)X
1 f
3914(procedure)X
555 2214(de\256ned)N
862(for)X
998(the)X
2 f
1140(EMPLOYEE)X
1 f
1655(relation)X
1974(can)X
2132(be)X
2247(passed)X
2527(a)X
2 f
2594(STUDEMP)X
1 f
3055(tuple)X
3272(as)X
3376(in)X
3 f
9 s
635 2337(retrieve)N
1 f
893(\(SE.Name,)X
865 2427(Compensation)N
1299(=)X
1358(Comp\(SE\)\))X
3 f
635 2517(from)N
1 f
805(SE)X
3 f
907(in)X
1 f
985(STUDEMP)X
12 s
555 2670(because)N
2 f
884(STUDEMP)X
1 f
1345(inherits)X
1658(data)X
1843(attributes)X
2226(from)X
2 f
2437(EMPLOYEE)X
1 f
2928(.)X
755 2823(The)N
943(arguments)X
1382(to)X
1495(procedures)X
1955(that)X
2138(take)X
2337(relation)X
2670(tuples)X
2938(as)X
3056(arguments)X
3495(must)X
3720(be)X
3849(passed)X
4143(in)X
4256(a)X
555 2943(self-describing)N
1166(data)X
1366(structure)X
1742(because)X
2085(the)X
2241(procedure)X
2664(can)X
2836(be)X
2965(passed)X
3259(tuples)X
3527(from)X
3752(different)X
4122(rela-)X
555 3063(tions.)N
829(Attributes)X
1253(inherited)X
1635(from)X
1861(other)X
2098(relations)X
2469(may)X
2674(be)X
2804(in)X
2918(different)X
3289(positions)X
3674(in)X
3787(the)X
3943(relations.)X
555 3183(Moreover,)N
1005(the)X
1170(values)X
1463(passed)X
1766(for)X
1925(the)X
2090(same)X
2335(attribute)X
2704(name)X
2960(may)X
3173(be)X
3311(different)X
3690(types)X
3940(\(e.g.,)X
4181(the)X
555 3303(de\256nition)N
951(of)X
1058(an)X
1176(inherited)X
1546(attribute)X
1895(may)X
2088(be)X
2206(overridden)X
2650(with)X
2848(a)X
2918(different)X
3277(type\).)X
3550(The)X
3727(self-describing)X
555 3423(data)N
741(structure)X
1103(is)X
1192(a)X
1260(list)X
1403(of)X
1507(arguments,)X
1956(one)X
2119(per)X
2266(attribute)X
2612(in)X
2711(the)X
2853(tuple)X
3070(to)X
3169(be)X
3284(passed,)X
3588(with)X
3783(the)X
3925(following)X
555 3543(structure)N
9 s
635 3666(\(AttrName,)N
983(AttrType,)X
1283(AttrValue\))X
12 s
555 3819(The)N
731(procedure)X
1142(code)X
1350(will)X
1526(have)X
1734(to)X
1835(search)X
2107(the)X
2250(list)X
2393(to)X
2493(\256nd)X
2667(the)X
2810(desired)X
3113(attribute.)X
3508(A)X
3602(library)X
3884(of)X
3989(routines)X
555 3939(is)N
650(provided)X
1022(that)X
1197(will)X
1377(hide)X
1573(this)X
1742(structure)X
2109(from)X
2326(the)X
2474(programmer.)X
3028(The)X
3208(library)X
3495(will)X
3675(include)X
3989(routines)X
555 4059(to)N
654(get)X
796(the)X
938(type)X
1128(and)X
1291(value)X
1524(of)X
1628(an)X
1743(attribute)X
2089(given)X
2327(the)X
2469(name)X
2702(of)X
2806(the)X
2948(attribute.)X
3342(For)X
3499(example,)X
3874(the)X
4016(follow-)X
555 4179(ing)N
702(code)X
908(fetches)X
1205(the)X
1347(value)X
1580(of)X
1684(the)X
2 f
1826(Birthdate)X
1 f
2214(attribute:)X
9 s
635 4302(GetValue\(``Birthdate''\))N
12 s
555 4455(The)N
734(problem)X
1084(of)X
1193(variable)X
1533(argument)X
1925(lists)X
2108(arises)X
2355(in)X
2458(all)X
2583(object-oriented)X
3195(programming)X
3747(languages)X
4160(and)X
555 4575(similar)N
847(solutions)X
1218(are)X
1360(used.)X
755 4728(The)N
943(model)X
1222(for)X
1372(procedure)X
1795(inheritance)X
2262(is)X
2364(nearly)X
2643(identical)X
3014(to)X
3127(method)X
3453(inheritance)X
3919(in)X
4031(object-)X
555 4848(oriented)N
924(programming)X
1501(languages)X
1939([StB86].)X
2344(Procedure)X
2787(inheritance)X
3269(uses)X
3487(the)X
3657(data)X
3870(inheritance)X
555 4968(hierarchy)N
948(and)X
1116(similar)X
1413(inheritance)X
1871(rules)X
2087(except)X
2368(that)X
2542(a)X
2614(rule)X
2793(is)X
2886(provided)X
3256(to)X
3359(select)X
3607(a)X
3678(procedure)X
4091(when)X
555 5088(an)N
687(inheritance)X
1157(con\257ict)X
1487(arises.)X
1795(For)X
1969(example,)X
2361(suppose)X
2711(that)X
2897(a)X
2 f
2981(Comp)X
1 f
3250(procedure)X
3675(was)X
3864(de\256ned)X
4187(for)X
2 f
555 5208(STUDENT)N
1 f
994(as)X
1098(well)X
1288(as)X
1392(for)X
2 f
1528(EMPLOYEE)X
1 f
2019(.)X
2091(The)X
2265(de\256nition)X
2658(of)X
2762(the)X
2904(second)X
3195(procedure)X
3604(might)X
3853(be:)X
3 f
9 s
635 5331(de\256ne)N
837(procedure)X
1 f
1171(Comp\(STUDENT\))X
3 f
750 5421(returns)N
1 f
996(int4)X
3 f
1126(is)X
1 f
1192(\(language)X
1494(=)X
1553(``C'',)X
750 5511(\256lename)N
1016(=)X
1075(``Comp2''\))X
12 s
555 5664(A)N
655(con\257ict)X
975(arises)X
1225(when)X
1464(the)X
1613(query)X
1863(on)X
2 f
1990(STUDEMP)X
1 f
2458(above)X
2719(is)X
2814(executed)X
3188(because)X
3524(the)X
3673(system)X
3970(does)X
4176(not)X
555 5784(know)N
802(which)X
2 f
1071(Comp)X
1 f
1333(procedure)X
1751(to)X
1859(call)X
2032(\(i.e.,)X
2239(the)X
2390(one)X
2562(for)X
2 f
2707(EMPLOYEE)X
1 f
3231(or)X
3344(the)X
3495(one)X
3667(for)X
2 f
3812(STUDENT)X
1 f
4243(\).)X
3 f
10 s
2387 6048(16)N

17 p
%%Page: 17 17
10 s 0 xH 0 xS 3 f
1 f
12 s
555 792(The)N
737(procedure)X
1154(called)X
1417(is)X
1513(selected)X
1856(from)X
2075(among)X
2369(the)X
2518(procedures)X
2971(that)X
3147(take)X
3339(a)X
3413(tuple)X
3637(from)X
3855(the)X
4004(relation)X
555 912(speci\256ed)N
929(by)X
1057(the)X
1207(actual)X
1469(argument)X
2 f
1864(STUDEMP)X
1 f
2332(or)X
2443(any)X
2613(relation)X
2939(from)X
3157(which)X
3423(attributes)X
3813(in)X
3919(the)X
4068(actual)X
555 1032(argument)N
943(are)X
1085(inherited)X
1452(\(e.g.,)X
2 f
1671(PERSON)X
1 f
2029(,)X
2 f
2077(EMPLOYEE)X
1 f
2568(,)X
2616(and)X
2 f
2779(STUDENT)X
1 f
3210(\).)X
755 1185(Each)N
982(relation)X
1311(has)X
1472(an)X
2 f
1596(inheritance)X
2068(precedence)X
2540(list)X
1 f
2691(\(IPL\))X
2932(that)X
3110(is)X
3207(used)X
3416(to)X
3524(resolve)X
3835(the)X
3986(con\257ict.)X
555 1305(The)N
740(list)X
893(is)X
992(constructed)X
1471(by)X
1602(starting)X
1926(with)X
2131(the)X
2283(relation)X
2612(itself)X
2839(and)X
3012(doing)X
3265(a)X
3342(depth-\256rst)X
3771(search)X
4051(up)X
4181(the)X
555 1425(inheritance)N
1016(hierarchy)X
1412(starting)X
1733(with)X
1936(the)X
2086(\256rst)X
2267(relation)X
2594(speci\256ed)X
2968(in)X
3075(the)X
3 f
3225(inherits)X
1 f
3540(-clause.)X
3893(For)X
4058(exam-)X
555 1545(ple,)N
721(the)X
3 f
863(inherits)X
1 f
1178(-clause)X
1475(for)X
2 f
1611(STUDEMP)X
1 f
2072(is)X
9 s
653 1668(...)N
3 f
725(inherits)X
1 f
979(\(STUDENT,)X
1367(EMPLOYEE\))X
12 s
555 1821(and)N
718(its)X
833(IPL)X
1001(is)X
9 s
635 1944(\(STUDEMP,)N
1031(STUDENT,)X
653 2034(EMPLOYEE,)N
1073(PERSON\))X
2 f
12 s
555 2187(PERSON)N
1 f
955(appears)X
1291(after)X
2 f
1510(EMPLOYEE)X
1 f
2043(rather)X
2309(than)X
2516(after)X
2 f
2734(STUDENT)X
1 f
3190(where)X
3466(it)X
3561(would)X
3842(appear)X
4140(in)X
4256(a)X
555 2307(depth-\256rst)N
975(search)X
1246(because)X
1576(both)X
2 f
1772(STUDENT)X
1 f
2212(and)X
2 f
2376(EMPLOYEE)X
1 f
2892(inherit)X
3168(attributes)X
3551(from)X
2 f
3762(PERSON)X
1 f
4144(\(see)X
555 2427(\256gure)N
812(1\).)X
973(In)X
1086(other)X
1317(words,)X
1608(all)X
1737(but)X
1892(the)X
2042(last)X
2208(occurrence)X
2663(of)X
2775(a)X
2850(relation)X
3177(in)X
3284(the)X
3434(depth-\256rst)X
3861(ordering)X
4219(of)X
555 2566(the)N
697(hierarchy)X
1085(is)X
1173(deleted.)X
9 s
1476 2528(4)N
12 s
755 2719(When)N
1018(a)X
1094(procedure)X
1512(is)X
1609(called)X
1873(and)X
2045(passed)X
2334(a)X
2410(tuple)X
2636(as)X
2749(the)X
2900(\256rst)X
3081(argument,)X
3501(the)X
3651(actual)X
3914(procedure)X
555 2839(invoked)N
903(is)X
1005(the)X
1160(\256rst)X
1346(de\256nition)X
1752(found)X
2013(with)X
2221(the)X
2376(same)X
2611(name)X
2857(when)X
3102(the)X
3257(procedures)X
3716(that)X
3898(take)X
4096(argu-)X
555 2959(ments)N
810(from)X
1022(the)X
1165(relations)X
1522(in)X
1622(the)X
1765(ILP)X
1934(of)X
2039(the)X
2182(argument)X
2571(are)X
2713(searched)X
3074(in)X
3173(order.)X
3448(In)X
3552(the)X
3694(example)X
4045(above,)X
555 3079(the)N
700(Comp)X
962(procedure)X
1374(de\256ned)X
1684(for)X
2 f
1823(STUDENT)X
1 f
2265(is)X
2356(called)X
2614(because)X
2945(there)X
3164(is)X
3254(no)X
3376(procedure)X
3787(named)X
2 f
4070(Comp)X
1 f
555 3199(de\256ned)N
862(for)X
2 f
998(STUDEMP)X
1 f
1459(and)X
2 f
1622(STUDENT)X
1 f
2061(is)X
2149(the)X
2291(next)X
2481(relation)X
2800(in)X
2899(the)X
3041(IPL.)X
755 3352(The)N
943 0.2548(implementation)AX
1586(of)X
1703(this)X
1879(procedure)X
2301(selection)X
2681(rule)X
2868(is)X
2969(relatively)X
3371(easy.)X
3627(Assume)X
3973(that)X
4155(two)X
555 3472(system)N
846(catalogs)X
1186(are)X
1328(de\256ned:)X
9 s
635 3595(PROCDEF\(ProcName,)N
1323(ArgName,)X
1643(ProcId\))X
635 3685(IPL\(RelationName,)N
1219(IPLEntry,)X
1523(SeqNo\))X
12 s
555 3838(where)N
2 f
828(PROCDEF)X
1 f
1304(has)X
1470(an)X
1599(entry)X
1835(for)X
1985(each)X
2199(procedure)X
2621(de\256ned)X
2941(and)X
2 f
3117(IPL)X
1 f
3298(maintains)X
3710(the)X
3865(precedence)X
555 3958(lists)N
742(for)X
886(all)X
1015(relations.)X
1427(The)X
1608(attributes)X
1998(in)X
2 f
2104(PROCDEF)X
1 f
2573(represent)X
2957(the)X
3106(procedure)X
3522(name,)X
3786(the)X
3935(argument)X
555 4078(type)N
749(name,)X
1010(and)X
1177(the)X
1323(unique)X
1613(identi\256er)X
1989(for)X
2129(the)X
2275(procedure)X
2688(code)X
2898(stored)X
3161(in)X
3264(another)X
3580(catalog.)X
3934(The)X
4111(attri-)X
555 4198(butes)N
792(in)X
2 f
901(IPL)X
1 f
1079(represent)X
1466(the)X
1618(relation,)X
1971(an)X
2095(IPL)X
2272(entry)X
2503(for)X
2648(the)X
2799(relation,)X
3151(and)X
3323(the)X
3474(sequence)X
3860(number)X
4187(for)X
555 4318(that)N
731(entry)X
959(in)X
1064(the)X
1212(IPL)X
1386(of)X
1496(the)X
1644(relation.)X
2017(With)X
2240(these)X
2468(two)X
2642(catalogs,)X
3012(the)X
3160(query)X
3409(to)X
3514(\256nd)X
3693(the)X
3841(correct)X
4139(pro-)X
555 4438(cedure)N
836(for)X
972(the)X
1114(call)X
9 s
635 4561(Comp\(STUDEMP\))N
12 s
555 4733(is)N
9 s
619 4695(5)N
12 s
10 f
555 5022(hhhhhhhhhhhhhhhhhhhhhhhh)N
9 s
1 f
727 5142(4)N
12 s
801 5180(We)N
972(are)X
1127(using)X
1372(a)X
1452(rule)X
1639(that)X
1821(is)X
1922(similar)X
2227(to)X
2339(the)X
2494(rule)X
2681(for)X
2830(the)X
2985(new)X
3182(Common)X
3577(Lisp)X
3785(object)X
4058(model)X
555 5300([Boe86].)N
945(It)X
1031(is)X
1122(actually)X
1455(slightly)X
1771(more)X
1996(complicated)X
2495(than)X
2688(described)X
3084(here)X
3277(in)X
3379(order)X
3609(to)X
3710(eliminate)X
4096(some)X
555 5420(nasty)N
782(cases)X
1009(that)X
1178(arise)X
1384(when)X
1616(there)X
1833(are)X
1975(cycles)X
2240(in)X
2339(the)X
2481(inheritance)X
2934(hierarchy.)X
9 s
727 5540(5)N
12 s
787 5578(This)N
982(query)X
1225(uses)X
1414(a)X
1481(QUEL-style)X
1975(aggregate)X
2374(function.)X
3 f
10 s
2387 6048(17)N

18 p
%%Page: 18 18
10 s 0 xH 0 xS 3 f
9 s
635 762(retrieve)N
1 f
893(\(P.ProcId\))X
3 f
635 852(from)N
1 f
805(P)X
3 f
863(in)X
1 f
941(PROCDEF,)X
1301(I)X
3 f
1343(in)X
1 f
1421(IPL)X
3 f
635 942(where)N
1 f
841(P.ProcName)X
1221(=)X
1280(``Comp'')X
3 f
671 1032(and)N
1 f
805(I.RelationName)X
1281(=)X
1340(``STUDEMP'')X
3 f
671 1122(and)N
1 f
805(I.IPLEntry)X
1133(=)X
1192(P.ArgName)X
3 f
671 1212(and)N
1 f
805(I.SeqNo)X
1061(=)X
1120(MIN\(I.SeqNo)X
3 f
750 1302(by)N
1 f
844(I.RelationName)X
3 f
750 1392(where)N
1 f
974(I.IPLEntry)X
1302(=)X
1361(P.ArgName)X
3 f
815 1482(and)N
1 f
949(P.ProcName)X
1329(=)X
1388(``Comp'')X
3 f
815 1572(and)N
1 f
949(I.RelationName)X
1425(=)X
1484(``STUDEMP''\))X
12 s
555 1725(This)N
750(query)X
993(can)X
1151(be)X
1266(precomputed)X
1793(to)X
1892(speed)X
2135(up)X
2255(procedure)X
2664(selection.)X
755 1878(In)N
862(summary,)X
1271(the)X
1416(major)X
1668(changes)X
2005(required)X
2352(to)X
2453(support)X
2767(procedure)X
3178(inheritance)X
3633(is)X
3723(1\))X
3829(allow)X
4069(tuples)X
555 1998(as)N
664(arguments)X
1094(to)X
1198(procedures,)X
1673(2\))X
1782(de\256ne)X
2046(a)X
2118(representation)X
2693(for)X
2834(variable)X
3173(argument)X
3565(lists,)X
3772(and)X
3939(3\))X
4047(imple-)X
555 2118(ment)N
792(a)X
879(procedure)X
1308(selection)X
1695(mechanism.)X
2226(This)X
2441(extension)X
2854(to)X
2973(the)X
3135(relational)X
3543(model)X
3827(is)X
3934(relatively)X
555 2238(straightforward)N
1172(and)X
1335(only)X
1530(requires)X
1864(a)X
1931(small)X
2164(number)X
2482(of)X
2586(changes)X
2920(to)X
3019(the)X
3161(DBMS)X
3456 0.2366(implementation.)AX
3 f
555 2454(5.)N
675(Other)X
945(Data)X
1166(Models)X
1 f
755 2607(This)N
969(section)X
1285(compares)X
1697(the)X
1858(POSTGRES)X
2380(data)X
2584(model)X
2867(to)X
2984(semantic,)X
3393(functional,)X
3850(and)X
4031(object-)X
555 2727(oriented)N
895(data)X
1080(models.)X
755 2880(Semantic)N
1139(and)X
1303(functional)X
1718(data)X
1903(models)X
2205([Dae85,)X
2528(HaM81,)X
2861(Mye80,)X
3173(Shi81,)X
3437(SmS77,)X
3754(Zan83])X
4056(do)X
4176(not)X
555 3000(provide)N
879(the)X
1027(\257exibility)X
1432(provided)X
1804(by)X
1930(the)X
2078(model)X
2348(described)X
2746(here.)X
2989(They)X
3216(cannot)X
3502(easily)X
3756(represent)X
4138(data)X
555 3120(with)N
750(uncertain)X
1133(structure)X
1494(\(e.g.,)X
1713(objects)X
2010(with)X
2205(shared)X
2480(subobjects)X
2910(that)X
3079(have)X
3285(different)X
3641(types\).)X
755 3273(Modeling)N
1159(ideas)X
1387(oriented)X
1733(toward)X
2030(complex)X
2392(objects)X
2694([HaL82,)X
3033(LoP83])X
3350(cannot)X
3636(deal)X
3826(with)X
4026(objects)X
555 3393(that)N
727(have)X
935(a)X
1004(variety)X
1298(of)X
1404(shared)X
1681(subobjects.)X
2137(POSTGRES)X
2642(uses)X
2833(procedures)X
3281(to)X
3382(represent)X
3761(shared)X
4038(subob-)X
555 3513(jects)N
767(which)X
1037(does)X
1248(not)X
1405(have)X
1621(limitation)X
2031(on)X
2161(the)X
2313(types)X
2550(of)X
2664(subobjects)X
3104(that)X
3283(are)X
3435(shared.)X
3744(Moreover,)X
4181(the)X
555 3633(nested-dot)N
998(notation)X
1356(allows)X
1649(convenient)X
2114(access)X
2402(to)X
2519(selected)X
2872(subobjects,)X
3344(a)X
3429(feature)X
3739(not)X
3904(present)X
4224(in)X
555 3753(these)N
777(systems.)X
755 3906(Several)N
1085(proposals)X
1494(have)X
1717(been)X
1940(made)X
2190(to)X
2305(support)X
2633(data)X
2834(models)X
3152(that)X
3337(contain)X
3661(non-\256rst)X
4026(normal)X
555 4026(form)N
787(relations)X
1164([Bae86,)X
1482(Dae86,)X
1773(Dee86].)X
2149(The)X
2344(POSTGRES)X
2868(data)X
3074(model)X
3359(can)X
3537(be)X
3672(used)X
3892(to)X
4011(support)X
555 4146(non-\256rst)N
910(normal)X
1213(form)X
1430(relations)X
1792(with)X
1993(procedure-types.)X
2667(Consequently,)X
3250(POSTGRES)X
3759(seems)X
4024(to)X
4128(con-)X
555 4266(tain)N
724(a)X
791(superset)X
1130(of)X
1234(the)X
1376(capabilities)X
1840(of)X
1944(these)X
2166(proposals.)X
755 4419(Object-oriented)N
1386(data)X
1573(models)X
1877([Ane86,)X
2205(CoM84])X
2556(have)X
2764(modeling)X
3154(constructs)X
3570(to)X
3671(deal)X
3857(with)X
4053(uncer-)X
555 4539(tain)N
740(structure.)X
1165(For)X
1338(example,)X
1729(GemStone)X
2175(supports)X
2540(union)X
2798(types)X
3040(which)X
3314(can)X
3487(be)X
3617(used)X
3832(to)X
3946(represent)X
555 4659(subobjects)N
996(that)X
1176(have)X
1393(different)X
1760(types)X
1998([CoM84].)X
2438(Sharing)X
2772(of)X
2886(subobjects)X
3326(is)X
3424(represented)X
3902(by)X
4032(storing)X
555 4779(the)N
708(subobjects)X
1149(as)X
1264(separate)X
1614(records)X
1931(and)X
2104(connecting)X
2561(them)X
2788(to)X
2897(a)X
2974(parent)X
3249(object)X
3519(with)X
3724(pointer-chains.)X
555 4899(Precomputed)N
1091(procedure)X
1504(values)X
1778(will,)X
1980(in)X
2083(our)X
2239(opinion,)X
2585(make)X
2822(POSTGRES)X
3329(performance)X
3843(competitive)X
555 5019(with)N
757(pointer-chain)X
1302(proposals.)X
1748(The)X
1928(preformance)X
2445(problem)X
2796(with)X
2997(pointer-chains)X
3578(will)X
3758(be)X
3879(most)X
4096(obvi-)X
555 5139(ous)N
722(when)X
963(an)X
1087(object)X
1356(is)X
1453(composed)X
1876(of)X
1989(a)X
2065(large)X
2291(number)X
2618(of)X
2731(subobjects.)X
3218(POSTGRES)X
3730(will)X
3913(avoid)X
4160(this)X
555 5259(problem)N
906(because)X
1241(the)X
1389(pointer-chain)X
1933(is)X
2027(represented)X
2501(as)X
2611(a)X
2684(relation)X
3009(and)X
3178(the)X
3326(system)X
3623(can)X
3787(use)X
3945(all)X
4072(of)X
4181(the)X
555 5379(query)N
800(processing)X
1237(and)X
1402(storage)X
1706(structure)X
2069(techniques)X
2507(available)X
2882(in)X
2983(the)X
3127(system)X
3420(to)X
3521(represent)X
3900(it.)X
4027(Conse-)X
555 5499(quently,)N
896(POSTGRES)X
1403(uses)X
1596(a)X
1667(different)X
2027(approach)X
2408(that)X
2580(supports)X
2932(the)X
3077(same)X
3302(modeling)X
3693(capabilities)X
4160(and)X
555 5619(an)N
670 0.2548(implementation)AX
1300(that)X
1469(may)X
1659(have)X
1865(better)X
2109(performance.)X
3 f
10 s
2387 6048(18)N

19 p
%%Page: 19 19
10 s 0 xH 0 xS 3 f
1 f
12 s
755 792(Finally,)N
1077(the)X
1219(POSTGRES)X
1722(data)X
1907(model)X
2172(could)X
2410(claim)X
2649(to)X
2748(be)X
2863(object-oriented,)X
3495(though)X
3786(we)X
3922(prefer)X
4176(not)X
555 912(to)N
662(use)X
821(this)X
991(word)X
1219(because)X
1555(few)X
1730(people)X
2018(agree)X
2258(on)X
2385(exactly)X
2695(what)X
2913(it)X
2998(means.)X
3323(The)X
3504(data)X
3696(model)X
3968(provides)X
555 1032(the)N
699(same)X
923(capabilities)X
1388(as)X
1493(an)X
1609(object-oriented)X
2218(model,)X
2508(but)X
2656(it)X
2735(does)X
2936(so)X
3046(without)X
3365(discarding)X
3791(the)X
3934(relational)X
555 1152(model)N
820(and)X
983(without)X
1301(having)X
1587(to)X
1686(introduce)X
2074(a)X
2141(new)X
2325(confusing)X
2728(terminology.)X
3 f
555 1368(6.)N
675(Summary)X
1 f
755 1521(The)N
937(POSTGRES)X
1448(data)X
1641(model)X
1914(uses)X
2111(the)X
2261(ideas)X
2491(of)X
2603(abstract)X
2935(data)X
3128(types,)X
3387(data)X
3580(of)X
3692(type)X
3890(procedure,)X
555 1641(and)N
723(inheritance)X
1181(to)X
1284(extend)X
1569(the)X
1715(relational)X
2108(model.)X
2425(These)X
2683(ideas)X
2909(can)X
3071(be)X
3190(used)X
3394(to)X
3497(simulate)X
3852(a)X
3923(variety)X
4219(of)X
555 1761(semantic)N
934(data)X
1131(modeling)X
1530(concepts)X
1902(\(e.g.,)X
2132(aggregation)X
2622(and)X
2796 0.2167(generalization\).)AX
3458(In)X
3573(addition,)X
3948(the)X
4101(same)X
555 1881(ideas)N
785(can)X
951(be)X
1074(used)X
1282(to)X
1389(support)X
1709(complex)X
2073(objects)X
2378(that)X
2555(have)X
2769(unpredicatable)X
3369(composition)X
3877(and)X
4048(shared)X
555 2001(subobjects.)N
3 f
2202 2394(References)N
1 f
555 2700([AdL80])N
1035(M.)X
1184(E.)X
1307(Adiba)X
1582(and)X
1761(B.)X
1889(G.)X
2022(Lindsay,)X
2396(``Database)X
2853(Snapshots'',)X
2 f
3370(Proc.)X
3621(6th)X
3783(Int.)X
3953(Conf.)X
4203(on)X
1035 2820(Very)N
1241(Large)X
1494(Databases)X
1 f
1899(,)X
1947(Montreal,)X
2348(Canada,)X
2685(Oct.)X
2872(1980,)X
3112(86-91.)X
555 2973([Ane86])N
1035(T.)X
1166(Anderson)X
1587(and)X
1774(et.)X
1892(al.,)X
2058(``PROTEUS:)X
2623(Objectifying)X
3157(the)X
3322(DBMS)X
3640(User)X
3868(Interface'',)X
2 f
1035 3093(Proc.)N
1270(Int.)X
1425(Wkshp)X
1705(on)X
1825(Object-Oriented)X
2480(Database)X
2872(Systems)X
1 f
(,)S
3224(Asilomar,)X
3630(CA,)X
3811(Sep.)X
4003(1986.)X
555 3246([Bae86])N
1035(D.)X
1198(Batory)X
1530(and)X
1739(et.al.,)X
2021(``GENESIS:)X
2576(A)X
2715(Recon\256gurable)X
3373(Database)X
3796(Management)X
1035 3366(System'',)N
1430(Tech.)X
1671(Rep.)X
1874(86-07,)X
2146(Dept.)X
2381(of)X
2485(Comp.)X
2768(Sci.,)X
2963(Univ.)X
3203(of)X
3307(Texas)X
3561(at)X
3655(Austin,)X
3959(1986.)X
555 3519([Boe86])N
1035(D.)X
1164(B.)X
1288(Bobrow)X
1633(and)X
1808(et.al.,)X
2056(``COMMONLOOPS:)X
2927(Merging)X
3293(Lisp)X
3499(and)X
3673(Object-Oriented)X
1035 3639(Programming'',)N
2 f
1676(Proc.)X
1911(1986)X
2127(ACM)X
2354(OOPSLA)X
2735(Conf.)X
1 f
2946(,)X
2994(Portland,)X
3368(OR,)X
3549(Sep.)X
3741(1986,)X
3981(17-29.)X
555 3792([Cod70])N
1035(E.)X
1146(F.)X
1251(Codd,)X
1511(``A)X
1672(Relational)X
2096(Model)X
2374(of)X
2481(Data)X
2690(for)X
2829(Large)X
3081(Shared)X
3375(Data)X
3584(Bases'',)X
2 f
3923(Comm.)X
4224(of)X
1035 3912(the)N
1177(ACM)X
1 f
1380(,)X
1428(JUNE)X
1686(1970.)X
555 4065([CoM84])N
1035(G.)X
1166(Copeland)X
1573(and)X
1750(D.)X
1881(Maier,)X
2173(``Making)X
2574(Smalltalk)X
2981(a)X
3061(Database)X
3451(System'',)X
2 f
3859(Proc.)X
4107(1984)X
1035 4185(ACM-ACM-SIGMOD)N
1900(Conf.)X
2138(on)X
2261(Management)X
2790(of)X
2892(Data)X
3111(Int.)X
3269(Conf.)X
3507(on)X
3630(the)X
3775(Mgt.)X
3981(of)X
4083(Data)X
1 f
(,)S
1035 4305(June)N
1235(1984.)X
555 4458([Dae86])N
1035(P.)X
1142(Dadam)X
1450(and)X
1619(et.al.,)X
1861(``A)X
2024(DBMS)X
2325(Prototype)X
2729(to)X
2834(Support)X
3168(Extended)X
3562(NF2)X
3762(Relations:)X
4182(An)X
1035 4578(Integrated)N
1452(View)X
1686(on)X
1808(Flat)X
1984(Tables)X
2267(and)X
2432(Hierarchies'',)X
2 f
2990(Proc.)X
3226(ACM-ACM-SIGMOD)X
4088(Conf.)X
1035 4698(on)N
1155(Management)X
1681(of)X
1780(Data)X
1996(Conf.)X
2231(on)X
2351(Mgt.)X
2554(of)X
2653(Data)X
1 f
(,)S
2893(Washington,)X
3406(DC,)X
3587(May)X
3787(1986.)X
555 4851([Dae85])N
1035(U.)X
1181(Dayal)X
1464(and)X
1655(et.al.,)X
1919(``A)X
2104(Knowledge-Oriented)X
2968(Database)X
3373(Management)X
3928(System'',)X
2 f
1035 4971(Proc.)N
1298(Islamorada)X
1792(Conference)X
2288(on)X
2436(Large)X
2716(Scale)X
2976(Knowledge)X
3460(Base)X
3698(and)X
3893(Reasoning)X
1035 5091(Systems)N
1 f
(,)S
1387(Feb.)X
1579(1985.)X
555 5244([Dee86])N
1035(U.)X
1154(Deppisch)X
1543(and)X
1707(et.al.,)X
1944(``A)X
2102(Storage)X
2421(System)X
2729(for)X
2866(Complex)X
3244(Objects'',)X
2 f
3651(Proc.)X
3887(Int.)X
4043(Wkshp)X
1035 5364(on)N
1155(Object-Oriented)X
1810(Database)X
2202(Systems)X
1 f
(,)S
2554(Asilomar,)X
2960(CA,)X
3141(Sep.)X
3333(1986.)X
555 5517([Gae84])N
1035(H.)X
1183(Garcia-Molina)X
1805(and)X
1998(et.al.,)X
2264(``DataPatch:)X
2805(Integrating)X
3282(Inconsistent)X
3801(Copies)X
4122(of)X
4256(a)X
1035 5637(Database)N
1433(after)X
1655(a)X
1743(Partition'',)X
2208(Tech.)X
2470(Rep.)X
2694(Tech.)X
2956(Rep.#)X
3228(304,)X
3441(Dept.)X
3697(Elec.)X
3937(Eng.)X
4160(and)X
1035 5757(Comp.)N
1318(Sci.,)X
1513(Princeton,)X
1930(NJ,)X
2084(1984.)X
3 f
10 s
2387 6048(19)N

20 p
%%Page: 20 20
10 s 0 xH 0 xS 3 f
1 f
12 s
555 792([HaM81])N
1035(M.)X
1191(Hammer)X
1575(and)X
1761(D.)X
1901(McLeod,)X
2298(``Database)X
2762(Description)X
3258(with)X
3476(SDM'',)X
2 f
3817(ACM-Trans.)X
1035 912(Database)N
1427(Systems)X
1 f
(,)S
1779(Sep.)X
1971(1981.)X
555 1065([HaL82])N
1035(R.)X
1162(Haskins)X
1510(and)X
1688(R.)X
1815(Lorie,)X
2086(``On)X
2305(Extending)X
2739(the)X
2895(Functions)X
3312(of)X
3430(a)X
3511(Relational)X
3946(Database)X
1035 1185(System'',)N
2 f
1479(Proc.)X
1762(1982)X
2026(ACM-ACM-SIGMOD)X
2935(Conf.)X
3218(on)X
3386(Management)X
3960(of)X
4107(Data)X
1035 1305(Conference)N
1503(on)X
1623(Management)X
2149(of)X
2248(Data)X
1 f
(,)S
2488(Orlando,)X
2851(FL,)X
3011(JUNE)X
3269(1982.)X
555 1458([HSW75])N
1035(G.)X
1168(Held,)X
1418(M.)X
1566(R.)X
1693(Stonebraker)X
2197(and)X
2375(E.)X
2497(Wong,)X
2795(``INGRES)X
3244(--)X
3347(A)X
3455(Relational)X
3891(Data)X
4112(Base)X
1035 1578(System'',)N
2 f
1430(Proc.)X
1665(AFIPS)X
1946(AFIPS)X
2227(Nat.)X
2414(Computer)X
2822(Conf.)X
1 f
3033(,)X
3081(1975,)X
3321(409-416.)X
555 1731([Kue84])N
1035(R.)X
1148(Kung)X
1386(and)X
1549(et.al.,)X
1785(``Heuristic)X
2226(Search)X
2512(in)X
2611(Database)X
2988(Systems'',)X
2 f
3420(Proc.)X
3655(1st)X
3791(International)X
1035 1851(Workshop)N
1448(on)X
1568(Expert)X
1849(Data)X
2065(Bases)X
1 f
(,)S
2337(Kiowah,)X
2689(SC,)X
2854(Oct.)X
3041(1984.)X
555 2004([LoP83])N
1035(R.)X
1197(Lorie)X
1480(and)X
1693(W.)X
1882(Plouffee,)X
2306(``Complex)X
2796(Objects)X
3163(and)X
3375(Their)X
3657(Use)X
3879(in)X
4027(Design)X
1035 2124(Transactions'',)N
2 f
1647(Proc.)X
1890(Engineering)X
2398(Design)X
2702(Applications)X
3221(Stream)X
3525(of)X
3632(ACM-IEEE)X
4107(Data)X
1035 2244(Base)N
1246(Week)X
1 f
1455(,)X
1503(San)X
1671(Jose,)X
1884(CA,)X
2065(May)X
2265(1983.)X
555 2397([Mye80])N
1035(J.)X
1130(Myloupoulis)X
1655(and)X
1828(et.al.,)X
2074(``A)X
2241(Language)X
2655(Facility)X
2984(for)X
3130(Designing)X
3559(Database)X
3946(Intensive)X
1035 2517(Applications'',)N
2 f
1639(ACM-Trans.)X
2145(Database)X
2537(Systems)X
1 f
(,)S
2889(JUNE)X
3147(1980.)X
555 2670([Row86])N
1035(L.)X
1153(A.)X
1281(Rowe,)X
1564(``A)X
1732(Shared)X
2034(Object)X
2326(Hierarchy'',)X
2 f
2834(Proc.)X
3080(Int.)X
3246(Wkshp)X
3537(on)X
3668(Object-Oriented)X
1035 2790(Database)N
1427(Systems)X
1 f
(,)S
1779(Asilomar,)X
2185(CA,)X
2366(Sep.)X
2558(1986.)X
555 2943([Shi81])N
1035(D.)X
1155(Shipman,)X
1547(``The)X
1787(Functional)X
2225(Model)X
2502(and)X
2667(the)X
2811(Data)X
3019(Language)X
3425(Daplex'',)X
2 f
3817(ACM-Trans.)X
1035 3063(Database)N
1427(Systems)X
1 f
(,)S
1779(Mar.)X
1987(1981.)X
555 3216([SmS77])N
1035(J.)X
1128(Smith)X
1390(and)X
1560(D.)X
1684(Smith,)X
1969(``Database)X
2417(Abstractions:)X
2961(Aggregation)X
3473(and)X
3643(Generalization'',)X
2 f
1035 3336(ACM)N
1262(Trans.)X
1533(Database)X
1925(Systems)X
1 f
(,)S
2277(JUNE)X
2535(1977.)X
555 3489([StB86])N
1035(M.)X
1209(Ste\256k)X
1498(and)X
1702(D.)X
1860(G.)X
2018(Bobrow,)X
2416(``Object-Oriented)X
3171(Programming:)X
3791(Themes)X
4160(and)X
1035 3609(Variations'',)N
2 f
1548(The)X
1716(AI)X
1831(Magazine)X
2234(6)X
1 f
(,)S
2330(4)X
2402(\(Winter)X
2726(1986\),)X
2998(40-62.)X
555 3762([Ste84])N
1035(M.)X
1181(R.)X
1306(Stonebraker)X
1808(and)X
1984(et.)X
2102(al.,)X
2257(``QUEL)X
2614(as)X
2731(a)X
2811(Data)X
3030(Type'',)X
2 f
3353(Proc.)X
3601(1984)X
3829(ACM-ACM-)X
1035 3882(SIGMOD)N
1426(Conf.)X
1661(on)X
1781(Management)X
2307(of)X
2406(Data)X
2622(Conf.)X
2857(on)X
2977(the)X
3119(Mgt.)X
3322(of)X
3421(Data)X
1 f
(,)S
3661(May)X
3861(1984.)X
555 4035([Sto85])N
1035(M.)X
1207(R.)X
1358(Stonebraker,)X
1909(``Triggers)X
2361(and)X
2562(Inference)X
2988(in)X
3125(Data)X
3369(Base)X
3618(Systems'',)X
2 f
4088(Proc.)X
1035 4155(Islamorada)N
1516(Conference)X
1999(on)X
2134(Large)X
2402(Scale)X
2649(Knowledge)X
3120(Base)X
3345(and)X
3527(Reasoning)X
3971(Systems)X
1 f
(,)S
1035 4275(Feb.)N
1227(1985.)X
555 4428([StR86])N
1035(M.)X
1186(R.)X
1316(Stonebraker)X
1823(and)X
2004(L.)X
2129(A.)X
2264(Rowe,)X
2554(``The)X
2810(Design)X
3124(of)X
3246(POSTGRES'',)X
2 f
3855(Proc.)X
4107(1986)X
1035 4548(ACM-ACM-SIGMOD)N
1900(Conf.)X
2138(on)X
2261(Management)X
2790(of)X
2892(Data)X
3111(Int.)X
3269(Conf.)X
3507(on)X
3630(the)X
3775(Mgt.)X
3981(of)X
4083(Data)X
1 f
(,)S
1035 4668(June)N
1235(1986.)X
555 4821([Sto86a])N
1035(M.)X
1172(R.)X
1288(Stonebraker,)X
1804(``Object)X
2152(Management)X
2682(in)X
2784(POSTGRES)X
3290(Using)X
3546(Procedures'',)X
2 f
4088(Proc.)X
1035 4941(Int.)N
1190(Wkshp)X
1470(on)X
1590(Object-Oriented)X
2245(Database)X
2637(Systems)X
1 f
(,)S
2989(Asilomar,)X
3395(CA,)X
3576(Sep.)X
3768(1986.)X
555 5094([Sto86b])N
1035(M.)X
1182(R.)X
1308(Stonebraker,)X
1835(``Inclusion)X
2295(of)X
2412(New)X
2630(Types)X
2902(in)X
3014(Relational)X
3448(Data)X
3667(Base)X
3891(Systems'',)X
2 f
1035 5214(Proc.)N
1270(Second)X
1572(Int.)X
1727(Conf.)X
1962(on)X
2082(Data)X
2298(Base)X
2509(Eng.)X
1 f
2688(,)X
2736(Los)X
2904(Angeles,)X
3267(CA,)X
3448(Feb.)X
3640(1986.)X
555 5367([Sto87])N
1035(M.)X
1195(R.)X
1334(Stonebraker,)X
1874(``POSTGRES)X
2468(Storage)X
2812(System'',)X
3233(Submitted)X
3679(for)X
3841(publication,)X
1035 5487(1987.)N
555 5640([Zan83])N
1035(C.)X
1170(Zaniola,)X
1535(``The)X
1795(Database)X
2194(Language)X
2620(GEM'',)X
2 f
2967(Proc.)X
3224(1983)X
3462(ACM-ACM-SIGMOD)X
1035 5760(Conf.)N
1275(on)X
1400(Management)X
1931(of)X
2035(Data)X
2256(Conference)X
2728(on)X
2852(Management)X
3382(of)X
3485(Data)X
1 f
(,)S
3729(San)X
3901(Jose,)X
4118(CA.,)X
3 f
10 s
2387 6048(20)N

21 p
%%Page: 21 21
10 s 0 xH 0 xS 3 f
1 f
12 s
1035 792(May)N
1235(1983.)X
3 f
10 s
2387 6048(21)N

21 p
%%Trailer
xt

xs
