Postgres 4.1
Postgres 4.1
Editado por
Thomas Lockhart
PostgreSQL
"!#
$
&%'()*+#,.-'(
/$021436587:9;=<?>
36@A9:B9(C
0EDGFH7I@ 5KJ3KL*MONONOPRQ4NS$9(/021436587I91TU 0WVHXU8YZ9:[H9U 0ED\]9:B3.T7:0W^D
_
Tabla de contenidos
`ab8cdeaf]ghg ghghghgAghghgAghgAghghghg ghghghgAghghghg ghghghgAghghgAgAghghghgAghgAghgAghghghg ghghghgAghghghg ghghghghgAghgAghgAghghghgAgAghghgAghghghg ghghghgAghghghg ghghghgAghgAghgAghghghg ghghghgAghghghghg ghghghgAghgAghgAghghghgAgAghghgAghghghg ghghghgAghg
??
ig$jkclmonaqp]b8cmrstgAghg ghghghgAghghghg ghghghgAghghgAgAghghghgAgAghghgAghghghg ghghghgAghghghgAgAghghghgAghgAghgAghghghg ghghghgAghghghg ghghghgAghghgAgAghghghgAghgAghgAghghghg ghghghghgAghghghg ghghghgAghgAghgAghghghgAgAghghgAghghghg ghg
??
u(v=wx
,8 xyvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv
??
z8!] {q|} v6vAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
~
'(2RO
vhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv
,.G,
Ro
2 xvv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
,8 O v vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
??
%)* x ( v vAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhv ??
R,. xovhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv
| "RG)* x wx( )*qG ,8 G vAvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
'(RW,.$ 2R
vhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
v " x R"|"!# vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv ??
??
vAvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
)* x R vAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv
)* vAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
x x v6vAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
)* ) x $ vhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
??
x v vhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
(v Ro%H vAvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv
)*GO,%H vAvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhv ??
??
x $O%H vhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
'(O$,.RZ%H vhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv
??
R
"%)*q%H vhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
~ x %H vAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv
)*R,%H vhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
w e xko k-
x
k2
.2G vv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
(v
v6vAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv ??
??
#G",8H,8
( x ,8 vAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
+ x vhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv
x )*{,8 vhvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
+)*{G,8 v6vAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv ??
+
q x R$+
R)* vAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv ??
w w vvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
w ow % vAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
(v= x ,8 x G vAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
x ,8 x H!]# vhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAv ??
x ,8 x G)*,8G vhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
??
" x x ,8 x v6vhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv ??
x ,8 x
,8'(("k vAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv
x ,8 x
)*R vv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv ??
x ,8 x )*{,8 vhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
x ,8 x w v vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
(v x
x
R vhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv ??
x ,8R+ x vAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
x ,8 x v6vhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
+
q,8 x $ vhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
x $ kw vhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv ??
(v=wx
,8 x
G
vhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
vhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
??
$ w4x
,8 vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
v RO,8. vhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv
v kG x ,8 vAvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
??
x
x
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
h
v
A
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
h
v
A
v
h
v
A
v
h
v
v
)*R|
,8 ,8,. make
??
"q#,8 vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv ??
x R,8,8 x vhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv
u v 2RO
,8 x
GHR)* v vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
??
vw4x $,8 xvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv
x G
,8)* x $ vAvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
??
,8G
)* x R
wx ,8 xv6vhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
u(vw4x $,8 x x x( vhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhv
x ,8,8 x
qG vhvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
wx 2R,8 x
+GO$ vhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
??
2 x
$ v vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
v x x
R)*
qOI,8 ,. xv6v vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv
??
x
G
x vhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
wx ,. x
vv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv
postmaster
??
2 x
R x vhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
(v HG
vhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv
x R ,.$,. x
2 $O vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
)*+
O vAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
x R
,8,.G2 vAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
x ,8 x vhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
(v Z)* x ] vhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
(v x
,. v6vhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
??
#,8,8 x R x
vhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
(v x
x
q
R vAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhv
G,8 x
x 2
R vhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
,.,8G2]o
vhvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
??
R ,8,8 x
x
$2
R vhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv ??
2G
G O$,. xvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv
(v %H$)* x ]
q)* vhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
q x ,8
qR)*2R vhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
??
G)*|,. x o,8 x x
G x R vAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv ??
,8 x
)* x I v6v vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv
v ,8 ,8 x
|
q
R vAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
v G
$
G
. xv6vhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhv ??
??
x R x
. xvvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
R ,8R Oo
q
,8R v vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhv ??
,8G
)* x RqGR(
G
G2 xkvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
x
xqv6vhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv
,.'(
+
q,.)*,8 x ,8 ,8+
$ )* vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
v R+
x v6vhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv ??
??
xk(v v ?vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v v vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v v u?vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v &v vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v v vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v v u?vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v &v vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v v vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v v u?vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v &v vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v v u?vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v v vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v uv u?vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
xk(v u&v vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
x (v v vhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
x u(v vhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
x u(v vhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
x u(v u
vhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
x u(v v vhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
2RG o~ R v vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
2RG o~ R v vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
2RG o~ R v uvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
%)* x vhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
iiigjkcl4mqna
rtrmdym$nt
rgAghghghgAgAghghgAghghghg ghghghgAghghghg ghghghghgAghgAghgAghghghg ghghghgAghghghg ghghghgAghghgAgAghghghgAghgAghgAghghghg ghghghgAghghghghg ghghghgAghgAghgAghghghg ghghghgAghghghg ghghghgAghg
??
u(v
R,8 vAv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv
x ,8R+
G,.R O
2RG vhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhv??
v "R x &"!#=G
vhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
)*'($,.GG"R x ROI vAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
??
%
"2R)*
vhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
., ,8G
x
] IR x
|
# w4~ ! vhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv
??
)*o
HRG)* v6vhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
w( x ,8 x vhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv
wv
??
(v v6vhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
x ,8 x
x x o ~
R vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vh??
v
x ,8 x
HI,8 ,8 x
x R vhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhv ??
??
,8G2)* x x ,8 x
x R vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv ??
vAvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhv
R ,8,8 x 2 x ,8 x vhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
x ,8 x ,.$
|,. x )* x
vhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv ??
x ,8 x
%"OG
vhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
libpq
x ,8 x
,8 x
vhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
libpq
x
x
6
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
h
v
A
v
h
v
vAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
Z|
R
??
)*|
HI)* vhvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
(v ~ x
x vhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv
x R w4x ,.$,8 xvAvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhv ??
|
q v vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
x ,8 x
x x o ~
R vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
x ,8 x
HI,8 ,8 x
q$ x R v6vhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
R ,8,8 x 2 x ,8 x vhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
x ,8 x ,.$
|,. x )* x
vhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
v
R,8 vhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
)* x
v6vAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv ??
??
HI)* vAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
wx( )*,8 x
q x ,8o
,8)* x
R,. vhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv
vw4x R $ ~ vhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
??
%"O x
vhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
,8,8 x + x
k vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv
wx 2R,8 x x vhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
,8'(+
x( O,8 x|v6vhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
v vhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
v ~ w4x R $, vhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
~
x '( ~ w4x R $,. vAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
??
E x '(qRG2 ~ vAvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhv ??
2 x '(]
vhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
w )*R x ~ vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv
??
#
x '(q
vhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
x(x ,8R x R'(]$ vhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv
w 2 x o!] x
,8 x R'( v6vhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
??
)* x
R v vAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
x R'( x(x ,8 xvvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhv
??
2 x # GRG,.R v6vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
x 2 x RR'( ~
w
vhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv ??
Postgres
OR'( $
x vAvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
u(vw4x R $o
)*,8 x #2 vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv
??
]g$jkcl4mnakab8mrrt
mntrghgAghghgAghghghg ghghghgAghghghg ghghghgAghghgAghgAghghghg ghghghgAghghghg ghghghgAghghgAgAghghghgAgAghghgAghghghg ghghghgAghghghg ghghghghgAghgAghgAghghghg ghghghgAghghghg ghghghgAghghgAgAghg
??
v
x RqR
vAvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv
)*R vhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv ??
(v
x
q$+,8,8GK,8+ x G x $
"!# v vhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvh??
v
??
,8)* x
x ,8 x vAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAv ??
)*G2R,8 x $,8 x " x vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv
??
#q$o
RO$
,.,8 xvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
)*
|
R
vhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
x ,8
")*$
vhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv ??
HI,8 R vhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv
??
(v
$R x v6vhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhv
(v R)*,8 x x {R,.o
x x ")*$
~
R v6vhvAvhvhvhv vhvhvhvAvh??
v
??
x
x
x
,8
&
,. q )* )*OI
R)*,8 v ??
)* x {,8 vAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv
R)*,8 x x {G,8
x R ! x vhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv??
+%".+
w )*)* x R,8 x q ]
vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
(v ,8 x x
~ $,.- x
v vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
wx
,.,8 x*vhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
??
R,. vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
x
h
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
A
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
A
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
A
v
v
%
RG
)*R+
q x I vhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
(v HG(|
q2R
G vhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
??
v
)*R x v6vAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv
vw4gcc
x R $,.G+
~ ,8-
x
vAvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhv ??
)*R
,8'( ~ wvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
)* x
x vhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhv ??
??
,8 )*)* x
vhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
)* x
+
q ,8 xvAvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv
??
HI)* v6vhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv ??
v ,8'(
x vIvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhv
??
R ,8R Oo
qo x vKvAvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhv ??
,8'( vhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv
~ vhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAv ??
??
]ig$c4trsmghgAgAghghghgAghghghg ghghghgAghghgAgAghghghgAghgAghgAghghghg ghghghgAghghghg ghghghgAghghgAgAghghghghgAgAghghgAghghghg ghghghgAghghghg ghghghgAghgAghgAghghghg ghghghgAghghghg ghghghgAghghgAghgAghghghgAgAghghgAghghghg ghghghgAghghghg ghghghgAghg
??
u(v H!]# vAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv
??
]
q ,8 x vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
)*
$
|
G ,8 x
R vhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv
,8 x x
G
R ,8 x $ vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv ??
??
# x
I"!]# vAvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv
v
R,8 vAv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv ??
??
2RG x ,8R+
q
R,8R vAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
(v )* x
vhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv
x( x
x R x v vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
??
HI,8 ,8 x
G x wx GO,8R]
vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
)* x x
x ~
$ vhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv
(v # x R
q,8 x R vAvhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
??
x & x R,8
vhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
x ,8R vhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv
G,8 x
x x
o,.2 v vhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhv ??
??
# x x
x q,.q,8 x x 2R x ,8 vhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
x $&o x ,8 vhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv
,8,8 x $)* x
,8 x 2 R"# % vhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
x x x x R,8 vAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhv ??
,.R G,8 x G vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
~ O
vAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
??
2
x ,8 x G
,8 x I x R vhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
(v ,8GK,8
x
(+
"!#e x vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv
??
kG x ,8 v vhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhv ??
h
v
A
v
A
v
h
v
h
v
h
v
A
v
A
v
h
v
h
v
A
v
h
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
h
v
A
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
h
v
A
v
h
v
A
v
h
v
h
v
h
v
v
h
v
v
Z )*,8
??
%)*q%"O
H|I x )* vhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
|,8,.R.O2R,8+ x
vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhv ??
]iig$]$fns8abgAghghghg ghghghgAghgAghgAghghghgAgAghghgAghghghg ghghghgAghghghg ghghghgAghgAghgAghghghghg ghghghgAghghghg ghghghgAghghgAgAghghghgAgAghghgAghghghg ghghghgAghghghg ghghghgAghgAghghgAghghghg ghghghgAghghghg ghghghgAghghgAgAghghghgAgAg
??
uv
q
,8'(("'(O vhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhv ??
x $'(O vAvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv
??
kR vhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhv ??
u(v
2R
G vAvhvAvAvhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv
x ,8 x
GOH
vhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
??
%)* x
# x G x x )* vvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv ??
%)* x
# x R " vAvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAv ??
v ,. )* x ,8 xvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhv ??
,8 ) x $,. xvhvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhv ??
G,.R
,. )* x ,8 xvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
x R
,. )* x ,8 xvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv
??
k,8 x
,8 )* x $,. x vhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhv vhv ??
x
y
x
h
v
A
v
A
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
h
v
A
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
h
v
v
h
v
h
v
h
v
A
v
h
v
h
v
A
v
A
v
h
v
h
v
h
v
A
v
h
v
v
+)*
x GO$,. x
,8)*G2$+O (v ov vAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvAvhvAvhv ??
??
kGO)* x R vAvhvhvhv vhvhvhvAvhvAvhvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhv ??
+'(O$)* x $ vAvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhvAvhvAvhvhvhv vhvhvhvAvhv
~
vAv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvAvhvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvhvAvhvhvhv vhvhvhvAvhvhvhv vhvhvhvAvhvhvAvAvhvhvhvAvhv ??
??
Resumen
R
G2
x $)* x x GG)* x
x ,.$o
)*
,8 x
~ -
G. x
q)* ,8'(
,8 x ,.G . x RqGI
$'( x
x G x x
R,.)*,8 v ,. x
x I]"!# ""!# H x RO
$
x RO x 2$,.,8 x ,8,8
G
]
x 2 x
R v GH!]#G+ x
,8 x
x x 2 ,.
R,8
] x
~ GO- v
Captulo 1. Introduction
,. )* x () x
$Ok
G(2R)*
)* x x )* x
$2G
RR
"!]#?O x )* x R
$
x * x GO
x
xe~ -
G v "!#*R]
x R
G v v ,8
(( ,8'(
HR x O$-
R x
GOq
$
x )* ,.$q ,8
]G x ,8
,8Ro
w4x
,8 x
x G
e
x e
] ,8 x y
w4x
R
,8 x
k
)*
( $ x
,8 xk ,. x o x ,8o $"# w4x , v
Qu es Postgres?
#Z)*$Z
&)* x x )* x R
~
|$Z$,. x RO$
,. x G ~ "h
x x )*
q,. x x x x ,8G,.,8 x
qG,. x ,. xkx )*
Z
k,. x x x ]
x G,. ,8 v x )*$,8)*,8],8
G2Hqqq x ,8
xx )*{GO,8o
x x
x ,8
x $
,8OG,8{GG2,. x
$
])* x RO$ ,8'( v R x )* x R,= x ,8
G
)*
x
G,.
(o$,8,8 x R O$+
,8
]
q
R v )*
G,8 x 2R y)*
G x K)*,8
$
R x v
H x )*,8)*e]'(])* x ,8 x $
G2R)*,8
R)*{ x '($,.)* e
,8
)*)* x ,8 x
],8,.$,. x v 2R
Gq ,8 x x ,.
,8 x
x ,. x ,8O$2 x R,8 e,. x ,8R$
,. x G,8 x x k
x
q
x x
G $,.)* x qGH2R)*
,8
'( x ,8
x ,. x
R|,.$O,8RR,.$ x R x ,8
,8 x K
G 2RO,8,8 x x RO x R
2O$
.RO
G
+ G
w4x RO
$
x ,8,8 x $
HR)* |
~ $2G
oR $,. x O x
$ IR,. x ,.
,.
)*k"!#*GG)* x R)*$
$
R
GG,. x*~ GO- v x ,8,8
] x
{,8
]
RO{G"!]#
G(
G2R
R
,8
kGOR)*
x G
k'( x
,8 x
,8 x
,8 x ,. x ,8)*
x ( x
e,.$2
x "!]#4 x
,8
x
,. x $2R x ,.,8 x x ,8 x Gq
x
,8 x R x
R)*{ x ,8 x x $)*],8 x I x ]
x ,8,8 x x I&
)*,8 x
x ,. x
$$R,.
R'( x v
0 Z x
,. x
G G)*G
,8 x "!]#)*G)* x $
* x
|
v #2 ,8 x 2 R x x 2OR
'(GH!]#
)*$
I
k
x )* $
x R
,8 x* x ,. x q"!#
x
v #$ x ,8 x G.
G x )*G)* x $
v %")
{ x ($
x o)*)* x R,8 x
q,.$ 2 ] ~ v # x libpq O)* x ,8
x qq
)*$+G2,8 x v
0
)*
O)*
])* x O$,8 x
] x ,8 x*x
e
)* psql
$OG$,8 x 2 R"!]# x RO$,.R
| 2 x
readline v
0 x x
GO
x G libpgtcl
,8 x R
x %,8 v x
'(
qRG)*,8'(OR x
+
x |%,8o x R,8 ?,8 x )*
R?R
)* tcl
0 HqG x R o,8 x GIR
x
G v #GIO x
+
w4x
x G x
% x ,8)*,8 x )*O*)*$,. x GIkO x
G+2R)*y
*$,8'(
wx GO x G)* x
v
0 "e)* x R)*{ x G)*y
e x
x x ,.$& x
x
x ,8)*|
G2,8 v
0 "
,8 x GH,.
x R x
R O$H x
,. x
$+,8,RR
,8|,8)* x G
q"!]#
(v
0 Hq R )*-o4 x
~ H )*- o,8)*,8 x|v R)*
{ x
qZ,8)*
],. x x ,.,+ x ,8'(&"'($2,8
H
G)*
x ,8 x
O$|
x
R
*
v
PostgreSQL
xu $ H2'(
x R
x )*21R
43x ](k
)*
v G
)* x]x
x )*.R
"!]#8RG,8 x x R
x GO x )*,8 x R,8 x ,8$,.
(
"!]# v ()*)*eR)*'(,8
)*|
x %)*|
x OR x
(v G
x
]qq,8 x ,82G
x )* x Rq&
G,.R v
O x R|
G2$O
2RG 2'($'( x ,8{e x
x R ,.$ x x
G)* x G,8
)*R
R v x "!#H
{ x( '(]$2$
)* x R,8,8GK,8?,8,8
G
$ x
GRO$Ro,. x R x % x
??. v
#| x ,.|)*OI+ x R
"!]# x ,8
x
0 # o
]R'( x
2 R
G,. x R
],8 x ,8 x ,8)*
x
,. )*Ro,8,8
o2,8R O,8 x R x + x
,8 x
x
x R,8R ,8 x
2R)*,8$
G
x
,8 x R
+
)*)* x RO$2
$?GO)* x G,.
2 x ,. x
$ v
0 Ho'( x )*)* x R
)* x R,8G,.RR,.
)*R
" x ,8 x
,8 x $28
(
,R8G2R,.,8 x $ x Z,8)*,. x x R
.+4R
v
0 H'( x $(
x ,8 x
Z x x ,8 x G2R x
H!]# G x ,8 x
,8
)*H
x ,8
x R,8)*$
O$
R,.$
x G2H,. x
x
R x
q
x R x '"$
,)*G v
0 #R+ x R x '( x
)*OI
$ x ,. x
x
|R+
G,.'(H'(O
x )*ORoq+
G)*{G,.$
,8 x G v
0 #k
,.
G?,8
y
Z)*Rq
R'(
y x ,8G)* x $
)*
G
)* x x x $ / Hk yR)*k
O x '(]
=R
/
G
xv x
v
R
"!]#R
x
k x ,. v 2Rk)* x &
,8O
x(v
G!# v
Recursos
) x o
x
( x
x R|G
%H R
w4x R
,8,8 x x
v ,. ,8G,.R,8|
x $
v
o
2
w4x( )*,8 x x GOH$O 2 $O x ,8 q,8)* x
+R
v
o
GHO)*$
w4x( )*,8 x $ x $
kO)
,8,8 x G vw4x ,8 x
y
k"R x x
x ,. x "GO
o x R $,.Gk K
k
(k
o,8
,. x v
o
)* x
w4x( )*,8 x x ,8 x
)* x RO$,. |
x v
# o
q
2OR
v
o
$
w4x( O)*$,. x
E
v
,8 )* x RG$Ok
GO x
x ,8 x RO x
y
,8R*
65 x( O)*$,. x
"*
,8,8 x G$.,8 x 87 8]8 8 v ,8
)* x x ,8
x 7
8]8 8 v
x
x ,.
wx( )*,8 x
G
oq,8)* x
v ,8R $)* x x ,.
x 97
: v
G)*
q{o)* x $'(,8 2+
oq2GO
x
q
o x $
x
,8 G
R
)* x
#
x $
k)* x )* x ,. x x x )* x( )*,8 x ,8
)* x
v
!]4.
x R
x
#o,8,. x
q x
x R ! ,8 x x q |oG
x R|
x
|+2 x R
qR x x
q
?,8 x oR O)*o x
qq
v
#
#,8'(
$)*
# R x
x x ,8 x
,. x v
"
2Rk
2R
G;",8 x R x x( )*,8 x x
RO ,8 x x x
,. x|v k x ,8R$)*
)*'( x , ,8 x x G'(R,8
q2R
,8],8RO x ,8 v
Oq x ,8 x RR x x( )*,8 x|v
#|
O
#2R
o,.G
x =<
,8'( ?> G x x &$O,8 x R&
x R v
]R
@
R
? x
,8
,8
GOR v )*R
x
,8)* x
$O 2OR v )*
] )*G )*K
k
x
G
R$O
$
x kq)*
y
,. )* x ,8 x
x Ro
,8 v x 2
],8 x R
x
v " x
e
G
2,8 e x {
,8 )* x
,8Oe,8 x RO v "(
x
,.$OG,8R,.$+$,8
'(| v
x $
&,. x ,8 x x
x G"GO x ,. G
x ,. x ,8OG,.,8 x
,8)*)* x +
,8 )* x R,8 x
o x x )*
q)*G v
,8=6(,8'(
R
q,.++ x x &$O,8)* x
2 +
v
Terminologa
)* x R .|
,8)*
,8
o,8 x x R)*G"2R
x Ro,8)* x
] x x 2R)* R v
Notacin
y
$ Z
)* x |%"G)
2RGH!]#
,8 x G
,8
y
2 k$
R
,8)* x
,8J%,8 x
$O x x G2 x
* ,8)*$)* x Rk x
)* x v H x )*
x )*)* x R
G2,8 (
S
8
O=UT.e 4"V $ ) B& 4XWGY
O8] 8= .OT8
$ . 8 .$q 8 8 . 8 (8 S $Y
"V ) B$4( 8
8
H[Z8|\(8 W
+^]8_ k 8 (8+k4(` 8==UT.
8 8 8 8 8
8 H6a .=(8 v
R
"!]#kR x
'(cb u G ZR
"!]# wx , v ]
RO I
{GO)* x
,8 x ,8o
~ GO- v
R
x
'(b u x Rk
ey x
x v " O$ ,8)*
,8,8 x *
RO ,8 x
Rky
,. )* x ,8 x ,8 $
R"2 xex x % x $
Hk x x $,. G
(k|
,8OR")*
)* x x
x ,8
'(Z
( k x RRO kk
x G x R
$,8 v
xx x % x ,.]o x GO
x q'($O x
($,8
,8
G x x
.2G x R&
,8R. x
,8,8G2.,8,8
x R
,8 x ? x x ,8
x
,8,8 x Ro
G2 R x
oRo2 kok
,. )* x ,8 x x ,8 2 x
'(
x ,8
R
( v
# x
O
$
x '( G2,8 ,.$)* x R G,.G,8 G x R x
,8
x
x )*R
d% x ,8)* x x Rk)*,8Re
,.)*,8
,8G,8
,8 )* x
G)* x
R v k$
2 x R]KR(,8 K x
O
$
y
x x R x x x
x
,8 x
)* x x )* x
$
,8 G,8 x )*R)* x R)*
,.$,. x|v
x G x )*,82R
k
x #R
v H x( " (" x ey"2 x
)*,G
(
" x ,82R)* w4x , v ] R x '( +y]#
% +w *2 x )*$,8G2R
?
R )* x v |w k4 x )*
,8?
G
kkR,8-
$E
v u G)*,8G
RO
x " Rk
x
R x|v
Notas
u8u(v
u v
u(v
u(v
u(v
u(v
u(v
Palabras Clave
] ! $
v
#&
x +$
G+G2GO
(|
R
x 2 x K|
$+
"!#
x
q"!#
RG x )*R
+o2G|R
R
q,. ) x x
x R ,.$
G
ABORT ANALYZE
BINARY
CLUSTER CONSTRAINT COPY
DO
EXPLAIN EXTEND
LISTEN LOAD LOCK
MOVE
NEW NONE NOTIFY
RESET
SETOF SHOW
UNLISTEN UNTIL
VACUUM VERBOSE
#
x Rqq
q
]o x )*{ x $OGqG2GO
G
H!]# e"!]# eGO)*R
]{ x x ,.)*eG G
,. ) x
x ,8)*
x R ,.
G
CASE COALESCE CROSS CURRENT CURRENT_USER
DEC DECIMAL
ELSE END
FALSE FOREIGN
GLOBAL GROUP
LOCAL
NULLIF NUMERIC
ORDER
POSITION PRECISION
SESSION_USER
TABLE THEN TRANSACTION TRUE
USER
WHEN
#
x Rqq
q
]oR)*{ x x $OGqG2GO
G
H!]# "!]#
ADD ALL ALTER AND ANY AS ASC
BEGIN BETWEEN BOTH BY
CASCADE CAST CHAR CHARACTER CHECK CLOSE
COLLATE COLUMN COMMIT CONSTRAINT CREATE
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP
CURSOR
DECLARE DEFAULT DELETE DESC DISTINCT DROP
EXECUTE EXISTS EXTRACT
FETCH FLOAT FOR FROM FULL
GRANT
HAVING
IN INNER INSERT INTERVAL INTO IS
JOIN
LEADING LEFT LIKE LOCAL
NAMES NATIONAL NATURAL NCHAR NO NOT NULL
ON OR OUTER
PARTIAL PRIMARY PRIVILEGES PROCEDURE PUBLIC
REFERENCES REVOKE RIGHT ROLLBACK
SELECT SET SUBSTRING
TO TRAILING TRIM
UNION UNIQUE UPDATE USING
VALUES VARCHAR VARYING VIEW
WHERE WITH WORK
#]
x R$
"!# x
x $OG,.$
x
x
x
x
R
&G]H ,8)* )*
8, RO$
,. x )*? x ,8 x
length
CHAR_LENGTH CHARACTER_LENGTH
# x R$
G,8
G2GO
G
R x
"!]# "!]# yx
x $O
,8 x v '(,8 ] y 2 x e]
k x 2RG2 x )*)* x
o,8OR o (v ]2GO x +
(+ x Z
Nota: Algunas de estas palabras clave representan funciones en SQL92. Estas funciones
estn definidas en Postgres,pero el interprete no considera los nombre como palabras
clave y las permite en otros contextos.
HANDLER
INCREMENT INDEX INHERITS INSENSITIVE INSTEAD ISNULL
LANCOMPILER LOCATION
MAXVALUE MINVALUE MODE
NOCREATEDB NOCREATEUSER NOTHING NOTNULL
OIDS OPERATOR
PASSWORD PROCEDURAL
RECIPE RENAME RETURNS ROW RULE
SEQUENCE SERIAL SHARE START STATEMENT STDIN STDOUT
TRUSTED
VALID VERSION
#
x $O,8
x
Gq
R
x OG,8
|
"!]# H!]#
ABSOLUTE ACTION
CONSTRAINTS
DAY DEFERRABLE DEFERRED
HOUR
IMMEDIATE INITIALLY INSENSITIVE ISOLATION
KEY
LANGUAGE LEVEL
MATCH MINUTE MONTH
NEXT
OF ONLY OPTION
PENDANT PRIOR PRIVILEGES
READ RELATIVE RESTRICT
SCROLL SECOND
TIME TIMESTAMP TIMEZONE_HOUR TIMEZONE_MINUTE TRIGGER
YEAR
ZONE
#+2 x R$
G,8
x
x R
o"!# H!]# x x
,8
x x x ,82 x R
ADA
C CATALOG_NAME CHARACTER_SET_CATALOG CHARACTER_SET_NAME
CHARACTER_SET_SCHEMA CLASS_ORIGIN COBOL COLLATION_CATALOG
COLLATION_NAME COLLATION_SCHEMA COLUMN_NAME
COMMAND_FUNCTION CONDITION_NUMBER
CONNECTION_NAME CONSTRAINT_CATALOG CONSTRAINT_NAME
CONSTRAINT_SCHEMA CURSOR_NAME
DATA DATE_TIME_INTERVAL_CODE DATE_TIME_INTERVAL_PRECISION
DYNAMIC_FUNCTION
FORTRAN
LENGTH
MESSAGE_LENGTH MESSAGE_OCTET_LENGTH MORE MUMPS
NAME NULLABLE NUMBER
PAD PASCAL PLI
Comentarios
&G? x
x
2G,. x ., ROK
+,8,8GZ,8
x
x
'( x
x v % )*{ x q2OR
o
q$Oq v
- This is a standard SQL comment
// And this is another supported comment style, like C++
%"$)*
{ x OR)*
q
q,8)* x $O$H v
/* multi
line
comment
*/
Nombres
Constantes
x
dig x )*
v )* 2 x ,.
x dig o x *)*
v ]R
e
x ,8 |,8)*)* x )* x
{+
G2 {
A D(G2,8 x v x G" x x R x )* x R x ] x ])* x ] x 2GOR
u(v.
'( x x % x ,.$OG,8q x ,8
x q,.$
x v
x ,8 x 2R x R
x R x Z
$o v
+G,. ,8
,8R)* x R x
x R,8 x
,8
x q
q"!]# x R,8 x
float4 1.23 - string style
1.23::float4 - Postgres (historical) style
?
q
x R
,8
x k,8)*y x
k R x
,8 x GO x
*)*
type v $
eo x k,8 x x R
e x
,8
v #R
q)*RO x '(k)*qG
eo
o,8 x 2RR
Gq2G x
,8Rqq )*,8)* x
v
x
delim GoG
G)*$
e)*,8 x $
x ,. pg_type v O
R,8 x R
G,8,8&,.)* v x RG)*
,8 x 2R x R
$O
{{1,2,3},{4,5,6},{7,8,9}}
,8 x x G|
|
)* x x G2 x qO$
,8 x 2R x R& O
x v
x G)* x R*
x x
$Z G
*
R x )*,8o
)*R
O$)*k
e2Ge2e$OeGRG)*]
)*qG
,8 x G,.R
,8+ x x ,. x ,.$ v
Campos y Columnas
Campos
x 8] +,8
?RO R
x ,8
$
o x
x
")* x
")*$
,8)* x
,8)*
x R ,.$
r% x ,8e
x x ., (
R
$q$q x R x 8,
)*R,.$)* x v #
x x $q x x x x
v
x ,8
?
qo x ,8,8 x x $
v
x ,8
?
qo x ,8,8 x O
v
x ,8
?
,8)* x
x R
x ,8,8 x|v
x ,8
?
,8)* x
v
Columnas
x ] q,8 x 2R
q
q O)(
instance{.composite_field}.field [number]
x instance
x R ,8 x q,.$2,. x ,8
)*| x R x
q,8)* x ,8
,8 x
x x ,.$
k,82 v
x )*
O$
G x
x x ,8 x R k
o,8
x
+G
x ,8
,8 H
o$
Kq,.$ + % v= | %e
x .,.G x x
)*
$,.,8 x
)* x &&
|
x x ,.
x O x
,8 $
|
G,8OG,8 x H!]# v composite_field x ,8)*
o x k
o,8)*
q") x +
2 ,8
,.$)*
,8,8 x x RO R+
,.$2HG
G$?%,8)*,8)* v x )* x field x ,8)* x )*
$2
o2%)*,8
"
.,8,. x
v " field
qR array x R x ,8
x
+,8 x number x
,8(G)* x G,. ,8k
( v " x k2 x
,8
x %)* x R x ,8+2
x R
+)* x R
G$O v
Operadores
GGO$
G
x
x
Z 2
2 x "!]# v
o
GO$
.G
x
,8 x 2 R . . Gv qRo
q
x
( ,8 x
)* x
)*OI,8 R,8 x
R,8 pg_operator ,8 v #{ x R
x k$
)* x Rq
| x x v
Expresiones
)*G
x x ,8 x
x
G
G,8 x
Parmetros
x Z8] K& 2 x
,8 x $O) x x x ,8 x "!# v %,.$)* x G2R
?G
x ,8 x
G,.$O,8 x
x 8, x H!]# v # )*,. x $O{ x
$number
$,8)*
dept
Expresiones Funcionales
x u V T8vp
= 8 | x )*
x x ,8 x G
H"!]#
o?2 +
)* x R+ x R{ x R
function (a_expr [, a_expr ... ] )
OI)*H
x Ro,8,8 oo,.
O
q
H
x )*$
?
sqrt(emp.salary)
Expresiones de Agregacin
x "V T8*$w \(8T8 . x R,8,8 x
x x ,8 x
,8 x
{q
2G,8,. x
$o,8 x v x x ,8 x
$
,8 x
,.
)&%G x R
+ x
|
q
,.)* )*)*
q x R
v
#o x $"+
oG" x
,8 x +o x
aggregate_name expression
# expression
aggregate_name #
w
w %
aggregate_name "%
expression
c
x
aggregate_name
x
aggregate_name ,8 x
)*
x
x
x x
x x x
x R
x
H
expression
,8 $
?
,. R o2
o x
G
,8 x|v
#O)*GO )*q
". x
G,8 x )*q
G
,8 x qRO${G&
R
$
$
x
"G2 x
x
x x v #e x
)*
)*&oO)*GOG ##G&
,8 v #oR,.GO )*o)*q
G,. x
e
e x
,. x
2R x R x e x x v #&%)*
)*)*oq
$,. x $O,8
x
$ |
x RO
x ,. x
x
x 5$ x ]2,8 ,8 x
Z,8 ,8]
x R
x GO$)* x ]%RH
o,8 x ,8 x R v
(OI)*8,. x x
|G x %)*Gq$$
$Z
& x
R52,. x u
G
x %)*
e x R
x
4u*x G x 5,8 x R
2R x ,8 u
G
G
x %)*]
q
x R$ x x
u(v
Lista Objetivo
x S ] x 2R]
{ x R",8
q x
G
x k
)*G)* x RO$
+,8)* x R
)*(
a_expr [ AS result_attname ]
Calificadores
xe=8 y=8 8,8 x 22R x ,8
G x %)*G
,.$ 2 ,8 x ,8
$
,8
%
x ,.$ 2 x a_expr
kG$?%,8)* x
x x ,8 v
boolean
2k?,. x I x Wy
Lista From
# S
Mp K G x ]]
V 8 v
G,8)* v
K. x
) +
G2R )*(
[ class_reference ] instance_variable
{, [ class_ref ] instance_variable... }
m)~m)gtb84ra$bkmmqJab
Postgres Type
x
,8 x
,8R x
? x x
,8'(K x
,.'($O,= x
x R',8'(,8G
x
w
O xqx k-
'(
.2
,.,8 x x
,8 x
?
k'( )*
G"$,. x )*, &LO $
O
R x
x x )*R'
,8 x
,82 x
R x 4 x x )*
w
2 xox R-
'(
.2
x G
*Rk4 x
2 x
x
x
R x R
G
x(x IR x q x x
x o
)* x ( x x
H,8 x ,8
"$,. x )*, &LOO
O
x x
e,8
e
G)*G,
$'k x x
,8
,8,
G
R
.,8)*
G,.)*$4
R
x
x
x
x
x
)* x
x )*,
G'
2)*$ x
x x R
G
,8)* $
x )*GO,8h
Description
Postgres Type
x
x
R)*
R)* x
R)*)*
,8'( x
R)*
x R
R)*$)*R'k)*q$ x
,.'($O,=
O x x
Description
)*RO, x x x
Nota: The cidr and inet types are designed to handle any IP type but only ipv4 is handled
in the current implementation. Everything here that talks about ipv4 will apply to ipv6 in a
future release.
m)~m)gtb84ra$b
{cf8st
f^t
fb8mfb
x )*
Postgres Function
SQL92 Constant
GG
n x ^n
R)*n x ^n
R)*)*n x ^n
,8
,8 O
,8 O
x R
R
x R)*
x R)*R)*
Description
R
+'( G .'( x ~ ]
GG)* x vwx
x "!]#
,8 x( O)* x ,8GH 2R x R(OR x q "!# $k R
v R'( '*k
(H!]# ,.)* x ,88R'(|&2)*,8 R'(+2R x
k'(,8']|$,. x
x
k'(,8''(
x
R'( '
x 2R x
( v k x )*-
G R ,8 x( O)R'( R W65"'(k
R'(G2R x
x RG4
?2 q,8$ x
q,8 G x (-
x x RR'() v
& '( x | x
x ,8 x ,8 x
x y*R'( v v
x R
GO& x
x x x )*
)*I,8'(,8- x v ")* '(R& x
x ,.R x v v $
R x x
e)* R,8 x
x ) x R)*GOI,8'(,8-
x
x '( x RR )*
x G",8 R x G
v x )*e2G)*2 G")*'(
x )*,R 2)*q
RqR
G)*$ x R x
v
'($)* R'( x x
k x ,.R x & x x
v %'(GR'(G2
x x ,8R x )*o.,. x k'( x ,8)*
RR'(qO x x v
Nota: The original Postgres v4.2 code received from Berkeley rounded all double precision floating point results to six digits for output. Starting with v6.1, floating point numbers
are allowed to retain most of the intrinsic precision of the type (typically 15 digits for
doubles, 6 digits for 4-byte floats). Other types with underlying floating point fields (e.g.
geometric types) carry similar precision.
Numeric Types
m)~m)gtb84ra$b
|kcd*arsB
ab
Numeric Type
Storage
.,8)*
O$
x
x
G
G
x
x )*,
O$
R
Description
2GI,8 G
,8 x
?:,82 x
?:,82 x
,8 x
H,8'(,8
"G
,8 x
GO
O x
"G
,8 x
2GI,8 G
,8 x
w
x ?
,8 x ,8
Range
x )*
G,.)*$$,.G
u
G,.)H,8
uG G R
uG $
HI u
G,.)*$
,8
x )*
R uG G
G
x (R,8 x
CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename
Atencin
The implicit sequence created for the serial type will not be automatically removed when the table is dropped.
w )*,8(G
x ,8+2 x '(qH x R)*,8
k'( x
R
,8 x R x x *q
v "
R'( k x *,8)*)* x
,8 G
x
k-
K
CREATE TABLE tablename (colname SERIAL);
DROP TABLE tablename;
CREATE TABLE tablename (colname SERIAL);
%'(
x ,.k)* x x '(
R x R,8
y x k`kz
plz|^z v
Monetary Type
Obsolete Type: The money is now obsolete. Use numeric or decimal instead.
m)~m)gtb84ra$b
t
fa$4m$rBab
Monetary Type
)* x
Storage
Description
,8 x
Range
u $ G(v R
uG v
Character Types
m)~m)gtb84ra$b
m$rm8IarBab
Character Type
Storage
Recommendation Description
,8'(
,8'(K x
Character Type
u
R
x
R
Storage
"!]# 4 ,8)*R
H!]# 8, )*R
Recommendation Description
R"
,8'( x
R
x
R
~ ,8'(,.
H!]# ,.)*R
m)~m)gtb84ra$b
a8sImQm$rm8arBa
Character Type
x )*
Storage
Description
G
%'(k,.'($O,8R
x R x
Date/Time Types
R
"!]# +R'(
"!#e
$ x
e)*qR v
m)~m)gtb84raR ^ kma6Wsd*aB
a$b
Type
R)*)*
x RO
G
G
R)*
Description
G
Storage
$uq~
Earliest
u$ u
Latest Resolution
u
G
u $$
G
$uq~
u G u *
) ,
G
u
G
$ G v
v
Nota: To ensure compatibility to earlier versions of PostgreSQL we also continue to provide datetime (equivalent to timestamp) and timespan (equivalent to interval). The types
abstime and reltime are lower precision types which are used internally. You are discouraged from using any of these types in new applications and move any old ones over when
appropriate. Any or all of these type might disappear in a future release.
u )*,
u )*,
Date/Time Input
e x
R)** x k,8,8R
x ) x x )*R& x ,8
x w
,8)*$."!#,8)*R
GR
x x
'( v %'(
GO x )* x '
x
y x
x |,8 x )* R'( R x R*,8 y'(
?'(
x ROG
v %'(],8)*)* x
SET DateStyle TO US SET DateSty,8 R'(
x 1)* x '*
$ 3 R'(,8)*)* x
SET
le TO NonEuropean
2Go'(
x H1
* ])* x ' 3(v %'( O)*GR'(
DateStyle TO European
G v
HG X a" 8 q R'(],82 x
$
"R)* x x
R'(]
,8 x
R)*q x v
G)*)*'(Z x
R]R)* x x G
q] x ,82G
x 2 x
G2
-
G"
2R x
v
date
m)~m)gtb84raR ^ kmaqifc
Example
x $O u G
u u
u u $
u u $
u u u $
u v G
u u
G u
u v G
G
x $O ~
Description
x )*
w u )*R$ GO
]5$
$
u x x )*
x 5$
e$
u x )*
g5$G
x K u x x )*
G& x
G
w u R)* x '$
$
w u R)* x '$
G& x
G
x
'(,.)*)* x
m)~m)gtb84raR ^ tfl~~ra)sImst
fb
Month
,8.)*
E
x $O
x
Abbreviations
G,
G
x
x
Month
,8'
)*
,.R
G
)*G
Abbreviations
,.
"$"
Nota: The month May has no explicit abbreviation, for obvious reasons.
m)~m)gtb8
ra) ^ km)t
Haa)kl~~ra)s4m$Ist
fb
Day
x
x
%H
x G2
%'( 2
G
O
G
R
Abbreviation
H x
x
%H $%" G
%'( %'( R%'(
H$
time
m)~m)Xg$tb84raR ^ sd*aifc
Example
(v G
G
G
Description
w u
w u
w u
w u
")*
")* u
")* $
")*
")*
G
G
timestamp
*$
R)*R)*
?k'(,8' w ,8)* x v
w4x
R x ?'(k
G
)*
January 8 04:05:06 1999 PST
v
m)~m)gtb8
ra) ^ sdya9|t
faoifc
Time Zone
"%
$
Description
,8
w
w
w
interval
x GO
|,8 x ,8
k'R'( k x x R
Quantity Unit [Quantity Unit...] [Direction]
@ Quantity Unit [Direction]
k'(
Quantity vhvhv -1 0 1 2 vhvAv 5 Unit second minute hour day week month
century millenium8$
G x & ? ' x R65 Direcyear decade
x
,.
ago &G)* v
tion
Special values
%'( k x "!#4,8)*R x ,8 x ,8 x 2G
o)* x q'(
,8 x
x
$R
CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP v
R
"!]# OR
H,8H,8 x x R ,8 x x x ,8 v
m)~m)gtb8
rabi ^ a8smG(km$4as4d*aMtfb8mfb
Constant
,8 OW x
,8'
x(x
I x(x
Description
x
x ,8 x )*G
E
u u u $ x ) )*
#R?'( x R'(&
R)*
OR'( x '(
)*G
Constant
Description
x
x
R
G
R)*O
(
w G
x R
x R x 2$,.R x R)*
x '(
x '(R)*O
x
'(R
k'( x '(
x
current G
GGO)*R'(
|ZG
v "q
qk x "R now x )H,8R x v ,. O
Date/Time Output
R )*R,. x R x R'( 2R w u G"!#k w4x .RO
x
R
$ x
)* x $ x R'( zkma)\a v %'(q
$
+'( w )* v
m)~m)gtb8
ra) ^ kma6Ksd*aMkcccab
nw n
n "!]#n
n2RG6n
Style Specification
w u R x
%H
x 2R
x 2R
Description
n GO)* x n
x $R
Example
u u u
u u u
eG, u
"%
u$(v u v u
u
u$(v H%
uou
G uv "%
%'(* q R'(y
$e x
)*k ,8 y x '(
ReR)**$O x
,8,8
x ,.k''(q$
)*G
%'(y"!]#'( x x
x x x x R|k'(,8'
GO)* x G
k'(R'()* x R' k
k,8
v HGkR
"%)* wx '(
'(+R x R ,8| x ROGR x x
v
m)~m)gtb8
ra) ^ kmakrnarHtf
a$fIst
fb
Style Specification
E x
Example
u$ u u
u G u(v
%
u u u $u
v $ "%
x GO
R -
|-R'( x O)*$",8'( x R&-
,8 x
G
GO| x
vw4xkw *
)
q'q R (--
week
century
%'($2GGO$H$
|R R ,8
'(q$ x ,.q
HR)*R
G
Time Zones
R
"!]# x
$R,8)*$kR'"!]#
x R x R,.$+ v
x
x
0 '(
'e'(
RR
x '(
x ,8R
)* x HR'()*,8 x
v
0 %'(q
)*q$ x ,8
|,8 x R x ( x R& R 2G ) %"]% v
%)*] x x '((kO
,. x '( x e)*G x x e x G2q,8R
kR'y
R$
kR)*o2 x ,8oR'( R ()*$OR'( ''(oR'e
$
'(
x
)*
x
$OG v
%"y
ER'(k
R ,8 ("!]#,8RR)*k$ x x k'
x
)*R
Gk'(,8',8 x R x
R'
R x
)*G( x
)*,8?R)* q x
,8 x R x x x k
R|)* v8 OR'(RR)*$ x q
)R'(q x
x x
R))* x ,.$R x
'( x ,.,. x '( x
'(
2$ x
)*q x
R'(,8
k'(
v
R
"!]# x kR)*y$ x ) '(* x
x x 2R)
RRG xu $ x
x Go'(R
,.
)* x "
R)* v
R
k '( x $
R )*
R,8
x
x x
2
x $
k%)*o4% v
+
R x
R)*$R
x R x x x GO+]% ?$ x R- x x
x k,8'G x %
)* % v %)*G,8 x
G
R,.$R)*e x '(
RH
O
x x RR'(,8 x x R x
'( x ,.
x R'(
Z)*
x v
%'($2GGO$H$
|R R ,8
'(qR)*q x q'(
0 % '(q% x
x ) x
O$
eR'(q,8-
x
e
G,.R x 2R)*G&R
|R'(q
)*q x v
0 %'( % x x )* x
o2G'(,8 x 2G
yk x
y)* x
x( O)*$ x RR'(q,8-
x
x ,8 x(x ,8 x|v
0 %'(q"!#,8)*)* x
z+iz#^|^z RR'(q)q x &R'( xv
w4 x x $
R)* x o2,8 G
(R'()* x ,8) % x )*|2G)*
x k v
Nota: If the compiler option USE_AUSTRALIAN_RULES is set then EST refers to Australia
Eastern Std Time, which has an offset of +10:00 hours from UTC.
Internals
R
"!]#* x
G +
$
"),8,8 R x v %'(Gk'(
R'( x ,.
o ,8,8o
,8 x ?",.$,. R x x
R+)*,8 x '( x]uG~ R ( x
'( R $ x R'(q2 )* x R'((R'(q x 'k R'(q? $(v
$
v
,8 x x x R'( u R',8 x R Oy)*$-
x GG x yG
x & x
,8 x x x
'kO x
,8
x x o
R
HR)*q'( x
G v
Boolean Type
R
+ R+'(o"!# x R
v
,8 x '(
q x q x k$
Gn nn n v '(
RXn x - x x n. x )*)* x G
x
x
R
x "!# 5 ]##& x R ,8
R R v ,. x
x x ] x x
x
G x ". x $$
|
RRo
,.)*Rqk''(+R
v
2G u O v
m)~m)gtb8
rab+tt
am$fB
a
State
Output
%HW
nhn
n n
Input
% ]
+nnRn 4n)nn)n6n
nu n
#"Rn n4n nn x n)n x jn
n n
Geometric Types
)*,R
GG x k
)* x x $&2?GI,8 v %'()* x
$)* x $
$R'(q x O)*+'(
$2 ? R'(qR'( v
m)~m)gtb8
rab+jkat
d*arsB
a$b
Geometric Type
x
x
Storage
Representation
G'
u
G'
x
x
R
x
R
hA
,8,
h hP
R
G
R
x
R
h
4 u
4 u
u
u
h
h
h
h
u h h
u h h
u A4 h
u vhvhv
u h u vhvhv D
u h u hv vhv
Description
x x 2,8
wx(x o x
x Rq x o2G
)* x
,8R x $&
e')*
R
x
x '
x )*
,8
e$'
,.,. x ? x
O ,8'2GZ Z x ,.R x
x
yR
G
kG O)
O )*,q
O$ x ,8'k|2,8 x x R x R x x
R)* x x x R2G,.R x v
Point
y )
y
is the x-axis coordinate as a floating point number
is the y-axis coordinate as a floating point number
Line Segment
# x )* x R $.2 x G
| x R v
+,8 G
x '( k x 2 x R
( ( x1 , y1 ) , ( x2 , y2 ) )
( x1 , y1 ) , ( x2 , y2 )
x1 , y1
,
x2 , y2
where
(x1,y1) and (x2,y2) are the endpoints of the segment
Box
~ "| x
e+ x R k'(,8'kRq,8 x '(q v
G,.
e x R'( k x x R
( ( x1 , y1 ) , ( x2 , y2 ) )
( x1 , y1 ) , ( x2 , y2 )
x1 , y1
,
x2 , y2
where
(x1,y1) and (x2,y2) are opposite corners
Path
'(].2 x
,8 x(x G,.R
R] x v ',8 x K x Ek'(R'(
O+ x
+ x R x '(2G x ,8 x(x G,.R
x
K,8
Kk'(kR'( 2+ x
( x q,8 x(x G,.R
v2 x ,8R x popen(p) x
pclose(p)
R ,8
R'k x ,8
H x
x ,8 x isopen(p) x
isclosed(p)
2G,8G'(q x o
GO v
R',8
e x R'( k x x R
( ( x1 , y1 ) , ... , ( xn , yn ) )
[ ( x1 , y1 ) , ... , ( xn , yn ) ]
( x1 , y1 ) , ... , ( xn , yn )
( x1 , y1
, ... ,
xn , yn )
x1 , y1
, ... ,
xn , yn
where
(x1,y1),...,(xn,yn) are points 1 through n
a leading "[" indicates an open path
a leading "(" indicates a closed path
'(&
2 x ' O2 x R v= RR'(|
2 x |OZ] (v u 2G
)* &R'(k'(,8'e'($
e x o
x x '(G2K,8
?" x x R
,8 x & R'( x )* x R2('( x R'(2 x R kG
*,82 x x
'( v %Z'(]
R xy x ,8R x upgradepath o
Re,8 x GO'(q
)*
x
G
) (v u
G v
Polygon
x k. x R
R] x v
x ]
2'
$k,. x
x &e,.
R'(2
&]R
R G x R * x
'(
'(G x &
( x G v
x +2G,.
2 x '( k x x
( ( x1 , y1 ) , ... , (
( x1 , y1 ) , ... , (
( x1 , y1
, ... ,
x1 , y1
, ... ,
where
(x1,y1),...,(xn,yn)
xn
xn
xn
xn
,
,
,
,
yn ) )
yn )
yn )
yn
x o R ? x '( O x R v. '(2RGGO x Ok (v u
2G
O)*
x k'(,8' '(
x yG
x x '(G2|R'(2q "
&,.
x G2G'(
+,8
x R G
,8 x $ x '(G2 v %'(
x x ,.R x
Z2
o,. x
H x
)*
x
G
) : (v u
Rupgradepoly
v
Circle
,
,
,
,
y ) , r >
y ) , r )
y ) , r
y
, r
where
(x,y) is the center of the circle
r is the radius of the circle
m)~m)gtb8
rab.i+aGrb8st
f#oBab
IPV4 Type
CIDR
,8
$O
Storage
w x Rk-
Description
x
O$
x R+ x '(R
%'(,8
qR'(
w x Rk- v %'( )* qG,. x ,.$2 x GkO-
k'( x.x.x.x o'( x Rk-y x
/y R'( x )* R x R'(
x x.x.x.x/y
"
v
w
R)*)*R
,8,8 R
x 2 )* x ) R'(k
o,8
x )* x
R/y
) ,.G|'($++R x
y x ,8
k$G+$ '(,8R] x R'(
x v
k)*qG")*
m)~m)gtb8
rab.iB
abzmd*Iab
CIDR Input
u v u v u
u v u
u vu
u
u v u(v
u v u(v
u vu
u
Range
Z
w w
,.-
Z
w w
,.-
CIDR Displayed
u v uG v u
u v uG v
u v u u
u v u$
u v uv
u v u(v
u v u uG
u
inet
%'(k x GR
k
G x
'(
x x
& '( x( O)*$ x '(
x ,8
x y'( w x |R'(|| x|v R'(|
k x |R*2R
w yx Rk-2
k'(
'(,.
R v %'( x |)*ZRR'(,8
R
,.G|'(+R'( x R'('(|,8 x x x G v" x ,8 x G"+,'(
O |)* x + '(
v
%'( x )* R'( x ,8 x x.x.x.x/y k'(G x.x.x.x x x R x ('(
x
y '( x )
G q x '( x R)*- v$w R'( /y OZ ? R
&q$
v x R'(
x
x G
e ( /32 v %'(kR'(qR
/32
/y $O( (
x
|o'(('(2(qI
R '(O v
Captulo 4. Operadores
,.+GO
|+
x G x v
R
,8 x x
xx %)*
+?
+
. v ?
.? x
,8K
x GZ,8R
G2R)* pg_operator v
x RO
x pg_operator
x ,8
x )*
,8
)* x k
)*)* x RG(O$
+,8 w
R
x
v
O
R
$
x R|
H
,. x ,8 x ,8 x
2RO x
1MGG 3
SELECT oprleft, oprright, oprresult, oprcode
FROM pg_operator WHERE oprname = ||;
oprleft|oprright|oprresult|oprcode
-----+-----+------+----25|
25|
25|textcat
1042|
1042|
1042|textcat
1043|
1043|
1043|textcat
(3 rows)
psql
Lexical Precedence
m)~m)g)krnafnaotarm$nt
rab
ra8ana$f.smna8ra8sIafa)
Elemento
w
k
h
AD
Precedencia
Descripcin
G
Elemento
Precedencia
Descripcin
G
GG,8'(
G
GG,.'(
$
$
G
x /
w ]
##
% ##
IR
+
)*+O$
.
w4
~ (%
# w
I
,8'(
,8'(
G
G
%
Operadores generales
m)~m)gtb84ra$b
ka$rmt
rb
Operador
O
I
l
I
I
O
GG
@@ O
ff
Descripcin
x ?
}
x ? $ }
}
w
}
$
}
?
}
x ,8 x o x
% w4
)*
Utilizacin
u
u
O
u lI
u O u
I u
I
O u
n2R4n[GG-n"!#gn
@U@ O
n,.8h)*,h'()*hngff
n / ,. / n
Operador
@ ff
fx
@f
@ fx
Descripcin
,8)*
x ,8
x ,8q
G
2 x 2qq)*
,"")* x
x ,8
x ,84G
2 x 2qq)*
,"")* x
,8 x ,8
q
2 x 2qq)*
,"")* x
,8 x ,8 G
q
2 x 2qq)*
,"")* x
Utilizacin
8,
8,
8,
8,
Operadores numricos
m)~m)gtb84ra$b
ka$rmntrab+fcd*rs8tb
Operador
@@
/
/
x
5
e
G8
G G.
Descripcin
,8R
,8HO$
%H x ,8
,.$,. x
" )*
G
x
x x ,.$,. xkx R
#
R)* x R O$
? R
x x ,8,8 x
o,8
o,i%,8
Utilizacin
@
@U@
/
9
/(v
x
(v
5 v
e (v
v e(v
G8 (v
GG8 v
Operadores geomtricos
m)~m)gtb84ra$b
ka$rmntrab+atdyrs8t
b
Operador
Descripcin
Utilizacin
Operador
,8 (?"R,8 x
Descripcin
,8 (?"R,8 x
wx ,8,8 x
)
mlm
m
mI
6I
l
IlI
I
}
}8
}8cG
eo
e
}rG
}rGG
e
ee
Utilizacin
n h u u nEh
n v nWh x
n h u u nEh
n v nWh x
n4 $ h u u 4 nWh 9x
n v nWh x
n $ h G4 nWh k
n v nWh x
n4 u A u h u u n
n4 u u h u h u n
n u h u A4 u n
n nE x )
n4 $ h G4 nWh
H2 GO x q}
n h u u nEh ,8IMm[m
n4 $ h G4 nWh ,8R
" x q?
n4 $ h u u 4 nWh ,8Rm
G}
n4 $ h G4 nWh ,8R
" x q?
n4 $ h 4 nWh ,8RmI
.,.'($}
n4 $ h G4 nWh ,8R
x ,8o x
n u nEh ,86,. &6I
n4 $ u nEh ,86,8
o
o
}
n u nEh ,86,. &l
n4 $ u nEh ,86,8
Ro
I]
}
n u nWh ,8,8
n4 u nEh ,86,8
o
G,8'(q
}
n4 u nEA ,.6,8 IlI
n4 $ u nEh ,86,8
Ro x ,8)*
}
n4 u nEh ,.6,8 QP
n4 $ u nEh ,86,8
wx GO,8o22 GO x
n4 u G h u G nWh }
n4 h $ A nEh ,=RR5
|'(O$ x R}
n u nE x }.
n nE x
| x
,8 }
n4 $ h u 4 nWh }8cG
n4 $ h u G4 nWh
x
(
x
x
#
R
e
,8,8 G ,8 een h u nEh G'
+
,8}
n u nE x }rG
n nE x
|}
n u G h u nEh }rGG
n4 u G h u nEA 2G
x x
x
n u u nW x Re
n4 $ nEh ,86,8
x R
e9en u $ nEh ,8,8
Operador
fO
Descripcin
,8
Utilizacin
n
n4 u
h u
u h
x QfO
x
m)~m)gtb84ra$b
ka$rmntrab+naqs4far"
m$4tb+naosadyt
Operador
O
l
I
O
I
I
O
I
l
G
fO
}gI
Descripcin
wx
])* x &
}
4w x R$)* x
$
}
wx
x
$H
}
w4x R$
}
wx
])*
& }
w4x R$)*&
}
x
? x x GO
)*
w4x RO
])* x & }
)* x
x
,8
%)*
x ]
x
}
Utilizacin
Operadores IP V4 CIDR
m)~m)gtb84ra$bika$rmnt
ra$bie[Mik`
Operador
Descripcin
x ?
x ? $
w
H
Utilizacine
nu
nu
nu
nu
nu
nu
v uG
v uG
v uG
v uG
v u
v uG
v u(v
v u(v
v u(v
v u(v
v u(v
v u(v
nEh ,8
nEh ,.
nEA ,.
M
O
nEh ,.
nWh ,8
KO
nEh ,.
Operador
I
O
I
lI
l
l
O
IlI
IlI
O
Descripcin
Utilizacine
nu
nu
$
nu
nu
nu
nu
2Ro,8 x x
x
nu
nu
Ro,8 x R x
x + $ n u
nu
x x
nu
nu
x R x q
nu
nu
?
v u
v uG
v u
v uG
v uG
v uG
v u
v uG
v uG
v uG
v uG
v uG
v uG
v uG
v u(v
v u(v
v u(v
v u(v
v uv
v u(v
v u(v
vu
vu
vu
vu
v u(v
vu
vu
nEh ,8
I
O
nEh ,.
nWh ,8
I
nEh ,.
nWh ,8
MlI
nEh ,.
nEh ,8
l
nEh ,8
nEh ,8
l
O
nEh ,8
nEh ,.
IlI
nEh ,.
nEh ,8
IlI
O
nEh ,8
Operdores IP V4 INET
m)~m)gtb84ra$bika$rntrab+ie[oi|^z
Operador
O
O
I
O
I
lI
l
l
O
IlI
IlI
O
Descripcin
x ?
Utilizacin
nu
nu
x ? $
nu
nu
w
H
nu
nu
?
nu
nu
$
nu
nu
nu
nu
2Ro,8 x x
x
nu
nu
Ro,8 x R x
|
$ n u
nu
x x
nu
nu
x R x q
nu
nu
v uG
v uG
v uG
v uG
v u
v uG
v u
v uG
v u
v uG
v u
v uG
v u
v uG
v uG
v uG
v uG
v uG
v uG
v uG
v u(v
v u(v
v u(v
v u(v
v u(v
v u(v
v u(v
v u(v
v u(v
v u(v
v u(v
v u(v
v u(v
vu
vu
vu
vu
v u(v
vu
vu
nEh x
nEh x
nEA x
O
nEh x
nWh x cO
nEh x
nEh x I
O
nEh x
nWh x I
nEh x
nEh x lI
nEh x
nEh x l
nEh x G
nEA x l
O
nEh x G
nEh x IlI
nEh x
nEh x GIlI
O
nEh x G
Captulo 5. Funciones
,.$ x ,8 x G x
x x v
x
x q)* ,8'(qq
$,8 x GO x
v x
,8 x x
x ],8 ,8
x ,8
$)*
x R x
x RO${G
O$
G
x
,8)*GO
v
Funciones SQL
m)~m)g){cf8st
fa$b ^
Funciones
#
list
Retorna
x #
input #
w
4
# # input value
" k
expr expr
%k expr A vhvhv D
#(H expr
Descripcion
R x
x
o
G x
o)*
]# x
]
#
input O value
Ejemplo
#
r"4P
c2
## 4w )n n
c1
Funciones Matemticas
m)~m)g){cf8st
fa$b mad&s8mb
Funciones
I$
Retorna
R x
Descripcion
)* x 2 x
x x
,8 ,8
)* x x
x )*
x x
,8 ,8
,8 x
x
o x RR
Ejemplo
v $
x
k v uv
x
x
R $
Funciones
x
Retorna
x R
GO
x
String Functions
H!]#
x
2 x
RO
,'($R" v
$
Descripcion
8, x
ORq x x R
o x RR x
,. x
q x x R
R x qq x G
Ejemplo
x G
GO v G
m)~m)g) ^ RMrsfv{
cf.stfb
Funciones
,8'( x '( x x
,8'(,
x
RK x '(RO x
Retorna
Descripcion
x
IR
G"R
x
I
G
Ejemplo
kORO x
2R x
,8 x
qG
)* x %,8 $
$)*,8 x oR)*(
HR
,.$o2,8 x
x G"R
,8 ,8
RO x R"R
,8 ,8
O,8,8G|
x G"R
kGOn% n
,.RR x '( x x
2R x 4RO x x
x
x
2R x
x
A ) x hDA x hD
x
x
RO)*A G
x QGERO x Q
GEW'BD
A RO x D )2RO x
.
G"
#)*
v x 2 x
,8OR|O
m)~m)g){cf8st
fa$b+nao
a)$4t
Funciones
,8'(4R$
Retorna
,8'(
Descripcion
Ejemplo
8, x
ORq x G"R ,8'(OnRO x n
R,8'(
Funciones
,8'(4
G,.'($
Retorna
x R,.$4R
R
R
RO)*R"RhR"
R
R"R2RhR
G"
)*Rh
,8'(
G"
R"RG,8'(
G"
R O x
RIR"R )*hR
R"
,'(,.'($
,8'(
,'(
$,8'(G
Descripcion
., x
q x
,'(o,8'(
O)*GOoGo
,8
qq
)*%,.
G x
,8O$,.REG
$
q
x
R
,8 ,8
G,.
,8O$,.REG
$
q
G
R"R
,.$o x R"R
,8 ,8
x
,8,8GE
,8'(o
x
R
,8 ,8
,8R
,8,8GE
,8'(
R"R
G"RO$
,8 ,8
,8 x
Rq,8'(R
R"
,8 x
Rq$,8'(Z
RR"
,8 x GORq,8'(,8
o x
Ejemplo
,8'(O
G,8'(
n
,8'(Z x n
x ,8n'()*6n
n'(?n n}8}in
,. x
q,8'(?
,'(
n,.'($
,'(
x n
,8 x GORqG"o
,('
n
2R x n
,'(
Funciones de Fecha/Hora
m)~m)gkma6Wsdya9{cf8s4tfb
Funciones
Retorna
Descripcion
Ejemplo
Funciones
Descripcion
,8 x
qq2R)*
Ejemplo
R)* x
G
$R)*h
GR)*
)*+
(
n x ^n n u
u nWh
$R)*
R)*
,8 x
ORq)q
R
RR)*
) n x ^nEh $2R)*
*
R)*
,8 x
q
R
RR)*
Retorna
)*
R
)*n x ^nEh
G)*
R
)*nR
nWh
R
,8 x
ORq
$R)*
G)*G
n u $
nWh
$R)*
n nEh R)* 5
,. x
,8'(
R=n
^n n x #nWh
GR)*
RORRh)*G2 x
,. x q'(O
RORn'( 4n n
'(
)* x 6nEh R)* x
RR x ,8n)* x 'Bn n x ^nWh )*
RR)*
RR x ,.Rh
$R)*
,8'(o x ,8
x R)*
x )* x }
x
Rn x L
nWh )*
x '( x }
x
Rn x L
nWh
RR)*
x R)* x
x '( x }
G)*
,. x
qoR)*
)* x
,8 x GORq
R)* x
x Gn
'(nWh )*G x
R)*n
'(nWh )*G x
)*G2 x n
'( O6nEh G)*
Funciones de Formato
Author: Written by Karel Zak 1 on 2000-01-24.
m)~m)g){cf8st
fa$b+na{
trd*mt
Funciones
Retorna
R"
Descripcion
Ejemplo
,8'( u (v
n $ gn
RR)*n ,
$ u nRn x
|+| k^n
R\n ,
$ n)n x
|+| n
R)*)*
n
, G nRn] x
|+| n
x
,8
q " ,8'( u Rn n
o x
,8 x
R
,8'( u v
" oRO x n $ n
R,8'(
G"
R,8'( x )*,.
R"
R
$R)*R
R"
R"
R $:R$
R
,8 x GORq x
R
RR)*$)*R
R"
R
,8 x GORq x
R)*)*
R x )*G"R
R"
x )*,
,. x
qRO x
x )*,
RR)*
m)~m)g){t
rdymscrabmrmonmasdya4tXmr"
arb8sfg
Format-picture
k
u
k
w
Descripcin
u u $
u u
Format-picture
"
"H
||
|+|
|+
|
%
x R'
)* x '
x
)* x
+
Descripcin
$2$
x ,8'( G
)*$
R ,8 x ,8)*
)*+
%R)*
R
H(
%)*
R
H$(
%R)*
R
H$(
x )*
q,8)*R
G)*G2 G
,8,8GE+ x )*%2,8
x )*
q,8)*R
G)*G2 G
)*&,8,R x )*%,8
x )*q,8)*R
G)*G2 4G
,8,8GE+ x )* x %,. I
x )
q$
.
H)* ROG
+,8,G| x )*%2,8
x )*q
H)*G2 G (G
)*&,8,R x )*%,8
x )*q.
H)*G2 G
,8,8GE+ x )* x %,. I
)*+ u u
x )*q,8)*G
R
,8,8GE+ x )*%2,8
x )*q,8)*R
RGO
)*&,8,R x )*%,8
x )*q,8)*G
R
,8,8GE+ x )* x %,. I
x )*q$
.
H
$ R
,8,8GE+ x )*%2,8
x )*q
H
RGO G
)*&,8,R x )*%,8
x )*q.
GH
R
,8,8GE+ x )* x %,. I
o
H( $ u $
o
H)* u Gu
o
)* x u 5$" O u
2G)* x o
)*G
x %)
) x o x (
,8 x R o
|R x
+
x u u ~
$OR
)* xkx %)*O$)* x w ww 5 w O
2 G
x
2G
x
)*
(
(
%"
q )*R,8 GO)*R x + R *k v 2 IG
q x x $ O)*$,8 v gn n+ R
v
m)~m)g)cwGabm$rmqt
rd*ms.c(rabmrmonmIa6Ks4d*aqtXmr"
Barb8st
fg
Sufijo
%
R'
"
Descripcin
Ejemplo
x '
%
%
x R'
H
m)~m)g){t
rdymscrabmrmofcd&~arKsf wt
m$WfcdyarsX
timr
a$rb8st
fg
Format-picture
v
$,8)*)*
Descripcin
&R x
(,8 x x %)*G
,8 ,8
q
x x
x G o,8 x x ,8
,8)* $] x
,8 x
x ,8 ,8
x R
,8)*
O$
Z
q )*
R x o
x G
R
x x
O$,.-R
R x o
x G
$
,8 x G x
)* x o,8G
)*)* x G4 o,8
Format-picture
w
#
+
% &R'
Descripcin
x x O)*$
]
n nRn#jnvn w n" x x ,8'( xx )*G5G,8'(O u
n G n
,.
-12
12
v ,8 x )*q Hn w nH
G x
Mn n x ,8q x q
o&)*
n n v
m)~m)g)ztXmr"
afa)ady:t
b8g
Input
Output
Tuesday
, 05:39:18
Tuesday, 05:39:18
-.10
-.1
0.1
0012.0
0012
Input
R,8'( n n
R,8'(
4n n
R,8'( n o n
R,8'( u )n n
R,8'( u )n $ n
R,8'( u v )n $ v $ n
R,8'( u v )n $ $ n
R,8'( u v n G n
R,8'(
4n )n
R,8'(
4n w n
R,8'( n w n
R,8'( n# n
R,8'( n n
R,8'(
4n n
R,8'(
4n n
R,8'(
4n n
R,8'( n# $ n
R,8'( n | n
R,8'( n | n
R,8'( (v n | n
R,8'( n 'Bn
R,8'( n
x )*G n
R,8'( v )nK:
,8)*K G
R
,8)*K v $ n
R,8'( u R n G n
R,8'( u v n n
R,8'( u v $ ) n $ n
Output
485
-485
4 8 5
1,485
1 485
148.500
148,500
3 148,500
485-
485-
485
+485
+485
-485
4-85
<485>
DM 485
CDLXXXV
CDLXXXV
V
482nd
Good number: 485
Pre-decimal: 485 Postdecimal: .800
12000
12400
125
Funciones Geomtricas
#)*{,8 x RH""" x GHR'( x x
*,8,8o x x x
x
,8 x I x
x ,. x x
|$
v
m)~m)XgR{cf8st
fa$bjkatd*Irs8mb
Funciones
Retorna
Descripcion
Ejemplo
Funciones
.
Retorna
$
Descripcion
.,.,8
"h
,8 x R4
x
,8 x
x ROG,.,8 x
,8 x
,8 x R
GHGIR
x
)*GI,8,8
$
'('(
$)*(
,8H
('
,8 x
'(R
n4 h u u Wn h
,8O$ }
,.
n h u u h nE '
x '
R}
2
x nA6 h u u h D nEh R'
x '(
x '($'
,82G4$'
R'
,8 x
RqR'
,8
x nA6 h u u h DnEh R'
x
x ,8,8 x
x Rn
u u I nEA 2G
n4 h
h nWh
x R'
x
x R'
R'
,8 x
RqR'
x
q
GG,.R x
Ejemplo
Gn $ h u u En h
Gn $ v En A ,.,8
"n h u u n n v v h n
,8 x
ROn4 h u Wn
,8 x
ROn4 v nEh ,8,
x '(n4 h u u h En h '
Funciones
Retorna
Descripcion
k R'(4
R)*('( x
Ejemplo
n v En h ,.,8
k R'( n h u u Wn h
m)~m)g){cf8st
fabnao8t
f
arb.sfnaqstbjkat
d*rs8t
b
Funciones
",8,
Retorna
" x h x
,8 x
Rq x
,8 x
"
x
8, x
R
x ]
,8 x
n h u u h En h
x
,8,.GI
,8,8
,. x
qq,.,8
,8
,8n h u u En h
,8,8
,8
,8n G nEh x v
4
,8 x
Rq
x
n4
u u I nEA
4 x Rh x
,. x
qo
R'( x
x
,. x
qo'
x
,8 x
qo x R
,8 x
x
., x
qo x R
x GO ,8,8 x
x
x
x
x n
u u I nEA 2G
x 4
x
,. x
q x
Descripcion
8, x GORq,8,8
,8 x
Ejemplo
n v Wn h ,8,8
n G nEh x n u u nWh x
2G
n
u nW x n u nEh x
R'(n h u u h Wn
x
Funciones
x 4,8,8
Retorna
x
Descripcion
Ejemplo
x
x u n v En h ,8,
npts
x 4'
x
,8 x
qq x
x n h u u h nEh $'
8, x
Ro
x
m)~m)g){cf8st
fabnao.c(ms
$m8s
fjkat
d*rs8m
Funciones
Descripcion
G2R'
I (v uq )
Ejemplo
.OR
x x
,8 x
Rq v u
x
K
n G h u u A En h
x
O ($'(R'
'
,8 x
v u
R'
G
R'(n u u u nEh R'
O
x
x
,8 x GORq
v u
x
G
n u u En h
x
Descripcion
Ejemplo
'(R'
Retorna
'
R'(n u u u En h R'
Funciones PostgresIP V4
m)~m)g){cf8st
fab8tb.rab8i[
Funciones
$ ,8,8
Retorna
G"
'(2R x
R
G"
8, x R
o
,8, x
,8 8, n u v u$ v uv n
,8)*G"R
,8 x R
o
,8, x
,8 ,8 n u v u$ v uv n
,8)*G"R
o
G,.,8 x
'(2,.)*R
'( Rn u v u v u(v n
Notas
Funciones
)*- x ,.
Retorna
x
Descripcion
8, ,8 q x
x G)*-
Ejemplo
)*- x x
x
,8,8 o x R
x G)*-
)*
- x n u v u v u
v n
x R)*-
x G
R"
)*
- x n u v u v u
v n
Conceptos generales
,8
x
x
GIR
+
q,8 x R
x o
G,.$O,= x H!]# w " % x o $
+
x ,8 x R x x R v
#] x x ,8 x Ry
G2GI
,8 x
?$
,. ) x +
HGRG
w " % v
x R+ kw
]G
*
R
(
x k
,8, x kw H# %
x
G,.Gq,.)*y x % x ,8,8 x R x R
,8 ) x $2]R
,8
k,8 2 k"
# %
G
x =R R
+,8 x
OR
o x ,8 x I x R x )* v
,8'(q
oo
,8 x
O x
R x o x ,8 x
x ,8 x x ,8
x x
2R)*
x ,8 x GGO
.
v kk$
|'(G R,8 x ZG
+,8 x GO x $O|
x )*OI+$Z,8 x
x ,8 x
R x R+ x
$
H!]# ,8)*)* x R x G
GO v
x
(
,8 x x ,. x
R
o x ,8 x
,8 x
x
oR)* x x
)* x ,8)*
oO x $)* x
)*)*
)* x
x v H,8 x
],. x ,8 x ],8 )*
,8ORGo x x ,8 x
],8 x GO x
2G
G x
(
k)* x v 2Rk2)* O)*$,. x
? x
(?
GoO$q
2
$
o,8 x x
ok x
,8
)*R x
kR
x
?)*)*+,8,8K,8+
)* x oR x 2 x v
x $
R
] x
,8
,8 x $)*I 2R)*o
,8 x
,8Rq,8,8
|| x
Z"!# v k,8 x ,.],8G
+
x
x RO x x )O,8)*,
x
v
q,8R,. x ",8,. x
o 2G4
( x
R x x KR
&G
,8
$OG|)*q
x R]o,8 x
$ v
]K I
x
+q K
K
G" x )
G x
x $
& x
,8 x
,8 x x
x
eG 2 $O
x
O,. x x Q% x ,82 ,8 x
)* x ROq
q
R x x $OoR
x
q 2 eGO x )* q
x x v
# x )*
R x x q ,8 x ,8 x e x ,8R]
xe ,8+
qG)* x +
$ x $)*
,. x
,8 x
x R,.$O
xe $,.)* x x x R x $( 2 $O x
,8K,8 x|v
Guidelines
%"
,8 x GO x
oRG2R x
(
x x
x R
GO
x ,.
0 #,. x
2 x )*,.R x k
GO x x G x x ,.] x $
x
x R
)*
,8 v
0 #&
x
|ZH O$
|,8 &H x G
x ] x ,8 x ,8)* x
RqO$
x
$R $
| x x ?
x R
|I
q
v
x R
o x ,8 x R)*,8
2R x
x &,. x
R
2G)*
x
+( + RH2k2],8 x GO x
x G,.G2$O v
0 #qRo
x
q x eG2R x ,8 x
v e x 2RG
x R x q
x o x( )*,8 x q+,8 x x RKRo
q
,8
,8
,8
OR
x
k$,8 x )*,8$2$
x
x ,8 x G
x x x ,8$ v
0
G
GO'(+ x ,.]
G x $
OI,8 R+2 x ],8 x 2 R x
x ,8G2R,. x
2 x )*,8k
v kG2R)* x x ,8 x 2 RG2Rk x
,8 x 2R
qq
G2R x
$G
2 x x ,8o,. x
GGGO
Operadores
Procedimiento de conversin
karm$ntr&naoa)mIcm8sf
u(vwx ,8,8 x x ,8o
x I q,8R x G,8R
]
)*R v
v "( x
)* x Rk
x GO$
+ x k x - x x x x ,8 )*
q+
)*)*
q]
)* x v
vw4x
R )* x Hk ,8 x I 2R"$,.R,8 x x
|,8
x qq{H)*)*o
|,. x )* R
v HH]'($ x x ,8| x GOR
)* x R x G$OH
x $
& 2qq
v
v ~ 2,8oG)*R&=R v
v
,8 x
R
+O$
.,8 x GH)*)* x )* v
v "2'( x O$
x
] x
]
2G O$
x o x ?GR x
O$
v
, v
R
ZGO$
.Z,8 x ZR RZ)*$G",8Z
| v $
x '(I G,8R+Ro2 x Ro v "
G
x
,. x
R$ GR
G
v
v "$% x )* x q
x RO
+?K x - x x K,8G
?,8 x
R
x
,.)*G x x )*,.
RO x
G)*R,.
2G4
x
v "'(
x q)*,8
,8R$2)*|
x R
x
]ZG" 2 $O x
x GOZ
o,8,8 x ,8O,8R x
G
G
,.
q x )+2R v
H*G2R x R x k,8R$ x R x ,8$2 x *
,. ) x
x R
q )* x RoK x - x x v
v ,8]G(,8 x
Rk,. x q=R Gq
R)*G",8R
=R R x
K
,8
,8R
|,. ) x
v "$
)*|
x ,8 x
$ x G
x x x x x ,8|2
x q x
v
Ejemplos
Operador exponente
tgl=> select 2.0 ^ 3.0 AS "Exp";
Exp
-8
(1 row)
Nota: Esta ultima forma es la que tiene menos sobrecarga, ya que no se llama a funciones para hacer un conversin implcita de tipo. Esto no es una ventaja para pequeas
consultas, pero puede tener un gran impacto en el rendimiento de consultas que abarquen muchas tablas.
Concatenacin de cadenas
x R,8GH x
()*oH2R% x
? x ,8H
?R
x )
|
)* x v H"R )* " x
GO
G
? x R
],.)*
v
Factorial
OI)*] 2Ro x x GG2 x G R
v %"OG
,8 x )* x G$H
,8R
+
x
o+ x R v ,8Ro
+GO
.Z
+ZR x )* x R
x ] x
,8R"
R)* x x R,8)*k
v "G,.o x
)* x R x )*{GO,8 x x 2RGq x R x R],8 x GORG2R$ )* x Rk x x R
qoG$ $,. x
,8R v
tgl=> select (4.3 !);
?column?
----24
(1 row)
Nota: Por supuesto, esto conduce a un resultado matemticamente sospechoso, debido
a que en principio el factorial de un nmero no entero no est definido. De cualquier
modo, el papel de una base de datos no es ensear matemticas, sino ms bien ser
una herramienta para manipular datos. Si un usuario decide obtener en factorial de un
nmero real, Postgres intentar hacerlo.
Funciones
zmcm8s
fnaocf8sf
u(v~ 2,8o x x R
qG",8Rq x ,8R
]
2R)*, v
v~ 2,8oo)*R| x
v
v ,8 x 2R
R
x ,8 x &,8 x )*2) x )*,8 x ")*)*
x %)*
qH )* x v
v "'( x x ,. x x $ RZ
x
+
x
2G,8 x GOR
2$
,. x ZH+R x ]
x ,8 x
v
, v
k
$ x ,8 x ,8 x I 2R)*G",8k] v
]R
2 x '(I ,.RR2 x R] v "(
x ,8 x
R oG2RqH
G,8 x GOR
v
v "",8
q
+$ )* x R&
x
2 x
]
,8 x ,8
,8
,8Z
)* x Z
+ x
,8 x
x ,.$OZ,8)* x x
)*,.$RO x
G)*G,
x
v HH'($ x )*$,.
,8RG
)*
x
x
+G OH
,8o x |
G,.,8 x ,8,8 x k
2G+
,8
2 x R x )*2R v "
2]'( x ,8R x x ,8& x GK]
,8 ) x
x
q
q x RGO
q
,8 x ,8
v
v ,8?,8 x
$*,8 x ?=R R
R)*G",8RZ,. ZI 2RG
K]
q,8
,8G
q
,8 ) x
G2
x R v HH'($
)*
x ,8 x
R2 x '($ x x x x R x ,8+q
,8 x v
Ejemplos
Funcin factorial
Funcin substring
k
x ,8 x substr
,8G
x , v " x )* x x
H )* x R8$
R
x (v
H)*
,8 x x ,. x x R
o,.$
x
oR2 x ,8 ,8RRR R
,8R)* x Rq,8 x 9% x ,8 x ,. x ,. x
Rq
RZ
tgl=> select substr(1234, 3);
substr
---34
(1 row)
qGRO x O)
H x $
?(
tgl=> select substr(text(varchar 1234), 3);
substr
---34
(1 row)
Nota: Hay algunas estrategias en el analizador para optimizar la relacin entre los tipos
char, varchar y text. En este caso, la funcin substr es llamada directamente con una
cadena varchar en vez de hacer una llamada para realizar una conversin explcita.
R6j?9Bi?j^??)&)Xj^^?Bh))g)BR??))j-?BBh)9XB??QM+
tgl=> select substr(1234, 3);
substr
---34
(1 row)
"4?&BM6Mh4ihX&
tgl=> select substr(text(1234), 3);
substr
---34
(1 row)
Resultados de consultas
)J)XL)c)X\)
B X^6\6M+)XlX^4"4?h)
B g BX6)?l?BBh9XB?H?9+"6?jd?4ih4&B)j?vg"6?R
B J "6?h)L?J#l?jBhhhj\&J?XB)$d)"iBR$4i?Rw)
ij&B?jB?hKBjBXM?BBhBXjB)rBBi?j&v6\6[?Q?B?
ijg?&lBj&"$+?[$?j)"&4Bj6J?&"[+B&"$
?vj6BQ^Bh"lijL??B?h
Ejemplos
Almacenamiento de varchar
)X)ij?&B8X?))J8Xj&&c)"XB)\)?6??BhijB6?^)6
"6?)BQh?BMjh)&Bv)X
tgl=> CREATE TABLE vv (v varchar(4));
CREATE
tgl=> INSERT INTO vv SELECT abc || def;
INSERT 392905 1
tgl=> select * from vv;
v
--abcd
(1 row)
Consultas UNION
[ijB6"Xi?j
)?L?
4iBh[#iRB^2&)j??2[B)
?j?6?Bhr^L"4?h)
)J)XL
B &J46?j
h?jr6L?4B?X)hj?r4?h)B
B
B?hX)r"6?h)M?rX?)6?
)r6\h)?)4h??r?&
i?R6? Q?X?&B9M"6?h)J
Ejemplos
Tipos sin especificar
tgl=> SELECT text a AS "Text" UNION SELECT b;
Text
--a
b
(2 rows)
UNION simple
tgl=> SELECT 1.2 AS Float8 UNION SELECT 1;
Float8
---1
1.2
(2 rows)
UNION transpuesto
jh?j4
6^j)Rh6h)6$M?jrh?$?M?&X?)6M8
!
"
lBl6)hl)?hB)?lB)BR??))jr$#?l6r6X
&%w&hj'%h?dB")(
j"d46#4&)?# i?J?#Q?v XB?XQ"X?l6)Q J)B)?))j +*
XR??r&jg26v&w% &hj$
% ?^X)B^B)X&jBv6?4iX?j&)"2B
R?,
tgl=> CREATE TABLE ff (f float);
CREATE
tgl=> INSERT INTO ff
tgl-> SELECT 1
tgl-> UNION SELECT 2.2::float4
tgl-> UNION SELECT 3.3;
INSERT 0 3
tgl=> SELECT f AS "Floating point" from ff;
Floating point
----------1
2.20000004768372
3.3
(3 rows)
-
B44M)"[?&R??#4
#4BB)BXv)h)6v4j&RBi . B6Bj?v4)(
BdR?Xj?&B$i?)6$Rh?h60/^B?X)"64 )r)??iR?jB$?#"J.(
?l4?4
B)"j?Rl6
/^??"6?K??1 /^$&)BX6?BXv)hl)B
?B6?jLh?&r)"?BX")6^?dhB"6BXjB?B?X
/^l
j&rjB?B?i4r&R4B4
2d)X2)$5)JB76?Qj9Bd?B4&)"8JX?4 )lX?& B)&98
Xj?& &) )?6&B)Q))6jX?)4j)hi?R ;: 4)hjX?)62?26 h
6X?8hB[j)h$896&
j[)?X?)?B4 3 j+)&?4["?B4
jC (Q?Bh4
/^j? 6^hB
X?)69 8JhB?[j)jMX?)6[?Bi?4
Xj&)?j cih?B9
jj (
hQ?Bint4_ops
44 < Bv)?-4RjX?)6?BvR) (
"j?hM4RjHX?)6
jKB)c4?#
>X@ ?XX)$ 5))#?B4Q?B jhB["6?j-l6 (iB4BX?j
2=3 j
)J??#8jB9&j")h?hr26?B?2X?)6 + B6BX?jB)c?B?i4$X)d
68jR?#)6)Xi46
8)2)6dj)j
BR) /Lj?Bj&)??^"?"
6j&M)B6&)h?^hQ)?QB4 hQhBM)6)h
243
f
Keys
Author: Written by Herouth Maoz 1 This originally appeared on the Users Mailing List on
1998-03-02 in response to the question: "What is the difference between PRIMARY KEY
and UNIQUE constraints?".
J?&)j
6#?hBl?6-6hd?4B?Lv6X?1/ 3 j
+)&? jX?) <(
X?hQB&?Bh?
?B8Jj
k Xj&?B)?jLc?B)BhB?vhQ/^?^?Bh??BQBM"1/
: 6?&?
D B6?&?#R&?B?dXB6)?B 3 j
R&?
HB)lXj??X?jBj-??& 6 < Ri#i1(
??X?j#?r?Bh?4 82B?9B&hJ /^B?i#?
B9?&)!
6 l B?
68?$6
?^4?h?c
/L4c4hR&)J??i)h?jL"4?"B))X^X??4ih?
/^??)?6QB)9B?B)&
m 1
E BM
n 9hB)j$B&Rv?B
/^BV
/^RBHh2&?
9Xj??X?jo
/^??r)?h2?Bh?
?
D B&XB)"J
6BM /MR?^BRc$ /^[X??4ih?jBBR&
% ?
X?BX< %wiB$B
B)4 ) ) ?BMjBM#B)BdBBMh) pqq4 ?rBj
jhB6$6?XBvXj??X?j ?9BR& EQB"4
j"l& 6v6"@ /^?B?B hB
)h)6hB)B)&M)"9B? < m 1 /^hjB#jhB$h)?l?&hBv)hR[4?hM
Bij??Xh?Br)?MvBMXj??X?jj
^)& H BR& /^?#?B4hi?4B
(
r "ih)6?hM?B8B?4hBMX??4ih?j#B)&MjBjRih)??vBBMX1
??X?jX
s 3 j-R&??j&jlX?8[XB)B$hBBR&jB$X??Xh?Q
"j
% ? X?BX< %$
% ??jM %w?_
/^??H6h??H8hB^6)&X??4ih?jBjB?t
/^?hCL?h
i"B
B)& H : ?B8RrhBMB)&?B?+hB) BUu
v
U
:
?&Ro64w
2
x
-y
r6#jH?4B??B8B1/
)B#"?4?BQ?
r?&j66h?jB)"BJhQ)
Bj?#BJ)??1/z )
x
x
lB?M4?H
: "6d))8)?hB)?RiX6vBM"1/
6 cB?
x : ")h4?)6Q?jB8)B4)"F
!
"
x
x
w
/^B8BBj& (B?B{
6rRB#+??X???d6RB)" k 6BRnE??
j#&6B46RB&hB)J?B?X
)"M?&?&Bh)h?&(4BB k 4
Bj<(
BMBM?&?4&Bh)?jB)&"?QBM"?4?jB
4 /^4L)LhBM)h)6 9 j6"
j)??1 / Bj& (B?M?B?X6Rc?B?X46^lB"X k 6)"
)Y/^)BY(
Bj#&RQ4QR?RBQXj&?c)?jdjc?X?&B6)6?hhBM)ihB)
j j& B-B)[)#?B&hB6[Xj?&B < B2?B+)"9&"?L)?&?4&Bh (
?jB)J)?|
/^B?i Ri W_*[
r h?&j"h#X)6[Xj&&B?#4?
dvBl&"vhX?Bh? 4 j& W_*[
r &R?cvjC)??jB)&)6"66X
)
64?BCR
66h" ? &)? &&j M B}
/^??B)d4X?)ij&&)B-j
+)&?
:
COLUMNS ~ cols
B??rBjB)^4?6?BQX&&)B\6J)8+)&?4
)XM
/^B4X")hlQ?&)R
6#vB?Qij&?B)h?H?6BM/^B4
?hB k 6X?X)h?j4?-6)LhB))?BQ?X")hijBj
hB)B["w?4cRB
)hMhB{
6?j?B8hQ&j"MhX?BB)^64B?)j6X)X
s
/^)B8dXj&?B)?jjr4?
/^B?i?lBj
B?^)[L6XjB)
jB?rj
64i)#"??&
BUJB)MQ4i?Q)BB?B
()h6J6h)c"??BQB)Bij&?B (
?jX
s m 1 /^h)?Jj
/^)Bcv& 6BM"h?4c4jhX?Bj) B?B)Mv4jchB
&)Bj WX*[ r "jc?4H?
j
(JM?B)^?B+)&8?&)?B) r}r W_
X&&)B
)&?Bh???B WX*[
/^?hBjK-j
6B1 /L\
r /^B?X i"4)4?B?i4{
)6LjdhBM)XB)cjdB)M4BB?B&RB?)6LjLJX?
X&?B)h?j
, 6
c?4)B" 44?4Bi4
Partial Indices
Author: This is from a reply to a question on the e-mail list by Paul M. Aoki 2 on 1998-0811.
r B jHRJ PP J)?Rg?B?i4r6?B6?B?<(X?)6M"?Xh
Bl&)?&&j?)h?j$)h?)B?B?XM?hB? 4?K)?KhBl?Mj)9 6#hB)-i)
"h)?^2)?B4Q
R?B?BLlX4h)?)B /^Bd??)?cQrhB
/^Bj?
R?8)B 6hhB^)66X?)h 6)X@ h?&^X6h9 n8 B")"8jc2"4)6Blj1 84
X$ C XD 9 f-.f Hh)??
B
j) BLB)?
B^&)XB?B4??)h^RB Rh?)H?B?Xl?6&
)$R?Bv6?X?j /^B?X&?B?X$
-??
ni)B Ljh?&?))?j /^B?X
?B?X2
6< nX 8J BhB^Rh9hB)?Bcj?8X??B|
/^B)"J?X)h6&)hiB
:
/^$6?)4?
6X
/^) 3 2Bj6
/^B)"L?B )R6dhBiKhB
"?4&
)")6?X)??8)B)?jh8B9X"6B?B^&)4?)??R#?</ "j?&6
)??u
/^? ?hi4B
Xj
))&hvRB &?) B4^)"? hBd4BRiR4
B)""?&jB$6)BRj"?B) k hJ9 8B4@ BU
6 (B)""?w
/^?
?)C 6@(j2+hB6?^h4)X)6hB6?4ih??46?&)h?LhXBB?j?r6X"
; f;f ))B jH&j"M?B&)h?
BC 6X$ C XD l f-.f ^l"iM
Notas
-
B B 4j&Sj&)? jB ) ?
B ) 16YS $ '6?4 &*
Captulo 8. Matrices
Nota: Este debe convertirse en una captulo sobre el comportamiento de los matrices.
Voluntarios? - thomas 1998-01-12
6h"r&?99?)h?hj$Bl?B6h)BX?[6R#B?j$X&^B[&)h?
&???&4B6?)Rr?B?8h2cR?Rg? 4li"46$&)h?i4KrX)??JY(
[?Bi?Bv?jB?jJK6)? ' )M??6hRH6^6RJ?&4lX"&j
BX?)6XL&)h?X?j
)6
CREATE TABLE SAL_EMP (
name
text,
pay_by_quarter int4[],
schedule
text[][]);
r4ih 6"???Rv?QXcc4Bi?j&RB&4Ri?j)6)[&B1Q)[?)
&)h?X66h 6-B#&)h?L ?&4BjX?B)#Xj ) CB)??)#Xj
)4w
: Bj)Bj&j[B)XM)?B)[XB6?Rv6j : e 0r} ?&"B&jl(
)&j2X& )XX4L?&4B BL?)2&R?X2^?L 68XB6?h
"6d?j[Bj&4[^?jl&?R2Xl)j[iR&?R"C4CH6B Y (
&6"M
SELECT name
FROM SAL_EMP
WHERE SAL_EMP.pay_by_quarter[1] ~\
SAL_EMP.pay_by_quarter[2];
+----+
|name |
+----+
|Carol |
+----+
6??4BMXjB?h9"XMjRljh"iiH?&6"jj
?jr4&?)j
-
+----------+
|pay_by_quarter |
+----------+
|10000
|
+----------+
|25000
|
+----------+
R&Y 4j&jMRiX)?)?&4Bll?6?Bh)"X?jB[?l&)?ld6M(
&)h?X 6h&XjB6?&"X#?&l4?&BhCd?)Bd ??)#?
?&"jr)#?)?96&RB
SELECT SAL_EMP.schedule[1:2][1:1]
FROM SAL_EMP
WHERE SAL_EMP.name = Bill;
+-------------+
|schedule
|
+-------------+
|{{"meeting"},{""}} |
+-------------+
Captulo 9. Herencia
XBh?Bl?R$iR?)?4$9?4h)j$2j
"i&jMj$X?)6 C lX?)6
R&Y48X?) ^)h)?&capitals
BhR?X?)6
B44H
capitals
(
text,
float,
int
cities
- (in ft)
"") "$hj2?j[)?j2B)&4
6X)jBB^?B6h)BX?L
j?)?jB+)??hBM?9X?)6 capitals9 j?J8j )?QB)&Mr+h+L
)hlBR?[ jh4)X)cities
BR :l
?jB?h#cR?4? H h?l)h?h
j?)?j
N)hc ?J)h6R&Y BR?cR& &"j9QBhR
Njh)B
[?v"X?6?j . : 4&)
h?Bl )h?hLh)j6)hv&6Q
6R)K^hBX ; capitals
j6"2B^i?RB4")B?B^ )?)
h)HX?)66lBXjB?h$B)X4
4BX?)BhlhR?)H?B6)BX?)
B
X?)6X&v9j)?)?Bh)BX?)6r4XB?B4
Nota: En realidad, la jerarqua de la herencia es un grfico dirigido y acclico.
h4&??26??Bh9ijB6?[BXBh2h)r?)
X?)r6?h))
2B2)?hY(
d\ PP ?4&)
SELECT name, altitude
FROM cities
WHERE altitude > 500;
+-------+-------+
|name
| altitude |
+-------+-------+
|Las Vegas | 2174
|
+-------+-------+
|Mariposa | 1953
|
+-------+-------+
h"d?Rg)vBXjB)
?Bj&4lj)?)X?)i6?BX?B#?)X(
?R?26RB^46)?X)??)R)2^C)?h?BX?&^? PP ?4B?
XB6?96$ #?,
lM??Q6??Bh@
+-------+-------+
|name
| altitude |
+-------+-------+
|Las Vegas | 2174
|
+-------+-------+
-)
|Mariposa | 1953
+-------+-------+
|Madison
| 845
+-------+-------+
|
|
)#g4&$l6)$
?B?il[?lXB6?l24??R)696"
j)?)2X?)626cities
4 jM6\&Q??^?2\)")#8B44BX? <r cities
XB)
M?)r"B4
[c&
)B)??))v
\ u ^ B&?4d?
???)Ri?j^\
)R)9 #gXj&j"6RXj&484 1,X
Introduccin
Aislamiento transaccional
6)c) :
9
k BriR"B??4Kr)?6?)&?Bh9hRBRiX?jB)l
& (
X?vr"-BXB
4Q6hB?jHvX4BBh"
h)B6)Xi?jBHXjBi"Bh
6jrB4iBjB6)Bj
6X
?X)X%w6i?Rl%
lB)B6)XX?8?$)h6X?jJ-BhRBRiX?jBQ44RJ)4BQX6)
?X)BQ"J??4
[B^h)B6)Xi?j ?Q8?)j9"?)&4BQB)M#?<#?&BXB
MB)^6?Q&j?iRjBhRBRiX?jLX6)
?X{%w)Bh)6&%
lBQhRBRiX?j&c4?c[v\Xh)$BvijB6?)4cj??BLXj)hh#[(
?)lL6)?6)XCBdijB?X?j 8M 4#BXB#^hRv?)v
R?6)XL?XB?i?jLB)^?Q?B6)RJHhM)B6)Xi?j^X6)
jX)h"^B?c4?2R??R&?BLdX"6jB?Bh)XX?B4M626i?#&)
)\
\^)
)X\&)\Qi)
Lectura "sucia"
Lectura no
repetible
Lectura
"fantasma"
-)
Lectura "sucia"
XhBX6)
Xhi6)
Xh"h??
???)R?
j ??
^v6??
8Qj??
8Qj6??
Lectura no
repetible
j 6??
j??
8j??
^j??
Lectura
"fantasma"
j 6??
j??
j6??
8Qj6??
?{?X)4BB?B9)?6?)&?4BLjX84
6h" )B^Bvh)& (
6)Xi?jC6^h4ihL4C68B???^XB6?dj?c)h[XR[RB[8?
XB6?X&BR)lBBXM
B)hw
%w6X?jl %JB?X)&?jQhRBRiX?jBX& (
X"iBX6)jRB?Mh4XX?jd?XB6?h
BBv?4c4?QJ
BijB6?&?4B)M[\XQB4i?R4X? )u
^ gj
) \}@ u 4hv6?B^)Xh)??RljBvh)B6)iX?j
XBX4B9B^i6))+BhBX?[6Bv)B6)XX?d[?BhBhl)XhR??)6
?M6)wM?hMh)B6)XX?Q$X6l)" ' 8X)6[)"44?Mh)B6)C (
X?L69MJjXK2X)&?)K?[? 9 LX)6M6X66c?9?
j)@ #?l+?hj
\&?jB#B6?#j)lj$?QjQh)BRiX?jB?QXB6?h
6$"h4ih)
6h?[
X&Jj)$$?B$?6)?6)Xr?XjB?X?
M [?lXjB?h i ?lB4c2?j?[?l6)h?)XM?[XB?X?jBj6
)X)??4)v))v&)"XJ)M4H)Xh)??))B)
4BQ4&i4BQv?M"6?)BMl?v\Xi?j
0 \ $
X ij&B
XB6?RBBQM)8R
46)j)B6)XX?B4XjBX"Bh
ERROR:
jB&h)B6)XX?j 6?)??))?dBJd&j?i)[?R8X)&?)48[h)
)B6)XX?B44J) rM?hRBRiX?jL64?)??R)?B)9&4)
Nota: Tenga en cuenta que los resultados de la ejecucin de SELECT o INSERT (con
una consulta) no se vern afectados por transacciones concurrentes.
--
Bloqueos y tablas
6h"M"Xl)?j&jl?j&RlijB"j?)$)Xi4dXBX4BvQ?j
)h&h)?) C: ?BM[4hjM&jjM[?j#?j)?" 6h")h&(
?X)&4Bv)BhMv?\XX?vBX?)4i?jBc&?Bh)vj"j96"j(
X?B)
J)M46)jrj?)r)??X)X?B4 9 j$?j
&jj$M?8+i4
) : iX6 B" C 6cR??8^)B6)XX?86)B?4B^B)6?M)X?j
?h)B6)iX?j
: 4&$M?4Xh)&Y L6962X&Rh?X?LdX?6?9)2XjB"j?))X4l (
6H
?Xh& 6X?
?)K)B)K
R?RKvh\Xj&)? $ hr
h
6jB8&)"XBM?B&4?)h)&Bh6) $M8?v #[Q)XhR??)
/
W 1
BR" j+6
: ??8_
\}MO u \, _ )9X?))X?jB
IN
/
W 1
X?6? j+6
vR?" u ^
X \,X )M4i?R4X?B4
c)" j C6
)Q4i?R4X?B4
#)?4" \u"$^ )\, _
IN SHARE
MODE
N?X X ?^&jj W M/ +X?? C 6 B)" W M/ +X?? C6
h Xj&
C6
X?6? j+ 6v : Xi4 +X?? j
c)" W M / +X?? C6
Qh& \, _ R4X?)w)X?B4
-f
+i?6? j+6
Qh& \, _ R4X?)w)X?B4
IN EXCLUSIVE MODE
C6 W M/ +X?? jC6 B)" jC6
B
lX&N?ih2Xv?-&j W M/ B)" j
BR W 1 / +i?6? jC 6 +X?? jC6 : X X6 X?6?c C6
Bloqueo e ndices
B jh4$"J"X?B24?j^)9?Xh&6X?h92Rj
dR?R
BQjX")9#)X)M4jQ)Xi4v) #?B?iM?&J?&Bh)Q48 6h"
#B?XjL&)B\)jr?6??Bh&)B&
jr?"iB4rh?{
:
B?XXA2
W ( 4
^?r?4
#B?X&rh? j&)?X?jXg4X?6?c?)R)XX6
?X&6i?h B ?jL?4Bl?)6)2[?lX?))6?j&6[B)
\X)
fy
B?XB)6
"i
rRv?jj
B?c4+r)?B$X)h?X?X+X??\)Ql?K)Xi4j
M?X&6X?h l $?jj69??4cRd2X)?B&?))&4B4)4
Mgh?
#?B?X64?B6h)vQ6iR
#B?X h""j"X?jB ? &)8R?&XBX"BX? 6? "X)
%w6)
!
&hjl %
Notas
f
B4' #
csh tcsh
B)?
#4BiB4"
X&
.login
4;B)?
sh ksh bash
$ PATH=/usr/local/pgsql/bin:$PATH
$ export PATH
)gic"
86d?"6h?QJjB) H* M)Bj8)4?)B$)6&?"&jr
BLB.profile
R?-?"6h? ? 6h"9^6 R ;: 4&)6BBR4&2"iX4&(
4&Bl4
4"BX?!
)XBRB8cR?4?Q6B?Y8R)XBRBcR?R?
vBhB1 ^?#?)"dv6hX&Bh R -B4B?4BvX&?4)&4BQ
??&
)4[j"$Xj&[&?X)-68)h
M )$ #?$Xc?h)-?)H)?B)H
&)B)gF
lB?[M6X?86d6B?)B4MijBh?BR
cB)&?B?h)r26 6??#BLXBL?)X6)Xj&d?B4&r4
4ihjjY (
))hBQv")??4)
)?Bv)"l&) .
\&?j64J6?j
l)6l; (
jBv&)?B"4&h)gB4i4?h)v44i?X)rJ)?jrl?v)?)?2[BhjB
A m
X 4B&"L^?d&)?BL6?L?#)6^^)hj #cR?4?L
BhB A W vh)&Y 6BX4)? . i6h?vB94h 864
?B4B)BX)$B)??X)X? "4i?[&B66\l"
Q?XlQB4
XBXh)XQ
' * $ #?$XjB?h)-?B&?)h)&c
ij4+)&?B?6h)
6d?h?QJ)Mpostmaster
)4)66dBjBQ6h9ij46R&BijB)
f
96)KjXlUUX)XHC?Xgr"6B6)?Mj?26?jLcRM?9?B6h(
?)X?# j6"6j)?B)$)69)h?B6h)?))$Jd4
R&?B?6))$J
h6B))??))MjX [X)XK)HU
X)-)iX H "6B6)???Rd?9)
(
&?B?6)X?#2?424c&j&Bhd#262i"4[?[)692Rj + : 6)?
6?)K????v)X")-B4c))6)jw
QB4cjr6)? [
R?[hBM?jh?$?c??4?l$")??4)-?M&)$ #M$?)?)"
)&?B?6)h?)
6"6+"Bj&R?&B2B84B[?j&?6&????$
6?h&j)h?cvMj)&?c?hRK?jiR
A2) #?M : &?B?h)j j6" k hRM46j
h?XjrXjL&Rr4)??
% createdb mibd
QJ)MhBHg&?6&"6?)v4B"l
psql
6i?
B ?4B&4
????BX6)?J)&X"4vB)6#)h6Kc4&r6??Bh
&B66\@
% createdb mibd
WARN:user "your username" is not allowed to create/destroy databases
createdb: database creation failed on mibd.
f)
$j6??2X")Bl)92)h$4?)r?"Bh[c2[6h?B)8)
Xhd)Bhv??Bh)?)X?j <W X"[Qi)?XjB6?h?)6lvRj
9B4XB^"R?&Bl^h), 49&jjMQ?8)6)j6BQ&RB84-?)
jB6X")?)6MRj4&?h?j)XX6l)g&hj
)?i)X?jB)?4BR?)M)6rM)j
6MX"4dj#"=?)&?Q
B8c)?)?QQ6h)8-iR&?B&)j?)K?)jBQ)?&Ri4B)?
)629)hj + 6[cR?)?26R89B)6?LB?lRB2))BXr
&hj$Lc?)r)[Bl)Bhl42&?h?
4X?v462?li4BlB)) (
&?B?6)jjh4 9 B6?h9Xjd4)&?B?h)j?jiR6j"M?X)X?jB
"Xj& (
)))L)628Rj ) 8486)MX)??4MB&"88)?)?Q)??
)?B?X)M?ji)?42)?hB)?jc)B68"4ij&?B86)MBj&"2Q)?)?
X^g"4g\o
A * :1: M)?h)HXjB?jBrij^h)r)?)?i
Nota: En versiones antiguas de Postgres, tambin se permita el uso de nombres absolutos de fichero para especificar diferentes locales de almacenamiento. Aunque es
preferible el uso de variables de estado ya que da mayor flexibilidad al administrador local para gestionar el espacio en disco, tambin es posible usar caminos absolutos para
especificar ubicaciones alternativas. La Gua del Administrador discute como activar esta
funcionalidad.
$R)B4v6?)&[?B?)X)??$X)&?B#)?)?v[6)
)B9?M)44^)gB)j)?Bj
X)&?Bj)?X?B)?4 ' )?X)X?jB)?4BR?)
86K"Rw))\XRB
initlocation
)8X"4MC)")?&)Xc)&?Bh&6)B?^)?)? A * :1:[ )89 (
9\&?^h?B9B)?j
)64"6
+?69L
Q6X?? 4K8)/alt/postgres
?M?8XBhL4-R&?B?6)/alt/postgres
jM j6" J j6?j$ (
&BhR6?9Y #?BX&)c6)6X?
% initlocation $PGDATA2
Creating Postgres database system directory /alt/postgres/data
Creating Postgres database system directory /alt/postgres/data/base
)2X"4Bl)699)j$4#)"2)?&)XB)&?4B8)?hB)h?c
)?-M?MY#?BMij&)Bj6)M4g??Bhij&)BU
A * :1:l
QJ)MB)XH?v&?6&)h?H
psql
4X?
RB2h?B
+????2BX6)?2)
i"4)J)6-$)j6$R??Bh&4BhM
% createdb mibd
WARN:user "your username" is not allowed to create/destroy databases
createdb: database creation failed on mibd.
j 4?jX)4??B8+?6M8&jj?9)6M)hrB8?4B)j?R)6?j#)
Bh)K84v6X??H86?"Xj?j6)c4?6??c@
% createdb -D /alt/postgres/data mibd
ERROR: Unable to create database directory /alt/postgres/data/base/mydb
createdb: database creation failed on mibd.
% psql mibd
46)?)lX^j6??4BM&4B6\@
Welcome to the POSTGRESQL interactive sql monitor:
Please read the file COPYRIGHT for copyright terms of POSTGRESQL
type \? for help on slash commands
type \q to quit
type \g or terminate with semicolon to execute query
You are currently connected to the database: mibd
mibd=>
6#9 #?&j??B?X#4
&jB?jQ?6iXBX??l? k
"6jB
Bh"#v)"QQhR6hdQ&)Bh?BQ&B?hc < jR&
X?j2v6X)vQX&?4BX Xj?8)v?Bc4h?)@& psql
h4&?jJ
hBK)6"?96?Bh)+?rc)?jrXj&)Bj k 6h"jH&4?QM
mibd=> \h
lB#L4&?BdL?B"jX?[6QXjB6?h)v
XBhB?v)j4?jH 6"6X??B
)"i#dh)\K8)6)9
mibd=> \g
mibd=> \i miFichero
f)
)6)??
psql
Q"i6)HlB?+R6X?
mibd=> \q
6 [HR&?B?6)jM^?^)68^)hjl&J4h"??LRB
6??BhMX&RBo[B?)
% dropdb mibd
6&"h?^ #?X)&4Bjj[?[XB"
lB?d)6ji?R2XjC?^)68)h9 B
j)4H"X46)&RBM4BXBvij^&iB9J4&?h)X?
f-
ff
yy
ABORT
Nombre
ABORT
M?)B6)XX?^^X
Synopsis
ABORT [ WORK | TRANSACTION ]
Inputs
^jB
Outputs
ROLLBACK
4BhM4c4?l64rXj&?h)QXjL4?h
jBvB)h)c)XX?jBr48X6Q)Xh)?&Bh
Descripcion
6B)XM?[)B6)XX?L#X6^X)2hR$?)
Rih??))X?jB
BXB)
jH?9hRB)XX?jL6R86X)h)B) 9 hXj&)BQ4r?4B?XQ4LXj&jh)&?Bh)
X&)B \X\ k p) Q6M"6Bj?)&4BMj))jBB?6j?iR
XX
Notas
lh???X \O$
)Mh&?B)H?hjR&BB9)B6)Xi?j
Utilizacion
))jh)Kj?j
X)&?
ABORT WORK;
Compatibilidad
SQL92
_ \
MODIFICAR GRUPO
Nombre
MODIFICAR GRUPO
: B)?-6)?jM8"??&?B)-6)?j"
Synopsis
MODIFICAR GRUPO nombre AADIR USUARIO nombre de usuario [, ... ]
MODIFICAR GRUPO nombre ELIMINAR USUARIO nombre de usuario [, ... ]
Entradas
nombre
jB&"Mg"Q9&j?X)
nombre de usuario
l6)?c)M6KB)?jv4??&?B)jr4" H
?jr8+?6?
Resultados
MODIFICAR GRUPO
y
4BhM"X??B6?McR?)X?j8Mij"X
jB&"$(
Descripcin
6
6)
X)&?)4+ BR?6R?j$"2[??&?c)(
?^" 6 ?v?r)&?B?6)j")6)j86)K69j"
: B)?6)?[JvB[X"$66)?
)?&Bh4??&?B)-6)?
^vB6?B?X9M6M??&?BMR6)?v4^j&?6&
l6)X
]_cc7\]_^7`8)i"R8"lBl
[ ]_^ `\]X^`L)??&?B)K
"
O$M$\ }\
Forma de uso
: B)?K6)?jr9^"U
MODIFICIAR GRUPO personal AADIR USUARIO karl, john
??&?B)Kd6)?vML"
Compatibilidad
SQL92
^[+?h
?Mj" $M$\}\
k )p)$ XBXJ[
"?RH6?&??)
MODIFICAR TABLA
Nombre
MODIFICAR TABLA
j?)irM?)&j?X)i?jBrh)?)
Synopsis
MODIFICAR TABLA tabla [ * ]
AADIR [ COLUMNA ] columna tipo
MODIFICAR TABLA tabla [ * ]
MODIFICAR [ COLUMNA ] columna { SET DEFAULT valor | DROP DEFAULT }
MODIFICAR TABLA tabla [ * ]
RENOMBRAR [ COLUMNA ] columna A nueva columna
MODIFICAR TABLA tabla
RENOMBRAR A nueva tabla
y;
Entradas
tabla
jB&"M^h)?+?6BhM)M&j?X)?
columna
^&"MB9ij?&B9BQ9+?64B
tipo
??B4c9Xj?&B
nueva columna
^QBj&"M)MB9X?&B99+?hBh
nueva tabla
^QBj&"M)M?9R?
Resultados
MODIFICAR
4BhM"X??B?Mij?&B2Q?h)?M6MB"Bj&)
ERROR
4BhM"X??B6?M)?v?9X?&B9BvjLcR??)
Descripcin
^[Blij?&BvX)&?2?&[6[&RENOMBRAR
j?B2B?B^2?RjijB4B?jM4
?9R?M)X)B 9 * 6M&jj?9h)?9?9Xj?&B[J&RBXj&?6&8?J
R& Bv46) rM6hMij&)Bv6\XR
l6hd4H4X"4j4hh)?)jKX)&?)Kd64&
Notas
B)?RMX?)
&6)jK?M6&?h?
COLUMNA
$$6??4BvBj&$
Bh)??B?i$?Mj"Q4rh4Xh)6$6j
6
R?Qhj)?))?R6486hl??48?\)") #?66B. 8RK4ih4
)h?h8BL6[ B)?8[8"Bj&)8B?BBv9?)6i?R4 C 6^6?&"
B#BX?BR)&J"v?)6X?)4B))&J"?LR?Lv6vBXBh)
8?96"X?)6
?"44B$?&?&Bh)X?jBR?)i?R6?)jKX[v??&?R))?MB
X?&BQ6)&?B)R l642R$?v"
O@\,X )
jB?jH)?"4KjPONER
2&VALORES
)-)"
POR
[6DEFECTO
QhB
R&Y 4^M)X)??R)H?Rr??BRr+?64Br?j
Bj
)?"4j4
46j+RB
`[_)c
l6h ^4[X")j9L?X?)6d)#j9X)&?)[44& 1
W 4B&)
XR??)h$$64&M+iR)?j[
6?64&B[6&?? ' F
)0 $X
)w
`X Bw$ @ ?4BM&)r?Bj&)X?L?)B"4Bi?R66Bh
* ?' #R9 \
,X )lBv6i?Ji?j&)R&??l9?jMR&Bh)?Y (
j
Moda de uso
) B)?KB9Xj?&B9?J :WXFm: W B9h)?&
MODIFICAR TABLA distribuidores AADIR COLUMNA direcciones VARCHAR(30);
)"Bj&)KB9X?&B94?64BM
MODIFICAR TABLA distribuidores RENOMBRAR COLUMNA direcciones A ciudad;
)"Bj&)KB9R?+?hBh@
MODIFICAR TABLA distribuidores RENOMBRA A proveedores;
Compatibilidad
SQL92
["
6hv)6&?vXj&?v+XX?j9lBLjjhv?jc;(
COLUMNA
?"4vj9AADIR
XC
?&?)X?jB6-ij&C6L4??X &RQ)? 1 L"
MODIFICAR
4h^6&?6?c^X&?4
COLUMNA
k pR 46X?X2)?B)$X))X?4$R?iB)?4$) O$M$\ O, _ j"< (
BMBQ4h)^j)@ #??"XR&Bjjh))j j6" k
yR
: B)?rd??&?B)
BQ??&?h)X? lh)?vXj&#BQ??&?h)X? [ij&";(
i?jBg?&?)X?jB?X)g8???)X?j#9"4d4h;B) + )9X")H8??&?B)B
??&?)X?j
B?X)4X"4[??&?B)
#B?X
B?Xj4"64ih?)&Bh
X]_cc
a
b [cdM < RQX)&?)$j)X?)6vv??&?h)X?jB9B4i4?h"X")$&"X4)
?
)?)cQj"jr))&4"jR?9_
]Xc clo cd"4
jh4&?)J)??&?B)HiR?????)X?jd48B9h)?
distribuidores
??&?B)B
X?&B$B
h)? j?4B&4BXRr4??&?B)B
Xj?&)
?6hBh?9R?M6K"X"RQ"4iRgR&
CREAR TABLA temp COMO SELECCIONAR did, ciudad DESDE distribuidores;
ELIMINAR TABLA distribuidores;
CREAR TABLA distribuidores (
did
DECIMAL(3) DEFAULT 1,
name
VARCHAR(40) NOT NULL,
);
INSERTAR DENTRO distribuidores SELECCIONAR * DESDE temp;
ELIMINAT TABLA temp;
)2X?)6?)l)L"Bj&)MX?&B)lR?R[j+4B?jBl)
k pR BQ?Rr"jc4
j6" k
MODIFICAR USUARIO
Nombre
MODIFICAR USUARIO
j?X)K??Bj&Ri?jd?XBh96)?
Synopsis
MODIFICAR USUARIO nombre de usuario
[ WITH PASSWORD palabra clave ]
[ CREATEDB | NOCREATEDB ] [ CREATEUSER | NOCREATEUSER ]
[ VALID UNTIL abstime ]
Entradas
nombre de usuario
jB&"Mg6)?QXh)??)^6&j?X)j
palabra clave
B9)?)w9X?)MM46)M4^69XBh
FWX:F*[
FWX:F*[
6h)9X?)6?)B ?X)Ri?RQ 6)?)X4R49vRj
g 6M64i?X FWX:*[ j6)?QjMB?6"?))6)j
l6)B! W_:*[ 69B?4[2#)?8?[iR)6?)&X"))6r
)j
FWX:F W
FWX:F
W
abstime
QXBQiji?jB)?&4B?Bj)4?v?)?)wX?)lv4hv6R?
J?)w
Resultados
MODIFICAR USUARIO
4BhM"X??B6?M&?X)X?jdXj"Xh
B66\
r"j"X??96)+6)?96X?X)2B2+?6
l?)6rr)h
yR
Descripcin
Modo de uso
)&?)-?9R?)X?)c^6R?U
)&?)-?9)??4ML6)?vB)6M?XB
)&?)
?)??vl)?#BRh?XB)64i?X)BdQ)h?))X?j
+?4[R?j?99 r )Q ppq 6)B?9)jB[Bj)?99h?B Bj
&)M1 U
Compatibilidad
SQL92
R?jrM??&?&4B)X?j
k pRB< h)B)$\?8B?X?
BEGIN
Nombre
BEGIN
&?4B)B9)B6)XX?^^&jQ4BX)B)
Synopsis
BEGIN [ WORK | TRANSACTION ]
y-
Inputs
EO W v
W_:
:u
R?)RX?)jX?BR? ^Qh?B^Xh
Outputs
BEGIN
6v?B?KXMB9B4cM)B6)Xi?j^B6?QXj&B))
Descripcion
-4ih 6" k \X?))B6)XX?B44lX)r@?X)iR
h)&?Qi1(
BX?#ij&R
)Rhjij&&?D^4j"j96?6&R9v)6vv)j6 < j)9R?)w)6
X)26)L96)?dh4ih)84Jj?[)B6)XX?LXj&&?K62\X(
L?&??X?)&4B8)B)HK6)h6H?d\XX?8+?jR8h"&j
\X8C"j??)C 6 ?B?X?dB^)B6)Xi?j 86)?&C&j BX)iB (
jj j?jM46)j26)?jM46[&Xj&)B
[\X))
BLhRBRiX?jB?X^B)68 4??X?h&_
^}aK& ]_^ @ QX
hrJ&RjQ?8\< (
XX?j . jM46)j&&jd4BiRB)^6l\Xh)&&XBd&))?jjj"l?
)B6)XX?^6R' gXj&&?"?"B2)Xh?c?46?B?X)?2 F 8M?6X l
\XX?L&???46)j
B"9B2hRBRiX?jdh)&?d
"?9)
?XB6?64Bi2X)BQ6MX)&?)8&XB)rh)?)"?)X?jB)4
jh" k W_: *
B?
&R??R&?B jQ6h ?R8)B6)XX?B^4
r}r
0* jjB9?)$XjB?h)Bh"89?lhRBRiX?j#6?^h?B2#XBhl?j
X)&?2XjB6??R2RB9Q?^h4iX?jCQ?8XB6? J : -6B2h???))
_\ \X$ uX$
\$X _ \66 )
)2XjB6?)[4-h?
$ 6HB4i46?)2R??R&?B&8hRBRiX?jB2&)9?"6 J
)W
:
:[0 6?hB) XB?j8X)&?jXB6j??)j8)BhL#?
)B6)XX?lBhXj&?BX
"4?&Bh)B4Hr?$\Xi?jQ+?&J6) * r
8B9h)B6)XX?^6?)??)4?
H?#)B6)XX?6h#XB6jh?R j6" k )6Rw#dh)v?)l)XR??)< (
X?B[6R BXB)96HB 8B?BBL84??)2? 6 )2hRB)XX?jB2h?BC?
"J?44h)BR :
* )h&i)ijB6?hBh))?6?)Q)?
Notas
y;f
Utilizacion
)X&4B))Kc2h)B6)Xi?j^6)?
BEGIN WORK;
Compatibilidad
SQL92
#B)#B?BX&RB
^
B4hB6? [?Bhv j6" k r
$ 4??X?h^ k p) 8g?[?B?i?Ri?j9B[)B6)Xi?j#6?4&"26h2?&??iv^4
4&?B)vvijLL4h) \O$ QXj \X\
Nota: Muchos sistemas de bases de datos relacionales ofrecen una caracteristica de
autocommit como una comodidad.
X?j?Q)?R
h???))l)v?"iBh"jj?hj k &Y(
kl4d)?6) )BEGIN
^L6dX?)6)i4"6d8?)l)B6)XX?B[6)B?X)
XRBvh)6?))??X)X?jB)6M)j
k pR R&?^4?" W
:
:l
J)M4H4B?jM)?6?)&?4BvM)B6)C (
X?^j4
46
CLOSE
Nombre
CLOSE
?^Xj
Synopsis
CLOSE cursor
Inputs
cursor
jB&"M^i6K)?vXR
C y
Outputs
CLOSE
4BhM4c4?l64X6Hi4)l+?j6)&Bh
h9)?hM6M6j
cursor
B6hX?)vQ9B6?QX)
Descripcion
??4l?"X"6^)6X?)X&&Xj
)? * 62l6QX<(
)B KXjhcB6&?4 j)X?B4266??Bh[ 4 [ X6jM?
6HX4)BXRBvBQcM4HB4i4?h)
l&X?jl?&??i?hM\Xh)dJ)lX)vXjR?4hLi)B#BQh)B6)XX?j4
4&?B)Mj \O$ v \)_ \
\
Notas
Utilizacion
HgX6j??)Bj&&
CLOSE liahona;
Compatibilidad
SQL92
\
4hh)?&BhMX&J)??MXj k p)B
CLUSTER
Nombre
CLUSTER
jj"i?jB)?6Q)?&)XB6\)")li6h?Bc)j6c?
Cl
Synopsis
CLUSTER indexname ON table
Entradas
Nombre del indice
jB&"M^?B?X
table
jB&"MB9h)?
Salidas
CLUSTER
j)")&?4BvB?)Q+?h6)&Bh
inherits "table"
Descripccion
)6)Bj6
&)B9 jh4
)"?[X?)664i?X)j
)"jR?&))&Bhd ?B?Xd64i?X)
B?XddBR
1 ?table
indexname
6?Q4B?vM
classname
B)lBX?)66M)")46?X)&BhM"jBB))6)Bj8??Bj&Ri?j
-?B?X J K)"R&?B&4[6)h?X Cj)2R?))6c&?BhR[^?^X?)68
)X)??4))+?jiR&?j$B^6&R")j ^2B)X2B?B&?BhB^9&)BhB
)R-B)-?B6h)BX?)K9h?))X)??R) w RB?"X4))?)
&)B)?&Bhh4ih)BQ4jij&)BvB
\
Notas
9R?[Rih)?&Bh62X)92Blh)?94&)ij#4j"L?B?Xg9(
$624B&l[6 Bj&"2??B) j
46[)RBjj?"&?6jXBXY(
jrvh"?B?XMJ?"8X)Bl6M\X4R")&?4BQX?64?B
8?j
X)6^M)XXBrMB9??B)j?))?)hj4&4BM4B"lMB?R)R
"4&)X)v?j9Rj4?R-v?h)?BM?&jh)Bh R ? Rj
Utilizacion
")&?BhQ?"?)X?j8&?))6)Bj^d)h?hQ6)?)?
:
Compatibilidad
SQL92
^QBRQB?Bd4h)hv?B6\ \
4 k p)B
COMMIT
Nombre
COMMIT
)??R?h)B6)XX?^)Xh)
Synopsis
COMMIT [ WORK | TRANSACTION ]
Inputs
EO W v
W_:
:u
Outputs
COMMIT
4BhM4c4?l6?9h)B6)iX?j86M")??49ij^+?
jBvB)h)c)XX?jBr48""6
Description
")??)? )B6)XX? )X) M j^?j8iR&?^"4??))j8jv? )&(
6)Xi?j 6jC???428?)2h)2h)B6)XX?B46J 68))Bh?)^6XB6) 6 K6
"X$B9iR?MM?)?B
\O$
Notes
C
Usage
)B)XKjj
?jrX)&?jr4&)B4B4J
COMMIT WORK;
Compatibilidad
SQL92
k pR 6?844i?X?)j
&)6
&BhX&R??
COMMIT
COMMIT WORK
H H?&)6)jh)Y(
COPY
Nombre
COPY
j?9)hj4B"XB"jrQ)?)
Synopsis
COPY [ BINARY ] table [ WITH OIDS ]
FROM { filename | stdin }
[ [USING] DELIMITERS delimiter ]
[ WITH NULL AS null string ]
COPY [ BINARY ] table [ WITH OIDS ]
TO { filename | stdout }
[ [USING] DELIMITERS delimiter ]
[ WITH NULL AS null string ]
Inputs
:W
R&?24BX&j)&?4B^&)h82X)&j6gjR)B[jj?)hj
)?&)XB)6v?6MX&v4\hr?BR?j6)^?)KXj&hh
table
jB&"MB9h)?M4?6hB
*[
EO
m
j?9j?Bh?X)Kj4h4?BhBoB?X
* c)X)?
filename
"9)6j?4Lj)lB?2giB4"Q4B)Q6)??
stdin
JX?X?9B)c?4BM^XBXhQh&?B)
stdout
JX?X?9R??^ijBXQQh&?c)
delimiter
X)Xh??&?h?riR&4B)Q6)??
null print
lB
X)iB
)""4iBh)J)?j") r
cR?Bc4
4ihU
r)966?)6&(
RK))jBB?h?X) 9 "i?H\&?j)B9iRB\N
^
)C#?
Nota: En una copia de entrada, cualquier dato que coincida con esta cadena ser
almacenado como un valor NULL, por lo que debera asegurarse de usar la misma
cadena que us para la copia de salida-
Outputs
COPY
X?96MXj&?hQ6)?6)Xh?)&Bh
ERROR: reason
X?9)??lj?9)4L?B?X)48j&B66\M"
Descripcin
\
&)hBh"h)?) 6"vXB"jg6?h&)"XB?6h)&(
) \
?B?X$)R4?j 6h"-
?$26i?
r2$QXB" RiB4B
r6-?'4X4&B$???$)$+6?h[+Bj&"Xj&?hlB
6X?X)6
6l4JBl?hJ6? J6v6X?i
?R??iRi?j^X??B)g6?jKJvc?X6)
Notes
stdin
?j9RjM)
stdout
MR?)X?)c
: W j??2MMjjr?jr)jr6)?&)XB8v?)^X&vM(
h4jH?B)?4Q?)
ij&[4h 624H?l&RHR?9$+Xj&jh)&?Bh
B&) ""6?RB8rcR?&B9j)?)^?j$XB"r4B<(
R6^)v&)r)B)BM4hM^)ihjHMB?j
)hj4L9#
-4ihX)B[6XJ?M84h[$6M8R?R %+ %wXj&v??&?R
C)
??&?h)j$4lX)&?)6[jX)??4$j"diR4X
&?4)B#?v)?)vX?(
A *)
r
&W+ $X))X4"$B"8?jX)&
)j$9"6?4
X?BX??Hij^j??&?h)jH6)84Bi4)jB"ij&???)
m 8QB)XQ?&"U$ ?C ?'?"M4 X)??)?8Xj2)?"496)??j
j \
lX)Ri\C ?H??)?$Q?$6$))Q?B6)?j)?"4
[B?[)4i4j
6"X)??4XB"QM)
g6c?jHBX6?9?jr4&?6j
?6Q4X??6ij^6MXj&)B
?vR?)li?RcV
!A *
r
U)W 6X?XQ&X)Rihi$v6l6)vR[?Y (
&?R$Bh"vX?&B) v46X?X)&)?jX))Xi"M ?QX)BQ??&?R)
6?vM6)j?&KX))ihi
Sugerencia: No confunda COPY con la instruccin \copy de psql.
\
B^?BXl"4?[Bc)XX?jBjX84#?)$Xj?&B) ?#&Rjg
?BX)K"X&?Bj?J)R
\
4?4B?R9j)X?B4?&4"j < hBJjXv"?4&)44
X)6d \
M\ J"L4J6?Bjj$66h6vRX?4?&Bhv&?X)
X)d \
X F d6)6d)??&?)2)BXj?
)???
* ?8[24B?"iih?^9)6\84?j 6h"B^
B&)?&Bh[4
&?6&Q4g?"Xj?l)hvg6)?4g"6?)[ij?)-gXB"
%
%
? B)?M?Bj&Ri?j8?d")rJ4^RM?)L"6?h)Bl?B64)[foo
)
B)X)[X
K6)?&?B)? ; C4h8X)6jJ4 ?)M
H?QB)?R4' #M6)6M?"9X&J?9h)gXfoo
c4' #M6$PGDATA/foo
j4?jhR)
6X?X)-?rXB"jrMij?)
jMXB"j6)jMXj&#)"&BhM) \
4&4??$L6
)iX4??lJ
)?[&)?B[4?j9)692Rj+d??Xj?X)?4$8##?6h&
XB""4
)B#&LB8XB4?j F
J 64i?X8 iB4"&4\h?cj?XB
iB4Q96X??2d?[&R?BvjB624D 9\X)B846?hB8#?2& (
?B9g6)?
File Formats
Text Format
)Bl6M6 \
tX 6?^?jX?
:W RjiB4v4B)lBX)?
?Bh)BX?)K BQ6j???B)X X)QBQv?)Xj?&B)M
R?jK4))vj
gX))XK?&?)j H jrX))X4??&?h)j4?BhBj
?X))ih"ir?BhB
LXj?Bi?)ij??&?Rr6L"Xi)KiR)XhM)L))[ %+%w j
)?"ir)h?hv6LX)B4hhQB4)jH?BX?jL6)??)6ji?R
X&X)lB#2?M?jMl)h?h . vBi?j 2)??Q)v&h?#Bd$ #
)hHB)KjX)4X4))h)9 8;4h6B)lH^X&RB \
g&)hQ)i)?B6)BX?9
~ attr1 \~ separator \~ attr2 \~ separator ... ~ separator \~ attrn \~ newline
Binary Format
BX)6^ \
X$
?jMJ?&4jX)"84BXB"^4[BB&4
Q?B6)BX?)24 -iB4 ) -B"&2X"jB4KX&RB \
O_$
?
B)6l[6l4Bi4B"9J&BXB" j"LX)jjhR[[rX)B^2?)
6B&"v?B6RBi?R 9 jr"4h)Bh)j^jic"Q6?B))
cj&R^)[i)[?B6h)BX?v#BXB"L4$X&L6? ^j62[4h[j&R
#6l6?$ 5)C ?
C [
@ RX)Bh?)QB4RiR" 486?6?B 6
Bj&?B)^?B R ^?9RRgM6?
\)Br
?B )
4! QX
^j?BX??Q4XB"
?B )
?B )
?B )
?B ) ?B R
(
B&"Q?)
)X)?
jB?hj)j??9)h
?Bh?X)j6g6M6X?X)
B&"lM)h?hB?
B&4"M)h?h6RXBh)Bv6
X"
I
h?)h0
L
C -
Usage
J6??4BQ\&?dX?QBh)?QQ?6)??v6)B)hj6)B#BQRQ?X)
X&v??&?h)jX)&U
)X?R)hdXB"[B?[?M)?%ijBM%+
COPY country FROM /usr1/proj/bray/sql/country_data;
AF
AL
DZ
...
ZM
ZW
\.
stdin
AFGHANISTAN
ALBANIA
ALGERIA
ZAMBIA
ZIMBABWE
j
&?6&Rj+Xj&8R??[4dj&R8?B)?LB[&)?B ?B)Y qcC j
)h268&6)ChR24?h)9ij-ij&)B|[B? Lh)?Lh?B8"
X)&jl 8cJ?&484
^B6B^
l j)?)$?)h?Bd)?
B?4d4c4"iiX)& char(2)
^j6X&84X)& text 62"??4BXLB?$BRh
)?X)B4)H?j
X)h"v4r4gX)&Q4hQchar(2)
"Xi?Qj6d?c?h
355
006
A
\0
L
\0
G
...
\0
\0
\0 \0 \0 027
\0 \0 \0
A
N
I
S
T
\0 \0 006 \0
B
A
N
I
\0 006 \0 \0
E
R
I
A
\n
\0 001 \0 \0
\0 \f \0 \0
\0 \0 \0 001
F \0 \0 017
A
N 023 \0
\0 \0
A
L
A 023 \0 \0
\0
D
Z \0
\0 \0 \0 002
\0 \0 \0
A
\0 \0 001 \0
\0 \0 \v \0
\0 001 \0 \0
\0 \v \0 \0
\0 \0 \0
F
G
H
\0 \0 002
\0 \0
A
\0 002 \0
\0
A
L
\0 \0
\0 002
\0
Z
A
M
\0 006
B
A
A 024
\0
Z
E
\0
\0
I
Z
\0
M
B
\0
B
I
\0
W
\0
W
Compatibility
SQL92
^Q4?6h?96B4Bi? \
4 k 7p)B
C f
CREATE AGGREGATE
Nombre
CREATE AGGREGATE
BMB9BBX?^M)")
Synopsis
CREATE AGGREGATE name [ AS ] ( BASETYPE = data_type
[ , SFUNC1 = sfunc1, STYPE1 = sfunc1_return_type ]
[ , SFUNC2 = sfunc2, STYPE2 = sfunc2_return_type ]
[ , FINALFUNC = ffunc ]
[ , INITCOND1 = initial_condition1 ]
[ , INITCOND2 = initial_condition2 ] )
Entradas
name
jB&"M?M BX?jd)44Q9X"i)
data_type
j?v)hQB)&4B)g6jjMj6M
BX?jd)44
sfunc1
MBX?86h)[h)BX??j8$B??R&)6$)X)X)&[BvB?
6^?LX?&BBh &Bdc)?4?Lh?
ij&QJ?&H)"&Bl4X)&JvXj&6Bv)"sfunc1_return_type
&4B
sfunc1_return_type
j?v?v?J?&4BX?jd)BX??j
sfunc2
MBX?86h)[h)BX??j8$B??R&)6$)X)X)&[BvB?
X
M?9X?&B2j? l j&9B2cR?)?M?
)"&BhlB?iQ?B9)?)?$j&?6sfunc2_return_type
&?
sfunc2_return_type
?v?hvj?M4B9BX?^Mh)BX??j
ffunc
vBX?
B)J??)&)v)XBh?$hM?X)&j2BhR 6hv&(
i?j["4i??cj-)"&Bh?j-h?j
sfunc1_return_type sfunc2_return_type
initial_condition1
jc)?jK?B?i)j)Mj)"&4Bl?9?&BX?^MhRBi?6?j
y
initial_condition2
jc)?jK?B?i)jj)"&4BlM?6B9Bi?j^hRBi?6?j
Outputs
CREATE
4BhM4c4?l64Xj&)BvMXj&?h6)?)Xh?)&4B
Description
4&?h9[#6)?8^")&4hB?lBX?B;(
??) 6h"49B?B&B4cRBX?B42Q)44 : ?BR2BX?jB9
)i)R8h?2RQXj&
4h)^?6jB??2
min(int4)
avg(float8)
?l?h?X?j)6 X 2Bd
Bh?
86[B4X6?[BvBX?2)"<(
B&6Q"j"X?B)cQ6)6Q-Xj&)B \
_
) u )
"J"6?jB)?RrX))6h$ #?6?X)6)B)
lB
BX?l)"KJ"4?BB)6
h4-BX?B46jKBX?B4Krh),
(
X??j^M6h)
\u u
sfunc1
sfunc2
QB9BX?LB)gMX)?X?j
ffunc
)
&)BhB"6?RJj?B4&)?H6)jKXj&[)"&BhjHJtemp1
?)HBX?temp2
BK
)BX?6?
6)BX?B4rMh)BX??j^B)^hBH?)??Bh
Jj?)J4J
d4
?
j)"&Bj
?sfunc1
)?jJ?hMsfunc1_return_type
6B4?J
temp1
column_value
sfunc1_return_type
v
6MRQX&Q?&data_type
4HR&BhQ4L?M"+?&??)&)M
sfunc1
2 )"&4BM)?jJ4c4? sfunc2 B
6 temp2 4?J sfunc2_return_type
2 -)"&Bh9R
?$Bi?jlriR?i?BR)B$r6 temp1 temp2 26Qc)?j
4c4?2
6-h?[R
6"B[BX6)?)&Bh
$B
data_type
6?Q46X?X)vj :[
2 3
: 3 24r6X?X)L6Lj?#6J)&R
BX?jBM[hRBi?6?j&
6h)lj^6X?X))
2
lB8BX?Q)"4)B&Q"?j? BL&2XjB?X?B9?B?i?R?6JB
)X)Bi?j^h)BX??j 9 6)664i?X)Q)?&)XB)Q8?)6$)h
X&viR&h?Qh+
Notes
l6 \ u
)6XB)-BX?B4
R"4
6??v64i?X)
BX?jBMv)")dv4B) ?6)ijB?B)X?B4
Bi?jB26)^dBi?jBMB)? j$h??l
BX?j&l)")
"?" 3 B
BX?j?BX4&BhM4"B 3 $ 3
: 3 count
&?Bh)l#?#BX?j ^)"44
"?" 3 B#BX? L)?+ (
X?BJ"B 3 B 3
: 3 sum
^?[Bi?j9)")
"?")Bh
?)BX?B426RdXj&#B 3
: 3 BQBi avg
2?c?6?jBJ)
"X?6C4?h) CX)??MX)6jJ)-&BjlB^?)2BX?B4[Q6)
$4B?RRX)?? 3 hBKjX"6jB?Bh\
!
*[B
Usage
)64RX)0#???)BX?B4KR"[?A2?r4
`"
C[
U)c)\&J?M6Q&)X&?4j
"j)&)c`i"w$@
Compatibilidad
SQL92
\u! u
\
u
7
)u
4HB4hB6?j)?Bh
4 k p)B
6h"^2+?h
?j"
CREATE DATABASE
Nombre
CREATE DATABASE
"B9B4cM)M)h
Synopsis
CREATE DATABASE name [ WITH LOCATION = dbpath ]
Inputs
name
MB&"M?)6)jrMi"4)
dbpath
lc[?X)X?#)?4BR?2)[)&)i4B?[B[R9)hj$6?h&
)"6B?j K&))?4BMJ6??
Jj?&)
Outputs
CREATE DATABASE
4BhM4c4?l6?9j"86MX&J?MR?6)Xj?R&B
#4Bl4
c??4?4JX?) W_:*[ )i"4v)6Q#)j
m
_]Xc oO
] wo]_a^
hQjX"6jB9)6)j??)&)
name
+?6
BL&XjB4BrX&???)6?&? . 6hd
v)69[)j
?&"6i?B??$)name
?jdbpath
rX)B$6B?gX"48g?"Xh?[?MR
)h4)8\XR6M&jv4"
Bv)??)8&))h^ci1(
[J)B?j4BX)&?B^6X?iR
& ' &"4?M"M?Bhj\vldbpath
)6"6$$?)?4?4BjB
?MB9BXBv""BX?4?6h
\u7u,X
hj&B66\v6h)&&)M?&"?)X?jB)jMXj ?BX?Bh94&?6j6j"[
?"6h?[r)j6i?BX?Bh6)X?94Q)?6ij4Qj"jH"?4&)Kv+6?6h<(
&M
iB4j ' 6)?lh[+6hMX?B[6?-$)6$)hj
hBH)XX6v9??jX)??))X?j^6X?iR
Description
X4QBQBQ)6ll)j 6" k
. X4jJ)l
6H4j"?4)w?Q?B9)6)j
96X?iR69Bv?jiR??))X?#)?B)h?l)4jjr\&?jj)?&)XBR?v(
68QRj2 ?6i&?44B 8"^QB)4M?&"4)8XjC?8"4
C ?XX
\u"u, _
?"h^XjB?4BBR)?)hv?)BhQ6Q?B"hQX&&B)?)?l
BhB)96XjBX?9jHJjX6v6?j 9* M4h9&)&?B?6h(
jHM?MR)h\"X-ijBhjj"?)?X)??R)i?jBM486
Xi)R lB4?Xi?j Q6)?&Q6hcj\&?j0 B A * :1:[ B 6cY (
j6ij&??)lXj
X6Bl6$BRi$jXj
ALLOW_ABSOLUTE_DBPATHS
684&?h)&Y ?[
Bj&"2"^)6?h6?B?X)j[MB^)8)
?Bi?Q B
B
/usr/local/pgsql/data
Notas
B9+B6?j^j?B6h 6h"
l6"j)e)B)R))M??&?BR?)6M)j
c"j)&[X"hL46i?6B?BXjBh"?dR?4r262ij&)BjjL
6?BX?MjXjh9 #?
+?h )6XhMj"v6?)v?B?) v?j9)hj?&??X)j944-6#
?X)??R)X?BR?B)h?cR)M?))6$)j6X?X)Xj^B&"$"h
)6?h6dJ4
4ih6j?LB[)?R?92cjB^XBjX?[4B"X66Y (
j$4l64JX?X)v)vB?ji)??R)X? )?hB)? -4Q?
A2?)&Y (
B?6)jHR&R?Bj&)X?
\u7u, _
Uso
)X4)-B9B)6M)hjJ
olly=> create database lusiadas;
)MX"4B9B)6)h^^)"9)?hB)h?c
~/private_db
$ mkdir private_db
$ initlocation ~/private_db
Creating Postgres database system directory /home/olly/private_db/base
$ psql olly
Welcome to psql, the PostgreSQL interactive terminal.
(Please type \copyright to see the distribution terms of PostgreSQL.)
Type \h
\?
\q
\g
olly=>
CREATE DATABASE
Compatibilidad
SQL92
^#4?6hlX&RB \u"u, _
k 4h)B)-4 \
_ ^)O
k p)B. JXj&)Bd?)?Bhv
CREATE FUNCTION
Nombre
CREATE FUNCTION
Br9B./ BXh?
Synopsis
CREATE FUNCTION name ( [ ftype [, ...] ] )
RETURNS rtype
[ WITH ( attribute [, ...] ) ]
AS definition
LANGUAGE langname
Inputs
name
BMB)&MjB9BX?j^vX4)
ftype
B[)2h9j-
BXh?R"&Bh +
B2?B-h$&)L9)62jrij&?
6gjrX)4
?B?X)h$hB)B2cih?&RiXJ$)"&Bh$-R?&(
c)?d6Xd)opaque
XB)
rtype
BM48)hMh H
attribute
: 8jh?B)gJ?XjB?Bj&)?j8)jchBBih?jBR4LKj?&?R)?j H
B
B?l)h?rX"4B?26j8?
?B?X)4HB)jhB
iscachable
BXh?l)Y /^)K"hB-Br6)&r"6iscachable
?/^Bv?v
Br6)&r?Bg)?- X?
4rBj)h)4?jM 6$jjB4' /^?6?Bj&R?j#Bj?"6h?^"6B
?d?hrR)&44H??6h l BMj?&?R6
6B1 //^BhB?J?r6)
iscachable
v. (\)?)hX)?jjBhBMBX?j
definition
: 6h?BvB?BvB
BXh?&8RhB&4)B?BQBj8B$?)B)
c&)l
)&?B4B)BX?j B)&hBv) h#) j4h4iH?4cR k ijh+H?
"XBR?RB)
obj_file link_symbol
B?Hj hB Qi?R
?H68
jB)&?X)??M(??&6 ?)B)$BX?jB
/ B hB8BXh?CBR&8?B ?)BRQ6"XijQ?[BjB6)&8R2B
^
B)&jghB k BX?j B6?B
?BB)&B?XjB)?B?B
B9B)&?X)??^?R)?2j4\X)B obj_file
?$hB[j4h4iDB ??&L
6 6&j
/ B?i^?BM6)&MRhBMB)&MjJhBlink_symbol
^
BX?jL?LhB ?)B)6"XXj
langname
&)C7
B B
B
B
B
BjB
B/^B"B
B?hBBR&#
plname
i"i)hd"Cji4sql
R?)internal
BR _]X
c c oboo\plname
cLj4)??
Outputs
CREATE
B?
?r"4BL?BcMij&&)B#Xj&?4r6XX6??
Description
Notes
4
4h8B9XB)4?dB
`X B" @ `w BC [ X
U)dhB?B j6"
?
Bih?BHhBK?B&)h?L/^??BhB)gBX?jB
l6 \MF_$ hQ"jL4 (
BdBX?jB
6h")??1 /^HBXh?
%wjc4?j)?BM %8XB)?ihB
6)&B)&riRlr6Qj6R
?h\"4Bj
BXh?B6[?Bv)HhBlB)
?h?BXR"&BjhJ $ B?)X???[&6
47
/^?LX)?j^
RB (?)B)Bih?c)B1 /^
internal
BXh?BX)BBjBRc
hB$6)& B)&
/L?hBjcX)6?B["K)j??& 6
/^
?& internal
[4R"BBRi?
B4 ?h"iB BR&HJ+)&?i6
hB
)"&4B
))BjJhB B)&6)B4d6X?hB6B)&4r?LB :[ X?)6Mj \
u
W
-hB :[ X?)2??&h#hB \uGM\X$ )66&hB
B)&MjBB
BXh?L?rhBM6)&M)hB k B)&
E B#?j)?B k BX?jB\
/^? (?)B)9BXh?B6?[Ri (?)BR
?B6)BX
jB
Bih?v?h?BXjB)&)B6
B
)?hB)h?crj hB QX?)6
?dhB \ u
M \_$ 6Bh)lhB6"MBRJ?j) k BX?jB$B)&4
)""6j?dvBMXj"4iB)&?X)??Q??, 6#j4\X
:
BXh?LX)BBjB"h86cB)?
@ \X$
Usage
vi"4hM6?&? k BX?jX
B?$+)&?X")h$[BX?jBRJj$9XB6?4/^4#hB26B
lXj&?+)BhBl?BhBRJlj?B < B[
BXh? ?M?&?&Bh dQB(
&?X)???j)4\XHhB)w
/^)X&J?? j 6jX 3 j 6h"hB Q
XB6?^BX?j8)j&)h?iR??iRhB6jBih?^B)hvBRcB6)&B)&)hB
"Ch4)B j?j)?B?vc)cj?)? BdBih?j BR&L?Qj?)
?cB4ijB# BhB LX?)6?^hB k 4B?h?
B 4iR?)h?^jJhBMBih?^?
Point * complex_to_point (Complex *z)
{
Point *p;
p = (Point *) palloc(sizeof(Point));
p->x = z->x;
p->y = z->y;
return p;
}
Compatibility
SQL92
?
\u7@ \X$
jh4r?)B)+4B?j
SQL/PSM
Nota: PSM stands for Persistent Stored Modules. It is a procedural language and it was
originally hoped that PSM would be ratified as an official standard by late 1996. As of
mid-1998, this has not yet happened, but it is hoped that PSM will eventually become a
standard.
CREATE GROUP
Nombre
CREATE GROUP
"L"QB4c
Synopsis
CREATE GROUP name
[ WITH
[ SYSID gid ]
[ USER username [, ...] ] ]
-
Entradas
name
gid
jB&"Mg"
username
[BQ??68[?6)?j9Q?BX??
)B4?BX??j
^4"
Salidas
CREATE GROUP
4BhM44?l6?&"M?9j"8h&?B9X^+?
Descripcion
&?
X4-"[Bl4Q?)
)h ' B6?h??
j)&?B?6hRJ)9?Bj&)X?B
j"68M"
)9"4[9R&(
?X?) ' 6j"^6?R&BhM6K\XRj^6R?v)&?B?6)h?c
l6
^[ aMa0 ]G\]`)^ J)X)&?)?MJB4Bi?$"l
[]X^`\]_^7`
)Mj)K^"
FWX:F A W
Uso
"i)^"JQ)X?
"i)^"JQX^&?"j
CREATE GROUP marketing WITH USER jonathan, david
;f
Compatibilidad
SQL92
CREATE INDEX
Nombre
CREATE INDEX
jB6"?#?c?iM64iBR?
Synopsis
CREATE [ UNIQUE ] INDEX nombre_indice ON tabla
[ USING nombre_acceso ] ( columna [ nombre_operador] [, ...] )
CREATE [ UNIQUE ] INDEX nombre_indice ON tabla
[ USING nombre_acceso ] ( nombre_funcion( r">columnale> [, ... ]) nombre_operador )
Entradas
!
k
"jXr4R6?64&$ij&"6+?h[)?"4-??X)jl?rR?
i)&(
^i"^#B?XL6Hd?6h)h6rX)LLd6^;B)CRj
?BBhj
?B6h)Hv)X)??R)-)j??X)jB))8^"
nombre_indice
jB&"M #B?X64i"4)
tabla
jB&"M?M)?J)M?M6M?"X")-#?B?i
nombre_acceso
-Bj&"j&vRiX6dQQh???)))Q#?B?X < h
)Xi4^2XhL4 )UWX
W_
B9?&&Bh)X?L?jrh"R?XjBi"BX? 4B&)&(c)
WW_
&?&4B9"i6)B)-h???))BQg)?j?h&Q)?X?jLX)4?X
\A2h&)
y
m:lm
[B9?&?&4B)X?j^?)?6?jB??B)?4r ?/^?
columna
jB&"MB9Xj?&B9?9h)?
nombre_operador
lBX?)6M4)j"ir)6ji?R
&)rRhv)MjB4&)h)??
nombre_funcin
lBvBX?jB?Qj$4J)?jl4c?l&)?j
v24$?&(
+
Salidas
CREATE
j&B66h?v64 #?B?XM6B9X")BQXj7+?h
"6BM6M4"jK6j?&j??X"4 #B?X
Description
\u7$^
ijB6"B#B?X
nombre_indice
^?
tabla
4JX?X)
6h""jjX?jBMhj$)Xi42h"h"
QBR8R?X#B?X6XB(
?j < jv)Xi4d"[9B?&?4&BRi?jv?"4Mv)?XjBX(
"iBX?Q 4B&)&(c) J4j#2)XX6d"9?&?4&B4B)??#lR$(
?X?j#X)h?X[4h)BR
A2h&) +
4j8)XX6B)6#rBl?&?4&& (
Ri?j8$?)?46?jB??B)? ? /^? H r BX?jB)&jr?jr)?j?h&jrh???))j
6?)&4B)?B?X)Hjj
6hr
jj
M)XX6Q6j#Xj&?h)&Bh9?B (
&?X6)QBvBX6?h)^4Hj??))jJ?j?X)&BhX&vgX)6RJH\&?j
?jr
4jj
)XX6lB)6L6)h?X
Notas
poligonales
Kjh?&?))jM^XjB6?h)[ 6h"[XjB6?)886^???R)B C?B?X
h"^6?&"^8)h?h?B4)&6 L?Bj?i) BLX&R)X?j
???XMBQ?r6??Bh JII
; QRI
. QRL
& LL
; S; T)K Q Q
#?B?X
Kjh?&?))jM^XjB6?h)[ 6h"[XjB6?)886L???)RB&
B)66?&JQQ)?#
#?B?XQ6 Q?Bj?i)4B^X&R)X?j
???XMgj)j
=
j #)XX6
#?B?X48&?Y (X?&B B
: Xh)?&BhKj?
W_ 6J|
486X?X)KB)6h
ZX?)
lh???X\
[]X^`ja
b [cd )??&?B)Hj
#B?X
6h???))J)9XjB6"?_
#?B?X4
6" (
9X?)64)j"i
j9?B &")??RXj&int24_ops
))X?B49XBh)j9?Bh8 X)??X)X?jB9vijB6?)
6jF
#?B?X-j"$)jK?Bh$44v6Jij&))j
&??)&4B4
X^)h?B int42_ops
^?)ijB6?)
6??4BM??6h94?Xc4c4?cjr?Bj&"4r4).
Usage
)X4)-#?B?XM^gX)&
ttulo
^?h)?
pelculas
Compatibilidad.
SQL92
B94hB6?jL4j?BhM
^QBRQ^X&RB \u7$^ k p)c
FWX:F
*
6"
CREATE LANGUAGE
Nombre
CREATE LANGUAGE
BMLB4cv?B6\M)BX?jB
Synopsis
CREATE [ TRUSTED ] PROCEDURAL LANGUAGE langname
HANDLER call_handler
LANCOMPILER comment
Entradas
W
*
6X?X##&)B?J?)2)#?B6\dv6"1 8vX?h
TRUSTED
B"X2LR?BQ????)QB)rBX?BR??)6"RR&(
^?)$"6?Xi?jB9)XX6 c6l)?)2j&??lBjBX)c"4?6h)4
?Bh4j6?L6R?jij&????L24")? 6h"j)???R)
6?4B6\MRX"i)KB4cRrBX?B4rX&Qg?B6\{
B BU
langname
Bj&"#4B4c?4B6\#"ji4?&Bh) ^C6#?"BX?) &)MX?)
&?& X?)dB&"9c?4Bh l
d?B6\["ji4?&Bh)B^4
4J4B?HB?j
?4B6\?BXj) jh"4 9 jh4
m: * W
call_handler
comment
g)"&B
?X)4B4?B4h)jM)h?h
LANCOMPILER
Q?8
BL4B)
???)
;: Xh)?&Bh j6"2B&hLANCOMPILER
pg_language
6R?v)MB?BML
Salidas
CREATE
hM&B6)M?hQ6jj?B6\MX4)JQij+?
hM"K4c?hQ6j?BX?
cBBXjB)
funcname
Descripcin
")?
j6")"?h)-LBQ?4B6\
Escritura de manipuladores PL
B&)B?J?Rr2??)&)R$)l&?c6\[JjX?&Bh)B26
6X?^&
?B6\8Xj&??)&X&|B B"4?6)B j64[ij& BLBX?j 6?C)")(
&Bh2 ??B&4Kh?&RJXBhBjM)h?[B&4B?2&4l(
X?iR < 6h&?8K&RB??)jQ??)&)R968??)&)#?"X)&4B
X&vB9
BX?jL6XB6?h)
v&Rj?j)"&4BjK4Q6J&?B?X)jKv?$??)&)$X)B2B$
& (
X? ) L"X?&?BL?4$4&J?B6\l"?#jrJ&)B??)
6vh. (
Xh)
)B2-??)&)4)6jrh?46 B?X[)"&BH;
* R4\h
h &R9?9B)99JjXB?&?B
' j2?[4&)
?Bj&Ri?jL
6j?4BXBh)^jBpg_proc
h"l?j) "B ? * R
2 RB4v??R&)6^46h98
BX?jB6-?l)"&Bjl6
*
j4h4^2?vBhR
4c"ji4?&?BhgB& &"^2)"&Bhj4B"< (
)jM?BX? ) pg_proc
4?)"&4BjB4h"ih 3 &$ KR?Q8Bh"
Lj?4)BQjB2BX?jL?Bj&64gcR?K"hBlg)?
k
^RB(
"6jB6)???)&)B??)j??)&R)
j4B?2Bh)
??))Kj)"BQ?JrM"jBj"ji4?&?BhQ??)&R 9 9Xpg_proc
?)6? :l
v?
\
ut
@ \_ 4-"jXJ?&?4B&4h))6)Q )h?h
R?
4&?&2X1(
66J+h9B4v4)?B6\r"X?&BRprosrc
pg_proc
&8 X?
+B["h2ldXB"QLX)??4hlXj22??B?[RB)B?
MB)XK84)??
Notas
)Mi"i)KB9BX?j
lh???X \ ^ )??&?BR?B6\"ji4?&?Bh
)M)r?Bj&Ri?jX
W 4#?R?9R?
pg_language
Table
= pg_language
+-----------------+-----------------+-----+
|
Field
|
Type
+-----------------+-----------------+-----+
| lanname
| name
| lancompiler
| text
+-----------------+-----------------+-----+
| Length|
|
|
32 |
var |
lanname |lancompiler
-----+--------internal|n/a
lisp
|/usr/ucb/liszt
C
|/bin/cc
sql
|postgres
"
!#$%$'&)(*+-,/.0#&/124365879&/&:-+-1&/$;3=<>.3?%#+@&/$'+-A4#CBD$"1$E.3?27$'1,/(*,/$;+-F82GH1$'I4$EGC$'3
3J$'A4,/GKF3=;12L$'+%M2GCF8A43J$'G>$'+%$;&N&/$'+-A4#CBD$6OPQORS:-$'3J$'1QF821G>&/G>7.0'7,/11$;GUTV3?$;GKF3?,/797,/2+-$'G
1$&/G
W8#+-7,/24+-$;GX1$OYP6O[Z
\V7F#&/(*$'+-F$'R&/G)1$;]+-,/7,/2+-$'GU.^3=X#+_&/$'+-A#`B$X1$a.3J27$'1,/(*,/$'+-F24G)+-2b.#$'1$'+VGC$'3(*2c
1,/]79^1'Ga#+-Hd$'ef!#$g:-+hGC,/12_793J$';1GZ
Uso
"executor/spi.h"
"commands/trigger.h"
"utils/elog.h"
"fmgr.h"
/* for FmgrValues struct */
"access/heapam.h"
"utils/syscache.h"
"catalog/pg_proc.h"
"catalog/pg_type.h"
Datum
plsample_call_handler(
Oid
prooid,
int
pronargs,
FmgrValues
*proargs,
bool
*isNull)
{
Datum
retval;
TriggerData
*trigdata;
lm^n
if (CurrentTriggerData == NULL) {
/*
* Llamado como una funcin
*/
retval = ...
} else {
/*
* Llamado como un procedimiento "trigger"
*/
trigdata = CurrentTriggerData;
CurrentTriggerData = NULL;
retval = ...
}
*isNull = false;
return retval;
}
2 &/(*$;+-F8$V#+-2GH.2724Gf(*,/&/$'Gg1$_&//+-$;G1$_741,/A42F,/$'+-$'+!#$_GC$'3Q-1,/1;Gf$;+d $;eE1$
&/24Gw.#+-F82GX.^3=H72(*.&/$'F3>$;&OM7&/&:-+-1&/$'3SO$'Hw
LhaJh.^3=H,/+-W823Jc
(*7,/4+hGC2I3J$6792(*2%72(*.,/&/3?&/2E$'+h#+h(*41#&/2%73JA I4&/$Z
2GGC,/A#,/$;+-F8$'G724(*+-124G$'+-F24+-7$'G3?$;A,/GCF3=+b$;&'&/$'+-A#NBD$a1$a.3J27$'1,/(*,/$'+-F2G1$>(*#$'GCF83?-k
CREATE FUNCTION plsample_call_handler () RETURNS opaque
AS /usr/local/pgsql/lib/plsample.so
LANGUAGE C;
CREATE PROCEDURAL LANGUAGE plsample
HANDLER plsample_call_handler
LANCOMPILER PL/Sample;
Compatibilidad
SQL92
w
"VhhLVhE$'GU#+-6$'F8$'+-GC,/+%1$wM24GCFA3J$'GZJh2b$',/GCF8$X#+-GC$'+-F$'+-7,/V
aVhhLVhj$;+ N 4Z
CREATE OPERATOR
Nombre
CREATE OPERATOR
lm
Synopsis
CREATE OPERATOR name ( PROCEDURE = func_name
[, LEFTARG = type1 ] [, RIGHTARG = type2 ]
[, COMMUTATOR = com_op ] [, NEGATOR = neg_op ]
[, RESTRICT = res_proc ] [, JOIN = join_proc ]
[, HASHES ] [, SORT1 = left_sort_op ] [, SORT2 = right_sort_op ] )
Entradas
name
func_name
type1
i &F,/.2*1$_&/".3?F8$L,/e!#,/$'3J1%1$;&2.$'3?123R4GK,.3J279$;1$Z i GCF8%2.7,/4+1$'I4$'3?EGK$;3
24(*,/F,/1H.3?g#+h2.$'3?123U#+-3?,/2E.0243U&/f1$'3J$'7:-4Z
type2
i &F8,/.2.03=V&/%.3?F8$L1$'3J$S7:-%1$;&024.$;3=1243R4GC,.3J247$'1$4Z i GCF8E2.7,/+1$;I$;3=_GC$'3
24(*,/F,/1H.3?g#+h2.$'3?123U#+-3?,/2E.0243U&/f,/e!#,/$'3J1 Z
com_op
neg_op
res_proc
join_proc
\ h
i
+-1,/7f!#$g$;GKF$g2.$'3?123)GC2.23=FH#+j^&/A23=,/F(*2%:-GC:-cBD24,/+-9Z
left_sort_op
.$;3=^1243)!#$g23J1$'+-f$'&F,/.2E1$61F2_1$g&/g.3?F8$,/e^!#,/$'3J1g1$$'GCF8$2.$'3?123=Z
right_sort_op
.$;3=^1243)!#$g23J1$'+-f$'&F,/.2E1$61F2_1$g&/g.3?F8$1$;3J$S7:-H1$$;GCF8$g2.$'3?123=Z
lm^
Salidas
CREATE
Description
Nota: No se permite ningn caracter alfabtico en un nombre de operador. Esto permite a Postgres analizar la entrada SQL en elementos sin requerir espacion entre cada
elemento.
& 24.$;3=1243a U$'GQ724+-d$'3?F,/12"V V $'+&/L$;+-F83?1R.23a&/2"!#$bGK2+$'+724+-GC$'7#$'+-7,/
i 4
$'!#,/d&/$'+-F$'GZ
M243a&/2"(*$;+-24G6#+-2"1$H i4 \V
2h h \La1$'I4$'+GK$;3
1$']+-,/12GZ9M3?b24.$;3=1243J$'G
I4,/+-3?,/24GCR(*I42G1$'I4$'3?+*GC$'3w1$']+-,/12GZSM3=L2.$'3?123?$;GQ#+-3?,/24G.23w&/_1$'3J$;79:-^R GC24c
&/(*$'+-F$V i4 \La1$'I4$;3=EGC$'3X1$']+-,/12R4(*,/$'+-F3=^Gf!#$L$'+24.$;3=^1243J$9G#+ 3=,/2Gg.243X&/
1$'3J$97:-HGK2&/(*$'+-F$g h \La1$'I4$'3?/gGK$;3U1$;]+-,/12)Z
1$'I4$H:-I4$'3wGC,/12h.3J$'d,/'(*$;+-F8$V1$']+-,/12j#F,/&/,/c
^(*I,/;+-R $;&-.3J247$'1,/(,/$'+-F82
func_name
e+-12%waLhaJh
Tj1$'I4$fGC$L1$;]+-,/12".03=L7$'.F;3X$;& +-(*$'3J2h7243?3J$'7F82E1$
3JA #(*$'+-F24Gw5I4,/$;+j#+-2_2E12GC<CZ
i &>2.$'3?123H72(*(*#F81243b1$'I4$'3?/hGC$'3H,/1$'+-F8,/]712GK,>$;N,/GCF$j#+-24R.^3=j!#$M24GCFA3J$'G
.#1,/$'GC$*,/+-d $;3=F,/3h$'&623J1$'+1$&/24G24.0$'3?+-124GjGC,&/21$;GK$;-Z-M23h$=BD$'(*.&/2Ra$'&2.$'3?123
3J$9c8(*$'+-243Jc8!#$;R VV R1$'I4$;3=H.3J24I4I4&/$'(*$;+-F8$HF8$;+-$'3a#+2.$'3?123a724+-(*#F123a3J$';c
(*T4243Jc8!#$ VV Z $_$'GCF8%W823=(*^R4$'&24.0F8,/(*,/e1243X1$_724+-GC#&/FGf.02413?/_792+-d$'3?F8,/3Q&/,/I3J$;c
(*$'+-F$k
"0,0,1,1"::box
MYBOXES.description
MYBOXES.description
"0,0,1,1"::box
lm
$hW823=(*jGK,/(*,/&/^3RGC,>$'N,/GCF$h#+2.$'3?123f+-$'A4123H$;+-F82+-7$'GV1$'I4$'3?GC$'3f,/1$'+-F,/]79^12)Z
# .024+-A4(*2Gg!4#$b#+*2.$'3?1243RN3J$';c8,/A#&/R R$'N,/GCF$'RTF8^(*I4,/'+#+*2.$'3?123a3J$';c
+-24c8,/A4#&/R Z i & +-$;A^1243U.$'3?(*,/F8$6&24.F,/(*,/e123)GK,/(*.0,/]73
NOT MYBOXES.description === "0,0,1,1"::box
MYBOXES.description !== "0,0,1,1"::box
, $;&+-2(*I43J$E1$_#+2.$'3?123X792(*(*#F12436$'GHGC#(*,/+-,/GCF83?12R M2GCF8A43J$'Gg&/2I4#GK7%$'+$'&
7F8;&/24A42Z , $'G6$'+-72+-F83?12h$L+-2hF,/$'+-$b+#+*724(*(*#F123X;&-(*,/GC(*24R4$;+-F82+-7$'G&/V$;+-c
F83?1L1$'&072(*(*#F8123X$'G7F8#&/,/e^10E.03=VF8$;+-$'3X$'&03J$'7,/$'+73J$';122.$'3?123w792(*2GC#
724(*(*#F123`Z i GKF2EGC$g.0&/,/79f^& +-$'A41243R^F(*I4,/'+
Z
i GCF82h$'GQ.03=L.$'3?(*,/F,/3a&/_1$']+-,/7,/+1$L124G62.$'3?123J$SG6!#$bGC24+*72(*(*#F8123J$'GQ1$H&/2G
+-$'A4123?$9G"1$71*#+-21$&/2Gh24F3J24GZ i &X.3?,/(*$'3L24.$;3=1243V1$'I4$'3?/1$'3L1$']+-,/12GC,/+
#+72(*(*#F81243g2*+-$'A412358724(*2GC$'".3J2.-,/^124<`Z^P6#+-12*$;&GC$'A4#+-12*2.$'3?123$'G
1$']+-,/12RGC$h1$;I4$"+-2(*I43=^3H$;&U.3?,/(*$'3J2792(*2$'&U72(*(*#F8123H2+-$;A^1243=Z i &U.3?,/(*$'3J2
GC$'3=g7F8#&/,/e;12_792(*2%#+h$'W8$'7F2_&/F$'3?&Z`5 i +"M2GKFA3J$;GX-Z ;R$'GCF82_F8(*I4,/;+jW8#+-7,/2+-H.3?
GC,/(*.&/$'(*$'+-F$g!#$g(*I42Gw2.$'3?123J$9GwGC$g3J$']$'3?+"& 2F83J2<`Z
2G_GC,/A4#,/$'+-F8$;GEF3J$'GL$'GC.$'7,/]71243J$9G_$'GCF8+.3J$;GK$;+-F8$'GL.03=j#N,/&/,/^3f&>24.F,/(*,/e1243f1$
724+-GC#&/F8^Gh&X3J$';&/,/e3_#+-,/2+-$'Gj58/B2,/+-GC<`Z M2GKFA43?$;GhGK,/$;(*.3J$*.#$;1$$'d&/#3V#+-#+-,4+
58,Z $Z R9.3J247$'GC+-12b#+-67&/#GC#&/72+%12G
d3?,/I4&/$'G1$XF8#.&/G>GC$'.^3=;1GU.23#+%2.$'3?123
!#$g3J$'F243?+-2V#+jI4224&/$'^+-24<-.23>GC#I4GKF,/F8#7,/+,/F$'3?F,/d " "b`Z=\L1$'(*GCRM24GCFA3J$'G
$;G
7.'eH1$H#F,/&/,/e3U#+&/A423=,/F(*2%:-GC:-cBD24,/+-UGK,/A4#,/$'+-12E&/GX&/+-$'GX1$% \LM'8GC,/+j$'(*c
I43JA 24R1$;I4$hGCI4$'3HGC,>$'GCF8$;GKF3?F8$;A,/j$'GV.&/,/7I4&/$Z i GV&/A423=,/F(*2@:-GC:-cBD24,/+g7F#^&U$'G
GC24&/(*$;+-F8$7243?3J$'7F2@.3?24.0$'3?1243J$;GE!#$3J$'.3J$9GC$'+-F8^+F$'GCF8G%1$,/A#&/111$'(*^GE&/
,/A#^&/11@1$'&F8,/.2*1$%1F821$'I4$_GC,/A+-,/]73g,/A4#&/11@"+-,/d$'&)1$EI4,/FGH1$E&/"3J$'.3J$9GK$;+-F8c
7,/4+1$'&)F,/.2Z58M2436$=BD$'(*.&/2R#+@F,/.2*1$%1F2!#$%792+-F,/$'+-$hI4,/FGb+-2*#F8,/&/,/e^12Gb!#$%+-2
F8,/$;+-$'+3J$'.$93J79#GC,/+.3?VF8$'GCFGf1$_,/A4#&/11.2413?/V+-2GC$'3Q#GC12$'+$;&:-^GK:-cBD24,/+ <CZ i &
,/+-1,/7123 \ "i ,/+-1,/7%&24.0F8,/(*,/e^12431$_792+-GC#&/F8GH!#$E#+:-GC:"B2,/+.24#1$EGC$'3
#F8,/&/,/e^12_1$W8243?(*HGC$'A4#3?f.23>$;GCF8$2.$'3?123=Z
$W8243?(*f.^3?$97,/1R^&/2Gw124G
2.$'3?123?$;G>1$23?1$'+",/+-1,/7+"& 2.F8,/(,/e123U1$6792+-GC#&/F8G
GC,&/Q$'GCF83?F$'A4,/6(*$;e7&/3JcD243J1$;+-3$'G)#F8,/&/,/eI4&/$wTL!4#$X2.$'3?123J$'G)1$;I$;3='+_GC$'3#F8,/&/,/e^124G
.3?f23?1$'+-3)&/GX7&/GC$'Ga1$g&/2GQ124Ga2.$'3?123?$;GZK24Ga24.$;3=^1243J$'Ga1$g23J1$'+h1$'I4$'3?/;+jGK$;3
GC#(,/+-,/GKF3=^124GGC2&/(*$'+-F$V.3?_#+*2.$'3?123w1$L,/A4#&/11R T1$;I4$'3=+*3J$;W$;3,/3=GC$VV24.0$'c
3=^1243J$9Gw(*$;+-243Jc8!#$g.^3=&/24GwF8,/.2Gw1$&/H.3?F8$Q,/e!#,/$'3J1gT%1$'3J$97:-H3J$'GC.$'7F8,/d;(*$'+-F8$4Z
,2F83?Gf$'GCF83?F$'A,/^GH1$_#+-,/+GC24+724+-GC,/1$'3?1Gg.3?7F8,/7GCRM24GCFA3J$'Gf79^(*I4,/3=%$;&2.F,/c
(*,/e123$'+%F,/$'(*.2L1$Q$=BD$'7#7,/4+%.03=6#F8,/&/,/e^3=&/^GUTV3?$;!#$'3?,/3=^+E$'GC.$'7,/]77,/4+E1,/7,/24+-&
7#^+-12#+2.$'3?123VGC$'*1$']+-,/12Z \LW8243?F8#+-1(*$'+-F$'R)&/72(*#+-,/11,/+-d $;GKF,/A^1243?
,/+-d$'+-F8_+-#$;d ^Gg$;GKF3?F8$;A,/G61$V#+-,/4+,/+-W83J$'7#$'+-F$'(*$'+-F$'RT&/EA4$'+-$'3?&/,/1^1-1,/1L1$
$'GCF83?F$'A4,/G>1$']+-,/1Ga.23>$'& #GC#3?,/2E+-2%(*$;3?$;7$6&/H724(*.0&/$=BD,/113J$'GC#&/F8+ F8$Z
G612G&/F,/(*G.,/$'e^G61$L&/_$'GC.$'7,/]77,/+$'GCF+*.3J$'GC$'+-F$'G6.3?V!4#$V$'&02.F8,/(*,/e^123
.#$'1$'GCF8,/(*3U&/24GaF(*-2Gw1$6&/24Gw3?$;GK#&/F12GZ , #+-H7&/#GC#&/f1$&/HW823?(*-k
MYBOXES.description
"0,0,1,1"::box
$'GCF8Q.3J$'GC$'+-F$w,/+E&/6 7#&/,/]77,/+-R;$;+-F82+-7$'GCM2GCF8A43J$'GU.#$;1$wF8$'+-$;3!#$Q$;GCF8,/(*3&/QW83?779,/+
1$%,/+-GKF+-7,/GL$'+
V i !4#$hGCF,/GKW87$'+&/j7&/#GC#&/-ZjW8#+-7,/4+
1$'I4$
GC$'3>#+-LW8#+-79,/+j3?$;A,/GCF3=1H5&/2E!#$bGC,/A4+-,/]79b!#$HT4L$;GKFH1$']+-,/1b#F8,/&/,/res_proc
e^+-12"w
Lh
?h"<8R7$'.Fb3JA#(*$'+-F2G61$'&-F,/.2h7923?3J$'7F82hTj1$'d#$'&/d$b#++-#($'3J2j$;+.#+-F2
lm^
2 F8^+-F8$Z i &2.F8,/(*,/e^12436GK,/(*.0&/$'(*$'+-F$"&/&/^(*%h$;GKF%W8#+-79,/+-R .GC+-12&/$E$'&.3?(*$'F3J2
R;RRTb(*#&/F,/.&/,/7Q$'&3J$;GK#&/F12H.23$;&F(*-2H1$w&/X3J$'&/^79,/+V.3?X24I4F$'+-$'3$;&1$;GK$;12
+-#(*$'3J2V1$g,/+-GKF+-7,/Ga$'GCF8,/(*^12)Z
P6#+-12h(*I42G24.$;3=^+-124G1$'& 24.$;3=^1243w724+-F,/$'+-$;+*d ^3=,/I4&/$;G61$L,/+-GCF8^+-79,/^R4$'&-2.F8,/(*,/c
e1-243a1$;I4$f$'GCF8,/(*3a$;&F(*-2"1$f&/L#+-,/4+3?$;GK#&/F+-F$ZCbW8#+ 79,/+_BD24,/+-^.3J2473J$'F23=+-3[
24F3J2h+-#(*$'3J21$;79,/(*^&0!#$VGC$'3?_(*#&/F,/.&/,/712.23X&/G673J1,/+-&/,/1;1$'G1$L&/^Gg124G7&/GC$'G
$'+-d#$'&/FGa$;+h$'&79(*.#F2E1$'&F(*-2V$'GC.$'3?12Z
f1,/W8$'3J$9+-7,/f$'+-F3J$&/HW8#+-79,/+
my_procedure_1 (MYBOXES.description, "0,0,1,1"::box)
$'GH!4#$'M24GCFA3J$'Gf,/+-F8$'+-F"24.0F8,/(*,/e3624.$;3=^1243J$9GbT*.#$;1$_1$'7,/1,/3Q#F,/&/,/e36#++-1,/79$E.^c
3=%3J$;GKF3=,/+ A,/3$;&$;GK.^79,/21$EI4GK!4#$'1"79#^+-12.3$'7$'+24.$;3=1243J$9GZ ,/+$'(*I43JA2R+-2
GC$g,/+-F8$'+-FL24.F,/(*,/e3UW8#+-7,/2+-$'GCR T%GK2+$?B$;79#F1Ga(*$'1,/^+-F8$gW8#$'3?eHI43J#F8-ZC\L1$'(*GCR&/G
W8#+-79,/2+-$'Ga.#$'1$;+"F8$'+-$;3>7#&/!#,/$'3)+-(*$'3J2_1$g3JA#(*$;+-F82G
(*,/$'+-F83?Ga!#$g&/2GX2.$'3?12c
3J$'G
$'GCF8+"3J$;GKF3?,/+-A,/12Gwg#+-2%2E12GZ
Notes
a$;];3=GC$&w7./F#&/2GC24I43J$2.$'3?123?$9G"$'+&/G"v|?s-}?4VX|??} |_tYL.3?(*G",/+-c
W8243?(*7,/4+
ZSa$']'3?GC$LEhhhw
h.3?_I423=3?3w2.$'3?123?$9G1$']+-,/12Gf.23X$'&
#GK#^3=,/2V1$g#+-fI4GC$1$1F82GZ
Utilizacin Usage
i &GK,A#,/$'+-F$H792(*+-12"1$;]+-$#++-#$'d2%2.$'3?1238R3J$;'c8,/A4#&/11R.3?f$;&F,/.2"1$g1F2
V Z
CREATE OPERATOR === (
LEFTARG = box,
RIGHTARG = box,
PROCEDURE = area_equal_procedure,
COMMUTATOR = ===,
NEGATOR = !==,
RESTRICT = area_restriction_procedure,
JOIN = area_join_procedure,
HASHES,
SORT1 = <,
SORT2 = <
);
lx
Compatibility
SQL92
w
hwah,/GhM2GCF8A43J$'G"$'F8$;+-GC,/24+
Z :-$;3J$,/G%+-26wahw
h
GCF8F$'(*$'+-F,/+ 4Z
CREATE RULE
Nombre
CREATE RULE
Synopsis
CREATE RULE name AS ON event
TO object [ WHERE condition ]
DO [ INSTEAD ] [ action | NOTHING ]
Inputs
name
i &+-24(*I43J$g1$&/g3?$;A&/gf73?$;3JZ
event
object
table
table column
insert
condition
action
lx^l
Salidas
CREATE
Description
Notas
G .$;3=F,/+-$'+-F$w&/6.03?$;79;#7,/4+_792+E3J$;A&/G1$ N wZ ,^$'&(*,/GC(*2L+-2(*I43?$w1$w7&/GC$w2Hd3?,/I4&/$
i )
1$H,/+-GKF+-7,/E.^3[$'7$L$;+$'&
RN&/
Tj&/_.3?F8$
1$L&/V3J$'A4&/R GC2+
724+-GC,/1$'3?12GF8212Gf1,/W8$'3J$'+-event
F$'GF#.0&/Gcondition
Z $_W23?(*E(*Gg.3J$'7,/GK^action
R
T
GC2+&/G
+-,/7GbF8#.&/^Gb!#$hGC2+724(*.03=F,/1Gb$;+- F83J$%79&/^#GK#&/GZM243g$=BD$'(*new
.0&/24R¤t
GbGC,/A#,/$'+-F$'GV12G
3J$'A4&/'GaF8,/$'+ $'+&/g(*,/GK(*HGC$'(*^+-F8,/7-Z
ON UPDATE TO emp.salary WHERE emp.name = "Joe"
DO UPDATE emp ( ... ) WHERE ...
lx
G +-$'7$'GC3?,/2*F$'+-$'3g.$;3=(*,/GC21$E1$']+-,/7,/4+1$%3J$;A&/Gb$;+@#+-h79&/^GK$%.3?".21$'3g1$']+-,/3
i b
#+-*3?$;A&/$;+$'&Z $1$'I4$#F,/&/,/e3V$;&w72(*+-12hLh T!L#"V.3?(*21,/]793
$'GCF82Ga.$'3?(*,/GK2GZ
i & 2I'BD$'F2E$;+j#+-g3?$;A&/ +-2_.#$'1$GC$'3)#+-+-H3J$'W8$93?$;+-7,/ff#+h3?3=;T%T_+-2%.#$'1$QF8$;+-$'3
.3?'(*$;F83J2GZ
\V.^3F8$X1$'&79^(*.2b24,/1R;&/2G>F83?,/I4#F82GU1$;&GC,/GKF$'(*6+-2L.#$'1$'+_GC$'33J$'W8$'3J$9+-7,/12GU$'+E+ ,/+-c
A+_&/#A30$'+V#+-3J$'A4&/-Z i +-F3?$
24F3=^GU792GCG)$;GKF2bGC,/A+-,/]7!4#$Q&/G)W#+-7,/2+-$'GU1$w,/+-GCF8^+-79,/^G
58.243a$?B$;(*.&/2hR
12+-1$
$;GQ#+-_7&/GC$'<+-2j.#$'1$'+GC$'3a&/&/^(*1GQ$;++-,/+-A+
emp
&/#A^3U1$;+-F83J2V1foo(emp)
$#+-H3J$'A4&/-Z
i &GK,GKF$'(*%&/(*7$;+-%$'&F8$'F21$_&/%3J$'A4&/ET&/2Gb.&/+-$;Gf1$_72+-GC#&/F8"724(*2^F83?,/I4#F82Gf1$
F8$;NF2)Z i GCF82*,/(*.0&/,/79h!#$%&/"793J$'^79,/+1$E3J$'A&/^GH.#$'1$EW8&/&/36GC,)&/"3J$'A&/"(*GHGK#Gbd3?,/G
,/+-F8$;3=+-G
3J$'.3J$9GC$'+-F7,/24+-$'Gw$'79$;1$9+j^&/A+hd&/243U!#$g$'Ga1$'& 23J1$'+"1$g#+-g.A,/+- Z
Uso
7$'3!#$ (
\V&(*,/GC(*2*F8,/$;(*.2*!#$$824$E3J$'7,/d$_#+`B#GCF$%1$_GK^&/3=,/2R $'&$'d$'+-F82GK$;3=%d$'3J1;1$'3J2T*&/
,/+-GCF8+-7,/L7F8#&-1%
$ $82$bT&/L+-#$'dV,/+-GCF8^+-79,/V.3J24.#$;GKFL$'GCF8+1,/GK.024+-,/I4&/$'G.3?b&/G63J#c
F8,/+-^Gw1$g$?B$;79#7,/+
ZM23
&/2%F+-F82R$'GCF8$g+-#$;d 2EGK&/^3=,/2_$'GXGC#GCF8,/F#,/12%$'+j&/H.3?F$g1$g77,/4+
1$6&/g3?$;A&/!#$$'G
GC#I4GC,/A#,/$'+-F$'(*$'+ F8$g$=BD$'7#F1-Z i GKF2E.03?2.A4$;& GC&/3?,/2_1&
$ $2$6 ^(Z
$ $824$g7#+-12E$'G
77$'1,/12k
7$'3!#$g,/&/&2I4F8$'+-A4H$'&GC&/3?,/2V1'
CREATE RULE example_2 AS
ON SELECT TO EMP.salary
WHERE current.name = "Bill"
DO INSTEAD
SELECT (emp.salary) from emp
WHERE emp.name = "Joe";
lx^m
$'+-$'A43 (
$824$a$;&;779$;GK2g&;GC&/3?,/2f1$>$'(*.&/$'^124G$'+L$'&'1$;.3?F8;(*$'+-F2H1$
7&/e;12f5
1$'d#$'&/d$6$;&4+-2(*I43J$g1$'& #GC#3?,/2E7F#&/<`k
current_user
CREATE RULE example_3 AS
ON SELECT TO emp.salary
WHERE current.dept = "shoe" AND current_user = "Joe"
DO INSTEAD NOTHING;
P63J$93>#+-fd,/GCF8H1$$'(*.&/$;124G
F3=^I4CB^+-12_$;+j$;&1$'.3F(*$'+-F$g1$UBD#A4#$;F8$;GZ
CREATE toyemp(name = char16, salary = int4);
CREATE RULE example_4 AS
ON SELECT TO toyemp
DO INSTEAD
SELECT (emp.name, emp.salary) FROM emp
WHERE emp.dept = "toy";
Compatibility
SQL92
& 72(*+-126waV$'Gj#+-@$'F8$;+-GK,/+1$*M2GCF8A43J$'Gjh2$'N,/GCF$&/GC$'+-F$'+-7,/
i Q
w
Vj$'+ 4Z
CREATE SEQUENCE
Nombre
CREATE SEQUENCE
Synopsis
CREATE SEQUENCE seqname [ INCREMENT increment ]
[ MINVALUE minvalue ] [ MAXVALUE maxvalue ]
[ START start ] [ CACHE cache ] [ CYCLE ]
lxx
Entradas
seqname
increment
minvalue
maxvalue
start
cache
H24.7,/2+
.$;3=(*,/F$f!#$f&/24Gw+-#(*$'3J24Gw1$g&/HGC$'7#$'+-7,/HGC$'+j&/2;BD12G
cache
5.03?$9&/&/27F8$;CACHE
1<)T*&/(*
7$'+-124Gg$'+(*$'(*23=,/%.^3=%#+77$'GC2(*Gg3=.0,/12)Z i &d&/23
(*,/+-,/(*2V$;G)Q58GC24&/2bGC$X.#$'1$aA4$'+-$'3?3#+_d ^&/24371Xd $;eR,Z $ZGK,/+_77:-$'<TH$'GUF8^(*I4,/$'+
$'& d&/243U.23U2(*,/GC,2+
Z
P6
P6 i
%.&/I43%7&/d$V5-4$'T.h23J1<)P6
P6 i .#$;1$VGC$'3Q#F#&/,/e1_.3?_.$'3?(*,/F,/36%&/EGC$'c
79#$;+-79,/a792+-F8,/+-#^37#+-12f$;&^d&/2301$
2H$'&'1$
:-XGC,/12H&/7+-c
maxvalue
e1-2.23Q#+-_GK$;79#$;+-79,/VGC7$'+-1$'+-F$L2
1$'GC7$'+-1$'+-F$L3J$'GC.minvalue
$;79F,/d'(*$'+ F8$Z ,0$'& &/,/(*,/F8$
$'GU&/7+-e^102R'$'&NGC,/A4#,/$'+-F$6+-#(*$'3J2LA4$'+-$'3?12bGC$'3?7#&/!4#,/$;3=6!#$Q.3?
minvalue
2
GC$'fF24(*^12E724(*2E.3J24.0,/'12Z
maxvalue
Outputs
CREATE
lx^n
,$'& d&/23>(*,/+-,/(*2ET%(*,/(*2EGC2+,/+-72+-GK,/GF8$;+-F8$'GZ
Descripcion
w
0/!1hVh_,/+-F3J241#7,/3?Q#+-+-#$'dQGC$'7#$'+-7,/6A4$'+-$;3=1243?X1$X+-#(*$'3J24G1$'+-c
F83J2"1$f&/L7F8#&I4GC$b1$f1^F82GZ i GCF82h,/(*.&/,/7L&/V73J$'7,/2+$H,/+-,/7,/&/,/e7,/2+1$H#+-V+-#$;d
F8^I&/g1$g#+-H&/,/+-$'H724+j$'&+-2(*I43J$
ZKfGC$'7#$'+-7,/HA4$'+-$'3?123?fGC$'3=H.03?2.,/$'1'1
1$'& #GC#3?,/2E!#$g$?B$;79#Ff$'&724(*^+-1seqname
2)Z
$'.GC#$'GX1$b!#$HGC$b73J$'H#+-bGC$'7#$'+-7,/RN.#$'1$f#F8,/&/,/e^3
&/bW8#+-79,/2+
.3Q24I4F$'+-$'36#+-j+-#$'d2*+-#(*$'3J2*1$E&/"GC$'7#$'+-7,/-Z^"W#+-7,/2+
nextval(seqname)
currval(seqname)
.#$'1$GC$'3V#F,/&/,/e1*.3?*1$'F$'3?(*,/+-3V$;&X+-#(*$'3?.1$'d#$;&/F82.23_&/*#&/F8,/(*&/&/(*1
1$'GC1$&/fGC$'7#$'+-7,/H$'GC.$;79,/]71$'+"&/HGC$'GC,/24+h$'+h7#3?GK2Z`fW8#+-7,/24+
nextval(seqname)
.#$;1$bGC$'3a#F,/&/,/e1L.3?b724+-]A4#3?3w$'&d&/243w7F#&
setval(seqname,
1$'d24&/d$'3?g$;&
1
$6&/GC$'7#$'+-7,/f$'GC.$'7,/]newvalue)
79^1Z`gGC,/A#,/$;+-F8$&/&/^(*1g
nextval(seqname)
d&/243)112V(*Ga&/fGC$'7#$'+-7,/f1$g,/+-73J$'(*$'+-F2Z
)VF,/&/,/7$#+-H724+-GC#&/F8H58!#$;3=T4< 792(*2
SELECT * FROM sequence_name;
.3?X24I4F$'+-$'30$'&#&/F,/(*2Ld&/2430GK,A+-12b.02437#&/!4#,/$;3.3J279$;GK2b$;+_$;&GC$'3?d,/124358I47-4$S+-1<`Z
F82_24I4F,/+hF8:-$g&/^GKFd&/#$&/&/27F8$;1I4T%+-TEI4*7 -4$'+-1XZ=.3?'(*$'F3J24Ga!#$g.#$;1$'G
#F8,/&/,/e^3
$j#F8&/,/eI4CBD2+-,/d$'&w1$I4&/24!4#$.3?:-I4,/&/,/F3L(*#&/F,/.&/$'G"&/&/^(*1G_GC,/(*#&F8+-$;G%*#+
A$;+-$'3?123`Z
lx
Atencin
Se pueden obtener resultados inesperados si una configuracion de cache mayor que uno es utilizada por un objeto secuencia que sera usado concurrentemente por multiples procesos en el servidor (backends).
Cada proceso en el servidor (backend)asignara valores de secuencia
"cache" succesivas durante un acceso al objeto secuencia e incrementara el ultimo valor (last_value) del objeto secuencia en conformidad
con esto. De este modo, el siguiente uso de cache-1 de nextval dentro de ese proceso en el servidor (backend) devolvera simplemente los
valores asignados sin tocar el objeto compartido. Asi pues, los numeros asignados pero no utilizados en la sesion en curso se perderan.
Mas aun, aunque se garantice por multiples procesos en el servidor
(backends) la asignacion de distintos valores de secuencia, los valores
pueden ser generados fuera de secuencia cuando los procesos en el
servidor (backends) son tenidos en cuenta. (Por ejemplo, con una configuracion de cache de 10, el proceso A puede reservar valores 1..10
y devolver un nextval=1, entonces el proceso B puede reservar valores
11..20 y devolver un nextval=11 antes de que el proceso A ha generado
un nextval=2.) Asi, con una configuracion de cache de uno es seguro
asumir que los valores de nextval seran generados secuencialmente;
conuna cache configurada mayor que uno solo podrias asumir que los
valores de nextvalue seran todos distintos, no que seran todos generados de un modo puramente secuencial. Tambien, last_value reflejara el
ultimo valor reservado por cualquier proceso en el servidor (backend),
tanto si ya ha sido devuelto por nextval como si no.
Notas
a$;(*,/F8GC$gf$;GKF12_hh/!1hLhh.3?f$;&/,/(*,/+-3>#+-fGC$'7#$'+-7,/-Z
P616.3J279$;GK2V$'+"$;& GK$;3=d,/123U58I427 -$'+-1<-#F,/&/,/efGC#j.3J24.0,/g77:-$6.^3=&/(*7$'+-3+-#(*$'c
3J24GQ^GK,/A4+-12GZ92GQ+-#(*$'3J2G6!#$H$'GCF8+$'+&/L77:-$H.0$'3J2"+-2jGC2+#F,/&/,/e12"$'+&/VGC$'GC,/2+
$'+"7#3=GC2_GK$g.0$'3J1$'3+-R1^+-12_72(*2%3J$'GC#&/F81-2Ed7,/2GK$;+j&/gGK$;79#$;+-79,/ Z
Uso
R^724(*$;+-e+-12_$'+" k
serial
i k
lx^
P62+-]A#3?3)$'&d ^&/243)1$g&/fGC$'7#$'+-7,/f1$;GK.#$;Gw1$6#+jP M
Compatibilidad
SQL92
w
/!1hVh$'Gw#+-b$'F8$;+-GC,/24+1$g&/$'+-A4#CBD$HM2GCF8A43J$'GZh2E:-T"$'GCF12%6V
a3
/!
1hVhh$'+ 4Z
CREATE TABLE
Nombre
CREATE TABLE
Synopsis
CREATE [ TEMPORARY | TEMP ] TABLE table (
column type
[ NULL | NOT NULL ] [ UNIQUE ] [ DEFAULT value ]
[column_constraint_clause | PRIMARY KEY } [ ... ] ]
[, ... ]
[, PRIMARY KEY ( column [, ...] ) ]
[, CHECK ( condition ) ]
[, table_constraint_clause ]
) [ INHERITS ( inherited_table [, ...] ) ]
Entradas
i M
\V)
$"73J$'j&/F8I4&/jGK&/2.3?$'GCFGC$'GC,/4+-RT$'GV$'&/,/(*,/+-^1#F24(*^F8,/7(*$'+-F$j72+$'&
]+j1$f&/bGC$'GC,/4+
ZGXFI4&/Ga.$'3?(*+-$'+-F$'GX$;N,/GCF$'+-F8$;GQ724+j$'&4(*,/GC(*2j+-2(*I43J$f+-2"GK2+
d ,/GC,/I4&/$'Ga(*,/$'+-F3=^Gw&/fFI4&/$F$'(*.23=^&4$;N,/GCF$Z
lx
table
column
type
i &'F8,/.2H1$'&;7(*.2ZM#$'1$
,/+-7&/#,/3$'GC.$'7,/]71243J$9G1$
3?3=^T ZP62+-GC#&/F8$a&/Xv9|Js }J?4V
Q|?J} |
t4^).3?f(*Ga,/+-W8243?(*7,/4+hGC2I3J$6F8,/.2GXTE3=3?;TGZ
i \4)L
value
)V+d&/243X.2361$;W$;7CF82.3?E$'&07(*.2Z'P62+-GC#&/F8$_&/E7&/#GC#&/ i \4)L .^3=V(*G
,/+-W23?(*7,/4+
Z
column_constraint_clause
b7&/#GC#&/V2.7,/24+-^& 1$f3J$'GCF83?,/77,/24+-$;GQ572+-GCF83?,/+-F<$'GC.$'7,/]7L#+-L&/,/GCF8L1$f3J$'GCF83?,/7c
79,/2+-$'G1$b,/+-F8$'A43?,/112j724(*.03?#$;IV!#$V&/G+-#$'dG6,/+-GC$'3J7,/2+-$'G27F#&/,/e;79,/2+-$'G
1$'I4$'+GCF8,/GCW87$'3Q.3?"!4#$"&/h,/+-GC$'3J7,/4+2*&/h^79F#&/,/e;7,/4+F$'+-A4"'N,/F2ZP6^1%3J$'GCc
F83?,/779,/+1$'I4$$'d&/#3?GC$j*#+-$'.3?$;GC,/4+I4242&/$'+- Z4\L#+-!#$ N ^3?$;!#,/$'3J$j&/
.3?f3J$'W8$'3?,/3=GC$6b$;GC$g79^(*.2EGC4&/^(*$'+-F$'RM2GCF8A43J$'G
column_constraint_clause
.
$'3?(*,/F8$!#$*(*&/F8,/.&/$;G"7(*.24G%GK$;+3J$'W8$;3?$9+-7,/12G"1$'+-F3J21$#++-,/7279^(*.2
792+-GCF83?,/+-F=ZCP62+-GK#&/F$g&/H7&/#GK#&/g792+-GCF83?,/+-F-.03=g(*Gw,/+-W823=(*^79,/+
Z
table_constraint_clause
_7&/#GC#&/_2.7,/24+-^&P
\ $'GC.$'7,/]7_#+-_&/,/GCFE1$b3?$;GKF3?,/797,/2+-$'G1$L,/+-c
F8$'A43?,/11"!#$6&/G>+-#$'dG>,/+-GC$'3J7,/2+-$'G
2L&/G>7F8#&/,/e^7C,/24+-$;Ga1$'I4$'3?+EGCF,/GCW^79$;3.3?
!#$#+-*GK$;+-F8$'+-7,/,/+-GC$'3?F62@#.1F8$F$'+-A4',/F82ZP613?$;GKF3?,/797,/+1$'I4$GC$'3L$;d ^c
&/#1#+-$;N.3J$'GC,/+I4242&/$'+--Z $h.#$'1$'+3J$'W8$93J$'+-7,/3b(*&/F,/.&/$'G_7 (*.2GE72+
#+-_+-,/7E3J$'GCF8 3?,/779,/+
Z 4&/2jGC$V.#$'1$L1$']+-,/3X#+-E+-,/7E7&/#GC#&/VM \L)6
5 i
58#+-3J$'GCF3=,/77,/4+E1$XF8I4&/< +-1hM \V)7
5 i
.243FI4&/SM \L)7
5 i
5#+-h3J$'GCF83?,/77,/4+1$"7(*.2column
<wGC24+@(*#F#(*$'+-F$j$;N7&/#T$;+-F8$;GZP62+-GK#&/F$j&/h7&/#GK#&/
1$3J$'GCF83?,/77,/4+"1$gFI4&/f.^3=(*Gw,/+-W823=(79,/+
Z
"i 8
inherited_table
Q7&/#GC#&/2.7,/24+-^& hi 8 $'GC.$'7,/]79Q#+-Q724&/$;797,/+%1$w+-2(*I43?$;GU1$wF8^I4&/61$
&/Gw7#&/$;Ga$;GKFHF8^I&/H:-$;3J$'10HF2124Gw&/24Gw79^(*.24GZ ,4^&/A+j7(*.2E:-$;3?$;1'12E.3J$97$
(*G>1$X#+-gd$'eRSM2GCF8A43J$'G
,/+-W8243?(*g1$X#+"$'3?3J243=ZM24GCFA3J$'G
.$;3=(*,/F$6#F2(*F8,/7(*$;+-c
F8$aX&/XFI4&/w73J$''1X:-$'3J$'1;3W8#+-7,/24+-$'G1$
&/GF8I4&/^GGC#.$'3?,/23J$'GX$;&/&/X$'+L&/B$;3=^3?!4#
1$:-$'3J$'+-7,/-Z
Aside: La herencia de funciones se realiza siguiendo las convenciones del Common Lisp
Object System (CLOS).
Salidas
CREATE
lx^
ERROR
, $'&0F8,/.21$V1^F82G62$'&0d&/23X.243X1$'W8$'7`F82+ 27243?3J$'GC.2+-1$L&0F,/.2j1$V1F24G1$b&/
1$']+-,/7,/4+h1$'&7(*.2Z
Description
7&/#GC#&/24.7,/2+-& hi $'GC.$'7,/]79#+-72&/$'779,/+1$+-24(*I43J$;G%1$7&/GC$'G_1$
&/24Gw7#^&/$'Gw$;GCF8H7&/GC$g:-$'3J$'1H^#F2(*F8,/7(*$;+-F8$gF24124GX&/2GQ7(*.2GZ ,7#&/!#,/$'3>+-24(*I43J$
1$f7(*.2%:-$'3J$;1102"^.3J$S7$H(*GX1$b#+-bd$'eRM24GCFA3J$'GQ,/+-W823?(*L1$f#+$'3=3J23JZM2GCF8A43J$'G
.$'3?(*,/F8$6#F82(*F,/79^(*$'+-F8$6f&/f7&/GC$673J$'1:-$'3J$;13W8#+-7,/2+-$'Ga1$7&/GC$'G
GC#.$'3?,/243J$'G
$'+
&/UBD$'3?3J!#61$6:-$'3J$'+-7,/-Z6:-$'3J$'+-7,/61$QW8#+-7,/2+-$'G
GK$X:-7$6GC,/A4#,/$'+-12L&/G>72+-d $;+-79,/2+-$'G
1$'& PQ24(*(*2+,/GK. I;BD$'7F TGCF$'( 5PQ V <JZ
P61h+-#$'dFI4&/27&/GC$
$;GL793J$'^10^#F2(*F8,/7(*$;+-F8$"792(*2@F,/.2Z M243HF8^+-F82R
#+-E2(*^Gf,/+-GCF8^+-79,/^Gf1$L&/%table
79&/^GK$LGK2+#F82(*F,/79^(*$'+-F$_#+F,/.2T.#$'1$;+*GK$;36#GC1G
$'+"2F83?C
G BED4;Lz >4z8C
o ?F7AG?H, ?GC$'+-F$'+-7,/Gww
4
8
wZ
. .h,/F8:h+-2V,/+-,/F8,/&1^F842Z )V+-F8I4&/+-2_.#$;1$6F$'+-$'3)(*G
:-$6+-,$ .FI4&/$,/G
73J$';F8$'1hG
g:-$'^#
1$g^H79^(*.24Gw53J$;&/(*$'+-F$'R$'GCF82"d,/$'+-$f&/,/(*,/F12".23a$'&4:-$'7:-2"!#$H$'&4(*N,/(*2"F(*-2
1$#+-HF#.&/f1$'I4$GC$;3>(*$'+-23>!4#$IT4F$'GC<R'.$'3J2_$;GKF$g&//(*,/F$g.#$'1$GC$'3>72+-]A4#3?12
"#+F8(*^-2*(*$'+-23H$;+@&/A4#+-2GVGC,/F,/24GNIZ )L+-"F8I4&/h+-2.#$'1$EF8$;+-$'3g$'&(*,/GC(*2+-2(*I43J$
!#$g#+-fFI4&/f1$7F&/2A2_1$'& GC,/GCF8$'(* Z
Clusula DEFAULT
DEFAULT value
ln
Entradas
value
K #+j&/,/F$'3?&
K #+-HW#+-7,/+h1$g#GK#^3=,/2
K #+-HW#+-7,/+h+-,/&/1,/7
Salidas
h,/+-A4#+--Z
Descripcin
7&/#GC#&/
i \4)V GC,/A+-*#+-d&/23L.23V1$'W8$'7F2#+7(*.258F3=^d ;GE1$#+-
7(*.2*$;+@&/hGC$'+-F8$;+-79,/jP6 i \ i \L i <?Z i &)F,/.21$"1F82*1$E#+d&/23
1$']+-,/7,/4+@1$"
.23U1$;W$;79F2V1$'I4$723=3J$'GC.2+-1$'3)& F,/.2%1$1^F82V1$&/H1$;]+-,/7,/+1$;& 7(*.2)Z
)V+-w2.$;3=7,/+_1$>,/+-GC$'3J79,/+V5 i <!#$w,/+-7&/#T4Q#+_7(*.02fGC,/+_#+Vd&/243-$'GC.$'7,/]712
.23
1$'W8$'7F2%GC,/A+-^3=b$'&d ^&/243
0
)V&79^(*.2%GC, +-2hGC$b&/$f.3J2.23?7,/2+-b#+d&/243a$;N.&/c
7,/F82Z ,0$;&d &/23X.243X1$;W$;79F2j$'G#+
GC,/A+-,/]7%!#$_!#$L$'Gf#+d&/23Q72+-GKF+-F$Z
literal
,$'& d&/23U.23)1$'W8$'7F82L$'G
#+-
2V#+-
GC,/A+-,/])7
!#$g1,/7:-2Ed&/23U$;Gw$;&41$&/fW8#+-niladic-function
7,/4+j$'GC.$'7,/]79^1g$'+h$;& (*24(*user-function
$;+F2E1$&/g,/+-GK$;3J79,/+
Z
T_124GaF,/.24Ga1$gW8#+-7,/24+-$'Ga+-,/&/1,/7Nk
+-,/&/1,/7() i
P&)V
i ) i ) i
PQ24+-GC#&/F$g&/GwW8#+-7,/2+-$'GwPL)V
i ) i
i ^ ") i
F21d/g+-2EGK2.23=F1G
i ) i
F21d/g+-2EGK2.23=F1G
+-,/&/1,/7w1F$'F,/(*$
P&)V
i \ i
P&)V i i
ln^l
P&)V
i i \
M
+ &/wd$'3?GK,/+V7F8#&;58d-Z ;<RKM2GCF8A43J$'G)$;d &/
F821G&/G$'N.03?$;GK,/2+-$'G.2301$'W8$97F82H$;+L$'&'(*24c
i L
(*$'+-F2$'+!#$E&/EFI4&/E$'Gg1$']+-,/1-ZSM23F+-F24R&/GW8#+-79,/2+-$'Gf!#$_GC24++-2+-c77:-$'^I4&/$'
724(*2
.#$;1$'++-2.3J21#79,/3X$'&$'W8$;79F21$;GK$;12Z;M3=_$'&79^GK2.3Jc
F8,/7#&/3 CURRENT_TIMESTAMP
1$aF,/.24G1F$ F8,/(*$aRGC$a.#$'1$>F83?I4CBD3 GK2I43J$a$'GCF8$>724(*.23?F8(*,/$;+-F82b#GC+-1
2 M i c
\ )L Ei OY+-
2 .h:O NX$'+L&/#A3 1O
$ M i J
\ )H O+-P2 .hQO Nw
2 M i J
\ )V &
P )V
i i \
M!N Z
4
i GCF82LW8#$'3?eM2GCF8A43J$'G>g72+-GK,/1$'3=^3)& g724+-GCF+-F8$6792(*2V#+% F8,/.2VGCF83?,/+-AETVGC792+-d$'3?F8,/3?&/g&
d&/243)F8,/($'GCF8(*.$;+jF,/$'(*.2_1$$=BD$'7#7,/4+
Z
Uso
M3=jGC,/A+-^3L#+d&/243H724+-GCF+-F8$72(*2@d&/23L.23b1$'W8$'7F82.3?&/2GE7(*.2G
+-1
did
R'TE#+-H79^1$S+-H^& 79^(*.2
k
number
CREATE TABLE
did
number
total
);
did
video_sales (
VARCHAR(40) DEFAULT luso films,
INTEGER DEFAULT 0,
CASH DEFAULT $0.0
Entradas
name
name
ln
#)L
i &79(.2E.#$'1$724+-F$'+-$'3Ud ^&/243J$'G>0)VXZ2RGCFf$'Ga&/f2.79,4+j.243U1$'W8$'7F2)Z
#
)V
i &>7(*.2+-2.#$;1$h72+-F8$'+-$;3bd&/23J$'GL#)LXZ i GCF2$'!4#,/d ^&/$j&/3J$;GKF3=,/77,/+1$
79^(*.2_P hi &
P 55
#
)V<`Z
)V
M
column
i
i &47(*.2"1$'I4$g72+-F8$;+-$'3a#+d&/23
+-,/72)Z i +jM2GCF8A43J$'GQ$;GKF2"$'GXW823?e102".0243a(*$;1,/2
1$&/f73J$'7,/+",/(*.&//7,/FH1$#+h/+-1,/7$g+-,/72EGC2I3J$6&/HF8I4&/-Z
\L)S5 i
i GCF8$X7(*.2L$'G>#+-g7&/d$X.3=,(*3=,/^R;&/2V!#$6,/(*.&/,/7!#$&/6#+-,/79,/1^1j$'G>W823=e^10.243
$'&GK,/GCF$'(*"T*!#$E2F83?GgF8I4&/Gg.#$'1$;+ 72+-]3$'+$'GCF$_79^(*.2724(*2,1$'+-F8,/]7123
+-,/792_.3?f&/24Ga3J$'A4,/GCF83J2GZ`PQ24+-GC#&/F$gM \L)T
5 i @.3?g(*^Gw,/+-W823=(*7,/+
Z
constraint
Descripcin
Q79&/^#GK#&/624.079,/2+-&N1$Q3J$'GCF3=,/77,/4+_58P a\ <$;GC.$'7,/]763J$'GCF83?,/779,/2+-$'GU2Ld$'3?,/]79
!#H1$'I4$'+79#(*.&/,/3w&/^G+ #$;d ^GQ,/+-GC$'3J79,/2+-$'G62h&/GQ^79F#&/,/e;7,/24+-$;G.03=L!#$b#+-V2.$'3?c
7,/4+1$",/+-GC$'3J7,/4+@21$"^79F#&/,/e7,/+@F$'+-A4',/F82ZPQ1h3J$'GCF83?,/779,/+@1$;I4$"$;d &/#^3=GC$E
#+-%$'.3J$'GC,/4+I4242&/$'+- ZPQ24+#+-"+-,/79"3J$'GCF3=,/77,/4+GC$_.#$'1$;+3J$'W8$93J$'+-7,/36(*&/F,/.&/$'G
F3=,/I4#F24GZ i & #GC2V1$M \L)7
5 i 724(*2_3J$'GCF83?,/779,/+%1$6F8I4&/$'G>(*#F8#(*$;+-F8$6,/+-792(*c
.F,/I4&/$724+h$'&#GC2E1$6M \L)T
5 i @724(*2_3J$'GCF83?,/779,/+h1$7(*.2Z
)V+-H3J$'GCF3=,/77,/+$'Gw#+-L3J$;A&/H72++-2(*I43J$kK#+2I;B$;F82 N *!#$fT4#1Hb1$']+-,/3
72+B#+-c
F82G1$bd&/23J$'G6d&/,/12G6.24+-,/$;+-12&/(*,/F8$;GgL&/24Gg3J$'GC#&/F8^102Gg1$L&/G62.$'3?7,/24+-$;G i R
)VM \ i 23 i ii GC2I43?$6#+-HF8I4&/-Z
i ,/GKF$'+_124G>(*+-$;3=^G)1$X1$']+-,/33J$'GCF83?,/779,/2+-$'GU1$Q,/+-F$'A43=,/1^1XkJ3J$;GKF3=,/77,/2+-$'GU1$XF8^I4&/R;!#$
d$'3J$S(*2GX(*^Gw1$;&/'+-F$'RT%3J$;GKF3=,/77,/2+-$'G
1$g7(*.2R^!#$g.GC(*2Gwgd $;3`Z
)V+-H3J$'GCF3=,/77,/+1$f7(*.2%$;GX#+-b3J$'GCF83?,/779,/+j1$f,/+-F8$'A43?,/111$']+-,/1H724(*2".03=F$f1$g&/
1$']+-,/7,/4+E1$Q7(*.2RST_&/A4,/79^(*$'+-F8$QGC$Q72+-d ,/$;3=F$6$;+%#+-3J$;GKF3=,/77,/+E1$QF8I4&/Q+-16(*G
GC$'3U73J$';1-Z`Ga3J$;GKF3?,/797,/2+-$'Ga1$7(*.2E1,/GK.2+-,/I4&/$'GaGC24+
k
M \L)S5 i
i4i i hP i
)V ) i
P hi PL5
#
)V
Nota: Postgres todava no soporta (en su versin 6.5) restricciones de integridad especificadas por REFERENCES. Se acepta la sintaxis pero se ignora la clusula (disponible,
en cambio, a partir de la versin 7.0)
ln^m
"3J$'GCF83?,/779,/+@ #)V$'GC.$'7,/]7h#+-h3J$'A4&/h!4#$h2I4&/,/Ah!#$h#+7(*.2792+-F$'+-A4
+-,/7(*$'+-F$Vd&/243J$'G6+-2j+-#&/2GZRGCFE$'G6+-,/7(*$'+-F$_#+-_3J$'GCF3=,/77,/4+*1$V7(*.2RT+-2GC$
.$'3?(*,/F8$6792(*2%3J$'GCF3=,/77,/+"1$F8^I4&/-ZZ
Salidas
status
ERROR: ExecAppend: Fail to add null value in not null attribute "column".
Descripcin
Uso
Restriccin UNIQUE
[ CONSTRAINT name ] UNIQUE
Entradas
P a\
name
)V+-f$;F8,/!#$;F8H3?I4,/F83?3?,/g11gH#+-f3J$'GCF3=,/77,/4+
Z
lnx
Salidas
status
Descripcin
Uso
ln^n
La restriccin CHECK
[ CONSTRAINT name ] CHECK
( condition [, ...] )
Entradas
name
condition
P6#&/!4#,/$'3$'.3J$SGC,/+"724+-1,/7,/2+-&d&/,/16!#$XGC$Q$;d &/#$XQ#+%3J$'GC#&/F8^12HI4242&/$'+-+-2Z
Outputs
status
Descripcin
Entradas
P a\
name
)V+h+-2(*I3J$g^3=I4,/F3=;3?,/2E.3?f&/f3J$'GCF3=,/77,/+
Z
ln
Salidas
ERROR: No se puede insertar un valor duplicado en un ndice nico.
Descripcin
b3J$'GCF83?,/779,/+1$H7(*.2"M \V)U5 i $;GK.0$'7,/]7L!#$L#+7(*.02"1$b#+-LF8^I&/LGC24&/^c
(*$'+-F$6.#$'1$6724+-F$'+-$;3)d&/23J$'G>+-,/724G
58+-2L1#.&/,/712GK<TV+-2V+-#&/24GHZ=61$']+-,/7,/4+"1$6&/
724&/#(*+-L$'GC.$'7,/]79^1b+-2jF,/$'+-$H!#$L ,+-79&/#,/3a#+-L3J$'GCF83?,/779,/+$;N.&/7,/F8L #
)L.3=
GC$'3U,/+ 79&/#1f$'+h#+-H3J$'GCF83?,/77,/4+"M \V)T
5 i UZ
&/2_GK$6.#$'1$$;GK.$;79,]73)#+-H+-,/79g79&/^d $6.3=,/(*^3=,/f58M \V)W
5 i
<-.243UF8I4&/ Z
Notas
Entradas
P a\
name
)V+h+-2(*I3J$g^3=I4,/F3=;3?,/2E112VH#+-f3J$'GCF3=,/77,/4+h1$6,/+-F8$'A43?,/11XZ
R ZZZ
i &w +-24(*I43J$1$&/24Gh7(*.2G".3?*&/24Gh!4#$*1$;]+-,/(*2Gj#++-1,/79$+-,/72T9R).3?&/
M \L)S
5 i R^#+-H3J$'GCF3=,/77,/4+h #
)VXZ
column
P hi PL55
<
constraint
)V+-f$;N.3J$'GC,/+hI4242&/$'+-fHGC$'3)$'d&/#12_724(2%&/f3J$'GCF83?,/77,/4+
Z
ln^
Salidas
G>.2GC,/I&/$;GwGC&/,/1^G>.3?g&/f7&/#GC#&/f1$63J$;GKF3?,/797,/+"1$FI4&/G>GC24+h&/G
(*,/GC(*Ga!#$.3?
&/G
.3?F8$;Ga723=3J$'GC.2+-1,/$'+-F$'Ga1$&/f7&/#GC#&/H3J$'GCF83?,/779,/+"1$679(.2)Z
Descripcin
)V
) i
P h
P 5
i L
M L
\ )S5 i
i bX5 i
Nota: Postgres todava no soporta (en su versin 6.5) las restricciones de integridad
FOREIGN KEY. El compilador entiende la sintaxis de FOREIGN KEY, pero solo imprime
un aviso e ignora la clusula. Las claves ajenas pueden ser parcialmente emuladas por
medio de triggers (Consulte la sentencia CREATE TRIGGER).
Restriccin UNIQUE
[ CONSTRAINT name ] UNIQUE ( column [, ...] )
Entradas
P a\
name
)V+h+-2(*I3J$g^3=I4,/F3=;3?,/2E112VH#+-f3J$'GCF3=,/77,/4+
Z
column
Salidas
status
ln
Descripcin
63?$;GKF3?,/797,/+)V ) i $'GC.$'7,/]796#+-f3J$'A4&/6$'+%&/g!4#$6#+"A43?#.2L1$Q#+-2 :-$L)V ) i
724+-GCF83?,/+-F)GK.0$'7,/]$;Gf%3J#&/$_F:-FUEA43J24#.2W>2+-$E243Q2(*^Gf7(*.2Gf1,/d $;3=GC2Gf1$_#+-%Fc
I4&/H.#$'1$g72+-F8$'+-$;3
GC24&/2Ed &/23J$'Ga+-,/792GZ i &72(*.243?F(*,/$'+-F2"1$g&/H3J$'GCF83?,/779,/+j1$gF8^I&/
)V ) i $'GQ$;& (*,/GC(*2h!#$b.03=b&/L3J$'GCF83?,/779,/+1$H7(*.2RN792+&/b.2GK,/I4,/&/,/111,/79,/2+-&
1$.0&/,/793?&/2Vf(*Ga1$#+h7(*.2Z
P62+-GC#&/F$g&/fGC$'77,/4+jGC24I43J$&/g3J$'GCF83?,/797,/+h1$7(*.V
2 )V ) i .3?g(*^Gw1$;F8&/&/$;GZ
Uso
Entradas
P a\
name
)V+h+-2(*I3J$g^3=I4,/F3=;3?,/2E.3?f&/f3J$'GCF3=,/77,/+
Z
R ZZZ
24Ga+-2(*I3J$;Gw1$6#+-2E2E(*Ga7(*.2Gw$'+"&/HFI4&/-Z
column
Salidas
status
ln^
Descripcin
b3J$'GCF83?,/779,/+M \V)Y5 i $'GC.$'7,/]7V#+-L3J$'A4&/H$'+&/L!#$H#+A3J#.2"1$H#+-2h2"(*G
7(*.2Gb1$"#+-hFI4&/j.#$;1$"72+-F8$;+-$'3gGC4&/2d&/243J$;GH+-,/724GV58+-2*1#.&/,/712GK<
T+-2+-#c
&/24GZ^Gf1$']+-,/79,/2+-$'GH1$_7(*.21$E&/2Gb7(*.2GH$'GC.$'7,/]712GH+-2*
+-$'7$'GC,/F%,/+-79&/#,/3g#+-
3J$'GCF83?,/779,/+" #
)Vj.3?gGC$'3>,/+-7&/#1f$'+h#+-H3J$'GCF83?,/77,/4+"M \V)S
5 i )Z
Uso
l
Notas
P6 i \ ih \V iX hi $'G
#+-H$'F8$'+-GC,/+^& &/$'+-A#`B$g1$6M24GCF8A43J$'GZ
l^l
Compatibilidad
SQL92
\V1$;(*'G1$a&/w FI4&/wF$'(*.23=&'d,/GC,/I4&/$a&/247&/(*$;+-F8$'R N w1$;]+-$>#+-XGK$;+-F8$'+-
7,/X
PQ i \ i
b \V i M a\L) \L i RT_24.7,/2+-&/(*$'+-F$f#+-H79&/^#GK#&/ P
k
CREATE GLOBAL TEMPORARY TABLE table ( column type [
DEFAULT value ] [ CONSTRAINT column_constraint ] [, ...] )
[ CONSTRAINT table_constraint ] [ ON COMMIT { DELETE | PRESERVE } ROWS ]
Clusula UNIQUE
150)
^g$'GC.$'7,/]7f&/A4#+-Gw.2GC,/I4,/&/,/11$'G
1,/79,/2+-&/$'Ga.3?
)L
$']+-,/79,/+j1$3J$'GCF3=,/77,/4+"1$F8I4&/-k
l
i k
clusula NULL
clusula CONSTRAINT
^j$'GC.$;79,/]7&/A4#+-.2GC,/I4,/&/,/111,/7,/2+-&U.3?3J$;GKF3?,/797,/2+-$'GCRTF8(*I4,/;+1$']+-$
3J$'GCF83?,/779,/2+-$'G
1$^GKGC$'3?F,/24+-GwT%1$124(*,/+-,/2Z
Nota: Postgres todava no soporta ni dominios ni assertions.
\ k
i
\ 2%\Lc
l^m
[ CONSTRAINT name ] { NOT NULL | PRIMARY KEY | FOREIGN KEY constraint | UNIQUE | CHECK constraint }
[ {INITIALLY DEFERRED | INITIALLY IMMEDIATE} ]
[ [ NOT ] DEFERRABLE ]
ii a\L i
CG ,/A4+-,/]76!#$Q&63J$'GCF3=,/77,/4+_1$'I4$aGC$'372(*.3J24I41X1$'GC.#'G)1$X&/Q$?B$'7#7,/+E1$w71
GK$;+-F8$'+-7,/ N XZ
a\L i
ii a
GC,/A+-,/]7E!#$V&/Ed$'3?,/]77,/4+1$'&-7#(*.&/,/(*,/$'+-F21$b&/E3J$'GCF83?,/77,/4+.0#$;1$LGC$'3w.0&/c
e1-2E:-GCF8H(*^GwF3J10$;R^.$'3J2_+-2E(*GwF3J1-$g!#$g$'&]+-& 1$g&/f7F#& F83?+-GC77,/4+
Z
i N& (*212V1$63J$'GCF3=,/77,/4+E.3=67163J$'GCF83?,/779,/+%F,/$'+-$GC,/$'(*.3J$Q#+"d ^&/243,/+-7,/&N.23)1$'W8$'7F82
!#$gGC$$'GCFI4&/$'7$.3?f&/f3J$;GKF3=,/77,/+j^& .3=,/+-7,/.,/2_1$g&/fF3=+-GC77,/+
Z
\ ^
8 L
i \ i
Clusula CHECK
lx
^g$'GC.$'7,/]7f&/A4#+-Gw.2GC,/I4,/&/,/11$'G
1,/79,/2+-&/$'Ga.3?g&/HM
$']+-,/79,/+j1$3J$'GCF3=,/77,/24+-$;Ga1$gF8I4&/-k
\V)W5 i ak
CREATE TABLE AS
Nombre
CREATE TABLE AS
Synopsis
CREATE TABLE table [ (column [, ...] ) ]
AS select_clause
Inputs
table
l^n
column
select_clause
)V+ VGC$'+-F$'+-7,/V1$H72+-GK#&/F_d&/,/1-ZK
$']'3=^GK$H i i P .3?V:-&/&/^3a#+-V1$;GK73?,/.c
79,/+h1$&/HGC,/+-FN,/Ga.$'3?(*,/F8,/1-Z
Salidas
$;];3=GC$fw
48
T%]/.3?g:-&/&/3U#+hGK#(*3?,/2_1$.2GK,/I4&/$;Gw(*$'+-GCc
a
B$;Gw1$6GK^&/,/1-Z
Descripcin
CREATE TRIGGER
Nombre
CREATE TRIGGER
Synopsis
CREATE TRIGGER name
{ BEFORE | AFTER } { event
[OR ...] } ON table
FOR EACH { ROW | STATEMENT } EXECUTE PROCEDURE
ER">funcBLE>
( arguments )
Entradas
name
table
l
)V+-2_$'+-F83J$
event
i R
i ii 2)VM
\ i Z
funcname
Salidas
CREATE
Descripcin
w
aJhh,/+-F83J21#7,/3#++-#$'d21,/GC.3?1-243Q$'+&/EI4GC$b1$V1F24Gg7F8#^&Z i &
1,/GC.3?'123HGK$hGC247,/3724+&/j3?$;&/7,/4+
T$=BD$'7#F8^3&/W#+-7,/+$'GC.$'7,/]79^1
relname
Z
funcname
$6.#$'1$g$;GK.$;7,/]73U!#$f$'&1,/GC.3?123UGC$f1,/GC.3J$1$g7#&/!#,/$;3=H1$$'GCF8Gw124GaW8243?(*Gk
+-F$'GH58 i i <>1$E!#$"&/"2.$'3?7,/4+GC$'",/+-F8$'+-F1"$'+#+@3J$'A4,/GCF83J258+-F$'GH1$%!4#$"&/G
3J$'GCF83?,/779,/2+-$'G>GC$72(*.3J#$'I4$'+%TE?#
/
>RLhwa"2Eha"GK$;+",/+-F8$;+-F8124GC< 2_1$;GKc
.#'Ga58\ 4i a< 1$g!#$f&/H2.$'3?7,/4+h:-T4HGC,/12%,/+-F$'+-F8^1H58.243U$=BD$'(*.&/2%1$'GC.#'Gw1$g!#$
&/Gb3J$'GCF3=,/77,/24+-$;GLGK$;+@72(*.3J24I41^GbT1$h!4#$j?#
/
RLhw
2h
:-T^+
GC,/12j72(*.&/$'F12GC<CZ , $'&-1,/GC.3?'1243wGC$L.2+-$V$;+(*3J7:-V+-F$'G61$;&-$'d$'+-F24R 'GCF8$b.#$'1$
GC&/F83-&/624.$;3=7,/+_.^3=X$;&3J$'A4,/GKF3J2H7F#^&^2b7(*I4,/^3$'&^3J$'A,/GCF3J2H!#$X$'GCF8I4Q,/+-GC$'3?F+-124GC$
58GK&/2%.^3=H&/Ga2.$'3?7,/24+-$'GX?#
/
ThVhw
<`Z ,$'&1,/GC.3?123>GC$f1,/GC.3?f1$;GK.#;G
1$'&4$'d$'+-F24RF8212GQ&/2GQ79^(*I4,/24GCR,/+-79&/#T4$'+-12h&/b&/F8,/(L,/+-GC$'3J7,/+-R 7F#&/,/e'7,/+2"I423=3?c
12R^GK2+jd ,/GC,/I4&/$'GC.3?g$;&41,/GC.^3=;123`Z
a$;];3=GC$H_&/2G67(
. _ F#&/24G1$ M T 3?,/AA4$'3?GQ$'+*&/LA4<
# _ _v|?s-}?4Vh}v }?pVH?} |Qt4
.3?g( Ga,/+-W23?(*7,/4+
Z
Notas
w
aJhh$'Ga#+ b$;NF$'+-GC,/+j1$;&&/$'+-A#`B$gM2GCF8A43J$'GZ
&/2_$'& .3J24.0,/$'F83?,/2V3J$'&/7,/24+-^12_.0#$;1$73J$';3>#+h1,/GC.3?123U$;+"$'GCF8H3J$'&/;7,/4+
Z
GCF8X&/Qd$'3?GC,/4+_7F8#&^58d Z +'<8R9&/G)GC$'+-F$'+-7,/GU1$w1,/GC.3?1-243J$;G)+-2b$'GCF+V,/(*.&/$'(*$'+-F1GZ
a$;];3=GC$HEhha?h".3?V2I4F8$;+-$'3w,/+-W8243?(*7,/4+*GC2I43J$b72(*2I423=3?3a1,/GC.3?c
123?$;GZ
Uso
P62(*.3J#$'I4GC,N$;&N741,/A42L1$X1,/GCF83?,/I4#,/1243$'GC.$;79,/]712b$',/GCF8$Q$'+_&/gF8^I4&/1$X1,/GCF83?,/I4#,/12c
3J$'G
+-F8$;Ga1$-1,/3)2E^79F#&/,/e3#+-H]&/f$'+h&/2GX]&/(*Ga1$g&/fF8^I4&/-k
CREATE TRIGGER if_dist_exists
BEFORE INSERT OR UPDATE ON films FOR EACH ROW
l^
\V+-F$'G
1$g7+-7$'&/3#+h1,/GCF83?,/I4#,/123>2E1$g7F8#&/,/e;3>GC#741,/A42RI23?3=g791f3J$'WD$'3J$;+-79,/g$'+
&/24Ga]&/(*GX1$6&/fF8I4&/ k
CREATE TRIGGER if_film_exists
BEFORE DELETE OR UPDATE ON distributors FOR EACH ROW
EXECUTE PROCEDURE check_foreign_key (1, CASCADE, did, films, did);
Compatibilidad
SQL92
h2E:-^T%aa
?hh$'+ N -Z
i &)GC$'A4#+-12$=BD$'(*.&/2$'.&/,/712*F$'3?,/243?(*$'+-F$h.0#$;1$E,/(*.&/$'(*$'+ F83?GC$hF(*I4,/'+#GC+-12
#+-f3J$'GCF83?,/77,/4+h1$ i b`
5 i 57&/d$QW23>+-$;< 724(*2_$'+
k
CREATE TABLE distributors (
did
DECIMAL(3),
name
VARCHAR(40),
CONSTRAINT if_film_exists
FOREIGN KEY(did) REFERENCES films
ON UPDATE CASCADE ON DELETE CASCADE
);
CREATE TYPE
Nombre
CREATE TYPE
Synopsis
CREATE TYPE typename
( INPUT = input_function,
OUTPUT = output_function
, INTERNALLENGTH = { internallength
| VARIABLE }
[ , EXTERNALLENGTH = { externallength
l
[
[
[
[
[
[
|
,
,
,
,
,
,
VARIABLE } ]
DEFAULT = "default" ]
ELEMENT = element ]
DELIMITER = delimiter ]
SEND = send_function ]
RECEIVE = receive_function ]
PASSEDBYVALUE ] )
Entradas
typename
internallength
externallength
input_function
output_function
i &+-24(*I43J$f1$f#+-LW#+-7,/+-R 73J$';1b(*$'1,/+-F$fP6 i \ i )VhP hR&/V7#&4792+-c
d /, $;3=F$L&/2G1F82G1$'GC1$bGK#W823=(*V,/+-F8$;3=+-EV#+-EW8243?(*_72+-d$'+-,/$'+-F$V.3?_GC$'3w(*2GCc
F83?12GZ
element
i &F8,/.2_793J$'^102_$'Gw#+h3?3?T'$'GCF82_$'GC.$'7,/]7f$;& F8,/.2E1$&/2Gw$'&/$;(*$'+-F24Gw1$'& 3?3=^T Z
delimiter
default
send_function
receive_function
l^
Salidas
CREATE
Descripcin
w
Oa
.$'3?(*,/F$V&#GC#^3=,/23J$'A,/GCF3=^3X#++-#$'d2F8,/.21$V1F24G1$_#GC#3?,/272+
M24GCFA3J$'G6.^3=VGK$;3X#GC12j$'+&/EI4GC$L1$b1F24G67F#^&Z i &0#GC#3?,/2j!4#$L1$']+-$V#+*F,/.2GC$
724+-d,/$'3?F8$"$'+GC#.3J2.,/$'F3?,/2)Z
$'GL$'&>+-2(*I43J$h1$%1$'&)+-#$'d2F,/.2T@1$;I4$"GC$'3
+-,/72E1$'+-F3J2_1$&/24GaF8,/.2Ga1$']typename
+-,/124Gw.3?g$'GCFfI4GC$1$g1^F82GZ
w
O
a
+-$'7$'GC,/F%$'&3J$'A,/GCF3J21$_124GgW#+-7,/2+-$'GH58#GC+-12j73J$'F$VW8#+-79F,/24+-<U+-F$'G
1$1$']+-,/3_$'&aF,/.2)Z3J$'.3J$9GC$'+-F8^79,/+1$#++-#$'d2F8,/.2I4^GK$$'GCF*1$'F8$;3=(*,/+-^1.243
RN&/E7#&-724+ d ,/$;3=F$V&/_3J$'.03?$9GC$'+-F7,/4+$'F8$;3=+-V1$'&-F,/.2jE#+-_3J$'.3J$9c
GCinput_function
$'+-F8^79,/+%,/+-F$'3?+-R^#F8,/&/,/e^I4&/$Q.0243)&/24G
2.$'3?123J$SG
TVW8#+-79,/2+-$'G
1$']+-,/1G>.0243)$'&NF,/.2Z`hc
F8#3?&/(*$'+-F$
$=BD$'7#F86&/F3?+-GCW23?(*7,/4+%,/+-d$'3?GC-ZJ\V(*I4G>W8#+-7,/24+-$;GKR
&/H1$g$'+-F3=^1output_function
fT"&/H1$gGC&/,/1H1$'I4$'+hGC$'3>1$;7&/3=;1Ga.3?fGC#(*,/3
#+-2%2%124Gw3JA#(*$'+-F2G
1$F,/.2E
9Z
opaque
2GX+-#$'d24GwF8,/.2GQ1$f1^F82GXI4GC$g.#$'1$;+GC$'3U1$f&/24+-A4,/F#1*]NB^RN$;+7#T42%79^GK2
$'Gw#+$'+-F$'3J2".2GC,/F8,/d24RN2"F8^(*I4,/'+.#$;1$'+jGK$;3
1$f&/2+-A,/F#1d3?,/I4interna&/$SRN$'+7#T42
llength
7GC24RNM2GCF8A43J$'G6GC#(*$L!4#$L$'&-+ #$;d 2hF,/.2hF8,/$;+-$L$'&-(,/GK(*2jW8243?(*F2h!#$L$'& F8,/.2h1$H1F24G
9ZKM3?L,/+-1,/73>!#$b#+F8,/.2"$;GQ1$H&/24+-A4,/F8#1*d ^3=,/I4&/$;R
GC#(,/+-,/GKF3=^12".23aM2GCF8A43J$'GCR
text
GC$g1$'I4$g$'GC.$'7,/]73
792(*2
Z`H3J$'.3J$9GC$'+-F8^79,/+j$'F8$'3?+-HGC$
$'GC.$'7,/]7f1$W823=(*finternallength
GC,/(*,/&/3U#GC+-12E&/f.0&/I43?fVARIABLE
79&/^d $
Z
externallength
M3=_,/+-1,/736!#$_#+F8,/.02$'Gg#+3?3?'T*T.3?E,/+-1,/73Q!#$E#+F,/.2F,/$'+-$_$'&/$;(*$'+-F24Gf1$
3?3=;T9R0,/+-1,/!#$j$'&>F,/.21$'&)$'&/$'(*$'+-F21$'&U3?3?T#GK+ 12&/j.&/I43?j7&/d$%$'&/$'(*$;+-F`Z M23
$=BD$'(*.&/2R.3?g1$']+-,/3U#+j^3=3?T_1$$'+-F$'3J2Ga1$g79#F3J2LI4TF$'Ga5,/+-bF +<8R^$'GC.$;79,/]!#$
ELEMENT = int4
dePfhgQiWjck(lgQm<ink
oepqrtsLuOvxwzy{xy|t}x~uvx{x*v~ |(v{xQv|tQ}xrtJ*v2~wuO|t{xut@~|<@utJvxwz*v*u(*v2yv!wut{|tQut{uOvx{Qx
*}vx{xvxQvx{xPeiLSjck(lgQmLi!k
oecp
l
Tipos de Array
i ,/GKF$'+%12GaW#+-7,/2+-$'G
A$;+-$'3?&/,/e1;G
,/+-7923?.243?1^GKR;3=3?T4,/+%T_3?3=^T;24#F .3?&/f73J$';c
7,/4+3=.0,/1H1$gF8,/.024GQ1$f^3=3?T%1$H&/2+-A4,/F8#1d3?,/;I&/$4Z i GKFGQW8#+-7,/24+-$;GQ24.0$'3=^+$;+3?3?TG
1$7#&/!#,/$;3UF,/.2%M24GCA43J$'G
$',/GKF$'+-F$Z
Ejemplos
i CG F8$E724(*^+-12*73?$;%$'&F8,/.2*1$E1^F82GHI42T*1$'GC.#'Gb#GC"$'&F8,/.2*$;+@#+-"1$']+-,/7,/4+1$
7&/GC$k
CREATE TYPE box (INTERNALLENGTH = 8,
INPUT = my_procedure_1, OUTPUT = my_procedure_2);
CREATE TABLE myboxes (id INT4, description box);
i GCF8$72(*+-12_793J$;g#+hF8,/.2E1$2I'BD$'F2%A43=^+-1$T_&/2%#GKg$'+h#+-H1$']+-,/7,/4+h1$g7&/GC$k
CREATE TYPE bigobj (INPUT = lo_filein, OUTPUT = lo_fileout,
INTERNALLENGTH = VARIABLE);
CREATE TABLE big_objs (id int4, obj bigobj);
Notas
2Ga+-2(*I43J$'Ga1$F8,/.024Ga+-2E.#$;1$'+"$'(*.$;e'3U.23U$;& 793?7F$'3A#,/+hI4CB2_58<T_GK&/2%.#$;c
1$'+"F$'+-$'3)#+-H&/2+-A,/F#11$gg73?7F8$;3[$'GZ i GCF82_$'Ga1$'I4,/12Vf!#$gM2GKFA3J$;Gw73J$'gGC,/+j,/+-W8243Jc
l^l
Compatibilidad
SQL3
w
Oa
$'Ga#+h$'&/$'(*$'+-F2E1$ Z
CREAR USUARIO
Nombre
CREAR USUARIO
PQ3?$;+-12V#+j+-#$;d 2_#GK#^3=,/2_1$I4GC$g1$1F82G
Synopsis
CREAR USUARIO nombre de usuario
[ CON
[ SYSID uid ]
[ PASSWORD palabra clave ] ]
[ CREARDB
| NOCREARDB ] [ CREARUSUARIO | NOCREARUSUARIO ]
[ EN EL GRUPO nombre de grupo [, ...] ]
[ VALIDO HASTA abstime ]
Entradas
nombre de usuario
uid
l
_23J1$'+
.#$;1$LGC$'3X#GC1_.^3=V$'GC792A4$'3X$'&0,/1$'+-F,/]71243X1$L#GC#3?,/2M2GKFc
A3J$ "1$'SYSID
&#GC#3?,/2b!#$XGK$X$'GCFQ793J$'^+-12)Zh2b$;GU+-1Q+-$'7$'GC3?,/2H!#$Q7923?3?$;GK.024+-1X
&/24G,/1$'+-F,/]7123J$'G1$a#GC#^3=,/2GU1$O)L R9.0$'3J2f&/A4#+-G).0$'3=GC2+-G)$;&/,/A$;+_(*+-F$'+-$'3
&/24Ga+-(*$'3J24Ga,/A4#&/$'GZ
, +-2_GK$$'GC.$'7,/]79R'GK$g#GC3?f.23U1$'W8$'7F82V$'&+-(*$'3J2E(*^Ga^&/F82_GC,/A+-12_(*Ga#+-2)Z
palabra clave
M,/1$6&/.&/I4379&/^d $X1$'&#GC#^3=,/2Z ,N+-2Ldg6#GK3^#F$'+-F,/]797,/+%.23.&/I4379&/c
d w
$ .#$;1$Q2(*,/F8,3)$;GKFQ24.7,/+-R'1$X2F83?(*+ $'3=Q$;&#GC#3= ,/2b+-2LGC$'3?Q79^.eQ1$w792+-$'7F3
792+$'&GC$'3?d ,/12361$_#F8$;+-F8,/W87,/+*1$_.&/I43?'Gf7&/d $4Z ,/3?$L$'+.A4:-I4-Z 724+-W858;<>2&/
b#,/f1$'& 1(*,/+-,GKF3=^1243).3?g(*^Ga1$;F8&/&/$;Ga1$6724(2E#GC3U(*$;79^+-,/GK(24GX1$6#F$'+-F,/c
]77,/+
Z
P6 i \
i
P6 i \ i
i GKFG_43J1$;+-$'GV1$']+-$'+&/7.7C,/1^11$#+#GK#^3=,/2.3?73J$'3HI4GC$'GV1$j1F24GZ
,GC$E$'GC.$'7,/]7"P6 i \ i R-$;&#GC#3?,/2*1$']+-,/12*F$'+-13?%.$'3?(*,/GC2*.3="73J$';3GC#G
.3J24.,/GaI4GC$'Gw1$f1F82G*Z )L GK^+-12% P6 i \ i *GC$f1$'+-$;A3?Hb#+#GC#3?,/2"&/L7c
.7,/1'1@1$L73?$;3QI4^GK$;Gg1$V1F82GZ ,GC$_2(*,/F8$_ $;GKF%23?1$'+-R4 P6 i \ i GK$_#GC
.243)1$'W8$'7F2)Z
P6 i \
i ) i
P6 i \
i ) i
i GKFGa243J1$;+-$'G
1$'F$'3?(*,/+-+hGK,f#+j#GC#^3=,/2VGC$g&/$g.$'3?(*,/F8,/3?f73J$'3+-#$'d2GX#GC#3?,/24GZ
i GKFL24.7,/+*:-3?+1$;&-#GK#^3=,/2h#+GC#.$'3J#GC#3?,/2j!4#$V.213=L.GC3a.23w$'+-7,/(*V1$
F821G%&/^G%3J$'GCF83?,/7,/24+-$;G"1$77$'GC2)Z ,XGC$24(*,F8$$'GCF8*23?1$'+GK$72A$'3?*&/23J1$'+1$
P6 i \ i ) i @72(*2%d ^&/243).23>1$;W$;79F2V1$'& #GC#3=,/2Z
nombre de grupo
i &
+-24(*I43J$1$j#+A43J#.21$'+-F3J21$;&>79#^&aGC$72&/247&
#GC#3?,/2@724(*2#++-#$;d 2
(*,/$'(*I43J2)Z
abstime
Resultados
USUARIO
CREAR
Descripcin
P6 i \V) )V\H -^1,/3=#++-#$'d2#GC#3?,/2@#+$=BD$'(*.&/21$hM2GCF8A43J$ N XZ$;GC$
&/jb#,/h1$'&\V1(*,/+-,/GCF3=^1243g.^3="(*GL,/+-W823=(*^79,/+GC24I43J$%$'&(*+-$=BD21$"#GC#3?,/24GLT&/
#F8$;+-F8,/]77,/4+
Z $'I4$GC$'3#+"GC#.0$'3J#GK#^3=,/2V1$6I4^GK$;Ga1$Q1F24G
.3?6#GK^3)$;GKF$72(*+-12Z
)VGC$ BDJ;Vz >4z8Co ?FQ)n ?VFaz D .3?j7(*I4,/3f&/.^&/I43=h7&/d$jT@&24GV.3?,/d ,/&/$;A,/2GE1$j#+
#GK#^3=,/2R 3
T ;4FDVX
=!F.3?b$'&/,/(*,/+-3wV#+#GK#3?,/2Z )LGKJ
$ hh?4?LhL.c
3=%^-1,/362*$;&/,/(*,/+-3"#+#GC#3?,/21$E2F83J2GHA43J#.24GZM2GCF8A43J$ N d,/$'+-$E724+#+@GC73=,/.0F
~`}?ps8?t|J?}!4#$QF8,/$;+-$6&/(*,/GK(*W8#+-79,/2+-&/,/1^1h!#$Q$'GCF8$Q792(*+-12L581$X:-$'7:-2R'&/&/(*g6$'GCF$
724(*+-124< .$'3J2V.#$'1$6GK$;3>$=BD$'7#F8^12_1$'GC1$&/f&/,/+-$;b1$724(*+ 124GZ
l^m
Modo de uso
P63J$93)#+h#GC#3?,/2_72+h#+-g.&/I43?7&/d$'R^7#T4g7#$'+-Ff$'Gad &/,/1g:-GCF8g$'& ]+-& 1$'& ^Z
h2F8$'GC$!4#$g#+GC$'A4#+-12E1$;+-F83J2V1$'&-2_;f&/H79#$;+-F8f+-2_$'Gad ^&/,/1-k
CREAR USUARIO miriam CON PALABRA CLAVE jw8s0F4 VALIDA HASTA 1 En 2002
73?$93U#+-f7#$'+-F8g792+j&/f!#$g$'&#GC#3=,/2_.#$'1g793J$93>I4^GK$;Ga1$61F24Gk
CREAR USUARIO manuel CON PALABRA CLAVE jw8s0F4 CREARDB
Compatibilidad
SQL92
h2E$;N,/GCF$&/H243J1$;+hw
4/$'+ 4Z
CREAR VISTA
Nombre
CREAR VISTA
Synopsis
CREAR VISTA vista COMO SELECCIONADO query
Entradas
vista
lx
)V+-f72+-GK#&/Fb$'+
consulta
,/+-1,/7f&/^Gw72&/#(+-GXT_]&/^Gw1$g&/gd ,/GCF-Z
,/3?, BDGC$fH&/L23J1$'+ i i PQP h\H.3?f(*Gw,/+-W8243?(*7,/4+GC24I43J$g&/2GQ3JA#(*$;+-F82G
d &,/124GZ
Resultados
CREADA
6d ,/GCFgGC$'3?73J$916F8$'+-,/$;+-12L#+-g724&/#(*+-792+%#+%73?7F$S31$'GC72+-247,/12LGC,N#GCF8$'1
+-2E&/2E$;GK.0$'7,/]7-Z`M23>$?B$;(*.&/24R$'&GC,/A4#,/$'+-F8$792(*+-12_1f#+$;3=3J239k
CREAR VISTA vista COMO SELECCIONADO Hola Mundo
Descripcin
Notas
h23=(*&/($'+-F8$;R^&/Gwd,/GCF8HGC2+h1$GC4&/2E&/$'7F8#3?-Z
)VGC$&/g243J1$'+h
?LZ
V/.3?f1$'GC:-7$'3[GK$g1$&/Hd ,GKF-Z
Modo de uso
l^n
codigo |ttulo
|did| date_prod|Clase
-----+-----------------+--+-------+-------+---UA502 |Bananas
|105|13-07-1971|Comedia
C_701 |Theres a Girl in my Soup|107|11-06-1970 Comedia
|Dur
| 01:22
| 01:36
Compatibilidad
SQL92
^g$'GC.$'7,/]7f&/A4#+-Gw7.;7,/11$'G
$'GC.$;79]79G
.^3=&/H243J1$'+06HZV/k
CREAR VISTA view [ columna [, ...] ]
COMO SELECCIONADO expresin [ COMO nombre de columna ] [, ...]
DESDE tabla [ DONDE condicin ]
[ CON [ CASCADA | LOCAL ] COMPROBAR OPCION ]
M \V MP
i GKFH2.79,/+h$'Ga.3?f:-7$'3)d,/GKFG
3J$'+-24dI4&/$;GZ 2124Gw&/24G i \L@ i \V
$'+"&/fd,/GCF8gGC$;3=+"772(*.3J24I412G
.3?gGC$'A4#3=^3!#$g&/2Gw1F2GaGCF,/GCW^79$;+%&/G
724+-1,/c
79,/2+-$'Ga1$']+-,/1G
$'+h&/HFI4&/-Z ,+-2E&/2_79#(*.&/$;+-R&/H3?$;+-24d7,/+"+-2%GC$'3?f$=BD$'7#F81Z
P6\V
P62(*.3J24I43)&/H,/+-F8$;A3?,/111$$'GCF8gd ,/GCF-Z
P6\ Pw\ \
P62(*.3J24I43X&/V,/+-F8$'A43?,/111$b$'GCF8Vd /, GCFET7#&/!#,/$;3Qd,/GCF8_1$'.$'+-1,/$'+-F8$4ZSP6\ PQ\Hc
\GC$gGC#(*$GC,+-,PQ\ P6\ \+-, 6
P \LGC24+j$'GC.$'7,/]71'GZ
DECLARE
Nombre
DECLARE
Synopsis
DECLARE cursorname [ BINARY ] [ INSENSITIVE ] [ SCROLL
] CURSOR FOR query [ FOR { READ
ONLY | UPDATE [ OF column [, ...]
l
] ]
Inputs
cursorname
i &+-24(*I43J$g1$'& 7#3?GC243UfGC$'3>#GC12V$'+hGC#I4GK$;79#$;+-F8$'Ga2.$'3?7,/24+-$'G 4i P ZZ
"\V)
M3J2d247f!#$f$'& 7#3?GC243UF83?,/A4f1F24Ga$'+"W8243?(*F2EI4,/+-3?,/2E$;+hd $;ef1$W823=(*F2EF$'F82Z
i i
V.&/I43?_7&/d$V,/+-1,/7+-12!#$_&/2Gf1F2Gf3J$'7#.$'3^124Gg1$'&07#3?GK236+-21$'I4$'+
GK$;3)^W$;7F8;124G
.23)79F#&/,/e7`,/24+-$;Gw1$;GK1$Q2F83J24G
.3J27$'GC24G
2V79#3?GC243J$'GZ=f!#$&/24.$;c
3=7,/+1$H&/2GQ7#3?GK23J$'GX27#3=3J$g1$;+-F83J2%1$f&/GwF83?+-GC77,/24+-$;GKR$'+jM24GCFA3J$'GX$'GCF8$fGC,/$'(*c
.3J$6$'Ga$'&7GC2)Z i GKFf.&/I43?g7&/d$+-2EF8,/$'+-$$'W8$'7F82Z
PQ
^j.&/^I43=h7&/d $",/+-1,/7+-12!#$j&/2GV1F24GL1$;I$;+GC$'3H3?$;7C#.$'3?12GL$'+(*&/c
F8,/.&/$;GE]&/G_.243L79^124.0$'3=^79,/+ i P Z !#$$'GCF2@$'GEGK,/$;(*.3J$j.$'3?(*,/F,/12.23
M2GCF8A43J$'G
$'GCF8H.^&/I43=7&/d $6+-2EF,/$'+-$g$'W8$'7F2)Z
query
)V+-L724+-GC#&/F8 &/V7#^& . 3J2d $;$'3?V&/G6]&/G6VGK$;3XA42d $;3=+-^1GQ.23w$'&-7#3=GC23=ZSa$;c
W$;3=,/3?GC$V&724(*^+-12 i i P
. ^3=_(*T23,/+-W823=(*7,/+^79$;3J7C%1$_&/2GH3JA4#($'+-F82G
d &,/124GZ
"N
V.&/I43?_7&/d$_,/+-1,/7+-12!#$_$'&7#3=GC236GC$'3?E#GC12$;+(*212GC2&/2&/$'7F#3?-Z
!#$j$;GKF$h$;G_$;&>+-,/792(*24121$"77$'GC21$"7#3?GC243H1,/GC.2+-,/I4&/$j$'+M2GKFA43?$;G_$;GCF8
.&/I43H7&/d$+-2EF,/$'+-$g$;W$;79F2Z
i \
)VM
\
i
N b.&/I43?H7&/d $f,/+-1,/7+-12"!#$b$;& 7#3=GC23aGC$'3=b#GC12".^3=b7F#^&/,/e'3aFI4&/GZ
"!#$E&/h^79F#&/,/e;79,/+1$_79#3?GC243J$;GH+-2$'GCFh^79F#&/(*$'+-F$_GC24.23?F81h$;+M2GKFA43?$;G
$'GCF8f.^&/I43=7&/d $6.3J24d279g#+j(*$;+-GK`B$g1$$'3?3J243),/+-W8243?(*F,/d 2Z
column
PQ24&/#(*+58GC<)hGC$'367F8#&/,/e;1GZ' "!#$E&/"7F8#&/,/e^'7,/4+1$_7#3=GC23J$'GH+-2$'GCF8"7c
F8#&/(*$;+-F8$"GK2.23=F1h$'+M24GCFA3J$'GL&/j7&/#GK#&/)VM \ i .3J2d 27j#+(*$;+-GK`B$"1$
$'3?3?23,/+-W8243?(*F,/d 2Z
Outputs
SELECT
l^
i GKF$g$'3?3J243)279#3?3J$6GC,
cursorname
T4H$'GCFf1$'7&/3?'12Z
Description
L.$'3?(*,/F8$E"#+#GK#3?,/2*73J$S^37#3=GC23?$;GKR&/2Gb7#&/$'Gf.#$'1$'+GC$'3#GC12GH.03=
h
3J$'7C#.$'3?3f#+.$'!4#$'+-2+ (*$;3J21$"]&/G_j&/d$'eh.3J24d$'+-,/$;+-F8$'GV1$"#+-724+-GC#&/F8(*G
$'F8$'+-GC-Z2G>7#3=GC23?$;GU.#$'1$;+E1$'d2&/d $;31F24GUT4gGC$'6$'+_W23?(*F82L1$XF$'NF2b2L$'+%W82$'(*F2
I4,/+-3?,/V
2 >=!A
o *Z
2Gw7#3=GC23J$'G
792(*#+-$'Gw3J$'F823?+-+"1F24Ga$'+hW8243?(*F2EF$'NF2R^THGC$'g\ P 8 #24F3J2E$'GC!#$'(
1$7241,/]77,/2+1$;.$'+-1,/$'+-12$'+792(*2$'&aM24GCFA3J$'GEI47 -$;+-1W8#$73J$'12)Z *!#$&/2G
1F24GL$'GCF+A4#^3J1012GV+-F8,/d(*$;+-F8$"$'+W8243?(*F2I4,/+-^3=,/2R$'&UGC,/GCF8$;(*1$'I4$":-7$'3f#+-
724+-d$'3?GC,/4+V.3?a.3J21#7,/30W8243?(*F2fF$'F82Z[\V1$;(*GCRK&/24GW23?(*F82G1$aF8$;NF2fGC24+Vw(*$;+-#12
(*T4243J$'GV$'+F(*+-2@!4#$GC#G_7923?3?$;GC.24+-1,/$;+-F8$'GE$'+W8243?(*F2@I4,/+-3?,/2
Z )L+-d$'e!#$&/
,/+-W8243?(*7,/4+Vd,/$'+-$w$'+VW8243?(*F2bF8$;NF24R&/Q.&/,/77,/+_7&/,/$'+-F$w.2413=,/Q+-$'7$'GC,/F3072+-d $;3=F,/3=&/2G
%#+W823=(*^F82I4,/+-3?,/2.^3=E(+-,/.#&/3?&/24GZ^&/24Gf79#3?GC243J$'Gf "\V)1$;d #$;&/d $;+&/2GH1F82G
$'+"#+-H3J$'.3J$9GC$'+-F8^79,/+hI4,/+-3?,/f+-F8,/d-Z
P62(*2b$=BD$'(*.&/2R'GC,N#+-6792+-GC#&/F861$'d#$'&/d$w#+%d&/2431$X#+-2L1$;GK1$X#+-6792&/#(*+-6,/+-F8$'A4$'3R
#GKF$'124I4F$'+-13?,/h#+GCF83?,/+-A1$"OYO792+#+7#3?GK23g1$;W^#&/FU(*,/$'+-F83?GL!#$%724+@#+7#3?GC243
I4,/+-3?,/2_#GCF8$;124I4F$'+-13?,/f#+hd ^&/24
3 +c8I4TF$,/A4#^&4g#+j72+-F83J2&/c8\58O \QO<`Z
2G_7#3?GK23J$'GV "\V)1$'I4$'+GC$'3H#GC124G_7#,/112GK^(*$'+-F$ZN\L.&/,/779,/2+-$'G_1$j#GC#3?,/2
F8^&/$'GQ724(*2
+-2hGC2+724+-GC7,/$'+-F$'G61$H&/24G67#3=GC23J$'GQI4,/+-3?,/24G6Tj$;GK.$;3=^+!#$b&/24G61^F82G
d$'+-A^+"$'+hW8psql
243?(*F2EF8$;NF2)Z
3?$;.-3J$'GC$'+-F7,/4+1$*&/2GjGCF83?,/+-A$'Gh+-$'#F3=&w3J$'GC.$'7F82&/^3?!4#,/F8$'7F#3=;R
(*,/$'+-F3?!#$
&/3J$'.3J$9GC$'+-F8^79,/+I,/+-^3=,/.0#$'1$j1,/W8$'3?,/3H$'+-F3?$h1,/W8$'3J$'+-F$'GV3J!#,/F8$;79F#3?G_1$j(*!#,/+-G
Tv|?s-}J?|g{4v%}?|?t4?u ^H?uUv}?^?{pL?{4s8v%^
Ss8?|Hv_uYp9|f~`t4?|?s8{4?|bg}JJq}J?|J?{4sp~=v{@qp}?p_uYv|
~`t4}?|?v}?L
| S{4p9}Jv|;Z'M243Q724+-GC,/A#,/$;+-F8$;R GC,GC#@(!#,/+-%7&/,/$'+-F8$VTGC#(*!#,/+-%GC$'3?d ,/1243X#GK
1,/W8$'3J$9+-F8$'Gg3J$'.3J$9GK$;+-F87,/2+-$'Gf5$4Z AUZ;I4,/A4c8$'+-1,/+-w72+-F83?%&/,/F8F&/$'c8$'+-1,/^+-<8R4.3J24I4I4&/$;(*$'+-F8$
#GKF$'1+-21$;GK$;3?VGC#G1F82G1$'d#$'&/F24G$'+W823?(*F82jI4,/+-3?,/2)Z ,/+$;(*I^3JA2R&/2Gg7#3?GC243J$'G
I4,/+-3?,/24GQ.#$;1$'+GC$;3X#+.2472h(*G6$']7,/$'+-F$'GQT4_!#$H:-Tj(*$'+-2G62d $;3?:-$;11$'I4,/12"L&/
724+-d$'3?GC,/4+h$'+h&/HF3=+-GCW8$'3J$9+-7,/Gw1$1F24Ga1$'& GC$'3?d,/1243)&7&/,/$'+-F$Z
Sugerencia: Si usted pretende mostrar los datos en ASCII, recuperarlos en ASCII le
ahorraran un poco de esfuerzo del lado cliente.
Notes
2G
7#3?GC243J$'GUGC2&/2E$;GKF+E1,/GK.2+-,/I4&/$'G
$'+"&/^G
F3?+-GC779,/2+-$'GZ)LGC3.3?&H!=z^ER;oDLBYBzA
TFDV4
Hz?EO
o .^3=g1$']+-,/3U#+jF83?+-GC7F8,/2+"I4&/2*7 -)Z
i + N "&/24GL7#3?GC243J$'Gb$;GKF+1,/GC.2+-,/I4&/$'GLGC2&/2$'+.&/,/77,/24+ $'G N 5 i N <>$'(*I4$'I4,/c
1GZ i M2GCF8A43J$'GbI47 -$;+-1+-2*,/(*.0&/$'(*$'+-F#+@72(*+-12*$'.&/,/7,/F82h
!
6-#+
7#3?GC23XGC$V72+-GC,/1$'3?_I4,/$'3?F2j7#+-12j$'GCF$L$'G1$'7&/3?;12)Z ,/+*$'(I^3?A42R
R$;&0.3J$'.3[2c
GC$'GC123
$'(*I4$'I4,/12E1$ N *.03=HM2GCF8A43J$'GCR GC24.0243?F8L&/b792+-d$'+-7,/4+1$H79ecpg
#3?GC243J$'G HR
,/+-7&/#T$'+-12E!#$;&/&/24Gw!#$g,/+-d 2&/#73=^+j&/2Ga792(*+-12G i PQ\V i T M i Z
l
Uso
Compatibilidad
SQL92
^f.$'3?(*,/F8$H7#3=GC23J$'GwGC2&/2h$'+ N $'(*I4$'I4,/12%Th$;+(*21#&/2GZM24GCF8A43J$'GQ.$;3=(*,/F$f7#3?c
GC243J$'GU.03=QGC$'3#GC12GU$'+%W823=(*6,/+-F$'3?79F,/d-Z 6.$'3?(*,/F8$X7#3?GK23J$'GU$'(*I4$;I4,/124G>2L(*2c
1#&/3J$9GQ.3?H7F8#&/,/e;3a,/+-W823=(*7,/+1$f&/bI4GC$f1$f1F24GZ 212G&/2GQ7#3?GK23J$'GXM2GCF8A43J$'G
GC24+h1$GC2&/2%&/$'7F#3?-Z`f.&/I43?g7&/d$ h\V)$'G
#+-H$'F8$'+-GC,/+1$M24GCFA3J$'GZ
DELETE
Nombre
DELETE
Synopsis
DELETE FROM table [ WHERE condition ]
Inputs
table
condition
l^
Outputs
DELETE
count
Description
M3=_(*241,/]73&/"FI4&/%#GKF$'11$'I4$_.2GC$'$'3Q77$'GC21$_$'GC73=,/F#3?%h&/%(*,/GC(*R GC,792(*2
77$'GC2_1$6&/$'7F8#3?ff7#&/!#,/$'3UF8^I&/g79#T42Gwd&/23?$;G
GK2+&$',/12Gw$'+h&/
Z
condicion
Uso
Musical;
code |title
|did| date_prod|kind
|len
---+-----------------+--+-------+-------+---UA501|West Side Story
|105|1961-01-03|Musical
| 02:32
TC901|The King and I
|109|1956-08-11|Musical
| 02:13
WD101|Bed Knobs and Broomsticks|111|
|Musical
| 01:57
(3 rows)
23=3?g72(*.&/$'F(*$'+-F$g&/HF8I4&/
films
l
Compatibility
SQL92
^g.$'3?(*,/F$#+72(*+-12
12+-1$
7243?3J$'GC.2+-1$w#+E7#3?GC243I4,/$;3=F2)Z i +_M2GCF8A43J$'GU&/2GU7#3=GC23J$'GU,/+-F$'3=^79F,/d24G
GC24+h1$cursor
GC2&/24c8&/$'7F#3= Z
DROP AGGREGATE
Nombre
DROP AGGREGATE
Synopsis
DROP AGGREGATE name type
Entradas
name
type
dePfhgQiWjck(lgQm<ink
oepe{xQu!*vxv}x|{xvx}y|!}v 2vx}vx~|!}yt|t*|s<t{2yvy'*yQunvCyL|tQywutei<Tjck(lPgQmLink
oep
Salidas
DROP
l^l
Descripcin
Notas
Uso
M3=$'&/,/(*,/+-3U$'&A43J$'A;12
myavg
1$F,/.2
int4
Compatibilidad
SQL92
h2V$'N,/GCF$&/gGC$'+ F8$'+-7,/HhhjVhhhw
j$'+ N '&/GC$'+-F8$;+-7,/f$'G
#+-f$'F8$;+-GK,/+
1$&/$'+ A#CBD$g1$M2GCF8A43J$'GZ
DROP DATABASE
Nombre
DROP DATABASE
Synopsis
DROP DATABASE name
Entradas
name
l
Salidas
DROP DATABASE
Oo F=z?FXU!?FazDZ
template1
Q1$w724(.&/$'F8^3.3=,/(*$;3J2H&/QF83?+-GC779,/+V$'+E.03?2A43?$;GK2f+-F8$;G)1$w.21$'3$?B$;79#F3$;GKF$
792(*+-12Z
Descripcin
Notas
i CG F86243J1$;+%+-2_.0#$'1$6GC$'3$?B$;79#F16(*,/$'+-F3=G>GC$Q$'GCF8792+-$'7F8^12Lg&/gI4GC$Q1$61^F82G>24I;BD$'c
F8,/d2Z9M23X&/2"F+-F24R .#$'1$fGC$'3a(*G672+-d $;+-,/$'+-F8$b#GC3a$'& GC:-$;&/&-GC793?,/.F}v9q^SR!4#$b$'(*.&/$;
$'GCF8$6792(*+-12Z
'GC$a
$'W8$'3F2bO
o F=z?A!=0;L?AG?Hz?E
=%.3?X(*G),/+-W823=(*7,/+EGC2I43?$w72(*2V73J$93#+-6I4GC$
1$1^F82GZ
l^m
Compatibilidad
SQL92
fGC$'+-F$'+-7,/Lhhhw 48
4/$;GX#+-H$'F8$;+-GK,/+j1$g&/$'+-A4#CBD$H1$gM2GCF8A43J$'GC+-2%$',/GCF8$
$'GC$724(+-12E$;+ N -Z
DROP FUNCTION
Nombre
DROP FUNCTION
Synopsis
DROP FUNCTION name ( [ type [, ...] ] )
Entradas
name
type
Salidas
DROP
lx
Descripcin
Notas
'GC$goFO=z?A=>)L^LoOAzD]^ .3?H(*GX,/+-W823=(*7,/+GC2I43?$f&/b73J$';79,/+1$gW8#+-7,/24+-$;GQ1$
A43?$9A412Z
h2"GC$b:-^79$;+724(.3?2I47,/2+-$'G6.3?Hd $;3=,/]73a&/2G6F8,/.2GQ1$H1F24GCRN24.$;3=1243J$9G62"(*'F2412
1$77$'GC2V3?$;&/7,/24+-124G
724+h&/HW8#+-7,/4+h!#$g:-H1$6$'&/,/(*,/+-3?GC$Z
Uso
Compatibilidad
SQL92
hh4Vh
?h$'Gw#+-g$'NF$'+-GC,/+1$6&/$'+-A4#CB$g1$M24GCFA3J$'GZ
SQL/PSM
M
$'G#+_$;GKF+-13-.3J2.#$'GCF82H.^3=w:-^I4 ,/&/,/F830&/X$'NF$'+-GC,/2+-&/,/11%1$a&/QW8#+-79,/2+-$'GZ
fGC$'+-F$'+-7,/ M )LhP 1$ M
F8,$'+-$'+h&/fGC,/A#,/$;+-F8$fGC,/+-F8^N,/Gk
DROP GROUP
Nombre
DROP GROUP
i ,/(*,/+-H#+jA43J#.2
l^n
Synopsis
DROP GROUP name
Entradas
name
Salidas
DROP GROUP
Descripcin
hhhL$'&/,/(*,/+-E$;&0A3J#.2j$'GC.$'7,/]712h1$V&/VI^GK$b1$V1^F82GZ924G#GC#3?,/24G1$'&
h
A3J#.2_+-2EGC$g$'&/,/(*,/+-^+
Z
)VGC$QOo F=z?A!=' FDXj.3?g^-1,/3+-#$'d24GaA3J#.2GCR^'T BEDJ;Vz >4z8Co ?F' FHX! D.3?g7(*c
I4,/3)&/f.$'3?F8$;+-$'+-7,/ff#+hA3J#.2Z
Uso
M3=$'&/,/(*,/+-3U#+hA3J#.2k
DROP GROUP staff;
Compatibilidad
SQL92
h2E$;N,/GCF$$'&724(*^+-12%hhhhLj$'+ N ^Z
l
DROP INDEX
Nombre
DROP INDEX
Synopsis
DROP INDEX index_name
Entradas
index_name
Salidas
DROP
i GKF$g(*$'+-GCCBD$gF,/$'+-$g&/#A43UGC,
index_name
Descripcin
Notas
h?hh!$'G
#+-H$'NF$'+-GC,/+1$;& &/$'+-A4#`B$g1$M24GCFA3J$'GZ
h
'GC$Qa$'W8$'3UF82_oOF=z?A!=z^4;J=C.3?f(*^Ga,/+-W823=(*^79,/+jGK2I43J$724(*2E793J$';3U/+-1,/7$'GZ
Uso
title_idx
l^
Compatibilidad
SQL92
^g1$']+-$72(*+-12GX724+h&/2Gw!4#$g779$;1$'3H#+-fI4GC$1$61F82Ga3?$;&/7,/24+-& A4$'+-;3=,/7-Z
2G+-1,/7$'G6GC24+#+-V79^3=7F$S3?/GCF,/79V1$'.$;+-1,/$'+-F$L1$b&/_,/(*.&/$;(*$'+-F8^79,/+-R4.23Q&/2j!#$b+-2
$',/GKF$72(*+-12Gw2_1$g]+-,79,/2+-$'Gw$'GC.$'7/]724Ga.3?g&/2Gw+-1,/7$'Gw$;+h$'&&/$'+-A4#CB$ N 4Z
DROP LANGUAGE
Nombre
DROP LANGUAGE
i &/,/(*,/+-b#+h&/$'+-A4#$=BDH.3J247$'1-#3?&1$']+-,/12E.23>$;& #GK#3?,/2
Synopsis
DROP PROCEDURAL LANGUAGE name
Entradas
name
Salidas
DROP
+-2%GC$g$'+-7#$'+-F3?H$'+h&/HI4GC$
i GKF$g(*$'+-GCCBD$gF8,/$;+-$g&/#A^3>GC,$;&4&/$;+-A#CBD$g&/&/(*^12
name
1$1F24GZ
Descripcin
hhhLVVhhLVh$'&/,/(*,/+-^3=H&/b1$']+-,/7,/4+j1$;&&/$'+-#`B$f.3J279$;10#3?&
h
&/&/(*12
R^.3J$'d,/(*$'+-F$3J$'GCA,/GCF3=12)Z
name
l
Notas
_GC$'+-F$'+-7,/EhhhhV6VLhhLbh$'G#+ E$'F8$'+-GC,/+*1$L&/$;+-A#CBD$V1$
M24GCFA3J$'GZ
'GC$Qa$'W8$'3F24
o FO=c?A!=, ?^VE!
?E'
=j.3?g(Ga,/+-W823?(*7,/4+"GC2I3J$6792(*2V793J$'^3&/$'+-A4#c
B$;Gw.3J27$'1#3&/$;GZ
h2GC$E3J$';&/,/e"+-,/+-A#+-h724(*.3J2I47,/4+7$'3J7C"1$_GC,)$',/GCF8$;+W8#+-7,/24+-$;GH2*.3J279$;1,/(*,/$'+-c
F82GQ1$'GC$;+-79^1$S+-^124GQ.0243a$'d$'+-F2GQ$'GC73=,/F24GQ$;+$'GCF$f&/$'+-A4#`B$4Z9M3?H3J$'c8:-I4,/&/,/F8^3=&/2GXGC,/+F$'c
+-$'3H!#$j$'&/,/(*,/+ 3LT3J$'73?$93fF241^GE&/GVW8#+-7,/24+-$;GKR$;&>F83?,/I4#F82.A^.3J247OGL.3J2&/+-A1$j&/G
W8#+-79,/2+-$'Gj:-1$GC$'3ECBD#GCF12.3?$;&6+-#$;d 2,/1$'+ F8,/]71243E1$*2I'BD$'F21$*&/$;+-F83?1
.A4&/+-A4#^A$Q1$'&&/$'+-A4#CBD$g.3J247$'1#3?;&4+-#$;d ^(*$'+-F8$793J$912Z
Uso
Compatibilidad
SQL92
h2E$;N,/GCF$$'&724(*^+-12%hhhhVHLhhVLhh$'+ N ^-Z
DROP OPERATOR
Nombre
DROP OPERATOR
Synopsis
DROP OPERATOR id ( type | NONE [,...] )
Entradas
id
l^
type
Salidas
DROP
ERROR: RemoveOperator: left unary operator oper taking type does not
exist
i GKF$g(*$'+-GCCBD$gGC$g(*#$'GCF83?fGC,$'&2.$'3?123U#+-3?,/2E,/e^!#,/$'3J12V$'GC.$'7,/]7912_+-2_$',/GKF$Z
Description
hhhwah!#,/F8#+%24.0$'3?12431$Q&/I4GC$Q1$X1F24GZ?M^3=Q$=BD$'7#F8^3$'GCF8$Q792(*+-c
h
12V#GCF$'11$'I4$6GK$;3U$;&4.3J2.,/$'F3?,/2_1$;& 24.$;3=^1243=Z
_7&/,/1^11$V1$;3J$'7:-22j,/e!#,/$'3J12j1$V#+2.$'3?123Q#+-^3=,/2j,/e!#,/$'3J12j21$'3J$S7:-2R3?$;GCc
.$'7F8,d (*$;+-F8$;R'.#$'1$6GK$;3>$'GC.$'7,/]71g72(*2
Z
NONE
Notas
f1$;79&/3[79,/+jhhhw
h$'G
#+-H$'F8$'+-GC,/+1$&/$'+-A4#CBD$g1$M24GCFA3J$'GZ
P62+-GC#&/F$g
o FO=z?A=DL!
=!F?ADJF.23>,/+-W823=(*^79,/+hGC24I43J$7(*2%73?$;'3U24.0$'3=^1243J$9GZ
i G
3J$'GC.24+-GCI4,/&/,/1^1j1$'&#GC#3?,/2_3J$'(*2d$'3)79#&/!4#,/$'3U('F8212E1$77$'GC2_TE79&/^GK$;Ga1$24.0$'c
3=^1243!#$f1$;.$'+-1;+h1$'&24.0$'3=^1243)!#$gGC$!#,/FZ
Utilizacin
a^n
.3?
int4
l
b !
< .3?
! i
int4
Compatibilidad
SQL92
h2E$;N,/GCF$#+h792(*+-12Ehhhw
h$'+ 4Z
DROP RULE
Nombre
DROP RULE
Synopsis
DROP RULE name
Entradas
name
Salidas
DROP
l^l
Descripcin
hhLE!#,/Fg#+-3J$;A&/Q1$'&GC,/GKF$'(*1$Q3J$'A4&/;G>1$QM2GCF8A43J$'GU$'GC.$'7,/]712Z?M2GKFA3J$;G
h
1$=BD3?'j1$h.0&/,/79^3=&/j,/+-(*$'1,/F(*$'+-F$hT!#,/F3=^3=hGC#1$']+-,/79,/+1$"&/24G_7F8^&/24A424GL1$;&
GC,/GKF$'(*-Z
Notas
f1$;79&/3[79,/+jhhVj$'G
#+-H$'F8$'+-GC,/+1$&/$'+-A4#CBD$g1$M24GCFA3J$'GZ
P62+-GC#&/F$fw
Lj.3?f,/+-W823=(*7,/+hGK2I43J$74(*2E793J$';3U3?$;A&/GZ
)V+-fd$'e!#$gGC$g!#,/FH#+-f3J$'A&/^R'$'&77$'GC2_g&/f,/+-W8243?(*7,/4+j:-,/GCF83?,/79H!4#$g&/f3J$'A4&/g:-T4
$'GC73=,/F2_.0#$;1$1$;GK.03J$S7$'3=Z
Utilizacin
newrule
Compatibilidad
SQL92
h2E$;N,/GCF$ghhVj$'+ N -Z
DROP SEQUENCE
Nombre
DROP SEQUENCE
Synopsis
DROP SEQUENCE name [, ...]
l
Entradas
name
Salidas
DROP
Descripcin
h/!1hLh%!#,/F8#+-gGC$'7#$'+-7,/gA4$'+-$'3?123?1$X+-(*$'3J2G
1$Q&/I4GC$61$X1F24GZ
h
P62+h&/H7F8#&,/(*.&/$'(*$;+-F87,/+1$g&/GwGC$'7#$'+-7,/Ga724(*2"FI4&/G
$'GC.$'7,/&/$;GKRF3=^I4CBg,/A#&
!#$g&/f1$;79&/^3=;7,/4+hh 4
8
wZ
Notas
f1$;79&/3[79,/+jhh/!1hLhj$'G
#+-H$'F8$;+-GK,/+h1$g&/$'+-A4#CBD$g1$M2GKFA43?$;GZ
P62+-GC#&/F$&/f1$'7&/3=^79,/+hw
/
1hVh".3?g2IF$'+-$;3U,/+-W823=(*^79,/+hGK2I43J$74(2
73?$93U#+-fGC$'7#$'+-7,/-Z
Utilizacin
serial
Compatibilidad
SQL92
h2E$;N,/GCF$ghh/!1hLhh$'+ N -Z
l^m
DROP TABLE
Nombre
DROP TABLE [Eliminar Tabla]
Synopsis
DROP TABLE nombre [, ...]
Entradas
nombre
Salidas
DROP
Descripcin
Notas
P62+-GC#&/F3a$;+w
* 48
*T"V
48
.3?L,/+-W823=(79,/+GC2I43J$H72(*2h793J$;'3
2E(*21,/]79^3UFI4&/GZ
lx
Uso
cintas
Compatibilidad
SQL92
^g$'GC.$'7,/]7f&/A4#+-Gw7.;7,/11$'G
1,/79,/2+-&/$'G
M \V i k
i P
\VGC$;A#3?6!4#$QGC2&/2V#+-6FI4&/6GC,/+%d,/GCF8^GU1$'.$;+-1,/$'+-F$'GU2b3J$'GCF83?,/77,/24+-$'G)1$Q,/+-F$'A43?,/11
.#$'1gGC$'3U1$'GCF3?#,/1-Z
P6\ Pw\ i
DROP TRIGGER
Nombre
DROP TRIGGER
Synopsis
DROP TRIGGER nombre ON tabla
Entradas
nombre
l^n
tabla
Salidas
DROP
Descripcin
hh
?hhI4243?3?3=QF241^GU&/G>3J$'W8$93?$;+-79,/^GU$',/GKF$'+-F$'G>Q&/g1$;]+-,/7,/+%1$X#+%1,/GC.c
h
3=^1243=Z`M3?f.21$'3U$=BD$'7#F83)$'GCF$H72(*+-12_$'&#GC#3?,/2E^79F#&1$'I4$GC$'3U$'&4.3J24.,/$;F83,/2E1$'&
1,/GC.3?'123=Z
Notas
h
?hh$'G
#+-H$'F8$'+-GC,/+h1$'&&/$'+-A4#CB$1$M24GCFA3J$'GZ
h
P62+-GC#&/F$6wa"a6?hh.3?Q24I4F$'+-$'3,/+-W823=(*^79,/+"679$;3?7Q1$X74(*2V73?$;'31,/GC.c
3=^1243J$9Gw58F3=,/A4A4$'3?GK<`Z
Utilizacin
if_dist_exists
$'+h&/fF8^I4&/
films
Compatibilidad
SQL92
h2E$;N,/GCF$+-,/+-A4#+-b1$;79&/^3=;7,/4+jhh
?hh$'+ N -Z
l
DROP TYPE
Nombre
DROP TYPE
$'F8,/3?H#+hF8,/.2R1$']+-,/12_.243U$'& #GC#3?,/24R1$&/2GX7F&/2A2G 1$'&GC,/GKF$'(*
Synopsis
DROP TYPE tipo
Entradas
tipo
Salidas
DROP
Descripcin
haa3J$'F,/3=g#+jF,/.2R1$']+-,/12E.23)$'&#GK#^3=,/2R1$&/2Gw7F&/2A2Gw1$;&GK,/GCF$'(*-Z
h
)V+"F,/.2E.#$;1$GC$'3U3?$;F8,/3?'12E+-,/7(*$'+-F$g.23>GC#1#$'-2)Z
Notas
f7&/#GC#&/ M
M i $'G
#+-H$'NF$'+-GC,/+j1$'&&/$'+-A4#`B$gM2GCF8A43J$'GZ
l^
Uso
M3=3J$'F8,3=3$'&F,/.2
caja
Compatibilidad
SQL3
hhaa$'Ga#+-H7&/#GC#&/f1$ N -Z
DROP USER
Nombre
DROP USER
Synopsis
DROP USER nombre
Entradas
nombre
Salidas
DROP USER
l
Descripcin
hJ/3J$'F,/3?1$"&/I4GC$h1$j1F82GL$'&>#GC#3?,/21^12)Zh23J$;F8,/3?FI4&/GCRd,/GKFGV#
h
24F3J24G)24I;BD$'F24G>!#$Q.$'3?F8$;+-$'e7'+E&#GC#3?,/2)Z ,$'&#GC#3?,/2L$'GU1#$;-2V1$Q#+-6I4GC$Q1$w1^F82GKR
GC$.3J241#7,/3?f#+h$'3?3J243=Z
)VGC$"Oo F=z?F XU! ?Faz D.3?^1,/7,/24+-3f+-#$'d2GE#GC#3?,/24GCR#
T BED4;Lz >z8
o ?FXU!
?F
z D
.3?_(*21,/]79^3Q&/Gg.3J2.,/$'1;1$'Gg1$V#+#GC#^3=,/2Z;M24GCFA3J$ N d,/$'+-$_724+#+A4#,4+}*v
qt4|??}a!#$LF,/$'+-$L&/L(*,/GC(*EW8#+-7,/4+1$b$;GKF$L72(*+-12h581$b:-$;7:-24R,/+-d27_$'GCF8$b724(*^+-124<
.$'3J2V!#$g.#$'1$6GK$;3U$?B$;79#F12V1$'GC1$&/HGC:-$'&/&Z
Uso
Compatibilidad
SQL92
h2E$;N,/GCF$724(*+-12%hhJ/$'+ N ^Z
DROP VIEW
Nombre
DROP VIEW
Synopsis
DROP VIEW nombre
l^
Entradas
nombre
Salidas
DROP
Descripcin
hL?! 3J$;F8,/3?#+-fd,/GCF81$']+-,/1f$;+"#+-gI4GC$61$61F24GZ=M3?g.21$'3$?B$'7#F3$'GCF8$
h
724(*+-124R^1$;I4$'3=gGK$;3U$;&41#$;-2E1$6&/fd,/GKF-Z
Notas
f7&/#GC#&/Hhh J8aj1$M2GCF8A43J$'GaF8(*I4,/'+%$'&/,/(*,/+-bd ,/GCFGZ
P62+-GC#&/F$fw
3
L?!.3?#+-H$;N.&/,/77,/+h1$724(*2_GC$g793J$;+"d ,/GCFGZ
Uso
i GCF8$72(*+-12_3?$;F8,/3?3?g&/fd,/GCF8H&/&/^(*1
variedades
Compatibilidad
SQL92
^g$'GC.$'7,/]7f&/A4#+-GwW8#+-7,/24+-^&/,/11$'G
1,/7,/2+-&/$'G
.3?Hhh3L?!k
DROP VIEW vista { RESTRICT | CASCADE }
Entradas
i P
\VGC$'A4#3?_!#$bGK$;+*1$'GCF83J#,/1^G+-,/7(*$;+-F8$bd ,/GCFGGK,/+*2F3=G6&/,/GCFG1$'.$'+-1,/$'+-F8$;G6T
GK,/+h3J$'GCF3=,/77,/24+-$;Gw1$6,/+-F8$'A43?,/11XZ
P6\ Pw\ i
P6#&/!#,/$;3wd ,/GCFE!#$LGC$V3J$;]$;3=b_$;GKF_GC$'3?_F(*I4,/'+*$;&/,/(*,/+-1RN&-,/A4#&0!#$V7#&/c
!#,/$'3>3J$;GKF3?,/797,/+"1$,/+-F$'A43=,/1^1XZ
Notas
\V7F#&/(*$'+-F$'R.3?H3J$'F8,/3?;3
#+-bd ,/GCFL3J$'W8$93?,/1b$'+#+-bI4GC$g1$f1F2GXM24GCFA3J$'Gw$'GCF8b1$'I4$
GC$'3U$;&/,/(*,/+-1f$;N.&/7,/F8(*$;+-F8$Z
END
Nombre
END
&/$'dff7I42_&/fF83?+-GC77,/4+h7F#^&
Synopsis
END [ WORK | TRANSACTION ]
Entradas
O5
a\L \VP
M^&/I43=^Ga7&/d$2.7,/24+-^&/$'GZCh2EF,/$'+-$'+h+-,/+-A4+$;W$;79F2Z
Salidas
COMMIT
^l
Descripcin
Notas
G
.&/I43^Gw7&/d$ 5T
\V \VP 0 GC2+3J#,/12GCGC)TE.#$'1$;+"GK$;3U2(*,/F8,/1GZ
)VGC'$ FDV4 Hz?EOo .^3=I4243?F8^3U#+-fF3?+-GC779,/+
Z
Utilizacin
Compatibilidad
SQL92
h $;GU#+-$;NF$'+-GC,/4+E1$wM2GCF8A43J$ N "!#$X.3J24.23J7,/24+-6#+-W8#+-7,/2+-&/,/11%$'!#,/d&/$'+-c
F8$6foOD<BYBzAZ
EXPLAIN
Nombre
EXPLAIN
Synopsis
EXPLAIN [ VERBOSE ] consulta
Entradas
i
i a _
+-1$'3?g.03=g(*24GCF83?3U$'& .&/+h1$;F8&/&/12_1$6&/f724+-GC#&/F8 Z
consulta
consulta
Salidas
M&/^+j1$724+-GC#&/F8b$;N.&/79,/F2V1$'&I47-$;+-1M2GCF8A43J$'GZ
EXPLAIN
Descripcin
i CG F8$g72(*+-12"(*#$'GCF3=b$'&4.&/+j1$f$=BD$'7#7,/4+j!#$H$'&.0&/+-,/]791243UM2GCF8A43J$'GQA4$'+-$'3?H.3?
&/"792+-GC#&/F8j114Z i &.&/+@1$%$?B$;79#7,/+(*#$'GCF83?h&/h(+-$'3?j$'+!#$%GK$;3=^+@$'GC7+-$';1G
&/GgF8I4&/Gg3J$'W8$'3[$;+-79,/^1G
T"GC$'%$'GC7+-$'2GC$'7#$'+-7,/&.0&/+-24R$;GK7+-$;2.243Q/+-1,/7$;R $;F87NZ
TEGK,GC$3J$'W8$'3J$9+-7,/+hd ^3= ,/G>FI4&/GCR^&/2Gw&/A423=,/F(*24Gw1$#+-,/+!4#$gGK$;3=^+"#F,/&/,/e124G
.3?
A43?#.^3&/GwF#.&/Ga3?$;!#$'3?,/1;Gw.3?f71F8I4&/g1$$'+-F3=^1-Z
6.3=F$X(*G>73=,/F,/7g1$Q&/.3J$'GC$'+-F7,/+%$'G>$'&792GCF82V$'GCF8,/(*^12V1$6$=BD$'7#7,/4+"1$6&/6792+-GC#&/c
F8^RS!#$Q$'GU&/6GC#.24GC,/7,/4+"1$'&.&/^+-,/]7123GC2I43?$X$'&F8,/$;(*.2L!#$6F24(*3?Q7243?3J$'3&/6724+-GC#&/F8
58(*$'1,/12"$'+#+-,/11$'G61$H7.F#3=L1$b.A,/+-^GQ1$L1,/GK72<CZ i +3J$';&/,/11GK$b(*#$'GCF83?+12G
+-(*$'3J2Gk`$;&4F,/$'(*.2_,/+-,/7,/& !#$gF24(*H1$;d 2&/d$'3?GK$6&/f.3?,/(*$'3)F8#.&/R^TE$'& F,/$'(*.2EF2F8&.c
3="1$;d 2&/d$'3gF241GL&/^GbF8#.&/^GZM3=h&/h(*T23?/h1$%&/GL792+-GC#&/F8GL&/2!#$",/(*.23=Fj$;GL$'&
F8,/$;(*.2F82F8&/R-.$'3J2*$'+@&/A#+-2GL7GC24GL72(*2#+-hGC#I4c72+-GC#&/F i $'&.&/+-,/]7123
$'GC724A4$'3?f$'&4(*$'+-23
F,/$'(*.2%,/+-,/7,/&4$'+hd$'eH1$'&(*$'+-23
F,/$'(*.2%F2F8&458TH!#$g$;+F212%7GC2
$'&$=BD$'7#F823gGC$E1$'F$'+-13?E1$'GC.#'Gf1$_24I4F$'+-$'36&/".3=,/(*$; 3F8#.&/^<CZ (*I4,/'+-R GCn
, )L1XZ^&/,/(*,/F8
$'&0+-(*$'3J21$VF#.0&/GE1$'d24&/d$'3X724+#+-%7&/#GC#&/E 8 R$'&.&/^+-,/]7123X3?$;'&/,/e^E#+-
,/+-F8$;3=.2&/7,/+^.3J24.,/1_$'+-F3J$V&/2GH12Gf72GKF24Gf]+-&/$'GH.03=V$'GCF8,/(*^367#&1$V&/2GH.&/+-$;G
$'G
3J$'&/(*$'+-F$$;&4(*$;+-24Ga724GCF24GC2>Z
H2.79,/+ i
V i $'(*,/F$f&/b3?$;.3J$SGC$'+-F7,/+,/+-F$'3=+-L724(*.0&/$'F8b1$;&3?I42& 1$'&4.&/+-R$'+
d$'eE1$_#+3J$'GC#(*$'+58T&/2$;+-d E&3J7:-,/d 2&/24A1$'&.2GCF8(*GCF$'3F(*I4,/'+-<`,Z )VGC#&/(*$;+-F8$
$'GCF8g24.7,/+j$;Gw+-,/7(*$;+-F8$gF,/&4.03=g&/f7243?3J$'779,/+h1$$;3=3J23?$9Ga581$'I4#A< 1$6M2GCF8A43J$'GZ
Notas
i ,/GKF$V$'GC7GCE127#(*$;+-F87,/+$'+M24GCF8A43J$'Gg724+3J$'GC.$'7F2E&/%#F,/&/,/e7,/+.0243Q.3?F8$b1$'&
24.0F8,/(*,/e12431$&/,/+-W8243?(*7,/+j1$6724GCF24GZ +-W823=(*^79,/+"A4$'+-$'3?& GC24I43J$Q&/f$'GCF8,/(*^79,/+"1$
724GCF82Ga.3?g&/f2.F8,/(*,/e^7,/4+h1$&/^Ga72+-GC#&/FGa.#$'1$$;+-724+-F3=^3=GC$$'+"&,/I3J2Gw1$F8$;NF24G
1$
I4GC$'Gf1$_1F24GZ'a$;];3=GC$_%&/2GH7.F8#&/2GHGC24I43J$_+-1,/7$'GfT$'&24.F,/(*,/e1243QA$'+-;F8,/721$
724+-GC#&/F8^Gw1$6&/HtrYpXJu }Jv[-}Jp9Lp'v}U.3?g(*^T23>,/+-W823=(*^79,/+
Z
^m
Uso
M3=b(*2GCF83?3a#+.0&/+1$H724+-GC#&/F_.3?b#+-V72+-GK#&/F_GC,/(*.&/$HGC24I43J$H#+-VFI4&/b792+#+-
+-,/7f792&/#(*+-H1$gF,/.2E,/+-bF +HT%^g]&/Gk
EXPLAIN SELECT * FROM foo;
NOTICE:
QUERY PLAN:
EXPLAIN
QUERY PLAN:
EXPLAIN
QUERY PLAN:
Compatibilidad
SQL92
h2E$;N,/GCF$#+-HGC$'+-F8$;+-79,/baL?1$;]+-,/1g$'+ 4Z
x
FETCH
Nombre
FETCH
Synopsis
FETCH [ selector ] [ count ] { IN | FROM } cursor
FETCH [ RELATIVE ] [ { [ # | ALL | NEXT | PRIOR ] } ] FROM ] cursor
Entradas
selector
selector
)\V
\VPL5g\L
\V
M
i !#,/d ^&/$'+-F8$gg$'GC.$'7,/]79^3U#+h724#+-F1$g Z
^n
cursor
Salidas
a' 3J$'F243?+-E$;&3J$'GC#&/F1021$V&/%72+-GK#&/F%1$']+-,/1E.23X$'&7#3?GC243X$'GC.$;79,/]712Z ,0&/
724+-GC#&/F8HW8&/&/gGK$;3=+"(24GCF83?12Ga&/24GwGK,/A4#,/$'+-F$'Gw($'+-GCCB$;Gk
NOTICE: PerformPortalFetch: portal "cursor" not found
,;$'&
+-2H$'GCFw.3J$'d,/(*$'+-F$
1$;79&/^3=;12Z i &^7#3?GK23-1$'I4$
GC$'3-1$'7&/3?'12g1$'+-F3J2
cursor
1$#+h
I4&/24!#$g1$g24.$;3=^79,/+"58F83?+-GC7F8,/2+hI4&/247-4<`Z
Description
a' .$'3?(*,/F$j#+#GK#3?,/2@1$'d24&/d$'3b]&/^GE#GC+-12#+7#3?GK23=Z i &>+-(*$'3J2@1$j]&/G
1$'d#$'&/F'Gb$;GKF%$'GC.$'7,/]712(*$'1,/+-F8$ Z ,$'&+-($'3J21$E]&/GH3J$'GCF+-F8$;GH$'+$'&79#3?GC243
$'GV(*$'+-23LF:-+ RGC&/2GC$'3?+GK$;&/$'77,/24#+-1G_&/^GE1,/GC.2+-,/I4&/$'GZ #GCF,/F8#T4$'+-12&/.&/c
I43=_79&/^d $_\L@$'+#&/#A3Q1$_#++-(*$'3J2.3J2d 273=_!#$EGK$;+1$'d#$'&/F8^GfF241^Gf&/Gf]&/^G
3J$'GCF8;+-F8$;GQ$'+$;& 7#3=GC23=ZGQ,/+-GCF8+-7,/GX.#$'1$'+jGC$'3
GC$'&/$'77,/2+-1GX$;+(*I4^GX1,/3J$'77,/24+-$;G
:-7,/^1$'&/;+-F8$TV:-7,/6F83?GU5 )\V
TV\L&
P 5\V <`Z?1,/3J$'7C7,/4+".231$'W8$'7F2b$'G
)\L Z
Sugerencia: Se permite especificar nmeros negativos en el contador. Un nmero negativo es equivalente a modificar el sentido de las palabras clave FORWARD y BACKWARD.
Por ejemplo, FORWARD -1 es igual aBACKWARD 1.
Notas
$'GC$"7#$'+-F1$%!#$h&/Gb.&/I43?Gb7&/d$ )\V
T\VPL5g\L
GC2+$'F8$'+-GC,/2+-$'G
M24GCFA3J$'GZKHGC,/+-F8,/G N HF8(*I4,/;+$'GwGC24.23=F1^ RN$'GC.$;79,/]71H$'+j &/bGC$'A4#+-1LW823=(
1$'& 72(*+-12ZK6'+-GC$(*GaI4CBD2_1$'F8^&/&/$'G
T%F8$;(*Ga1$724(*.^F8,/I4,/&/,/11wZ
)V+-bd$'eLF821GQ&/GX]&/^G6GK$H:-+GC$'&/$;797,/2+-12R F24124G6&/2G61$'(*GQ^797$'GC2GQ1$HW8$'F87:+-2j1$'c
d#$;&/d $;+"]&/^GZ
M24GCFA3J$'Gw+-2%GC24.23?F8b&/H73=^79F$'3?GKF,/7b1$g7F8#&/,/e^3U&/2GQ1F2GX$'+j#+7#3?GK23RTb!#$fd2&/c
d$'3>b(*.$;3>&/Gw7F8#&/,/e;7,/2+-$'GQ1$'&7#3?GK23a$'+j&/GXFI4&/GaI4GC$f+-2%$'GX.024GC,/I4&/$H.243
3J$;A&/
A$;+-$'3?&/R^724(*2_GK#7$'1$F8^(*I4,/'+h$'+h&/Gw^79F#&/,/e;7,/24+-$;GX1$&/Gad,/GCF8Ga58 i <CZ?M243U792+-GC,/c
A#,/$;+-F8$'R'&/24Gw#GC#3?,/2Gw1$;I$;+"$'.&/,/7,/F83)724(*+-124O
G )VM \ i .3?fGC#GKF,/F8#,/3U&/24Gw1F24GZ
2Ga7#3?GK23J$'G
GC4&/2_GK&/2EGC$1$'I4$'3?/;+h#GC31$;+-F83J2V1$F3=+-GC77,/2+-$'GCR^T!#$g&/24Ga1F24G
!#$
&/(*7$'+-;+^I4'3J7+"(*&/F8,/.0&/$'GX72+-GK#&/FGa1$#GC#3=,/2Z
)VGC3 BED=.3?H(*21,/]79^3
&/H.24GC,/7,/+1$'&7#3=GC23=Z ;J=oa, ?F=*1$']+-,/3=H#+j7#3?GC243=ZKa$;c
]'3=^GK$"3
H!=z ^_RO
o D<BYBz AUR0T@
FDV4
Hz?EO
o .3?j(*T423b,/+-W823=(*7,/+7$'3J7C1$"&/G
F83?+-GC77,/24+-$;GZ
Uso
^
Compatibilidad
SQL92
Nota: El uso no embebido de los cursores es una extensin Postgres. La sintaxis y el
uso de los cursores est siendo comparada en contraposicin a la forma embebida de
los cursores definida en SQL92.
ThF(*I4,/'+&/V&/2c
FETCH ABSOLUTE #
FROM cursor
INTO :variable [, ...]
\V ^ !
) i
i &7#3?GK231$;I4$_GK$;36.2GC,/79,/2+-12&+-(*$'3J21$_]&/%I4GC24&/#F2*$'GC.$'7,/]79^12)Z 2124G
&/24G+-(*$'3J24G1$a]&/G)$'+VM24GCFA3J$'GGC24+V+-(*$'3J2G)3J$'&/F,/d 2GCR.2430&/2HF8^+-F82H+-2fGK$wGC2.243?F8
$'GCF8f73?7CF$'3?/GCF8,/7-Z
k
variable
GRANT
Nombre
#GRANT
GK#^3=,/2G
Synopsis
GRANT privilege [, ...] ON object [, ...]
TO { PUBLIC | GROUP group | username }
Entradas
privilege
i i P
\L779$;GK2_fF241Ga&/G
724&/#(*+-^GX1$#+-HFI4&/ d ,/GCFf$'GC.$'7/]7-Z
i
+-GC$'3?F8H1F24G
$;+jF241Gw&/^Ga72&/#(*+-GX1$6#+-HF8I4&/f$;GK.$;7/]79 Z
)VM
\
i
\L7F8#&/,/egF821G
&/Ga792&/#(*+-Ga1$g#+-fFI4& $'GC.$'7/]7-Z
i ii
i &/,/(*,/+-H]&/^Gw1$g#+-fFI4&/f$'GC.$;79]79 Z
O)L i
\V
i & +-24(*I43J$1$#+h24I;BD$'F2E& !#$6GK$6!#,/$'3J$72+-79$;1$'3)$'& 77$'GC2)Z`24G
.2GK,/I4&/$;Gw2I;B$;F82G
GK2+
k
K F8d ,/I4GCF&/
K
K GK$;7#$;+-79,
K ,/+-1,/7$
M)V P
)V+-fI43J$;d ,/7`,/4+j.3?g3J$'.3J$9GC$'+-F3>fF24124Gw&/24Ga#GK#^3=,/2GZ
b )VM
group
)L+ grupo &w!4#$GK$2F823JA^+.3?,/d,/&/$'A4,/24GZ i +&/^79F#&>d$'3?GK,/+-R)$'&aA3J#.21$'I4$
:-I4$'3)GK,/12E73J$''12E$'.&//7,/F(*$'+-F$724(*2EGK$61$'GC73=,/I4$(*^Gw1$;&/+-F8$4Z
i &+-24(*I43J$H1$b#+#GK#^3=,/2h&!#$bGC$H!#,/$'3J$H724+-7$'1$;3a.3=,/d,/&/$;A,/2GZ9M)V P$'GQ#+-
I43J$Sd,/F#3=f.03=3J$'.3J$9GK$;+-F83UfF8212Gw&/2GX#GC#3?,/24GZ
username
Salidas
CHANGE
^
$;+-GK`B$L1$'d#$'&/F82GC,$;&024I;BD$'F2$'GC.$'7,/]712j+-2$'GCF8_1,/GC.24+-,/I4&/$_2GK,$;Gf,/(*.2GC,/I4&/$
13&/24Gw.3J24d,/&/$'A4,/2GwfA43J#.2%2E#GC#3?,/24Ga$'GC.$'7,/]712Z
Descripcin
Vh.$;3=(*,/F$X&73J$';12431$w#+%2I;BD$'F82L$;&13.$;3=(*,/GC2G>$'GC.$'7/]724G)F2412GU&/2G>#GK#^c
h
3=,/2G>58M)V P6<42V6#+"79,/$;3=F2L#GK#3?,/2V2VA43J#.2Z2)VGC#3?,/24G>1,/GCF,/+-F82Gw^&N73?$;'123.#$'1$;+%+-2
F8$;+-$'3.$;3=(*,/GC2G>1$w779$;GK2f(*$'+-2G>!#$X$'&793J$';123GC$Q&/2GU724+-7$'1RS#+-6d$'eQ!#$X$'&2I;B$;F82
:-fGC,/12E73J$'1-2Z
)V+-wd$'ea!#$a#+_#GC#3?,/2fF,/$'+-$a.3?,/d,/&/$'A4,/24GGK2I43J$
#+V24I;BD$'F82RF,/$'+-$a.2GK,/I4,/&/,/1^1E1$a$=BD$'7#F83
$'GC$L.3?,/d,/&/$'A4,/2)Z;"2:-T+-$'7$'GC,/111$L72+-79$;1$'3w.3?,/d ,/&/$;A,/2Gf^&0793J$9123X1$L#+*2I;B$;F82$'&
73?$9123a2I4F8,/$'+-$b#F24(*F,/7(*$'+-F$ V &/24G6.3?,/d,/&/$'A4,/24GCRTj.#$'1$bF(*I4,/'+$;&/,/(*,/+-3
$'& 2I;B$;F82Z
Notas
\V7F#&/(*$'+-F$'R.3?%792+-7$'1$;3.3?d ,/&/$;A,/2GH$'+M24GCFA3J$'GfhGC2&/2*&/A4#+-GH724&/#(*+-^GKR-:-$E1$
73?$93f#+-d,/GCF8j!#$j724+-F$'+-A4&/GL72&/#(*+-GV1$'GC$'1GCR-T@72+-79$;1$'3f.3J2d ,/&/$;A,/2GLGC24I43J$
$'GCfd,/GCF8-Z
)VGC$g! f.3?f2IF$'+-$;3U(*Ga,/+-W8243?(*7,/+GC2I43?$g&/2Ga.$'3?(*,/GC24GX1$&/24Gw24I;BD$'F24Gw$',/GKF$'+-c
F8$;Gk
Database
= lusitania
+------------+------------------------------+
| Relacion
|
Conceder/Eliminar Permisos
+------------+------------------------------+
| mytable
| {"=rw","miriam=arwR","group todos=rw"}
+------------+------------------------------+
Leyenda:
uname=arwR - se conceden privilegios a un usuario
group gname=arwR - se conceen privilegios al un GRUPO
=arwR - se conceden privilegios a PUBLIC
r
w
a
R
arwR
|
|
SELECT
UPDATE/DELETE
INSERT
RULE
ALL
'GC$Q&/HGK$;+-F8$'+-7,/H i
l
Uso
Compatibilidad
SQL92
6GK,/+-F,/Ga1$ N .03=6ba\L .$'3?(*,/F$6$'GCFI4&/$'7$'31$;3?$97:-2GaGC2I43?$Q724&/#(*+-G
,/+-1,/c
d,/1#&/$'GCR^T_.$'3?(*,/F8$g$'GCFI4&/$'7$'3$'&.3?,/d,/&/$'A4,/2E1$g72+-79$;1$'3)$'&(*,/GC(*2%.3?,/d ,/&/$;A,/2_f24F3J24Gk
GRANT privilege [, ...]
ON object [ ( column [, ...] ) ] [, ...]
TO { PUBLIC | username [, ...] } [ WITH GRANT OPTION ]
i i P
i4i i "P i
M$'3?(*,/F,/12.3?E:-7$'3Q3J$'WD$'3J$'+-7,/E%^&/A#+-%2F241Gf&/^Gf724&/#(*+-^Gb1$V#+-"F8^c
I4&/ d,/GCF8f$;GK.$;7/]79g$'+h&/,/(*,/F87,/2+-$'Ga1$g,/+-F8$;A3?,/11XZ
\H i
M$'3?(*,/F8,/12L.^3=X#GC3#+E124(*,/+-,/2R'#+_792+BD#+F2b1$w79^3=7F$'3[$;GKR9724F$=BD2L2bF83?1#7c
7,/+
Z ,-#+*24I;BD$'F2$;GK.0$'7,/]7_^&/A2j!#$V+-2jGC$'_#+-VF8I4&/ d,/GCF8R
privilegio
:-g1$$'GC.$'7,/]73)GK2&/
2 ) \L i Z
object
\V i
table
N f.$;3=(*,/F$1,79,/2+-&/(*$'+-F$g&/f.^&/I43=79&/^d $6+-2%W8#+-79,/2+-&
TABLE
lKl
P \La\LP i i
$.0$'3=(*,/F$g#GC3)$'&SB#$;A2_1$g73=;7F8$;3?$;Ga$;GK.0$'7,/]712Z
P \ 0
$.0$'3=(*,/F$g#GC3)&/HGK$;79#$;+-79,/g1$724F$=BD2%$'GC.$'7,/]714Z
a\V \
$.0$'3=(*,/F$g#GC3)&/H792+-d$'3?GK,/+h1$>BD#$'A42E1$73?7F8$;3=G
$'GC.$;79,/]714Z
INSERT
Nombre
INSERT
Synopsis
INSERT INTO table [ ( column [, ...] ) ]
{ VALUES ( expression [, ...] ) | SELECT query }
Entradas
table
column
expression
query
table
^&/243)d&/,/12GwHGC,/A4+-3)$'+
column
l
Salidas
INSERT
oid 1
]&/g,/+-GK$;3=F1-Z
1$L&/
0 #
INSERT
$;+-GK`B$1$;d #$;&/F82GC,aGC$:-,/+-GC$'3?F12@(*^GE1$h#+ *]&/-Z $'G_$'&
+-(*$'3J2@1$h]&/G
#
,/+-GK$;3=F1GZ
Descripcin
? #/
.$'3?(*,/F8$L&/E,/+-GC$'3J79,4+*1$L+-#$;d ^Gg]&/Gg$'+*#+-%7&/GC$L2#+-EF8^I&/ Z $b.#$'1$L,/+-c
GC$'3=F3
#+-V]&_V&/Vd$'eV2hd3?,/GQ72(*2j$;&-3J$'GC#&/F812"1$b#+-V792+-GC#&/F8-Z9GQ72&/#(*+-G$'+
$'& 3J$'GC#&/F8^12_.#$;1$'+"GC$'3U&/,/GKF1G
$'+h7#&/!#,/$;3>23?1$'+
Z
P61j724&/#(*+-*!#$+-2$;GKF.3J$'GC$'+-F$j$'+&/&/,/GCF1$243?,/A4$'+GK$;3=,/+-GC$'3?F1#GC+-12$'&
d&/243L.243L1$'W8$'7F82R)!#$*.0#$;1$GC$'3VF+-F82#+d ^&/243V.0243_1$;W$97F821$'7&/3=^102
\ )L
i 4
2I4,/$'+#
)LXZM2GCF8A43J$'GL3J$'7:-e;3=j&/j+-#$;d j792&/#(*+-GC,UGC$h,/+-GC$;3=F#+#
)L $;+#+-
724&/#(*+-H1$;79&/^3=;1f724(*2E 0
)VXZ
,&/_$;N.3J$'GC,/+.3?L79^1L72&/#(*+-E+-2j$'G61$'&F8,/.2j1$H1F24G67243?3J$'7F24RNGK$b,/+-F8$;+-F83?_#+-
724$'3J7,/+"1$F,/.24Gw#F82(*F,/79^(*$'+-F$Z
$'I4$
F$'+-$'3-.3=,/d,/&/$'A4,/2G1$a,/+ GK$;3?7,/+L$'+L&/XF8I4&/w.03=
-1,/3 $'+L$'&/&/^R9^GK,;72(*2H.3?,/d,/&/$'A,/2G
1$GC$'&/$;797,/+j$;+h79#&/!4#,/$'3)F8I4&/f$;GK.0$'7,/]71g$'+"#+-H7&/#GK#&/g hi i Z
Uso
films
did
tmp
l^m
Compatibilidad
SQL92
? #/
$'G
F82F8^&/(*$'+-F8$f72(*.F,/I&/$6724+ N ^-Z=G
.2GC,/I4&/$'GX&/,/(*,/F7,/24+-$;Gw$;+j&/^Gw73?'7c
F8$;3=,/GCF,/79G
1$6&/H79&/^#GK#&/
$'GCF+"1279#(*$;+-F81Ga$;+h==oAZ
query
LISTEN
Nombre
LISTEN
Synopsis
LISTEN nombre
Entradas
nombre
lx
Salidas
LISTEN
, $'GCF$gI47-$'+ 1T4fW8#$g3J$'A4,/GCF83?12V.3?fGC$'3>d,/GC12V7#+-12EGC$g+-2F8,/]7H$'GCH724+-1,/c
79,/+
Z
Descripcin
Notas
Uso
P62+-]A#3?HTE$?B$;79#FH#+-fGC$'7#$'+-7,/H3J$'7$S.7,/+1$6d,/GK2 +-24F,/]797,/+1$'GC1$
psql
LISTEN virtual;
l^n
NOTIFY virtual;
ASYNC NOTIFY of virtual from backend pid 11239 received
Compatibilidad
SQL92
i & 724(*^+-12%/a +-2E$;N,/GCF$g$'+ N ^Z
LOAD
Nombre
LOAD
Synopsis
LOAD nombrefichero
Parametros de Entrada
nombrefichero
Outputs
LOAD
$'+-GCCBD$g1$;d #$'&/F2EGC,$'&]7:-$'3J2E$'GC.$;79,/]712_+-2%$'Ga$'+-724+-F3=^12)Z i &4]7:-$'3J2E1$'I4$GC$'3
d /, GC,/I4&/$puv|?s }J?|!Sp9~t9J{^R'TE1$'I4$6GC$'3)$'+-d,/12L724+"GC#.3J2.-,/12_7(*,/+-2V724(*.&/$;F82
5.0F8:-<8R'.03=g+-2E2IF$'+-$;3>$'GCF$F8,/.02E1$g$'3?3J23`Z
l
Descripcion
Notas
# +-7,/2+-$'GX!4#$HGC$f$'+-7#$'+-F3=^+j$;+]7:-$'3J2Gw2I;B$;F82"+-2%1$'I4$'3?,/+h&/&/(*3UH24F3=GaW8#+-7,/24+-$'G
$'+2F83J24GE]79:-$;3?2G%2I;BD$'F82@!#$W#$;3J24+73JA;12G%.23V(*$'1,/2@1$'&
724(*+-12hVZM23
$=BD$'(*.&/2R0F241GL&/jW8#+-7,/24+-$;GL$'+$'&]79:-$;3J2
.#$'1$;+@&/&/(*^3gj2F83?GLW8#+-7,/24+-$;GV!4#$hGC$
$'+-7#$'+-F3=+*$;+&/Gf&/,/I43J$'3?,/GGCF8+-13J12(*AF:-R2$'+&/Gg1$'&0.3J2.,/2M2GCF83JA43?$;GZ i GCFG+-2
1$'d$'3,/+h&/&/(*^3W#+-7,/2+-$'Ga1$']+-,/1G
$'+"2F83J2V]7:-$'3J2V73JA;12 Z i GCF82_$'G
GC, .243J!#$6GK,
$'G3J$'7'3JA412R$'&073JA4'123X1$'&0M24GCFA3J$;Gg+-2$'GCF8E.03?$;.'3?12j.B3?_3J$';&/279^3Q&/G&/&/(*^1BG
1$'GC1$%&/GbW8#+-7,/24+-$;G_$;+
$;+$'&U+-#$'d2$'GC.7,/21$%1,/3J$'779,/2+-(*,/$;+-F821$ Z , +-2$;G
B
B
3J$'7C3JA412R'$'+-F24+-7$'Gw+-2E:-AI43?f.3J2I4&/$'(*GZ
,/7:-$'3J2G>24I;BD$'F2E1$;I4$'+%GC$'3)724(*.,/&/^124G
.3?6792+-F8$;+-$'3)7921,/A42EGC,/+"1$'.0$'+-1$'+-7,/61$.2GC,/c
7,/24+
ZKM243a$?B$;(*.&/24RN$'+j$'GCF8^79,/2+-$'G i PQRN1$'I4$g#GC3
724+j&/L24.7,/2+
7#+-12
/bin/cc
-G 0
724(*.,/&/g]7:-$'3J2Gw2I;BD$'F82E.3=GC$'3>7 3JA4'12GZ
,$'GCF8.$'+-GC+-12V$'+%.23?F83M2GKFA43?$;Ga#+-g+-#$'dg.0&/F8W823?(*R'hL1$'I4$XF83?I4CBD31$
W8243?(*fF& !#$gGC24.0243?F8$f\ GZ
Uso
/usr/postgres/demo/circle.o
LOAD /usr/postgres/demo/circle.o
Compatibilidad
SQL92
h2E$;N,/GCF$$'&724(*^+-12%hL$'+ N ^-Z
l^
LOCK
Nombre
LOCK
Synopsis
LOCK [ TABLE ] name
LOCK [ TABLE ] name IN [ ROW | ACCESS ] { SHARE | EXCLUSIVE } MODE
LOCK [ TABLE ] name IN SHARE ROW EXCLUSIVE MODE
Entradas
name
i
\VPQP i b \V i
Nota: A este modo de bloqueo se accede automticamente sobre tablas que estan siendo consultadas. Postgres libera automticamente los bloqueos accedidos ACCESS
SHARE despues de que se haya hecho la sentencia.
\V i
i P6!) i
l
\V i i P6!) i
i
i
) i
i PQ!
i
\VPQP i i P6!
) i
Nota: Se accede automticamente por las sentencias ALTER TABLE, DROP TABLE,
VACUUM .
l^
Salidas
LOCK TABLE
i &I&/2!#$'2EGK$67F8,/dE72+j;N,/F2Z
nombre
+-2E$;N,/GCF8$4Z
Description
G6F3?+-GC797,/2+-$'G61$;I$;3='+*.3J27#3=3?GC$H124G(*2124G1$bI4&/24!#$;272+ ,/7F8,/d2 G6GC&/2GC,
#+-2%1$$'&/&/24Ga$'Gw#F82c8792+ ,/79F,/d2%58,Z $ZC.213=fGC$'3>GC2.23=F12%.23>GC&/2"#+-HF83?+-GC77,/4+
71Xd$'e<`Z ,$'GCF+E,/+-d2&/#793?12GU(*2124G>1$XI4&/2!#$'2L(*&/F8,/.&/$;GCR;$'+-F24+-7$;G
&/^GUF83?+-GC7c
7,/2+-$'Gw1$'I4$'3?/;+jGC,/$;(*.3J$77$'1$'3.3?,/(*$'3J2E^& (*2412E(*G
3?$;GKF3?,/79F,/d2)Z
)L+E$=BD$'(*.0&/2V.^3=X$;GKF3J$;A&/QGC$Q1,/V^+-F8$'GU7#+-12bGK$X1,/GC7#F8,/L$'&#GC2L1$'&(*212 \L i
i PQ!
) i (*$=BD243>!#$g$'& (*212 \V i Z
Nota: Postgres no detecta puntos muertos "bajar" una transaccin a la espera para
resolver el punto muerto.
Notas
h'"$'G
#+-H$;NF$'+-GC,/2+1$;& &/$'+-A#`B$gM2GCF8A43J$'GZ
P !) i RSF82124G>&/2G>1$'(*^G
i 79$;.F82H.03=Q&/2G>(*2412G
1$XI4&/24!#$;2V\LP6P i \V iw i 6
(*24124Gg1$_I4&/24!4#$'21$VM2GCF8A43J$'GfT&/GgGK$;+-F8$'+ 79,/Gfh'" 4
8
GC24+724(*.^F8,/I4&/$'Gg724+
!#$'&/&/2Ga.3J$'GC$'+-F8$;Ga$;+ 3?7&/$Z
h'
"W#+-7,/2+-HGK&/2E1$'+-F83J2_1$F3=+-GC77,/24+ $'GZ
Uso
,/+-GC$'3?F8Ga,/+-F82E
BEGIN WORK;
LOCK TABLE pelculas IN SHARE MODE;
SELECT id FROM pelculas
WHERE name = Star Wars: Episodio I - La amenaza fantasma;
- Haz ROLLBACK si el registro no fue devuelto
INSERT INTO comentarios_usuario_pelculas VALUES
(_id_, GUAY! Llevaba tanto tiempo esperndola!);
COMMIT WORK;
^l
Compatibilidad
SQL92
h2:-Th'" J8a$'+ N 'R)!#$#GC*$'+7(*I4,/2S/
V#/L
?h .^3=
$'GC.$'7,/]736+-,/d$'&/$'GH1$"72+-7#3?3J$'+-7,/%$'+F83?+-GC77,/24+-$;GZh2GK2F83J2GbF(*I4,/'+@&/"F$'+-$'(*2GC
d$'3U
=!A.3?f(*G
1$'F&/&/$'GZ
MOVE
Nombre
MOVE
Synopsis
MOVE [ selector ] [ count ]
{ IN | FROM } cursor
FETCH [ RELATIVE ] [ { [ # | ALL | NEXT | PRIOR ] } ] FROM ] cursor
Descripcin
#L.0$'3=(*,/F$&X#GC#3?,/2(*2d $;3_&/.024GC,/7,/4+1$'&X7#3?GK23_#++-(*$;3J2$'GC.$'7/]721$
]&/GZ
#L*W8#+-7,/24+-_792(*2j$'&-724(*^+-12j
'"R4.$'3J2"GC&/2.2GC,/79,/2+-E$'& 79#3?GC243wTj+-2
1$'d#$'&/d$6]&/GZ
>=!AO
o .3?f1$'F&/&/$'G
1$GC,/+-FN,/GwTE#GC2Z
3)
Notes
Usage
-Fetch la 6
FETCH 1 IN liahona;
FETCH
code |title |did| date_prod|kind
---+----+--+-------+-------+---P_303|48 Hrs|103|1982-10-22|Action
(1 row)
|len
| 01:37
Compatibility
SQL92
h2":-ThGC$'+-F$'+-7,/ N %#VZ i +7(*I4,/24R ^L.$;3=(*,/F$f24+-$bF82h4
']&/GQ1$
#+-b.24GC,/7,/4+I4GK2&/#FV1$;& 7#3=GC238R(*2d,/$'+-12h,/(*.&//7,/F(*$'+-F$b$;& 7#3=GC23ab#+-V.2GC,/79,/+
7243?3J$'7CF-Z
NOTIFY
Nombre
+NOTIFY
24F,/W8T Z
Synopsis
NOTIFY name
Entradas
notifyname
Salidas
NOTIFY
^m
Eventos Notify
Descripcin
i & 72(*+-12hhh
?a$'+-d/L#+$;d $;+-F82h+-2F8,/W8TjV71H^.&/,/779,4+W3J2+-F8$;+-1!#$b.3J$'d,/'c
(*$'+-F$E:-%$=B$;7#F12/
.3?%&/%792+-1,/7,/+@+-2F8,/W8T$'GC.$'7]7E$;+&/
notifyname
I4GC$1$1^F82G
$'+h79#3?GC2)Z
E,/+-W823=(*7,/+.0GC10%&W83J2+-F8$'+-1
.3=_#+$;d $;+-F82+-24F,/W8T*,/+-7&/#T$E$'&+-2(*I43J$_1$V&/
724+-1,/7,/+%+-2F8,/W8TVTV$'&M 1$Q&/6+-2F8,/]77,/4+%1$'&.3J27$'GC2bI4*7 -4$'+-19Z i G>^GK#+-F2b1$'&1,/GK$;c
-123U1$&/HI4GC$1$1^F8 2Gw$;&41$']+-,/3>&/2Gw+-2(*I43J$'Gw1$g&/G
792+-1,/7,/2+-$'GX!#$gGC$'3?+h#GC1G
$'+"#+-HI4GC$1$61F82Ga11gTE!#$gGC,/A+-,/]7b79^1g#+--Z
P62(*#+-(*$'+-F$'R$'&+-24(I3J$g1$#+-H72+-1,/7,/4+j+-2F8,/W8T%$;Gw$'&(*,/GC(*2%!4#$f$;&41$&/A4#+-HF8I4&/
$'+&/I4^GK$1$1F82GCRUT$'&w$;d $;+-F82+-2F,/WT$;GK$;+-7,/&/(*$'+-F$GC,/A4+-,/])7 $7(*I4,/12'GCF8
F8^I&/^R $'7:-&/$b#+*d ,GKFe2h.3?Ld $;3X&/2G79^(*I4,/24GC9ZSM$'3J2h1,/7:-_^GK27,/7,/4+*+-2j$'G62I4&/,/A1
.23Q&/2j724(*+-124GfhhaJ
aT /aZ;M23Q$?B$;(*.&/24R#+*1,/GC$'-^1243X1$bI4GC$'G1$L1F2G
.213=L#GC3wd3?,/24GX+-24(*I43J$'G61$H724+-1,/79,/+*1,/W8$'3J$9+-F8$'G6.03=LGC$'-&/3a1,/W$;3J$S+-F$'G6F,/.24G61$
7(*I4,/24Ga$'+"#+-H(*,/GC(*HF8^I4&/-Z
hhaJ
a.3J24d$'$#+h(*212EGC,/(*.&/$g1$6GC$'-&/32E#+h(*$'7+-,/GC(*2_1$724(*#+-,/77,/+$;+-F83J$
.3J247$'GC2G5 MP,/+-F8$'3?.3J279$;GKG724(*(*#+-,/7F,/24+-<.3=a$'&^792+BD#+-F82b1$a.3J27$'GC24G!#$w779$;1$'+
X&/Q(*,/GK(*6I4GC$w1$a1F24GM24GCF8A43J$'GZ $a.#$;1$'+V792+-GCF83J#,/3(*$'7+-,/GC(*2GU1$w(*G)^&/F82b+-,/d$'&
#GK^+-12%FI4&/Gw$;+&/bI4GC$g1$f1F24Ga.3?H.GC3U1F24GX^1,/7,/24+-&/$;Gw58(*Gw&/&/H1$f#+(*$;3J2
+-24(*I43J$1$724+-1,/7,/+< 1$;GK1$$'&+-2F8,/]71243U& 2_f&/24Gw!#$g$'GCF8;+hf&/f$'GC7#79:- Z
P6#+-12hGC$L#GC%hh
?
a.3?LGK$;-&/3w&/_27#3=3J$'+-7,/L1$L7(*I4,/2G$'+*#+-_FI4&/_$;+*.3Jc
F8,/7#&/3R#+-*F8;79+-,/7F,/&w1$j.3?2A43=^(*7,/4+$'GE.24+-$;3_hhaJ
a $;+#+-+-23=(**!#$$'G
1,/GC.3?'1H.23U79F#&/,/e^79,/2+-$'Ga1$g&/HF8^I4&/-Z $g$'GCF8H(*^+-$'3?R&/H+-24F,/]77,/+$;GX#F24(*^c
F8,/7g7#+-12V&/F8I4&/67(*I4,/R'TV$'& .03?2A43=(*;123U1$6&/g^.&/,/779,/+%+-2V.#$'1$X2&/d ,/13=GC$Q1$
$'&/&/2_1$W8243?(*f77,/1$'+-F&Z
hhaJ
a,/+-F8$'3?7F724+"F3=^+-GK^797,/2+-$'G 1$Q#+-f(*+-$;3=,/(*.243?F8^+-F8$Z=M3?,/(*$'3J2R^GC, GK$
$=BD$'7#F8%#+@hha?
a1$'+-F3J21$E#+-"F83?+-GC77,/4+-R&/2*$'d$'+-F2Gb+-24F,/W8T*+-2*GC24+3?$;.3F,/124G
:-GCF8T(*$'+-2G_!#$&/F83?+-GC77,/4+GC$j:-T4:-$;79:-2Z i GCF82$'G_1$'7#'124R112!#$GC,
#+-F83?+-GC77,/4+GC$*I423?F8+-2G"A#GCF3?/!#$F8212G"&/2G"792(*+-12G%1$'+-F83J21$$;&/&/+-2
:-#I4,/$'3?+F8$'+-,/12$'W8$'7F82R,/+-7&/#T$;+-12*hhaJ
abZ'M$'3J2.#$'1$_GC$'3Q1$'GC724+-7$'3?F8^+-F8$_GC,#+-2
$'GCF8"$'GC.$;3=+-12*!#$"&/2GL$'d$'+-F24GL+-2F8,/W8TGC$%3?$;.'3?F+@,/+-(*$;1,/F8^(*$'+-F8$4Z $'A4#+-124R-GC,U#+
I47 -$;+-1wh&/h$'GC7#79:-"3J$'7,/I4$_#+-hGK$;-&)+-2F8,/W8T(*,/$;+-F83?Gb$'GCF"$'+@#+-hF83?+-GC77,/4+-R $'&
$'d$'+-F2+-24F,/W8T*+-2*GC$E3J$'.3F,/3="&W83J24+-F$'+-1w724+-$;79F12: GKFgBD#GKF21$'GC.#'Gg1$E!#$E&/
F83?+-GC77,/4+GC$b:-T4_724(*.&/$;F812j58F+-F82hGC,0GC$L$?B$;79#F_724(2GC,0GC$LI423=F<`Z $b+-#$'d24R &/
3=^e'+$;GX!#$HGK,#++-2F,/WThW8#$'3?H3J$'.3?F,/12E1$;+-F83J2%1$f#+-bF83?+-GC77,/4+j!#$H 1$'GC.#'GaW8#$
I4243?F102R4GC$'3?/E1$;GC$'I4&/$H!#$_&/E+-2F8,/]77,/4+GC$V1$'GC:-,/7,/$'3?_1$L&/A4#+-V(*+-$'3?
.$'3J2
$'&UI47 -4$'+-1+-2.#$'1$h$'7:-3f(*3J7:-^F83?'GV#++-24F,/W8T@#+-d $;ej!#$:-jGK,/12$' + d ,/12
&W83J24+-F$'+-19ZKM243
F+-F2"&/24GX$'d $;+-F82GX+-2F8,/W8ThGC2+GC4&/2h3J$'.;3?F8,/12GQ$'+-F3J$gF83?+-GC77,/24+-$;GZ i &
3J$'GC#&/F81-21$L'GCF82$'G!#$_&/G.&/,/77,/24+ $'G!#$_#GK^+hha?
a.^3=VGK$;-&/3X$'+*F8,/$;(*.2
3J$';&41$;I4$'3?/;+jF3?F83)1$(+-F8$;+-$'3>723=FG
GC#GaF3=+-GC77,/24+-$;GZ
hhaJ
a@GC$g72(*.243?Ff792(*2%&/GaGC$'-&/$;O
G )L+-,/L$;+j#+hGC.$'7F2E,/(*.23?F8+-F$k GC,#+-f(*,/GC(*
724+-1,/7,/+$;GXGC$'-&/1fd ^3=,/G
d$'7$'Gw$'+h#+-LGC#7$'GC,/+3?.,/1R'&/24Gw3?$;79$;.F823J$SGw.#$'1$g!4#$
GC4&/23J$;79,/I4,/$'3?;+#+$'d$'+-F82@+-24F,/W8T.3?d3?,/GE$?B$;79#7#,/2+-$'G"1$hh
?
afZM243V$;&/&/2$'G
(*&/,/1$;1$'.$'+-1$'3H1$'&
+-(*$'3J21$+-2F8,/]77,/24+-$;G"3J$'7,/I4,/10GZ i +7(*I4,/24R#GC3J$'(*2G
hhaJ
a.3?j1$;GK.$;3=F3?6&/^G_^.&/,/79^7C,/24+-$;GE!#$h+-$'7$'GC,/F8+.03?$;GKF3gF$'+-7,/+j&/A424R
x
Notas
.0#$'1$gGC$'3
#+-b71$'+-Hd&/,/7H724( #++-2(*I43J$'+-2%$'Gw+-$'7$'GC3?/H#+-b3J$'&/7,/4+h72+
$'name
&
+-2(*I3J$1$&/FI4&/$'+GK[Z ,
GK$$'+-7,/$;3=3?$'+-F3?$j124I4&/$'GE724(*,/&/&/GCR)+-,XGC,/!#,/$;3=
+-$'7$'GC,/F8"#++-24(*I43J$%GK,/+-F7F8,/7(*name
$;+-F8$%d&/,/12R-GC,/+-2!#$%.#1$%GK$;37#^&/!#,/$'3g71$;+-%1$
:-GCF8f^f73=;7F8$;3?$;Ga1$&/2+-A,/F#)1XZ
F$'+-E!#$_$'+-7$'3?3?3GC$_$'+-F3?$b724(*,/&/&/^G
i +*&/A4#+-Gd $;3=GC,/2+-$'Gg.3?$;d ,/;Gg1$VM24GCFA3J$'GCR
12I&/$;G_7#+-12@+-2:-I43J$'&/7,/+792++-,/+-Aname
++-2(*I43?$1$jF8^I&/$',/GKF$'+-F$'R,/+-7&/#GK2GC,
GC,/+-F87F,/79^(*$'+-F8$6$'3?fd ^&/,/12E72(*2E+-2(*I43?$4Z i GCF82ET4f+-2%$;Ga+ $'7$'GC3=,/2Z
i +hd $;3=GC,/2+-$'GXM2GCF8A43J$'GX+-F$'3?,/243J$;GwH&/H-Z +^R^$'&4M 1$I^*7 -4$'+-13J$'.;3?F8,/12E$'+#+j(*$'+-GCCBD$
+-24F,/W8Tb$'3?wGC,/$'(*.3J$a$;&M 1$'&'I47 -4$'+-1_1$'&^W83J24+-F $'+-1E1$a#+-2H(*,/GC(*2ZM23$'GC2H+-2fGK$w.21
1,/GCF8,/+-A4#,/3g&/GH+-2F,/]77,/ 2+$'Gf1$'#+-2*(*,/GC(*21$E&/GH+-2F,/]77,/2+-$'GL1$E24F3J24GH79&/,/$;+-F8$'GH$'+
!#$'&/&/^Gad$'3?GC,/24+-$;GZ
Uso
P62+-]A#3?HTE$?B$;79#FH#+-fGC$'7#$'+-7,/H&/,/GKF$'+-58$'GC7#7:-< +-2F8,/W8T458+-24F,/]797,/+-<01$'GC1$
LISTEN virtual;
NOTIFY virtual;
ASYNC NOTIFY de virtual desde el pide de backend
psql
11239 recivido
Compatibilidad
SQL92
h2E:-^TEGC$'+-F$'+-7,/hh
?a$;+ Z
^n
RESET
Nombre
Synopsis
RESET variable
Entradas
variable
Salidas
RESET VARIABLE
Descripcin
Notas
!/$'G
#+-H$'F8$'+-GC,/+1$'& &/$'+-A4#CBD$g1$M24GCFA3J$;G
)VF,/&/,/7$=A*^+-1JD .03=g(*+-,/.#&/3)$'&d&/243)1$&/^Gwd3?,/I4&/$'GZ
Uso
i GCF8I4&/$;79$93
RESET DateStyle;
Compatibilidad
SQL92
h2E$;N,/GCF$g!/$'+ N ^-Z
REVOKE
Nombre
#REVOKE
GK#^3=,/2GZ
Synopsis
REVOKE privilegio [, ...]
ON objeto [, ...]
FROM { PUBLIC | GROUP ER">gBLE> | nombre_usuario }
Entradas
privilegio
i i P
M3?,/d,/&/$'A4,/2_.^3=677$'1$'3F821G>&/G>72&/#(*+-Gw1$X#+-fFI4&/2Vd,/GCF8g$;GC.$'7/]7-Z
i
M3?,/d,/&/$'A,2%1$,/+-GC$'3?F8^3U1^F82Gw$'+hF241Ga&/^Gw72&/#(*+-GX1$6#+-HFI4&/g$;GC.$'7/]7-Z
^
)VM
\
i
M3?,/d,/&/$'A,2%.3?g7F#^&/,/e3F821Ga&/G
724&/#(*+-Gw1$FI4&/-Z
i ii
M3?,/d,/&/$'A,2%.3?gI423=3?3)]&/^Gw1$6#+-HF8I4&/f$;GK.$;7/]79 Z
O)L i
\V
$'GC7,/+-1$gF8212GX&/2Gw.3?,/d,/&/$'A4,/24GZ
objeto
F8I4&/$;
d ,/GCF
GK$;7#$;+-79,
/+-1,/7$
K
K
K
grupo
nombre_usuario
M)V P
a$'GC7,/+-1$g$'& &/2GX.3?,/d ,/&/$;A,/258GC<0$'GC.$;79,/]71258GK<HF2124Ga&/24Ga#GC#3=,/2GZ
Salidas
CHANGE
ERROR
Descripcin
Notas
P62+-GC#&/F$f$'&4724(*+-12".GK!4&hNeL.03=g24I4F$'+-$'3
(*^GQ,/+-W8243?(*7,/4+jGC24I43J$f.$;3=(*,/GC2GQ$'+j24I;BD$'c
F82Gw$;N,/GCF$'+-F8$;Gk
Database
= lusitania
+------------+------------------------------+
| Relation
|
Grant/Revoke Permissions
+------------+------------------------------+
| mytable
| {"=rw","miriam=arwR","group todos=rw"}
+------------+------------------------------+
Legend:
uname=arwR - privileges granted to a user
group gname=arwR - privileges granted to a GROUP
=arwR - privileges granted to PUBLIC
|
|
r - SELECT
w - UPDATE/DELETE
a - INSERT
R - RULE
arwR - ALL
Sugerencia: Actualmente, para crear un grupo debe insertar los datos manualmente en
la tabla table pg_group de este modo:
INSERT INTO pg_group VALUES (todos);
CREATE USER miriam IN GROUP todos;
Utilizacin
films
manuel
$'+h&/Hd,/GCF8
kinds
^
Compatibilidad
SQL92
HGC,/+-F8,/GQ1$ N ^H.3?H$'& 72(*+-12h!L#"VF,/$'+-$H79^.'7,/11$'GX1,/79,/2+-&/$'Gw.3?
3J$'GC79,/+-1,/3U.3?,/d,/&/$'A4,/24GCR,/+-7&/#GK2E!#$'&/&/2Gw$;+j72&/#(*+-Ga,/+-1,/d ,/1#&/$'Ga$'+hF8I4&/Gk
REVOKE { SELECT |
ON objeto
FROM { PUBLIC
REVOKE { INSERT |
ON objeto
FROM { PUBLIC
a$;GK7,/+-1$bV#+#GC#3?,/2&/L#F243?,/11*.3?VA43?+-F,/e'3w$'& .3=,/d,/&/$'A4,/2h$'GC.$'7,/]712"
24F3J24Ga#GK#^3=,/2GZ`$'GC$'F?^4A.3?f&/2Gw1$;F8&/&/$;Ga$;+h79(*.024Ga,/+-1,/d,/1#&/$'GZ
2Gw2I;B$;F82Gw.2GC,/I4&/$'GXGC2+
k
V
\ i -FI4&/ d,/GKF
P L
\ a\LP i i 72+B#+-F2473?7F$'3J$SG
P \ 724&/$;797,/+
a\L \ F83?GC&/7,/4+
\ 12(*,/+-,/2
,#GC$'3?V1b#+.3?,/d,/&/$'A4,/2j72+&/_2.7,/4+ba\L L#GC$'3?LTh#GK$;3=LGC$L&/2h1LV#GC$'3?R$'+-c
F82+-7$'G6#GC$'3?L.#$;1$b3J$;d 273
$'GCF$L.3?,/d,/&/$'A4,/2j$;+7GC71b#GK^+-12j&/L.&/^I3[_7&/d$HPQ\ c
P6\ i Z
ROLLBACK
Nombre
ROLLBACK
m
Synopsis
ROLLBACK [ WORK | TRANSACTION ]
Entrada.
h,/+-A4#+--Z
Salida.
ABORT
Descripcin
Notas
Usage
M3=7+-7$'&/3)F8212Gw&/2GX7(*I4,/2Gk
ROLLBACK WORK;
Compatibilidad
SQL92
^GC4&/2$'GC.$'7,/]7@&/Gj124GjW823=(*^GGC,/A4#,/$'+-F8$;Gk
T
Z $
ROLLBACK WORK
7#^&/!#,/$'3)24F3?HW23?(*R^&/f724(.F8,/I4,/&/,/1^1$'Ga792(*.&/$'F-ROLLBACK
Z
m^l
SELECT
Nombre
SELECT
Synopsis
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] )
expression [ AS name ] [, ...]
[ INTO [ TEMPORARY | TEMP ] [ TABLE ] new_table
[ FROM table [ alias ] [, ...] ]
[ WHERE condition ]
[ GROUP BY column [, ...] ]
[ HAVING condition [, ...] ]
[ { UNION [ ALL ] | INTERSECT | EXCEPT } select
[ ORDER BY column [ ASC | DESC | USING operator
[ FOR UPDATE [ OF class_name [, ...] ] ]
LIMIT { count | ALL } [ { OFFSET | , } start ]
] ]
]
]
] [, ...] ]
Inputs
expression
name
i GC.$'7,/]7X24F3J2b+-24(*I43J$w.3?X#+-Q792&/#(*+-62b#+-6$;N.3J$'GC,/+_!4#$Q#F,/&/,/7$X&/Q7&/#GC#&/
\ Z i GCF8$+-2(*I43J$GC$#F,/&/,/e.3?,/+-79,/.^&/(*$'+-F8$72(*2$'F,/!#$'F.^3=&/*72&/#(*+-1$
GK^&/,/1XZ i & +-2(*I3J$H+-2h.#$'1$fGC$'3a#F,/&/,/e12%$;+&/GQ7&/#GC#&/GQ hi i R b )LM2
\a "jZ ,/+h$;(*I43JA2R'.#$'1$GC$'3>3J$'W8$93J$'+-7,/12V$'+h7&/#GK#&/^G i UZ
i M
\V)
i M
HF8I4&/gGK$g73J$'GK2&/(*$;+-F8$g.3?f$;GKFfGC$'GC,/4+-RTE$'Gw^#F82(*F8,/7(*$;+-F8$g1$;GK73?F'1f^&
]+-^&/,/e3)&/f(*,/GC(*-Z
new_table
,4GK$H#F8,/&/,/e^L&/b7&/#GC#&/ \V i R$'& 3J$;GK#&/F12E1$H&/b72+-GK#&/FVGC$H&/(*7$'+-^3
'$ +E2F83?gFI4&/6792+%$;&N+-24(*I43J$Q,/+-1,/712)ZJ6F8I4&/62I'BD$'F,/d2_5
<GK$;3=673J$'1-
#F82(*F,/79^(*$'+-F8$XTV+-2_1$'I4$'3?Q$'N,/GCF,/3.3J$'d,/(*$'+-F$Q6&/g#new_table
F,/&/,/e7,/4+E1$Q$;GCF8$Q792(*+-c
12)Z`PQ24+-GC#&/F$f$'& 724(*+-1
2 /6?h
.03=g(*G
,/+-W23?(*7,/4+
Z
Nota: La declaracin CREATE TABLE AS tambin crear una nueva tabla a partir de la
consulta.
table
m
)L+h+-24(*I43J$f&/F$'3?+-F8,/d2E.03=g&/HF8I4&/f.03?$;79$;1$9+-F8$
Z $g#F8,/&/,/e^H.3?fI43J$'d,/3
2E$'&/,/(*,/+-^3>(*I4,/A$'11-$'Ga$'+h#+-,/24+-$;GX1$'+-F3J2_1$6#table
+-H(*,/GK(*HFI4&/-Z
alias
condition
)V+ 6$;N.3J$'GC,/+EI4224&/$;+-!4#$61Q724(*2L3J$'GC#&/F8^12bd$'3J101$;3J2H2LW^&/GK2b58F3J#$Q23W8&/GC$'<`Z
P62+-GK#&/F$g&/H7&/#GC#&/g hi i Z
column
select
i )Z
Outputs
a$;A,/GCF83J2G
i &-72+B#+F82h724(*.0&/$'F821$L3J$;A,/GCF83J2GQ58]&/GC<!#$V3J$'GC#&/F8^+1$L&/V$'GC.$'7,/]79^79,/+1$b&/
792+-GC#&/F8-Z
count
Descripcin
/-1$'d#$'&/d$f3J$'A,/GCF3J24GX1$H#+-b2"(*GwF8^I&/^GZK2GQ7+-1,/1;F82G6bGK$;3
GC$'&/$'77,/24+-^124G
GC24+V!#$'&/&/2GU3J$'A4,/GCF83J2G!#$w7#(*.&/$'+V&/Q724+-1,/7,/+E$'GC.$;79,/]71w72+E "i i GC,^GK$w2(*,/F8$
hi i R^GC$g3J$'F243?+-+"F2412Gw&/2GX3J$;A,/GCF83J2GZ`58P62+-GK#&/F$goau:99 t4|?t4up44=!FX
= Z<
h
/
?h$'&/,/(*,/+-Q3J$'A4,/GCF83J2G1#.&/,/712G1$'&^3?$;GC#&/F1-2)ZJV_5.3J$;10$'F$'3?(*,/+-12< 1$'d24&/c
d$'3=F8212GX&/2Gw3J$'A4,/GCF83J2GKR'!#$g7#(*.0&/+h792+h&/H724+-GC#&/F8^R,/+ 79&/#T4$'+-12_&/24Gw1#.&/,/7124GZ
h /
?hh$'&/,/(*,/+-L&/2G63?$;A,/GCF3?2GQ!#$H7#(*.&/$'+72+F821GX&/GQ$'.3J$SGC,/2+-$'G$'GC.$'7,/c
]791'GCR(*+-F$'+-,/$'+-12jGC24&/($'+-F8$_$;&0.3=,/($'3Q3J$;A,/GCF83J2h1$L791_724+BD#+-F21$V1#.&/,/712GZ
h2F8$"!#$h+-2GC$".#$;1$h.3J$'1-$'7,/3f7#&)GC$'3?$;&).3?,/(*$'3f3J$'A4,/GKF3J24Q(*$;+-24GL!#$hGK$"#F8,/&/,/c
7$Lhh
8Oa.^3=LGC$'A4#3=3>!#$L$;& 3J$'A4,/GKF3J2"$'GC$'12"$;G6$'& !4#$b$'W8$'7F,/d ^(*$'+-F8$f.03J$S7$
.3?,/(*$'3J2)Z`M23>$?B$;(*.&/2)k
SELECT DISTINCT ON (location) location, time, report
FROM weatherReports
ORDER BY location, time DESC;
m^m
X7&/#GC#&/Qb )LMh.$;3=(*,/F$Q^&#GC#3?,/2H1,/d,/1,/3#+-QF8I4&/Q72+-79$;.F8#&/(*$;+-F8$w$'+_A3J#c
.2GZ`58PQ24+-GC#&/F8$fo
u9t4|?tuYpQ'FDX3H!bZ <
b79&/^#GK#&/ \a h $;GK.0$'7,/]7b#+-_FI4&/b792+A43J#.24G61$;3=,/d1H1$H&/L$'&/,/(*,/+-7,/+1$
A3J#.2GU1$'&'3J$'GC#&/F12H1$w&/Q7&/#GC#&/X.3?$;d ,/^(*$'+-F$a$'GC.$'7,/]791-Z[58P624+ GK#&/F$Qo
u 9t4|?tuY
p L?V
Uz ^VEZ <
b79&/^#GK#&/ i .$'3?(*,/F8$H&-#GC#3?,/2"$'GC.$'7,/]79^3aGK,!#,/$'3J$H&/24G63J$'A4,/GCF83J2GQ23?1$'+-c
12GX1$f(*+-$'3?b GC7$'+-1$'+-F$g2"1$'GC7$'+-1$;+-F8$f#F8,/&/,/e^+-12%&/2GQ2.$'3?1243J$;Gw1$f(*212"\ PT
p DJFO;J=!FSH!HZ <
i P_Z=58P62+-GC#&/F8$fo
u 9t|Jtu<
b79&/^#GK#&/V .$'3?(*,/F$L1$'d2&/d $;3a& #GC#3?,/2h#+GC#I472+B#+-F2j1$b&/2G3J$'A,/GCF3J24GQ.3J2c
1#7,/124G
.23>&/H72+-GK#&/F-ZC58P62+-GC#&/F$go
u 9t|JtupX4z Bz A6Z <
)VGCF$'11$'I4$"F$'+-$'3.$'3?(*,/GK21$%3J$'&/,/e;3 i i P GK2I43J$%#+-jF8^I&/h.3?h.241$;3g&/$'$'3gGC#G
d&/243J$9GZK58PQ24+-GC#&/F$g&/Gw1$;7&/3=;7,/24+-$;GQhLh !
V#"L<`Z
Clusula WHERE
f724+ 1,/79,/+h24.079,/2+-&4 hi i F8,/$;+-$g&/HW8243?(*fA4$'+-$'3?&k
WHERE boolean_expr
.#$'1$f72+-GK,/GCF,/3a1$H79#&/!4#,/$'3
$'.3J$'GC,/+7#T2%3?$;GK#&/F12%GC$'b#+d &/23
Iboolean_expr
4
242&/$'+-2Z i +"(*#7:-24Gw7GK2GCR$'GCF8f$;N.3J$;GK,/+hGC$'3= k
expr cond_op expr
2
log_op expr
12+-1$
.#$'1$HGC$;3>#+-2"1$k R R X R R X 243 V R#+2.$'3?123>72+-1,/79,/2+-&
724(*2V\Vcond_op
R;\LhR hR' 5 i 2_2.$'3?1231$;]+-,/12V&/279^&/(*$'+-F8$;R'T
.#$;1$6GC$'3#+-2
1$k\V R
R Z9V72(*.3?7,/4+1$'d#$;&/d $ ) i 5d$'3J1;1log_op
$'3J2<2 \V i 58W8&/GC2<T
F821G
&/ Ga,/+-GCF8+-7,/GaGC$'3=^+"1$'GC73=F1-GwGC,&/f$'.3J$'GC,/+h3?$;GK#&/FgW8&/GC-Z
Clusula GROUP BY
b )VM$'GC.$'7,/]79#+-HF8I4&/724+hA43?#.2Ga1$'3?,/d ^10f1$6&/f.&/,/77,/+"1$$'GCFg7&/#GC#c
&/-k
GROUP BY column [, ...]
mx
Clusula HAVING
f724+ 1,/79,/+h24.079,/2+-& \a hF8,/$;+-$g&/fW8243?(*HA4$'+-$'3?&k
HAVING cond_expr
12+-1$
7#(*.&/$6&/^G
(*,GK(*Ga724+-1,/79,/2+-$'G
!#$&/^G>$'GC.$'7,/]791GU.3? hi c
cond_expr
i Z
\a h $;GK.$;7,/]7b#+-_FI4&/b792+A43J#.024G61$;3=,/d1b1$H&/V$;&/,/(*,/+-7,/4+1$bA43J#.2GKR 1$'&
3J$'GC#&/F81-2E1$Q&/f7&/#GC#&/g.3J$'d,/(*$'+ F8$Q$'GC.$'7,/]71'R^!#$6+-2E7#(*.&/$'+"72+
Z
cond_expr
1$'I4$"3?$;W8$S3?,/3?GK$h.3J$'7,/GK^(*$'+-F8$"58GK,/+^(*I4,/c
P61h724&/#(*+-3J$;WD$'3J$'+-7,/1h$'+
A $;110$;GK<
j#+-h724&/#(*+"1$"A43Jcond_expr
#.24R0j(*$;+-24GL!#$"&/j3J$;WD$'3J$'+-7,/".3J$9e7j1$'+-F83J21$
#+-fW8#+-79,/+j1$A43J$'A4'7,/+
Z
Clusula ORDER BY
ORDER BY column [ ASC | DESC ] [, ...]
0
. 79,/2+-&/(*$;+-F8$V#+-V.#$'1$bA3J$;A;3Q&/V.&/I43?V7&/d$ i P581$'GC7$'+-1$;+-F8$'<2h\ P58GCc
7&/#GK#&/ i )Z a
7$'+-1$'+-F$'<X&/#$'A421$'&
+-2(*I43?$1$71792&/#(*+-*$'+&/
, +-2GC$
m^n
$'GC.$'7,/]7R4GC$_GC#($_\ P1$_W823=(*E.03?$;1$'F$'3?(*,/+-14Z^\L&/F8$;3=+-^F8,/d(*$'+-F$'R4.#$;1$_,/+-1,/c
73=GC$H#+*+-24(*I43J$b1$L2.$'3?123a1$b243J1$'+$'GC.$'7/]72)Z9\ P$'G6$'!#,/d&/$'+-F$VJ) " O O
T i P$;Ga$;!#,/d ^&/$'+-F8$
) "O O[Z
Clusula UNION
table_query UNION [ ALL ] table_query
[ ORDER BY column [ ASC | DESC ] [, ...] ]
12+-1$
$'GC.$'7,/]79%7#&/!#,/$;3g1$'7&/37,/+ i i P GC,/+@&/"7&/#GC#&/
c
Z
i @)table_query
Clusula INTERSECT
table_query INTERSECT table_query
[ ORDER BY column [ ASC | DESC ] [, ...] ]
12+-1$
$'GC.$'7,/]77#&/!#,/$;3$'.3J$'GC,/4+ i i P GC,/+%&/7&/#GK#&/ i
table_query
UZ
i &24.$;3=^1243 i i P &/$f1H&/24GX3?$;A,/GCF3?2Ga792(*#+-$'GQH^(*I4Gw72+-GK#&/FGZ92GX124G i c
i P G!#$E3?$;.3J$SGC$'+-F+&/24Gf24.$;3=+ 124Gf1,/3J$'7CF24Gb1$V&/%,/+-F8$'3?GC$'77,/4+1$'I4$'+.3J21#7,/36$'&
(*,/GC(*2%+-(*$'3J2%1$g72&/#(*+-GCRT"&/Gw72&/#(*+-GX723=3J$;GK.2+-1,/$'+-F$'Gw1$'I4$'+"GC$'3>1$F8,/.024Gw1$
1F24G
724(*.0F8,/I4&/$'GZ
,aGC$#F,/&/,/e+d ^3=,/2G"2.$'3?123?$9G i i P $'+&/(*,/GC(*1$;7&/3=;7,/4+ i i P GK$
$'d&/'+@1$%,/e!#,/$'3J1"j1$'3J$'7:-R j(*$;+-24GL!#$"GC$h#F8,/&/,/7$;+.3?'+-F$'GC,/Gb.3?h(241,/]73
$'GCF82Z
Clusula EXCEPT
table_query EXCEPT table_query
[ ORDER BY column [ ASC | DESC ] [, ...] ]
12+-1$
$'GC.$'7,/]77#&/!#,/$;3$'.3J$'GC,/4+ i i P GC,/+%&/7&/#GK#&/ i
table_query
UZ
i &'24.$;3=^1243 i P i M &/$w1Q&/2GU3J$'A4,/GKF3J24G1$'d#$'&/F24G.2430&/6.03=,/(*$;3=X72+-GK#&/F.0$'3J2f+-2b.23
&/bGK$;A#+-1-ZK2G612G i i P GQ!#$H3J$'.3J$9GK$;+-F8+&/24G62.$'3?+-12GX1,/3?$;79F2GX1$H&/b,/+-F8$'3?GC$'7c
m
7,/4+V1$'I4$'+V.3J21#79,/3-$'&^(*,/GC(*2b+-(*$'3J2H1$w724&/#(*+-GCR9Tb&/G792&/#(*+-GU723=3J$'GC.2+-1,/$'+-F$'G
1$'I4$'+"GC$'3)1$gF,/.2Gw1$61F82Ga792(*.F,/I4&/$'GZ
,aGC$#F,/&/,/e+d ^3=,/2G"2.$'3?123?$9G i i P $'+&/(*,/GC(*1$;7&/3=;7,/4+ i i P GK$
$'d&/'+@1$%,/e!#,/$'3J1"j1$'3J$'7:-R j(*$;+-24GL!#$"GC$h#F8,/&/,/7$;+.3?'+-F$'GC,/Gb.3?h(241,/]73
$'GCF82Z
Clusula LIMIT
LIMIT { count | ALL } [ { OFFSET | , } start ]
OFFSET start
12+-1$
$;GK.$;79,/]7L$'&(*^N,/(*2h+-(*$'3J2"1$f3J$'A4,/GCF83J2GQb1$'d24&/d$'3aT
$'GC.$;79,/c
]79f$;&+-count
(*$'3J2_1$g3J$;A,/GCF3?2G
fGC&/F8$;3U^+-F8$'Ga1$$;(*.$'e^3)g1$'d24&/d$'3)3J$'A4,/GKFstart
3J24GZ
P6#+-12hGC$V#F,/&/,/e_ $'G#+-VI#$;+-_,/1$'V#F8,/&/,/e^3w&/E7&/#GK#&/ i .3?V72c
&/2473a&/2Gg3?$;A,/GCF3?2GQ1$;&-3J$'GC#&/F812h$;+#+*243J1$;++-,/72)Z $L24F3=VW8243?(*_2 I4F8$;+-13=L#+*GC#Ic
724+BD#+-F82,/(*.03?$;1$'7C,/I4&/$1$&/2G%3J$'A4,/GCF83J2GE1$&/72+-GC#& F8
F&
d $'e$;GCF8I4#GC79^+-12@&/2G
3J$'A4,/GKF3J24Ga1$'&1'7,/(*2%^&d,/A4'GC,/(*24IR .$'3J2E1$'&1'7,/(*2%&d,/ A'GC,/(*2"$;+!#f23J1$'+-&
)LGCF8$'1
+-2E72+-247$g$'&23J1$'+"f(*$;+-24GX!4#$g#F8,/&/,/7$ i )Z
_$;+M24GCFA3J$'G-Z ^R $'&-2.F,/(*,/e123w1$L72+-GK#&/FGF82(*_$;+7#$'+-F8V_ 7#+-12hA4$'c
+-$'3?_#+.&/+*1$L792+-GC#&/F8RGC-!#$_$'G(*#TW87F,/I&/$b!#$_#GCF8$;124I4F$'+-A4%1,/W8$'3J$S+ F8$'Gg.&/c
+-$'GV58I43J7C+-121,/W8$'3J$S+- F$'G_73=,/F$'3?,/24G_1$j23J1$'+-(*,/$;+-F821$3J$'A4,/GCF83J2GK<w1$;.$'+-1,/$;+-121$
&/24GV
d&/23J$'GL112GL 8 T 4 i ZM23H&/2F+-F24R#F,/&/,/e3H1,/W8$'3J$S+ F8$'GVd&/23?$;GL.3?
8Q i .3?_GC$'&/$;797,/2+-361,/W$;3J$S+-F$'GgGK#I472+B#+-F2 Gf1$'&03J$'GC#&/F812j1$L#+-%792+-c
GC#&/FRq^}Jv 'v~=p9} 9_}J?|JtuYspv|g{~=v{|?Y|?s8?{4s8?|b(*$;+-24GV!#$"#GCF$'1GC$h^GK$;A#3?j#+3J$'GC#&/F12
.3J$S1$'7,/I4&/$H23J1$'+-+ 12%724+ i UZ i GCF82"+-2"$;GQ#+I4#A4 $'Gw#+-b792+-GC$'7#$'+-7,/V,/+-:-$;c
3J$'+-F8$f^& :-$'7:-2h1$H!#$ N +-2h $'GCFI4&/$'7$f+-,/+-A+*72(*.3J24(*,/GC2h1$H$'+-F83J$;A3>&/24G63J$'GC#&/F8^c
12G)1$X#+-672+-GC#&/F8g$;+_#+_243J1$;+E$'+V.3?F8,/7#&/3Q(*$;+-24G>!#$XGC$Q#F,/&/,/7$ i **.03=
Uso
M3=#+-,/3>&/HFI4&/
films
724+h&/fFI4&/
distributors
m^
Yojimbo
|106|Toho
|1961-06-16|Drama
Theres a Girl in my Soup|107|Columbia
|1970-06-11|Comedy
Taxi Driver
|107|Columbia
|1975-05-15|Action
Absence of Malice
|107|Columbia
|1981-11-15|Action
Storia di una donna
|108|Westward
|1970-08-15|Romantic
The King and I
|109|20th Century Fox|1956-08-11|Musical
Das Boot
|110|Bavaria Atelier |1981-11-11|Drama
Bed Knobs and Broomsticks|111|Walt Disney
|
|Musical
m
112|Warner Bros.
108|Westward
T
R
i GCF8$b$=BD$'(*.&/2(*#$;GKF3?E74(*224I4F$'+-$'3X&/E#+-,/2+1$V&/GF8^I&/^G
3J$'GCF83?,/+-A,/$;+-12h&/24Gg3J$'GC#&/F8124G6V!#$'&/&/2Gf!#$L792(*,/$'+-e^+*724+*distributors
&/E&/$;F83?_ $'+*71actors
LF8I4&/-Z
h2EGC$!4#,/$'3J$'+h1#.&/,/712GKR'GKN!#$g&/H.&/^I43=79&/^d $6\VGC$2(*,/F8$4Z
-
distributors:
did|name
--+-------108|Westward
111|Walt Disney
112|Warner Bros.
...
actors:
id|name
-+--------1|Woody Allen
2|Warren Beatty
3|Walter Matthau
...
SELECT distributors.name
FROM
distributors
WHERE distributors.name LIKE W%
UNION
SELECT actors.name
FROM
actors
WHERE actors.name LIKE W%
name
--------Walt Disney
Walter Matthau
Warner Bros.
Warren Beatty
Westward
Woody Allen
Compatibilidad
Extensiones
M24GCFA3J$'GL.$;3=(*,/F$j2(*,/F8,/3b&/7&/#GC#&/4# 1$"#+-792+-GC#&/F8-Z i GKF73?7CF$'3?/GCF8,/7jW#$
724+-GC$'3?d1g1$;&&/$'+-A#`B$g23?,/A,/+-&1$6792+-GC#&/F8HM2GKF #$'&k
SELECT distributors.* WHERE name = Westwood;
did|name
--+----------108|Westward
SQL92
m^
Clusula SELECT
Clusula UNION
GK,/+-F,/G1$ N ^.^3=7)V
hak
SELECT INTO
Nombre
SELECT INTO
Synopsis
SELECT [ ALL | DISTINCT [ ON ( expresin [, ...] ) ] ]
expresin [ AS nombre ] [, ...]
[ INTO [ TEMPORARY | TEMP ] [ TABLE ] nueva_tabla ]
[ FROM tabla [ alias ] [, ...] ]
[ WHERE condicin ]
[ GROUP BY columna [, ...] ]
[ HAVING condicinn [, ...] ]
[ { UNION [ ALL ] | INTERSECT | EXCEPT } select ]
[ ORDER BY columna [ ASC | DESC | USING operador ] [, ...] ]
[ FOR UPDATE [ OF Nombre_de_clase [, ...] ] ]
LIMIT { contador | ALL } [ { OFFSET | , } incio ]
Inputs
2 12Gw&/2GX7(*.2G
1$g$'+-F3=^1gGC$g1$'GC73=,/I4$;+"$'+h1$'F&/&/$$'+h==oOA6Z
x
Outputs
2 12Gw&/2GX7(*.2G
1$gGC&/,/1fGC$1$;GK73?,/I4$'+h$'+h1$'F&/&/$6$;+h==oAZ
Descripcin
.,/79^(*$'+-c
F8$;R$'GCF8j!#$'3?T3?$;79#.$;3=h&/2G_1^F82GV1$h#+-FI4&/j$;N,/GCF$'+-F8$;R.$'3J2GC$j.$'3?(*,/F$h7#&/!#,/$'3
!#$'3?T%1$ XZ
Nota: CREATE TABLE AS es funcionalmente equivalente al comando SELECT INTO.
SET
Nombre
SET
Synopsis
SET variable { TO | = } { value | DEFAULT }
SET TIME ZONE { timezone | LOCAL | DEFAULT }
SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE }
value
"#$'d2%d ^&/243
1$'&.3?(*$'F3J2)Z $g.#$'1$g#F,/&/,/e3U$'&4d &/23
.3?H$'GC.$'7,/]79^3
DEFAULT
!#$gGC$1$'d#$'&/d$$'&.^3=(*$;F83[2_fGC#d &/23U1$1$'W8$'7F2)Z
x^l
P6 8i i hP h h\
i
F8$ F T4&/$
, BD_$'&4$'GCF8,/&/2h1$f3J$'.3J$9GC$'+-F79,/+1$fW8$'7:- :-23=-ZK\LW$;7F8H&W23?(*F82"1$HGC&/,/1RNTh$;+
&/A#+-2Ga79GC2Gw.0#$;1$W8$'7F'3Uf&/f,/+-F$'3?.3J$'F8^79,/+h1$&/f$;+-F83?1-Z
N
#F,/&/,/eHW8$'7:-G
T%:-23?Gw1$6$'GCF8,/&/2 N ^'-Z
#F,/&/,/eHW8$'7:-G
T%:-23?Gw1$6$'GCF8,/&/2 3?7&/$ N +-A43J$'GZ
M2GCF8A43J$'G
#F,/&/,/eH$'& W823=(*^F82_F83?1,/7,/24+-^&41$M24GCFA3J$'GZ
i #3J24.$;'+
#F,/&/,/eH11 (*( TT4TT%.3?g&/H3J$'.3[$;GC$'+-F8^79,/+h+-#(*'3?,/79H1$&/G
W8$'7:-GZ
h24+ i
# 3J2.$'^+
#F,/&/,/eH(*( 11 TT4TT%.3?g&/H3J$'.3[$;GC$'+-F8^79,/+h+-#(*'3?,/79H1$&/G
W8$'7:-GZ
b$'3?(*+
#F,/&/,/eH11XZ (*(Z TT4TTE.3?g&/H3J$'.3$'GC$'+-F8^79,/+h+-#(*'3?,/7f1$g&/G
W8$'7:-GZ
i \J)V
3J$;79#.$;3=&/24Gwd ^&/243J$9Gw1$g1$'W8$'7CF2%58O) R M2GCF8A43J$'GCO<
x
i ^M V b i
\ i
i N
\ i
i i
\Hh
i i
i hP h
)V
0 i 1#3=^+-F8$$;&
i! i
24G)d&/23J$'G.24GC,/I4&/$'G).3=aF8,/(*$;e24+-$w1$;.$'+-1$'+L1$wGC#EGK,/GCF$'(*Q24.$;3=^F8,/d2)Z[M23$=BD$'(*c
.&/24R^$;+h,/+-# #GK3 &/,/I e2+$',/+-W82E724+-F,/$'+-$g&/gI^GK$61$g1F24G
1$6e24+-^Gw:-23=^3=,/GZ
\V!#NF8,/$'+-$&/A#+-2GXd&/23J$'G
d ^&/,/124G
.3?fe2+-G
:-23=3?,/Gk
OM ^M O
0
, GC$V$;GK.0$'7,/]7E#+-Ee^24+-%:-23=^3=,/V,/+-d ^&/,/1R4GC$'3?E]NB1EE
5$;+*&/%(*T4243?/V1$
GK,/GCF$'(*Ga$'+h7#^&/!#,/$'3)7GK2<`Z
_GC$'A4#+-1%GC,/GKF,/Gg(*2GCF83?1E(Gf3?3?,/I4R.$;3=(*,/F$V]NB^36&/Ee2+-E:-23?3=,/_792+#+-
GK,/+-F,/GQGC,/(*,/&/3aJ
/a \
ahh1$ 4Z9b.^&/I43=H7&/d$f P6\V$'GXGK&/2
#+EW8243?(*F2H&/F$'3?+-F8,/d2H i 4
\ )L .3?X(*+-F8$;+-$'3&/Q724(*.0F8,/I4,/&/,/1^1h724+ N ^Z
,&/d3?,/I4&/$X1$Q$;+-F823?+-2VM !
GK$X]NB$'+%$;&N(*I4,/$'+-F$Q1$Q&/6.&/,/77,/+%1$X#+E79&/,/$;+-c
F8$E I4GC12$;+&/,/I4.!58$'+@$;&^(*I,/$;+-F8$%1$'&W83J24+-F$'+-1<8R&/,/I4.!] BD3?"#F82(*F,/79^(*$'+-F8$
!
i i ^& d ^&/243U1$M !
1#3?+-F8$6$'&3?3=^+-!#$1$&/H72+-$',/4+
Z
a\L \VP N \ i i
, BDH$'&+-,/d$'&1$,/GC&/(*,/$;+-F82%.03=&/fF83?+-GC77,/4+h7F#&Z
i \
P
8i
1$'W8$'7CF2)Z
Nota: El estandar SQL92 requiere que se fije el valor de aislamiento de defecto a
SERIALIZABLE.
x^m
i \L \V- i
G>724+-GC#&/F8^Ga 1$6&/gF3?+-GC779,/+%&/&/$'+"GC&/2_]&/f^GK$;A#3?10^Ga^+-F8$'G>1$Q&/g.3?,/(*$'3?
,/+-GCF3J#77,/+
_5 /
JJ#
/0
hac JLhwac J4a'
]h!
aa"<
!4#$gGK$6$=BD$'7# F8$g$'+h$;GKFfF3=+-GC77,/4+>Z
TbF(*I4,/'+Vd3=,/2GU.3?;(*$'F3?2GU,/+-F$'3?+-24GU2b1$X2.F,/(*,/e7,/4+_!#$XGK$X.#$'1$'+V$'GC.$'7,/]73
724+h$'& 72(*+-120/gk
a\L
M\V i P V
, BDH&/H$'GCF8,/(*7,/+1$'&24.F,/(*,/e123U1$'&724GCF8$f1$g#+-H.0A,/+-H1$1,/GK72_&/$'/1g+-2%GC$'c
79#$;+-79,/^&/(*$'+-F8$4Z i GK2LGC$X(*,/1$Q72(*2L#+E(*&/F8,/.&/2L1$;&724GCF$Q1$X#+-6&/$'7F8#3?1$w.^A,/+-
GK$;79#$;+-79,/^&Z
float8
P6M)V )bM i P V
, BDV&/b$'GCF8,/(*^79,/+!4#$b:-3?b$'&424.0F8,/(*,/e1243a1$;&72GKF$H1$f.3J247$'GC3U79^1HF8#.&/L1#c
3=+-F$#+-72+-GC#&/F-Z i GCF82GC$(*,/1$792(*2#+-W83?77C,/+1$'&w792GCF8$1$#+-&/$;79F#3?
GK$;79#$;+-79,/^& 1$#+-H.A4,/+--Z
, B*$'&a724GCF$1$.3?27$'GC2@1$PQM!)
$;GK.0$'7,/]712Z
float8
P6M)V i )LM i P _
P6M)V M i
\ aP _
, BL&/b$'GCF8,/(*7,/+!#$H:-3?V$;&2.F8,/(,/e123a1$'& 72GCF8$H1$H.3J247$'GC;3a79^1b24.$;3=123
$'+"#+-f7&/#GC#&/f hi i Z i GCF82VGC$(*,/1$6792(*2E#+-gW3?77,/4+"1$;& 724GCF8$61$#+"77$'GC2
GK$;79#$;+-79,/^& f#+-H.A4,/+--Z
, BDf&/$672GCF8$g1$QP6M).03=6.3J279$;GK^3)7162.$'3?123)^& d ^&/2431$.0#+-F2 2F8+-F$
$;GK.0$'7,/]712Z
float8
xx
i h\L i i V P6\H
I4,/&/,/FH2",/+-:-I4,/&/,/FL$;&#GC2%.23
$'&4.&/+-,/]7123
1$gF,/.2GQ1$f.&/+-$'Gw1$gI43?3=,/12_GC$'c
79#$;+-79,/^&Z=58h2_$;G>.24GC,/I4&/$gGC#.3?,/(*,/3U72(*.&/$'F(*$'+-F$&/2GaI43?3?,/12G
GC$;79#$'+ 79,/&/$;GCR^.$'3J2
1$'GC7F8,/d;+-12$;GKFEd3?,/I4&/$bGC$V1,/GK#1$L&0.&/^+-,/]7123w1$L#F,/&/,/e3w#+-21$L$'&/&/2GgGK,
1,/GK.024+-$g1$624F3J2E(*'F212E#F,/&/,/eI4&/$'<`Z
I4,/&/,/F8H$'& #GC2%1$6I43=3?,/12G
GK$;79#$;+-79,/^&/$'Gw58d&/23U1$1$'W8$'7F24<`Z
4
+-:-I4,/&/,/Fb$;&#GK2_1$I43?3=,/124GaGC$'7#$;+-7,/&/$'GZ
i h\L i i
P6\V
I4,/&/,/FL2",/+-:-I4,/&/,/F8L$'&#GC2".23a$'&.&/+-,/]79^1243>1$bF,/.2GQ1$f.&/+-$;GQ1$fI43=3?,/12%1$
/+-1,/7$'GZ
I4,/&/,/F8H$'& #GC2%1$6I43=3?,/12G
1$/+-1,/79$;Gw58d&/23U1$61$'W8$'7F82<`Z
4
+-:-I4,/&/,/Fb$;&#GK2_1$I43?3=,/124Ga1$+-1,/79$;GZ
i h\L i P6\V
I4,/&/,/FE2,/+-:-^I,/&/,F8E$'&-#GC2j.23Q$'&0.0&/+-,/]791243w1$bF8,/.2GfF,/.2G1$L.&/+-$;Gg.0243XI4c
3=3?,/12 Z
I4,/&/,/F8H$'& #GC2%1$6I43=3?,/12G
4
i h\L i
I4,/&/,/F2,/+-:-^I,/&/,F8$'&U#GC2.23b$'&>.0&/+-,/]791243f.GC2G_1$j23?1$;+-7C,/+$'N.0&//7,/F8-Z
5"2H$'GU.2GC,/I4&/$QGC#.3?,/(*,/3.23792(*.&/$;F82b&/GU23J1$'+-7,/2+-$'G)$;N.&/,F8,/FGCR;.$'3J2H]NBD+-12b$'+
x^n
4
$;GKFfd3?,/'I4&/$g1,/GC#1$Q& .&/+-,/]7123U1$#GC3U#+-2_79#^+-12_F,/$'+-$g2F83J2V(*'F2412
#F8,/&/,/eI4&/$4Z <
I4,/&/,/F8H$'& #GC2%1$6243J1$;+-7,/24+-$'G
58d&/23U1$g1$'W8$'7CF24<`Z
4
+-:-I4,/&/,/Fb$;&#GK2_1$23J1$'+-7,/2+-$'GZ
i h\L i ^ i V M
I4,/&/,/Ff2_,/+-:-^I,/&/,F8f$'&#GK2_.23)$;& .&/+-,/]79^12431$Q.&/+-$'G
1$BD24,/+h1$QI&/#7&/$^+-,/1c
12)Z95"2$;Gg.2GC,/I4&/$VGC#.3=,/(*$;3Q.0243X724(*.&/$;F82j&/GUB2,/+-Gg1$LI4#7&/$V+-,/1^124R .$'3J2h] BD3
$'+ $'GCF8Vd ^3=,/I4&/$H1,/GC#1$b&0.&/+-,/]7123w1$L#F,/&/,/e3w#+-21$b$'&/&/2GgGC,1,/GC.2+-$
1$2F83J2E(*;F8212<CZ
I4,/&/,/F8H$'& #GC2%1$)B2,/+-GX1$I4#79&/$g^+-,/112V58d &/23)1$1$;W$;79F2<CZ
4
+-GC:-I4,/&/,/F8H$;&4#GC2E1$>B2,/+-GX1$6I4#79&/$g^+-,/112Z
i h\L i i
i $
I4,/&/,/F8f2_,/+-:-I4,/&/,/F8b$'&#GC2E.0243U$'&.&/+-,/]79^1243U1$.&/^+-$'Gw1$gF8,/.2_$'+-&/7$,/+-F$'3J7c
&/125(*$;3JA$=BD2,/+-<`Z
I4,/&/,/F8H$'& #GC2%1$6$'+-&/7$'G
,/+-F$'3J79^&/12Ga58d&/23U1$61$'W8$'7F24<`Z
4
+-:-I4,/&/,/Fb$;&#GK2_1$$'+-&/^79$;Gw,/+-F$'3J7&/'124GZ
i h\L i \ $
I4,/&/,/F82@,/+-:-I4,/&/,/F$'&
#GK2.23b$'&
.&/^+-,/]7123H1$j.&/+-$;G_1$F8,/.2$'+-&/7$j:-GC:
5:-^GK:BD2,/+-<`Z
I4,/&/,/F8H$'& #GC2%1$6$'+-&/7$'G
:-GC:h58d ^&/243)1$g1$'W8$;7CF82<`Z
4
+-:-I4,/&/,/Fb$;&#GK2_1$$'+-&/^79$;Gw:-GC:
Z
i V
, BDH$'&.23J79$;+-F8CBD$1$6#GK2E1$'& &/A4243?,/F(*2%A$;+-'3?,/792V1$'&2.F,/(*,/e123=Z
I4,/&/,/F8j$'&U&/A423=,/F(*2A4$'+-;3=,/721$'&U2.F,/(*,/e123f.3=h,/+-GCF83J#77,/24+-$;GE72+
FI4&/G
2E(*^GZ`5 i GCF$$'GaF8^(*I,/;+h$'&d ^&/243)1$1$;W$;79F2 i \J)V <CZ
x
4
+-:-I4,/&/,/Fb$;&&/A23?,/F8(*2_A$'+ '3=,/72_1$'&24.0F8,/(*,/e1243=Z
?_4?sLt4?}?% DVq^sYV ?}>5 .F8,/(*,e123
1$H&/LPQ24+-GC#&/F , B^12".243aPQ&/d$'<&/&/$;d b&
.&/+-,/]79^1243)1$g&/H72+-GK#&/FHH724+-d$'3?F8,/3U!#$'&/&/^Gw72+-GK#&/FGX7#T4Gw7&/#GC#&/G
hi c
i ,/+-7&/#T4+(*#7:-G
7&/#GC#&/G @TE\V
58F8^&/$'G
792(*2E hi i 58 g\V
I ^<
Z i GCF8$($'F8212V.#$'1$QGK$;3U(*
G
3?c
58 \V
I <UZZZ <$;+"#+-f724+-GC#&/F8
)V
.&/$'(*$;+-F87,/+%1$X1$'W8$'7F24RS.$'3J2b+-2L+-$'7$'GC3?,/(*$'+-F$Q.03?21#7$Q$;N^79F'c
.,/12b!#$6&/,/(*
(*$'+-F8$L$'&-(*,/GC(*23J$;GK#&/F12R.#$'GCF2!#J
$ )V ,/(*.&//F,/F8($'+-F8$L-1$b#+-E7&/#c
GK#&/ i i P
hP .^3=h$'&/,/(*,/+-3H&/GV]&/GV3J$'GC#&/F8+-F$'GL!#$jGC$'^+ ,/1$'+-F,/7GZ
5 NV GK$Q#F8,/&/,/e 6:-I4,/F#&/(*$'+-F$67#+-12LGC$6F3=^I?BDg724+%.3?21#7F82GU72(*2 ,/73J2 24W8F
\V77$'GCGKR'!#$gF8,/$;+-1$'+hfA4$'+-$'3?3)&/G
792+-GC#&/F8Gw1$$'GCFfW8243?(*-Z
I4,/&/,/F8H$'GCFf24.0F8,/(*,/e^79,/+
Z
4
+-:-I4,/&/,/Fb$;GCF8H2.F8,/(*,/e^79,/+h58d ^&/243)1$1$;W8$'7F82<`Z
i \J)V
i !#,/d ^&/$'+-F8$gg$'GC.$'7,/]79^3h/W"4/!1h#h4Z
Outputs
SET VARIABLE
x^
Descripcin
/(*21,/]793?g&24G
.3?'(*$;F83J2G>1$672+-]A4#3?7,/4+".3?6&/d3?,/I4&/$X1#3=^+-F8$X#+-gGC$'GC,/4+
Z
2GHd&/243J$;Gf$'+d,/A23GC$E.#$'1$;+2I4F8$;+-$'3#F,/&/,/e+-12$;&/!h
#
R T*&/24Gfd ^&/243J$'Gg.#$'1$;+
1$'d2&/d $;3=GC$
wGC#EGK,/F#7,/4+L1$a1$'W8$S7F2H#F8,/&/,/e^+-12H!
/ fZ&/23J$'GTb.3?'($'F83J2GGC2+_GC$'+-c
GC,/I&/$;G>(*^TGC7#&/GUTV(*,/+-GK7#&/GZ="4F$'GC$6!#$Q$'&79(*.024^M d ^&/243Q
N GK,/$;(*.3J$QGC$Q$'GC.$'7,/]7
724(*2_#+-H791$'+-g1$679^3=7F$'3J$9GKR1$6(*2412_!#$gGC$g$'+-7,/$'3?3?f$'+-F3?$6792(*,/&/&/GaGC,/(*.&/$'GZ
/a
ahh7(*I4,/H&/fGC,/A4+-7,/4+j1$ge2+-f:-23=^3=,/H1$61$'W8$'7F82V1$g&/HGC$'GC,/+
Z )L+-
GC$'GC,/4+ N GC,/$'(*.3J$V$'(*.0,/$'e_72+*#+d &/23X,/+-,/79,/^&01$VGC,/A4+-7,/4+*1$Le24+-V:-243?3?,/-Z;
,/+-GCF83J#779,/7
+ /a S
a"hGK$b#F8,/&/,/e^E.3?V7(*I4,/3w&/E^GK,/A4+-7,/+*1$Le2+-E:-23=^3=,/
.3?g&/fGC$'GC,/+ N 7F8#&Z
Notas
f,/+-GCF83J#77,/4+3/
$'Gw#+-g$'NF$'+-GC,/+1$;& &/$'+-A4#`B$g1$M24GCFA3J$'GZ
variable
a$;]$;3=GC$/!h#T"/.^3=(*24GCF3=3U2E,/+-,/7,/&/,/e^3U&/2GXd&/23J$'G
7F8#&/$;GZ
Uso
, BD3)$'&$'GCF,/&/2E1$g&/fW8$;79:-f N k
SET DATESTYLE TO ISO;
, BD3)&/He2+-f:-23=3?,/fH$;3t-4$'&/$'TR'PQ&/,/W8243?+-,/-k
SET TIME ZONE PST8PDT;
SELECT CURRENT_TIMESTAMP AS ahora;
ahora
--------------1998-03-31 07:41:21-08
x
Compatibilidad
SQL92
h2f:-^T%/
A4$'+-$;3=&'$;+ N w58724+L&/X$;N7$'.7,/+V1$(/
V#/V
?h
/hw
?h variable
!L<?Z'EGC,/+-F,/Gf1$ V.3?/aSahh$'Gg&/,/A4$'3?(*$'+-F$
1,/W8$'3J$9+-F8$'R-!#$h.0$'3?(*,/F8$%GC4&/2#++-,/72d ^&/243g$'+-F$'3J2.^3="&/h$'GC.$'7,/]79^79,/+1$E&/he2+-
:-243?3?,/-k
SET TIME ZONE { expresin_de_valor_del_intervalo | LOCAL }
SHOW
Nombre
SHOW
Synopsis
SHOW palabra_clave
Entradas
palabra_clave
Outputs
NOTICE:
NOTICE:
Unrecognized variable value
x^
Descripcin
/!h#
Notas
Utilizacin
#$;GCF83?g$'&$'GCF,/&/2E1$gW8$'7:-5
<?k
DateStyle
SHOW DateStyle;
NOTICE:DateStyle is Postgres with US (NonEuropean) conventions
Compatibilidad
SQL92
h2E:-^TE+-,/+-A4+/h#1$']+-,/12E$;+ -Z
TRUNCATE
Nombre
TRUNCATE
n
7,/f#+-HF8^I4&/
<Ck
geqo
Synopsis
TRUNCATE [ TABLA ] NOMBRE
Entradas
nombre
Salidas
TRUNCATE
Description
Lhw
%3J$'(#$;d $w3?.,/1^(*$'+-F8$wF241G)&/GU]&/G)1$w#+ FI4&/-Z ,/$'+-$X$'&(*,/GC(*2V$'W8$'7F2
a
!#$%$'&Uha.$'3J2&+-23?$;7243?3J$S3g&/hF8^I4&/j3J$'GC#&/Fh(*^Gb3=^.,/12)Z i Gb(*GH$'W8$'7F8,/d2*$'+
F8^I&/^GaA43?+-1$'GZ
Usage
3J#+-73&/HF8I4&/
tablagrande
Compatibilidad
SQL92
& a6Vhw
+-2E$',/GCF8$g$;+ N 4Z
i
n^l
UNLISTEN
Nombre
UNLISTEN
Synopsis
UNLISTEN { nombre_notif | * }
Entradas
nombre_notif
Salidas
UNLISTEN
Descripcin
Notas
n
Usage
)V+-d
3=^124Gk
$;eg!#$
)Lh -i GC$:-f$=BD$'7#F12R'.2GKF$'3?,/243J$'G
72(*+-12Gw @GC$'3?+%,/A4+-2c
Compatibilidad
SQL92
h2E$;N,/GCF$gVh/a$;+ Z
UPDATE
Nombre
UPDATE
Synopsis
UPDATE tabla SET columna = expresin [, ...]
[ FROM lista ]
[ WHERE condicin ]
Entradas
table
n^m
columna
expresin
)V+-f$;N.3J$'GC,/+hd
tabla
lista
i G
#+-g$'F8$;+-GK,/+h+-2V$'GCF8+-1^3)1$6M24GCFA3J$'G
!#$6.$'3?(*,/F8$Q&/f.3[,/79,/+h1$672&/#(*+-G
1$2F83?G
F8I4&/^Gw$'+"&/H72+-1,/7,/4+j hi i Z
condicin
P62+-GC#&/F8$j&/j7&/#GC#&/ i i P .3?h#+@1$'GC73=,/.7,/+(*GL$'F$'+-GCj1$"&/j7&/#GC#&/
h
i i Z
Salidas
#
UPDATE
Descripcin
haah7(*I4,/6$'& d&/231$6&/792&/#(*+^G>$'GC.$'7,/]79^1'G
.23UF21G>&/G>]&/G
!#$GCF8,GKW8c
V
7$'+&/L724+-1,/7,/+*114Z 24&/^(*$'+-F8$H+-$'7$'GC,/FV,/+-1,/793
&/G6792&/#(*+-G6!#$bGC$'3=^+(*21,/]79^c
1GZ
M3=g3?$;W8$'3J$S+-7,/GwH&/,/GCF8GQGC$f#GCH&/L(,/GK(*bGC,/+-F8^N,/GQ1$
=
=
o AZ GC$'^R.0#$;1$gGC#I4GKF,/F8#,/3
#+h+-,/72"$;&/$'(*$'+-F2%1$g#+-H&/,/GCF8^RN#+j3=^+-A2_1$g$'&/$'(*$;+-F82GQ2E#+-b&/,/GCF8b72(*.&/$'FH792+j#+-
+-,/7f.$'F,/79,/+
Z
$'I4$gF8$;+-$'3
.$;3=(*,/GC2"1$g$;GK73?,/I4,/3
$'+j&/bF8I4&/H.^3=H.21$'3>(*241,/]73?&/RGC4724(*2%.$;3=(*,/GC2
1$&/$'7F#3=g1$g7#^&/!#,/$'3UF8I4&/f7#T424Gwd &/23J$'G
GC$'+h(*$'+-7,/2+-12GX$'+h&/H724+ 1,/79,/+j hi c
i Z
Uso
M3=7(*I4,/3)&/f.&/I43?f
3?(*.23>
UPDATE pelculas
SET categora = Dramtica
WHERE categora = Drama;
SELECT * FROM pelculas WHERE categora = Dramtico OR categora = Drama;
code |ttulo
|did|fecha_prod|categora
---+------------+--+-------+-------+---BL101|El tercer hombre |101|1949-12-23|Dramtica
P_302|Becket
|103|1964-02-03|Dramtica
M_401|La paz y la guerra|104|1967-02-12|Dramtica
nx
|durac
| 01:44
| 02:28
| 05:57
T_601|Yojimbo
DA101|Das Boot
|106|1961-06-16|Dramtica | 01:50
|110|1981-11-11|Dramtica | 02:29
Compatibilidad
SQL92
^g1$']+-$#+-HGC,/+-FN,/Ga1,/W8$'3J$'+-F$.3?g&/g79&/^#GK#&/])LM
\ i k
12+-1$
cursor
VACUUM
Nombre
VACUUM
Synopsis
VACUUM [ VERBOSE ] [ ANALYZE ] [ tabla ]
VACUUM [ VERBOSE ] ANALYZE [ tabla [ (columna [, ...] ) ] ]
Entrada
i
i a _
(*.3?,/(*$g#+h3J$'.23=F$1$'F&/&/12V1$&/g7F8,/d,/111$6d ^79##(
.3?g71F8^I&/ Z
\V"\V^ Xi
\V7F8#&/,eg&/G
$'GCF1/GCF,/79^G>1$724&/#(*+-Ga#GC1G
.23U$;&42.F,/(*,/e123U.03=1$'F$'3?(*,/c
+-3-&/X(*^+-$'3?w(*G$']79,/$;+-F8$a1$a$?B$;79#F3 #+-X792+-GC#&/F8-Z[^G$;GKF1GKF,/7G3?$;.3[$'GC$'+-F+
&/L1,/GK.$;3=GC,/+1$g&/2GQ1F2GQ$'+j79^1H792&/#(*+--Z i GCF8b,/+-W8243?(*7,/+$'Gwd ^&/,/24GCb79#^+-12
:-TE&/H.024GC,/I4,/&/,/111$g$?B$;7#7,/+h1$'GC1$d3?,/24Ga.#+-F24GZ
tabla
n^n
columna
Salida
VACUUM
i &792(*+-12_:-HGK,/12E7$'.F'12ET%&/HI4GC$61$1F24Ga$'GCF8gGK,/$;+-12E&/,/(*.,/^1-Z
tabla
NOTICE: Pages 98: Changed 25, Reapped 74, Empty 0, New 0; Tup 1000: Vac
3000, Crash 0, UnUsed 0, MinLen 188, MaxLen 188; Re-using: Free/Avail.
Space 586952/586952; EndEmpty/Avail. Pages 0/74. Elapsed 0/0 sec.
i &+-&/,/GC,/Gw.^3=&/
tabla
(*,/GC(*-Z
NOTICE: Index indice: Pgina 28; Tuples 1000: Deleted 3000. Elapsed 0/0
sec.
Descripcin
Notas
fI4GC$1$61F82G
I4,/$'3?F8g$'Gw$;& 24I;BD$'F,/d 2E1$'& 724(*^+-120UVL] Z
a$;792(*$'+-1^(*24G!#$V&/_I^GK$b1$V1^F82G6.3=,/+-7,/.^&07F8,/d_GC$'V&/,/(*.,/1_71_+-279:-$L.3?
(*+-F$'+-$'3g&/GH$'GCF81GCF8,/7Gb3J$'&/^F8,/d'(*$;+-F8$"7F8#&/,/e^10GZ ,/+@$'(*I43JA2R-&/j724+ GK#&/F
UV
VJ
.#$;1$gGC$'3>$?B$'7#F1f$'+h7#&/!#,/$;3>(*2(*$'+-F2>ZCM^3=F,/7#&/3=(*$;+-F8$'R'1$'GC.$'Ga1$g724c
.,/3U#+ V7&/GC$fA3?+-1$f$'+jM24GCFA3J$;GQ2"1$'GC.$'Gw1$fI23?3=^3
#+A43=^++-(*$'3J2"1$f3J$'A4,/GCF83J2GCR
.#$'1$hGK$;3L#+-I4#$'+-,/1$'$;(*,/F8,/3b#+-72+-GC#&/F8
UVL]
Z i GCF82^79F#&/,/e;3=&/2G%7c
F8^&/24A424GV1$'&)GK,/GCF$'(*72+F8212G_&/2GV7(*I4,/24GV3J$'7,/$'+-F$'GCR0T.$'3?(*,/F,/3=h&U23JA+-,/e^123g1$
724+-GC#&/F8^G%1$jM2GCF8A43J$'G%F24(*^3L&/GE(*$=BD243J$'G_1$'7,/GC,/24+-$;G%&
.&/+-$;3b&/^GE72+-GK#&/FG%1$j&/24G
#GK#^3=,/2GZ
n
Uso
i & GC,/A#,/$;+-F8$g$'Ga#+h$=BD$'(*.&/2_1$&/f$=BD$'7#7,/4+h1$;&472(*+-12>LV]$;+"#+-HF8I4&/f$;+"&/
I4GC$1$1^F82G
1$g3J$'A3J$9GC,/4+
k
regresin=> vacuum verbose analyze onek;
NOTICE: -Relation onekNOTICE: Pages 98: Changed 25, Reapped 74, Empty 0, New 0;
Tup 1000: Vac 3000, Crash 0, UnUsed 0, MinLen 188, MaxLen 188;
Re-using: Free/Avail. Space 586952/586952; EndEmpty/Avail. Pages 0/74.
Elapsed 0/0 sec.
NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 3000. Elapsed 0/0 sec.
NOTICE: Rel onek: Pages: 98 -> 25; Tuple(s) moved: 1000. Elapsed 0/1 sec.
NOTICE: Index onek_stringu1: Pages 28; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
NOTICE: Index onek_hundred: Pages 12; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
NOTICE: Index onek_unique2: Pages 19; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
NOTICE: Index onek_unique1: Pages 17; Tuples 1000: Deleted 1000. Elapsed 0/0 sec.
VACUUM
Compatibilidad
SQL92
h2E$;N,/GCF$$'&724(*^+-12UVL4
$'+ N -Z
n^
n
!J&JP\\!]x4tJ&PL!&!]P%!
b
createdb
Nombre
createdb
*]]'!'!P(PGb,z4
Synopsis
createdb [ options ] dbname [ descripcion ]
Inputs
P G host
!]\! PG PGb\C!%\JGP
%%,]t
!P' postmaster
Pt port
G,*,tbS (c6bLT3IPZ!,! W!3L!,
!\0P44,3 postmaster ,Gb%! ]h
cP
G,t\ username
4\VP
,*b
7 #
,'#<
,
Y4JbV createdb ,4#4\PP(!JJ%%!P
,!
,
#\bt]]
J b datadir
*P#,tb
!&]G&!'!bPOt,Gb#!'
G'!
!bG!%<]PP3]<b(!,,\ %*P
!'b'!
!bPO,G,!
C!'!b
,*P! encoding
!GC!,!,G\!4P!*P!4x
V4GtP
!'!b
dbname
!P\!0GVP]0**!!!P\!V
*VbLP!O!'!bPOP,z43,,Gb2!PPC
\P0h,!'L!<!bPP\\VP\&LIJt
!z\
description
C*P\,%*J\\,#44GP!#V%
! P\b
,!
!C*P -h -p -U -W -e P3CG!O,t\'
Outputs
!'!'P(',!,cb\,
CREATE DATABASE
V!'b
!P\tnz*P7tJV%!J!P&4 P!!#G,L*!
!LG(!<!b\G\'P!t ,!J*,!&!, !IP\!
z4
!#"%$ &' $)( *
&+*-,.*-/%"3
P\b!,GC!,I
z \W,tP&7!*P ,!,tP&!,\b
!4GVP!
\bt!
0!,G 21.3465%37865:9;:<+3 t\(P!!
Descripcion
%VJG]!%!bLPGb,z4<!!%tJbJ
createdb
\
!4
*P
,,z,4!
'!&!P
JG h#,!,Y\!z4 21.3465%3=7865>:94:<+3
%createdb
<!,b\b 0!]c4 ?JG #!J
<,*P4!!!O!bPbVbn\P!PGb]<( psql
!P!CGc(JG,t!PC!hGOO!P<b,*b!P
J PGb!bI\ !,CP!*P4C!
]
!'PtV! psql ],t'P , libpq
Uso
t',n]'!'!P
$ createdb demo
CREATE DATABASE
AB
demo
b!4Pt!PhC!bV!
&!'!b@
!&,GC!,Gb&
\\ ,G,hV!Ltn,c\!4!Lz4EFG"%*-H
&2"E( *2&I*-,.*-/%"O
t4\G!!b demo !Yb\V,6\\7
! C!,tbK
JLLL !\J!
!P LATIN1 34\!],
b]G !M @
$ createdb -p 5000 -h eden -E LATIN1 -e demo
CREATE DATABASE "demo" WITH ENCODING = LATIN1
CREATE DATABASE
createlang
Nombre
createlang
bc4
!'
b'!'P\P]'!'!P
?ON
Synopsis
createlang [ opciones_conexion ] [ nom_leng [ nombre_bd ] ]
createlang [ opciones_conexion ] -lista|-l
Inputs
createlang
b
P(b<\b@
langname
!*#hP\#!,b0!0t\T!,,U##3
!! createlang bPJP langname GP4!!\VRQ
!'\!
S !\UT
nombre_bd
!GC QW V
'!
PG'
N!P
Y''
&Phb,O&Gb!Ph
L&!b!4
!&!2
\R V,C<Pb\bVLRQL!(\!PP\
createlang
P\,P(!&*PI.@
A
P G host
!!\! PG!XPP postmaster YP#
t!n
b port
!GC!'zV (zzP!z\J%,0P', postmasYPb!,cP
ter
\' username
4#P!'G&]P2
7 #
!b',G#P<
Outputs
! J\PQJ!%P&\JJhGP\#!b\b4,cbP*c#&ZQ
t
*PP*P
T,OP\!Tc4Z
XPcreatelang
O!b2'b\RV#-echo
[U
hXPOP!!,I
Descripcin
'b!Wt4 N!(\,4!J\P
createlang
L!<!bPh!PcVW?4b\b createlang t,4b'!Ph@
plsql pltcl
?4#!2b,!#t\Y!,h* !Y% N!!P4!
\bJ!#t&\!&c4 G%\,!4 createlang
#!# ,PWVX
P4\ P*!t; 0! . 123;65%3^]_a`-b:c%:b3 3X
P
\h
Notas
t'
pltcl
$ createlang pltcl
A
createuser
Nombre
createuser
bc4
Synopsis
createuser [ opciones ] [ nombre_usuario ]
Inputs
P G host
!GC!,P\
! PC!'XP%GP'
, postmaster *P
b puerto
!#,b\ (cY\,P*n43P0!0 postmaster
,!'O,cP
,
U,Gbt
(P!O createdb t
+Q
z,<
,
#\bt],Gb
,,!
!,t\b
zO!'P
J ,,!
\!
ztV,n('!b
!G,
!,t\b
zPP(PI
? !!
\!
ztV,nbO!tP
#P\
cV*,GbV P\,
\b P7\V!
!,c#IJ tcreateuser
nt!bJVh,*,Gt%zJ,'n,
#Ph#P(
id_usuario
!&,t\b',P4&tV
V
P&G&!Pb!bV
4OOb
Ag
G,*P\!GtW!PcV6!G3,2P!b3\
! &ih!b!&P!OP<IbO#bc4T
z&!bPPh\
0!,hP]\P3 ]
*V#
R Q]!&*P\!P
!C*P -h -p -e P3<b\b' [ !OP psql -U -W
\RV,0
!0 ,4C!,!'#b'bIn
nombre_usuario
Outputs
cP! !V
CREATE USER
4V2!PtV
,!
z&!&0 c\,GL!&,tP!!I*0&\PGbP0! 21.34:1jcD<kcl:1.mn
X
PO!
createuser: creation of user "username" failed
Descripcin
#VGPcVT2cP\b
P(O*P
*b!40#] pg_shadow !,0*,n(!P(PGb,%usesu
!PPt% ,ItIb%*P\!z4 21.34:1=c8<ic%:o
createuser
12
mn %+
VL!,b\b !%PcV ?J> Q #!4,G,
T,\P\W!*,'tP4P
\!7!0,GbPVPbPJX
Vb!Pc!b7
psql !OP!0POG#J%!!%(!]!P
PLPt!JV'X
P
&<*,!p ?4\\ !P!n!,
!,h'!&P!P]Ct psql libpq
createuser
per
Uso
t',n#!
joe
#]'!&!PO!,*bk@
$ createuser joe
Is the new user allowed to create databases? (y/n) n
Shall the new user be allowed to create more new users? (y/n) n
CREATE USER
JLLUL
Aq
dropdb
Nombre
dropdb sr
t
!'!bPOPGb,z4Ib
Synopsis
dropdb [ opciones ] nombre_bd
Inputs
P G host
!GC!,h\3! L!#XP33 postmaster ,GYV
*Pt,!
Pt puerto
!'I% (c#J4I,c postmaster b!
*PI,
G,t\ nombre_usuario
#\
!&GV*P#P
,*bt
7 #
P!*P3'#G#P<
,
U,Gbt
#bb< dropdb ,t
+Q
z,<
,
#\bt],Gb
,t*b
?4b( !b!b !'Pt\P3
+
V!PP\2
nombre_bd
!GC!,P\'!
G,O
!P
t! &G,h!
cbb(,,b!'PGb,z4T
!C*P -h -p -U -W -e
G0\,
A
Outputs
!'!'P
G!PtV,cb
DROP DATABASE
4 ]!
zGOP!h4 O\PP(\O!,tP!,,(u0!(!PWvC
X
PO\
dropdb: Database removal failed.
Descripcin
!,Gb&!&!'P!PcVcbbt!PV&t!b',Gb
dropdb
\!&G,#tV!']'!&!bO3,n
&PPt! C*CP(!P\!#cV\!wvC
dropdb
PL\!Cb\,t *b 4bc4< 4bV\! !
VPt!n!<!PP!\!%!<bLbx
VP!PI!%
psql !hbt!0O,#%3G,t!PO!L!!P<Y P
Y\ Y, &!nPc\R V, ,%PJP]!7S
t,
!',Pt!
t psql libpq G&
Uso
t'!b'!
!P
demo
,,,t!P!
G,O'!bOPh!*l@
$ dropdb demo
DROP DATABASE
t'!b'!&!P
!4PP\bh!, C -JLLL
#!P0 #demo
b
],#\ I @
$ dropdb -p 5000 -h eden -i -e demo
Database "demo" will be permanently deleted.
Are you sure? (y/n) y
DROP DATABASE "demo"
DROP DATABASE
droplang
Nombre
droplang sr
AA
Pt
b&!
P\P!']'!'P(PcV
Synopsis
droplang [ opciones de conexin ] [ nombre_lenguaje [ nombre_bd ] ]
droplang [ opciones de conexin ] -list|-l
Inputs
droplang
'(bO\,V#RQ,]!'\!@
nombre_lenguaje
G,*O\!,O,!P\,*P6!,*6
t2 droplang P# nombre_lenguaje hS !
0]R Q,!'P\!PI
S !\UT
nombre_bd
!GC!!,!'W V
'!
PG'!'Ptz
Y444!%P'b,&4Gb!P&4]!J!P&!#
!&!2
\R V,\V
b
\,P,\RQV!4\!
\
droplang
P\,P(!&*PI.@
P G host
!GC!,P\
! PC!'XP]
Pt postmaster
Pt puerto
!GC!,C!,tb4 (zVPPPGP'z postmaster ,!'
*PI,I
G,t\ nombre_usuario
#\
!&GV*P#P
']bt
7 #
P#!
#G#P<
Outputs
!\Q0!VP%\]!tP&I7&>QnPIc!\]G th,
*PUP*
S\#2bW\ScVZPt,GP!,t
droplang
X
P!b2Y'\R V-echo
0
Ay
Descripcin
,<tOtC4!2b(!(P\,VIGbb(J&
droplang
&!<!bbc4< droplang *b\b&*,L!P!2b,z@ plsql pltcl
?43P,!3P\P *6,!UJPt!PV!
\bLb!JhP\!Phz4 h\,!(G droplang L
(P\P]nX
P P!OG2{0! 7O1.n-|a]U:`-b:c%:b3 (XPn!b
Notas
t'
pltcl
$ droplang pltcl
dropuser
Nombre
dropuser sr
Pt
Gt4b
Synopsis
dropuser [ opciones ] [ nombre_usuario ]
Inputs
P G host
!GC!,OP\! PL!XPU3, postmaster G#P
tb
Pt puerto
!*3bW (cZP<hP0h postmaster
*PI,
,
U,Gbt
#bb<
,
#\bt],Gb
A}
createdb
+QP<
,t*b
?4b('P!
!b
nombre_usuario
G,*]PP\!'!PcV]]hPt!n!
P\
!VI',S0*PSPcPSP\Gn\G
*V#R Q]!'P\!P
psql -U
-W
Outputs
cP! !V
DROP USER
?4# Pt!4Ptn
!G!0WtP \,G2b!P'!!,YP0\bt!0!
cD<3%1 Ct
X
P!!,I
dropuser: deletion of user "username" failed
7-1.n-|
Descripcin
thGPcVI,~]OO!
!bO
tdropuser
4Pc&(GP(P usesuper b!V,
*G pg_shadow C!
!0!,GbhO!'PGb,z4<
,<b0!P G,!P\!c4 7-1.n-|c8<+3%1
dropuser
PL\!Cb\,t*b 4bc4< 4bV\! !
VPt!n!<!PP!\!%!<bLbx
VP!PI!%
psql !hbt!0O,#%3G,t!PO!L!!P<Y P
Y\ Y, &!nPc\R V, ,%PJP]!7S
t,
!',Pt!
t psql libpq G&
Uso
t'
joe
!z!Ph!'!&!PO!2l@
$ dropuser joe
DROP USER
t0Pt
n!t
!nb\,T P<,! XJLLL *P
tP0 !Vjoe
V]
*P],Gl@
$ dropuser -p 5000 -h eden -i -e joe
User "joe" and any owned databases will be permanently deleted.
Are you sure? (y/n) y
A
ecpg
Nombre
ecpg
Synopsis
ecpg [ -v ] [ -t ] [ -I include-path ] [ -o outfile ]
Inputs
ecpg
'O,\PO0RQ,]!'\!@
file
Outputs
ecpg
*,P#! VP,
stdout
G!P!
Descripcin
pgaccess
Nombre
pgaccess
yB
b'P!VbV!PGb,
Synopsis
pgaccess [ dbname ]
Entradas
dbname
!P\
!']''!bOIb
Salidas
Descripcin
P'!]
P*'
bO!P!'
!,0,GbP
pgaccess
,!t hb ,**OP
b\!&*,!bObt+V!'bP(P#PGV! ZfI\ ZfM[
\@
pgaccess
?4,hO!
!bO##!b\! ,*!V! P
G
zCtb #P4*! ,P\'!
G#P<
cOcl
zG
!nx(,0P ~/.pgaccessrc
#\b!'bt!'
'
W U
4P> b!P(\
bP!'\\,P%*\]
P%,'
!GC!',nP!M
P!,*P
I
P&PIbV,,\O\t
!!PM
P!
#P
],*
r PtGbZ W
?-N!,P(,bPZ n!,VGbVP3,zb! 4!zb
b#Gbb
,\h!Pb
\PYGPJ !!7Pbt P\T
P(\P Q!
P#*P
pgaccess
\@
y
,!b!4!']PGb]!',*P3b2
zb<!&*P#G,t !b !,,
']!7b'!!V]7P!E
G!'b
0
pgadmin
Nombre
!PO t\,'!_NV\b\xV!'!
!pgadmin
b !#
J;c#
Synopsis
pgadmin [ nombre de datosfuente [ nombre de usuario [ palabraclave ] ] ]
Entradas
nombre de datosfuente
!P\(!OVGb
!r PGb,z4Ib( Pb(!4
nombre de usuario
40P\&!LGt4+P!J
I!
nombre de datosfuente
palabra clave
477\+Pt\<*
nombre de usuario
nombre de datosfuente
Resultados
Descripcin
!btOc43PtI
b&!]\P\?L!ZCtJ&!%!b b ! G,*,
Gb P\!'t P<V
bObt4P P<Vt
PPP!
GP##\tPt]!&#!&G2
P!'(b!'YPYz P
yg
L!t'\bhI!PI
?L!M
\t r !'!P
\!!P]7!V!b Q !*, %
?
GVGb4t,!\b4!J'C!4<!z!!!%
!pgadmin
P b
@ !c##0 !\ ,G,t n
Notas
b
@ !c# !\ ,G,t n
pg_dump
Nombre
pg_dump
!cbt&]'!&!PO!PO#! V!'t
Synopsis
pg_dump [ base_de_datos ]
pg_dump [ -h husped ] [ -p puerto ]
[ -t tabla ]
[ -a ] [ -c ] [ -d ] [ -D ] [ -n ] [ -N ]
[ -o ] [ -s ] [ -u ] [ -v ] [ -x ]
[ base_de_datos ]
Entrada
pg_dump
*C
P<b(\bO!']RQ!&*P\!l@
base_de_datos
Q
!\!VV!!Pcbt
&*P\,GYP!zPh!&t'!',Pt4c
]PO!b ,z\]O!,G2
!\]P\
,(!&*,
yq
]P\PP(P<!&!
0
]P\P<P#\O!'b!bP
0
base_de_datos
ct\'<*P\&!P&!b!!P 4\,&%P
\4tI!Gb,!4<\ zL\G\!
P!%b]<L!<C(PL!b!G!JJ
*P!
P!, pg_dump +
P\<O#P(!,!P,It!Gb'Oz,GYP!t
]P(!P!'P,b,P< Ct'*!
0
]Pz,\]O!,!*P !b
0
tabla
0
]Ct'
tabla
\b
h
4J,\C(\!#!%J!]!%P\J!]G
*&!'
!*
P\!VtP Q
!'c!J!D? !h*P\!Phttc,P4
Pt\P0!&CP
!!
\R V,b4P'Gb'\,P&!JRQJ!JP\!4P
pg_dump
\
bP!'PI.@
husped
puerto
! GC!,P\
! WV,G,!'XPJ,0]*zG
,GYPtb!,
!PP!(3P*C'!P\0P4J!
*postmaster
PI#
G,*P,tb!
,t, (cVI,GP!
VGP,!
!P\
4PcJ* postmaster
,GYP&!%LGLYh!,cP
!UMh!SYP!]!3W:J_ SO%!!3\,
GPY P],*!,2
4(bPJ*PJ!Ox!
nombre_de_usuario clave_de_acceso
y
Salida
pg_dump
{P]!# 4tP
stdout
!3t
7 W VS,G
* pg_dump
!P2zP
,Gb
\ postmaster
!!' postmaster
G'
tb!
WV7! JGb7,!#C,tb#*P,*bn*c7GbJ
+h0,\]!'bb**P t&
Gbb'(C,O!'
b#,t!,
La conexin con la base de datos base_de_datos fall. FATAL 1: SetUserId: el usuario nombre_de_usuario no est en pg_shadow
4,C'
!'IP!
0
P
V'P
\
!V,*4] Pb
3!\pg_shadow
!P!
b
JGb(!,,t\%<CLG(!(!PI b(L!\bt!
!'
P
Nota: pg_dump ejecuta internamente las directivas SELECT. Si tiene problemas ejecutando pg_dump, verifique que puede seleccionar la informacin de la base de datos mediante el uso de, por ejemplo, psql.
Descripcin
nVbt]CtOPCLO!O!bPbnJV ]!O
pg_dump
b!0P\!PL!]*!P< <!G3Pt\ 0!bcb0
!,n!hCtLPGbW Qn
<!<!b V,bhXPh4
bbtI
P! P'(P!bOh,b!P
P%!,!!P]Cpg_dump
',n Q! *! \P!
_ ?4!P\b bP!##!b%P!07\b\!Ib\!!
\b'C! \R V#,!'\! ,t\b3!
hbILCIP4L&L!(!P&<L&\!!
pg_dump
PWP0P W V!Vt pg_dump !,4c\
G!]G!%4P,%J!* ,G,*\b%%J4!
\*PO!O,
',tPt
Notas
bJP<\bP!L\b,&G3t\,]!J!
pg_dump
!3t'InO\b \P!
OPO!z,\
yA
,V6 Q!
,I!P
\G\0b!b
pg_dump
\
,_P<C,C!P('
Q!,OG
\0\PI
\b]P,PLt!!(,bL!O!P<0!
pg_dump
!P,O!
\\!
Uso
t'!'!
!b!,\\\'
,l@
% pg_dump > db.out
t',h,Gb'!
!P@
% psql -e base_de_datos < db.out
pg_dumpall
Nombre
pg_dumpall
cbt&P!O!'!bObO## 4!'
Synopsis
pg_dumpall
pg_dumpall [ -h mquina ] [ -p puerto ] [ -a ] [ -d ] [ -D ] [ -O ] [ s ] [ -u ] [ -v ] [ -x ]
Entradas
pg_dumpall
]PO!b ,z\]O!,G2
0
b
P(b<\bO!'RQ]!&!,z@
]P(P(P\P(!'*!,(!,*!
0
]P(P(P\P(P3P\O!'btb
0
yy
ct\'<*P\&!P&!b!!P 4\,&%P
\&t!4!&*GnP\c nP!b!POG
CtO,G,!G*P\!,!P*
]P(!P!'P,b,P< C!&*!
b
0
]Pz,\]O!,!*P O!b
0
4J,P]!]*,Gn*!%P\]!%Gt0V
!'
!GC\Qz\P!'!,P
!b
,P!V? !h!htzP,'\#!,z,
!'b
b\R V\CVP
Gb
\bP\VRQV!JP!'\
pg_dumpall
P\,P(!&*PI.@
husped
Q
P
',z\L!&'X
P,
c&,GY P
b,*b!
!
!n(#GP,C!'!P\PP4]#,!']postmaster
PI
puerto
Q
Salida
pg_dumpall
P# V*P
nombre_de_usuario clave_de_acceso
stdout
La conexin a la base de datos template1 fall. connectDB() fall: Est postmaster ejecutndose y aceptando conexiones en el Socket UNIX
en el puerto puerto?
Y!St(CP
\XPY
pg_dumpall
*2cP
b
\,b ,tpostmaster
postmaster YV
tP
!%*P,*b\]\ % V,GCW4b7,**zG7(!
y}
thW,\!4bb**P7,tVVb b!
**!,(!&b
La conexin a la base de datos base_de_datos fall. FATAL 1: SetUserId: el usuario nombre_de_usuario no est en pg_shadow
JGb0b%!]+P!],]P
00P]\
!VzPGb, b&*P#!\Gpg_shadow
b!Phb
#0b]\t],OJG!]!bPI P*b]4\\Gb!PO!P
Nota: pg_dumpall ejecuta internamente directivas SELECT. Si tiene problemas ejecutando pg_dumpall, asegrese de que puede consultar informacin de la base de datos
usando, por ejemplo, psql.
Descripcin
G0!_ N0P
P!]J%!!b%PJSS! n
cpg_dumpall
\RV,\,*4bVv !P 'P4b
G,
!%! b
(,VbO %nP!,nPtbn(*,PXPb*\
pg_dumpall
!
]!&G,(!&!PO P!b!'n(!P
P\7b00P,#! pg_dump -f -t base_de_datos
!pg_dumpall
pQ#\b!c
V,t' Z fM d +J X
PPt\P3P#4b]bt
!b!<
,%
Uso
t'P!OG,O'!b@
% pg_dumpall > db.out
t',h,Gb'!
!P@
% psql -e template1 < db.out
Sugerencia: Puede usar la mayora de las opciones de psql cuando vuelva a cargarlas.
y
psql
Nombre
psql
bc43,t*b
\
Synopsis
psql [ options ] [ dbname [ user ] ]
Summary
]!Pc4&bzZP!]S*PLbT!bzG
psql
PbP \CPb*C! PGb\]PtC\
0G,t
U \PU#Ob7POI psql WbU
P %Ct\,t(J \\%b \ -d -h -p
c
nz\,PW !P
PbP7n# 4-U,t,
!b4\4'#,#PC Jb'J* !,&!c,n
\ PG\<z#z,*'!P\0bh4'!P0 L P2
!,C\,h<P\ b\
!b\<c*
!b,G
!,
L\&!, *,O<!PM &bJG,V LPt0\PGbI2
!,n\'hPJ]\ &G\&# ',t#Pb' P
M bPbV!b'!,\
!GL!\btb
P\UPYPOP
*,Gt bIc\PUP\0bCP
J]G,P (P\z! ?L ? r ?4c z 4c
b,bCPL
',P3P3&\!&PnV0 Gbt P
\,O!#
G,t ,c psql #b003b\
Entering Queries
}B
psql Meta-Commands
4 #P,h
C,L# P,G L
\\ <VCPpsql
4 psql 2P P\\!V# (\psql
psql
,,0PO!\b3O*Yb P\\!&
\P*P\\#
3 \\I
#Pt\(P(
P\\ 4 PP,Z\\!W73
\ Y,t ,Tpsql
\ 0\b% bYP #P\\
tV3 P \hP ' *I
c\! ,G*bW\PY\Ob## #Gbc
!0P0\ 7\ ,S0G ?4
b\%P'& \P,nb %bP!&P \n ,
\t b \digits \0digits \0xdigits 0 *
# ,
!\ P P c!\z2
(SbZ\(V# 3PU : (4TJ3t#U
'P
'(b0O
\<
?4\b4 (0b6
Z (0bY43P\\Z3 <
3b
PC! P\\# 0#,\ !
0( '\2 &
LG,OC#b
zP\]\\&] ]\JP!3cV\!b( L4b]\!<
\t 4\b
P 4'cV@!3!Jb @,
!b!,# PL!P#P,J,*, P# *GI]hP ,*P\\!
!P!&b(&PCz3#\&P
\2
t0Ph\b(bL ,3 P,G P* (<b,
<,JPL\ *P\\< (I!, \\ b
\! (,0Pc\bP,GcV Pz@ z#z4
psql P\\!<0'*\cP# r #
\P
\b \\**PP
3
'P#\b \\OL!8 @
?
\a
}
TD
\copy table
with oids
from to filename
4T S
zT
miters characters
with null as string
Gb!
!P
S
with deli-
Nota: Note the difference in interpretation of stdin and stdout between frontend
and backend copies: In a frontend copy these always refer to psqls input and output
stream. On a backend copy stdin comes from whereever the COPY itself came from
(for example, a script ran with the -f) option, and stdout refers to the query output
stream (see \o meta-command below).
P #<
3!P\O
\copyright
}
PostgreSQL
\d relation
Nota: If \d is called without any arguments, it is equivalent to \dtvs which will show
a list of all tables, views, and sequences. This is purely a convenience measure.
\da pattern
Gb<Pcb
P P ,h# !b
0P
2 pattern IP! OG,* \ bh
P#
\dd object
P#< '!P(P
0&%,,hI*GP! P
, J W\Jobject
,I ,b ,*Y #*PJb P Ct
Pt ,PL, # *, PbG
Ph,c\ @
=> \dd version
Object descriptions
Name
|
What
|
Description
------+-------+-----------------version | function | PostgreSQL version string
(1 row)
z4S
#!"%$ &! $
Nota: PostgreSQL stores the object descriptions in the pg_description system table.
\df [ pattern ]
\distvS [ pattern ]
}g
<(0OPi% #<
G'PbI
\dl
!GbVPPV# %,tZZbtYbCP
\do [ pattern ]
\dp pattern
T
L ]\b<b %b!b tb0P]G*P
#3,#G ( #'PV
\b#
P
G2I\+ @
\echo text
!O#P
-n
#
(PC#b
Sugerencia: If you use the \o command to redirect your query output you may wish
to use \qecho instead of this command.
}q
\encoding encoding
\f string
filename |command
Nota: To simplify typing, commands that consists of several words do not have to be
quoted. Thus it is fine to type \help alter table.
\H
\i filename
filename
0I, 0,4
Nota: If you want to see the lines on the screen as they are read you must set the
variable ECHO to all.
\l
P
}
Nota: See the description of the LO_TRANSACTION variable for important information concerning all large object operations.
] ,GP!,< C
P*\P,XJ_L]
nb#\\!J#&b#*,GL JP,n,,O*( !,GP
]P\\!,W#
bV \ !,V\\,#
,22 P*0 #
,# 6 W+\\<
#b4
*P\\S'bb,@nP 4, !
*!( zb (P (PI<G, ,C lo_import
<G,t
3
,
Nota: See the description of the LO_TRANSACTION variable for important information concerning all large object operations.
P#hPhPGb,z44P,Ztb3Gb,T !bz
# hP#
\lo_list
\lo_unlink loid
,b(
'P
loid
P
!
Nota: See the description of the LO_TRANSACTION variable for important information concerning all large object operations.
\o
}A
filename |command
\p
!C 't,bnb
Gb!#b2
S
format
T\\V\t7,
, % \3P!V6 3,# & ! ,!4
#Ctb
\tc nYY\! V#hbtG0!7bW
btb 3P PY-LW!,t b
border=...
!
't\\
P x
expanded
cP'b#,O,cP\2 ,\cC!\!
, Pb O#P\<#
\
P#
,
%P ] t &\P!]'n ]!bJ#P!M n J
#
\ PbR\P!
c\P!
OGCzPhPC\
border
null
"(null)"
}y
fieldsep
z,*< %nbOb#G%\7P!\P!
O] #
,t
P t
tuples_only
I,Lb,<#!GCzG!0\# P ,cbt
P\PY 4P\ !,t b P!JPbc Yb
P\P! P0bz&!b
O P
recordsep
title text
P T S text T
?4#h%%Jb,b%L*,!< !Y0b(b
n*P,cO cellpadding P bgcolor @#P( cP0
M#CbGC border ( (,!b#*& \pset
border
tableattr
pager
Nota: It is an error to call \pset without arguments. In the future this call might show
the current status of all printing options.
}}
VC
\q
psql
T
O\\\(!b*zW%,c PPC#
#tb,b
P , G,
Wn
\qecho text
b<,t
!,tbt
\r
\s filename
TTT
cbL ]bz
b
!\ P]!& b
]bb\P!nname
nvalue
#
\& J]
b# PC!2cVG,]
W%%*P\\ <
0\0Zb6 ,t ! !z,
G,*bPP psql O!b
?4 #P\O70b WPU#(
,Ozt,O,*2 V'!P*\,3 'Ppsql
t
S
Nota: This command is totally separate from the SQL command SET .
\t
\T table_options
tableattr table_options
\w filename |command
b% *\b,Lb\
*P\\ command
filename
&] 4
}
cPncb!,VE\\{?4!! c!,c
\x
\z pattern
\pset expanded
!Ob%S !b
P]C
\GPL,<#\,O (# O ,cP
\O
b0V P \ 2
test=> \z
Access permissions for database "test"
Relation |
Access permissions
-------+------------------------my_table | {"=r","joe=arwR", "group staff=ar"}
(1 row )
3 O(PP@
O,\/%"%%"M&hC,t\P
b
@JG,
, #O\O%( *
&." ( "%%"%&." C%O\$ /W"%F.&
"joe=arwR"
\ joe
\ V ,b
(P# '
@ P
8 /%"W%"w&S
$ /%"%F.&7\GP
"group staff=ar"
staff
@
"=r" PUBLIC
' \\
S
\! command
b1M:`-5
1.3 n-.3
&b*,G,t\
!(0%b
4V c,*b( ]44P\\
*
\b&PCt ,t,
, #' Icommand
\?
3P\P3
\I4,CP\\!
Command-line Options
zGJP!
! b!4
PtPPP #
b
CPz2
psql
b,L
P#PG,\I
,
n %b\ 7] \V,O %%\PG,!&G
% ,C V bO\P ! , zb]bJ <
all
?
c#b ,%,0Pz! O!IbP\<n #<
<
B
*P\\ query
c<
<b0c,!b!,t#bt query ,ct L
G,z# psql
*bI
\P< !&J4 PhP\bJ(J L,
query
*P psql ,*b * L'* *P\\<
!3P\%z43
\b \\!2cV ' O3
( <4 psql <kpsql
@
, !!
! P
%*b&,,'
z\ ( P\\! P
*V < h0# %!<G\P bJJ nP#\
(OVG,b0
,
v J P # psql
, filename
4] ]
L %P]P!&,P!&b
tb, zp ?4bfilename
! '&hP *,G psql b\,I h0\4#h,
b
,tPP\\x
%t
4 Ob#V!b* #
,t
# !3 WI -f ,psql
'GP\ Vfilename
Vb
P<\G,]# \I V V hG
bS#! tbYP, T 0P , thG
V R :]hPW
Phtb7S,cb VG\
b 3#P! &Pb 33b3,,t (
P separator
JG
] TG,Pt ]],x%%i%%UTP
% separator
PG hostname
c] P(\0PO #\ S postmaster J
b <CP P\\!bP3(P\3#PJ4!P\3P
b\
zJ !UY
b2I JJ,( \pset format html
WX*P\\<
Gb<P&!b #,cbI ,hP *PP3Pb('
,O O(\V
b P*P\\x
Wt
b filename
!zVbb filename t OV 'P\\xW
Pt port
c,* 3 <cLP T\ P(J7!P\ &
cbPP postmaster
L,3PO,*bPI ,Lb0
!' \,t, CP b ]C C
*P\
b\ KJ_
assignment
?4#%Y\7PPJS 0b02
%%W 0\\
z#P# P #WG,b \3U# Y,h
Gb7GC, ]b VPhPt\3!I_ PTPSb -P
format=latex
c,*4
P!Sb#PtSbz T!, <tb#*P\
\G, Wpsql
P!
\bb2 r PP7 PVPh
PP psql P GSG,&
VJ!3P 0&b,O#&
\-c
2
b
zPbnPP\\\&\nP nP,t ,c*!
P
b,b 6W2
b b table_options
?J#P0%,*%Pbb%(# !Y(bc8W%
P!b
U
CP\nP< J!,L\JW#,JP3
!,psql
PPU!,b V<P*,!#<z\bTP%3
!\%\P\b#P%#
],
4,\b#!b, .S4PtSbP -U -W
b(<
G,t\ username
b] <cO O username ,c (!,2xP\
',*b\
GPV! PG
t assignment
,tPt\(]t&G\ WP\\<0b P
\Gb&\&3 0zP0 '*P\\3 2c
G,V %bn 4! %G\b%!PJ!
,tVb
PGb PhbPtP<\ C
#tb,#
0
P#< psql ,tP
7 #
P7P\OJ#,#%!b
,&
G2 <# Ppsql
\# Ph
b
G,GP #C3
!c
*Pb#
\b *P\\
W+%Wt
?4
h,tP
L
P\G0G#PS\ '
*Ub4 Cpsql
G#PZ ,b r 4t,7 P
+ 0b4,*PPT\ (\PGW JPP
7#\tcL7#ZP\O4GZZ #*U
G#P3 b#
,*bP3b,\#
,c,!,
z(P,cb!,3X\\! (OV
P\\x%
*
P# 3 psql P\\\,
Advanced features
Variables
!zObP,!\CbP\\44L\\
psql
P,t4 Gb, <(hb4,c#P
Lhb! (0nh h#
<
Nota: The arguments of \set are subject to the same substitution rules as with other commands. Thus you can construct interesting references such as \set :foo something
and get soft links or variable variables of Perl or PHP fame, respectively. Unfortunately
(or fortunately?), there is not way to do anything useful with these constructs. On the other
hand, \set bar :foo is a perfectly valid way to copy a variable.
'&b
(,0b6P4 \G'3#tbbZbY \!
bPall
J ,4tWP&,c,*b<*c ]P Gb
G
b -a
G,C:
\,,(P(( 0
G,V '*<
bqueries
P3Ph (psql
-e
v J !
T %t%,OY0G \\Y% !b
< #( <#P# ! PGb,z43 b<
!4G\'*b7P
P#SP\PYh tJ\
!PI 4'(b P#Wn%Pbn3 J
3I
!
#,(<\bbP!I( ((!Y7#\bb
t2 Ot&##Ob cVWv?]
c #
( 4,#4O
4 ,T# 3
, b Pignorespace
tnbV JP ignoredups
,
\
PP b#J
P!,<>? ]P ignoreboth P\& %b#
b Lh3P ,'4 7 PGP
b&\!
L3P P02
Nota: This feature was shamelessly plagiarized from bash.
q
c!c\
'\P\\!O4P&0 '\\ Ptc2 '!P'
JLL
Nota: This feature was shamelessly plagiarized from bash.
4!bJ W%*bP,Wn
,,t\
P 3*Pb]!, G'! * &G,2
!
G, !00 *bG PP b0b
psql #
\b C*bPCb0]\' C\#
t2(P3 PL &Pb\,I ' t L
\L
!,2L
Nota: This feature was shamelessly plagiarized from bash.
%?4
P' G<bb Vb!6P =$ /W"%F.& -\%Z
*P\\\< (
OP# b3b
, P
',cz4\\ O,#!<
v ?J#; ? !
P3G' 'PcV3'P,b,b*&,*b'!
!,
b4 'b c &Pb\Lb#
btGb P
c<
!\bb#P '&P,b&\P'\b c
Y#YY,bt*T',! bP6ZP
psql
V P0(PPbbtI\\!iW+ % %% W\%%W
h\G\\b %b7T 'b!\
P P\ ,!J<P* !b%\\4 P
%TT !TLPZ b%GP\'!#P P#j
,."% $
&2F*O$ /%*-&. $74 #!&SP*
b(#'!'G
,Gb#
!*bPPC\V2
c P C#b!PC <'bP]PW P,* P
\ Pk P M
!(bPP*4
b2CP4#b
P&P!L, P,b,*b h! P# PP0bb%\J
<,b \ L(b4P!LPLcC*btbP4
z\\I
c
!,! ( bGJ,*P,
S,tP %#\Pt\,
zr 4%P b \, P\\ %P !,V
!b P&P psql hGP\b\%Ph!h ]
O t#P\\,!,bt2 &G##P
(tn#Cb\bJ\ 4\J P,n 4P\Ptn#
P 3,tb psql C -f PP psql
#c,tP!!8 J! hLP ,c,tP!*P!b
*P!
V!,4<W%**\P,Wn
,,t\
P 3*Pb]!,G'! * &G,2
Y!% U% Y%
(J P <\C psql G,h!C0%PPVc
| e J_ o
\C_f
P0
VJ
<4 &*P\\#'PP -q tOP4P
G ,z#b
\P!
v
2 v
z ! !#
<
(G,C
P\\Pb -S Z*3CPC
#b\
z !!!
<tz
O
\b -s
4c
!,3G,4P6tbTP, P L\3P
*Pb,
*0 ! #&G,2
SQL Interpolation
A
4PG4P #
, '
\ P\G
P ,T\ S\ h
!Pmy_file.txt
Mh## P' W
3
OP*,G(2 (P!&!
#
P sed @
testdb=> \set content sed -e "s//\\\\\\/g" < my_file.txt
Prompting
b!\'
!b'P
4%!\Pb2
%m
b!\'
!b',n
t!Pt
' Pt!\,h
!b
O,
%n
' t\
P3&P(PhPPb G,h\,
%/
' \
PC
t*C!bG
y
%~
!
b2W!,
!b
OPh!,!b,G
%/
%#
O]!z
, G6M8
%R
%digits
b(#
P
,<&bb3 I!
digits
\
I!# & 0x
,! # & Pt P!4!LhGb,<t &
!h
V,tb*Y]PSP*b!\'S *P,
! 0 *h OGbb< ,t#
!,*\\,hOG\
,<
%:name:
!&
c
psql
name
2z,'
,*b
e ]P!I
%command
bP command \V!ta ]GbP
cG,tC],**CbPP\ # %% !,P\O'
b %/%R%# PP\2 ]E
PCP\I
Nota: This feature was shamelessly plagiarized from tcsh.
Miscellaneous
psql
}
.inputrc
$if psql
set disable-completion on
$endif
Examples
Nota: This section only shows a few examples specific to psql. If you want to learn SQL
or get familiar with PostgreSQL, you might wish to read the Tutorial that is included in the
distribution.
L ,c\( P b%'tJP!hP2#P&
\C2
testdb=> CREATE TABLE my_table (
testdb-> first integer not null default 0,
testdb-> second text
testdb-> );
CREATE
#P PP0
b'!b.@
testdb=> \d my_table
Table "my_table"
Attribute | Type
|
Modifier
-------+------+------------first
| integer | not null default 0
second
| text
|
4 OPCP3!!'b
'\VGP\ \P&,,Gbk@
?
!YG\'P &!,
b'# !
b&P0
@
...
4b
' P\\!z@
?
peter@localhost testdb=> \a \t \x
Output format is aligned.
Tuples only is off.
Expanded display is on.
peter@localhost testdb=> SELECT * FROM my_table;
-[ RECORD 1 ]first | 1
second | one
-[ RECORD 2 ]first | 2
gBB
second | two
-[ RECORD 3 ]first | 3
second | three
-[ RECORD 4 ]first | 4
second | four
Appendix
Bugs and Issues
P\W
P# 7t\]b6
!Z,
b<*P\\psql
<P%\ bY b(PtbZbT\cb
P0bI#
!, ,
O <
<GPt< r P
Gb
\,G 3 (\<I\
testdb=> \foo
Field separator is "oo".
O , (PC P
#PcC2
P#]\Pb# G,t
h \VGP !Ph\,
Ppsql
,h\P<#Pzb G b
3P
CP\O\
P\
(
Notas
b
@!cO ( P
pgtclsh
Nombre
pgtclsh
!P b' P
Synopsis
pgtclsh [ base_de_datos ]
Entrada
base_de_datos
!P\
!']''!bOIb']!'G
t
,hn
gB
Salida
Descripcin
C PP*P#,t
z 3
PGb,I
b\!&,h4O\!V!'b*P,(!
fM
f
pgtclsh
pgtksh
Nombre
pgtksh
Synopsis
pgtksh [ base_de_datos ]
Entrada
base_de_datos
!P\
!']'PIGbb
]
',t]b
Salida
Descripcin
PPP#,tP*Vz P <c%6tP
b4\,t%!]b(04PGb,LP<!#!] ,LG! ZfM[
fo
[
pgtksh
vacuumdb
Nombre
vacuumdb
gB
!\']G&!'!bP(PGb,z4
Synopsis
vacuumdb [ opciones de conexin ] [ -analyze | -z ] [ -alldb | -a ] [ verbose | -v ]
[ -table tabla [ ( columna [,...] ) ] ] [ [-d] nombre_bd ]
Entradas
vacuumdb
'(bO\,P(,RQ]'\@
! \UT nombre_bd
!GC!,P\
!'
G&!
!b
!
&G,h\!
b% Qb*OP&]'!'!P(t'G,h!P,Pb\!Pt
!\]P!O!
!b
,tP
\\
\P3!,C]!b'zP*,Gn
b tabla S columna S TI T
!!c<!V*\,
!\&%D h\<
!'\
h\b
!tabla
']P -analyze
S
Sugerencia: Si usted da el nombre de columnas que deben ser analizadas, probablemente tendr que usar caracteres de escape de la shell para los parntesis.
b\R VbPLb(\bP<!RQ,]!
\ ]
vacuumdb
P\P!',cP.@
P G anfitrin
!!\!0XP#070nYP#b,*b!,
postmaster
Pt puerta
!GC!
'b <cVz ,4JJ!',cb#!&!\
P*'IP3,
'PcP
postmaster
G,t\ nombre
#\
!&GV
!'
,*bt
7 #
]P!V!
P_ NO!'b,*bt
gBg
,
!G']C]!'P(\!(
,
#\b
vacuumdb
,,IQP!Pt
Mensajes de Resultados
cP!
VACUUM
?4 &!
,hn!P0!<,t - 6 cOcl
#!vacuumdb
GP!b!'!'P<\O!' O,\
Descripcin
hbtJL\n&G<!L!bPGb,z4<
vacuumdb
RV!%QObtLG!<P,P\!h!hGvacuumdb
,!L!PG
,I
nJ4OOP\!
cOcl !!PcV \!
!vacuumdb
,b\,tb 0]IO!*<(,<\,(! O!
!bh!Jb&PPOX
V,P!!zP0! P&nbt
4! P
IGbn0t!P!&h!L!b0b,*P00c!b#!npsql
tc P!
!4P!ZYt!3,Gb!T psql Y!\ Q!b
libpq
Uso
t'\
!'!P
prueba
$ vacuumdb prueba
t'Ct
Pb\]'!'!P(\!
bdgrande
t0
0Pb\!P
Eh3P\
'!'!P\! xyzzy @
cual
S3b
gBq
tal
!
Notas
b
@ !c# !\ ,G,t n
b
@!cO ( P
gB
gBA
!#%P\S!0,*Ct#PJG,t!P%7!!%!P0!
b
initdb
Nombre
initdb
]b#!
G&!'!bP(!&!PcV
Synopsis
initdb [
[
[
[
[
[
-pgdata|-D dbdir ]
-sysid|-i sysid ]
-pwprompt|-W ]
-encoding|-E encoding ]
-pglib|-L libdir ]
-noclean | -n ] [ -debug | -d ] [ -template | -t ]
Inputs
!b dbdir
dbdir
?&?
!JP*P,G,!J!%!,\J!] PLP4\4
Gh!O!bu !b<n8 h<Pt\PV,!(P Cb! '!,\
\btJb!0Jt]!bPt ?L ? #]!]O
4V,!!P&!V4!4!P
postmasterhC!,!4PL
!b!'
G'!'!bX
PO!,&+ V!']\\]
% sysid
sysid
z,*P Vz!,b\]
PGtVPP!']''!b
\PbP!
!,P!
,Gb
tb!b! \,
gBy
P!+ encoding
encoding
z,JVP!!P\b444%!%!b&\P!#
b\R VT P0P!**PTP!**b0*
! P & 4b
]X
P'!b V\PJ,WV\*!tJ(
*t, Qb*'!<*P!0\b b &&,*!!bL,z\J!
*P7**!4 r !3!\R VG,CP
!bVCt
P
bP\,POb!P\P<Xh\,x'YP#\RV,0!@
libdir
libdir
!T3P 4!3,!]*J3G#!
!P!0C*PS*0!P !P#\\, \b
,G0,GbWC,!WP04\V0b
P\,hV,*Pbt P Pt\\, h P!Z QI\\z<<!P&
X
Gb,*,
,GC!n**P,cR Q*b\bzc!L 4!&P
! P'GV\ global1.bki.source ,GY P!bt!\,&
*PJ!PPn !J,!b'!Ob!Ct\ z,zPzCz
2
/usr/local/pgsql/lib
b\b
cb%%!!b(,\U ]3Gb\%!
G4!V! btemplate1
cbb \\P0btPG!b6h!*!V0
]J]!%!P&G!0
!]VX
P
<!(!template1
PcV ]! template1!&initdb
O!(!P L*PP\
!]P hVP\<!\0\\b<P,!%! template1 G
\,! PLPGbb&&+ VL&!&I,\
!<(!L!P#%&C
!'!b!b]*Pt! initdb *P#]C*P -template
P*,
n!, !
!,\&&VP!b'<&*&bb\b
b\4 ]G!initdb
!bP \
,O 0% ,!
,h!L,t\n!L4!&*ncbtGb
P0 G !
W!OPb hbPt'!t
!c
\\V!!V!,t7!VK
z,% <b
\'!4P, V,
Ct4W h3*!: z,%
(]*P#
JCt
*,<b(P* PP!b%PP
t
Pt\
initdb
b!3!&!
Salidas
gB}
Descripcin
]3,Gb\%!
!!bO!
b,z4!, J
initdb
Gb\J!]G!]!bPLLJ*P!%G,L!!bLJP!L!
!,(CP\GGt4!
40\ 7\bPP\b
P'P
!*bO<!!
],\!
!4!bOJ!J P!#b\
!VP,7,,Lh
O!P(t!P
\
Y PP0*P\
!
PWb
Vb\0G4!4!b
!b\!2,,&
!JG!!bPI !]J!,%
!!bP b!0,
template1!0!!P] b]b]Y PP\, ]
template1
\POP<bb
#!&t initdb \PtG!
!,']!
tb
,t!PO!%J]!%PLJP\#P ,t!POJ,
0J PJ initdb** ?4!,X
P !b#G!0P
!! <+ h3*PbPP!
b! POGP\,
b PPYP\#!##40\ Z QW#
#]b
P PPP*,G4!P!t
?4
Ptp P%,!P!
!b( 0*,tb(
,!P],initdb
,t\t ,tn!PObb (!%%!,]* ,,!b
!b'b
!Vt initdb ~,<C!,T- VL!!J
'!'!P
initlocation
Nombre
'tP,
!&\\,!t4'!
!initlocation
b!'PcV
Synopsis
initlocation directory
Entradas
directory
%!,G,<*,(<!]!b(bt<,\J
(4#
Salidas
initlocation
*,pP]!P#P,!!
gB
Descripcin
0K
PV\\,!tV!
!initlocation
bJPGb,z4^0!#!GPU .123465W3^7D65>:94:<3 P#*P\7\t]
G P*
!V\\,,*!tnz!\bP7G
2zC#<+ P!0P\#I Q] b<G]\]LJ,%!,Pt
\b ]zOZ 0!POt\P<z
t%P!(bObJP\!!b\! ,Obt0PX
W P(t\P
'!'!P*P\P2
Uso
tO*,&O!P!4!<C4b G!<!ObPtl@
$ export PGDATA2=/opt/postgres/data
$ initlocation PGDATA2
$ createdb testdb -D PGDATA2/testdb
$ initlocation /opt/postgres/data
$ createdb testdb -D /opt/postgres/data/testdb
ipcclean
Nombre
!\\]\Ctb!(G,XPP!,!Z
ipcclean
bCP
Synopsis
ipcclean
Entradas
#
Salidas
#
g B
Descripcin
\\,\P\!Sh,W!0X
PPJ!t
!Z
ipcclean
bCP Pt!P!%%0PSP!S!,n postgres
zP\,, r ? b r G ?4!\btbP ?4\Gb!P%!# r #! P
!
tbh,Gb
P\]]!
h+h0
*P\Ptb\b0
N7 Q!<G#t!bt \P!b3
\4GV4tbLx\\
\C<t\ semget: No queda
bbOCP postmaster #,
!espacio
Pi libre
% * en el dispositivo
zt%bJP!\bt< postmaster Y PJPt! G,\ P
pg_passwd
Nombre
pg_passwd
\C!],P! 4V!'#!
Synopsis
pg_passwd filename
Descripcin
O \b
\C!P!3!,z! ,44!
pg_passwd
#!L!]PGb ,I*!GbJ,#!Jb**P!]#!L3 Oe e
*P 4O!
P(!O\\P<b!PO,#%,!<
!&I J!LG#P!h0I\\V&b**P Ident ,. @
@
$PGDATA/pg_hba.conf
host
unv
133.65.96.250
0!!6 _J JL%G!0&CG#P!
!!P]JJ RQJbO,t\cb!]Pt\
!n !0P!%!#Pt\
$PGDATA/passwd
! /etc/passwd
/etc/shadow !nCt\,& \,]!\V!V \,
\#,',CP!n*!,Gb#&Pb\b4!n ?4Z Q&b,
RQ,Lb&!b,GC!3\\%P\%!]0#
#8 @
g >
pg_guest:/nB7.w5Auq.BY:10031::::::
pg_guest:/nB7.w5Auq.BY:93001:930::/home/guest:/bin/tcsh
pg_guest:/nB7.w5Auq.BY:93001
P(!, ]!OG#P!\]+vG#(V]!]bP
\b !,GC% V,O&\nz!,*bJ!LV' ?L? t0b
!zP\!,GC!,,VP3 pg_guest @
% pg_passwd passwd
Username: pg_guest
Password:
Re-enter password:
#\\#P
!J,!%!4,# 3Password:
4Re-enter
P,\,password:
t\!C #P!%#!
'P\tP\ passwd.bk
P -u &!&,
psql
!R Q,Gb<\,Gbtb,\O!'!&]P. @
% psql -h hyalos -u unv
Username: pg_guest
Password:
Bienvenido al monitor interactivo de PostgreSQL:
Lea por favor el archivo COPYRIGHT para los trminos de derechos de autor del tipo de PostgreSQL.
Escriba \? para la ayuda en comandos slash (/)
Escriba \q para salir
Escriba \g o terminar con punto y coma para ejecutar la consulta
Usted est conectado actualmente con la base de datos: unv
unv =>
!bb!P0!
RJ
Pb!
Pg.pm
P\bk@
t'XPO!b WV
src/interfaces/perl5/Pg.pm
!(bb!P4k b <,,*P\! pg_connect *PJ(P
Pbbk @
-conninfo
z!J\,tP!n!<<Pb,*b!],P\!%,@
% puts [ pg_conndefaults]
g
pg_upgrade
Nombre
Ct\b
b,*P!']GP#btPG#b
pg_upgrade
z (!b
Synopsis
pg_upgrade [ -f filename ] old_data_dir
Descripcin
,
4!74*bO4tP\btP(!%!PcVG
pg_upgrade
!T!V@&P!]!P0P!]btGP%!!
b%!,S\b!,Gb\z 0!%PJ!#,tPT
n V!b#3GbP
*-w\U+E%%+
\t%+%%+[%
% pg_dumpall -s >db.out
]!'!,!PO!
'!'P(+h!b
bPbVPGb\,hbP!O
,!Z *
P\&!\C3b,*bPt4G
data/ data.old/
J zb
% make install
hP(P(PI
zb initdb (4!V!P'\_V*Pb0
!,zGb\]
*n\b\t#bM
@]\#\b hT!t
GJ*PbV4!4P GbV*bP\ VVP\b!*V P
!%,PGb\,%Y3PP hcW pg_hba.conf b\Pt
\
!t\ P(n**P!(PttO!OObP!]O*P
t%*P,*b\ 4tP',ct! PCt&n
,*PnP!h
g g
G,n!OP]!(%,MQ ,
V!bPI!bn\PLQ\b
#!\!b#7Z, #L\WZPtQ!!,G!
*]PL!P(!*!(!b0!
b
data.old/
O P( '!b QP(,!P(!b']t*#data.old/
!z! P2
'PJbV
'Ct*P
pg_hba.conf
,(]P(
L b]PPGb\bt
(!c\
d d -[+ P,!#!%J!]!PLb,!Gz
W hP\ ,P PW,*!!P#,
,GC!\, v!\(!]\L,!P data.old/ *!
&Gb #P(,Gb!POP,!PI
J!!!P4*bC3P P3UUb!WW\nP!P
\<!,G, PLtb!
i*-O*O$ *-z.2",!<&P\&
!'P!*P
postgres
Nombre
postgres
z#P*,G4bO!':h
Synopsis
postgres [ dbname ]
postgres [ -B nBuffers ] [ -C ] [ -D DataDir ] [ -E ] [ -F ]
[ -O ] [ -Q ] [ -S SortSize ] [ -d [ DebugLevel ] ] [ -e ]
[ -o ] [ OutputFile ] [ -s ] [ -v protocol ] [ dbname ]
Entradas
postgres
'(bO\,P(,RQ]'\@
dbname
\bVP
*
P\
!
]'
!PO
!t dbname bP\]!dbname
**bcPh''!',Pt4c
g q
nBuffers
c,n\PP!!b% P0tb!\\
]
bnBuffers
Mh\#!JhL!J\,\VP\!4J, postmaster
P
<PnG,t!P<cI\bPpostmaster
!!(!P(tL4
! *,CM h\!V h'!JP&,
n!,,*b%!D
h !D 4*!'44,cn! r '; 7b
!
0
#\Ph,Ih!\,!'#!,!P2
!GC!'z!PVnP\Q'
4PPz!'!b!L
!O!b@c ](* \O!,!,*bPt
!O!b!P!b!
!<!hP] ?L?3xc ?L?
,OVPG!
P!!P
!
$POSTGRESHOME/data z<!,Pt
hPU!#R Q3!\!4Y PY! h!bWC
!**b!!V!&\P
DataDir
U,Gbt
P!O*P
bLLtVPX
Pb*<
!WV<<*P!
P\\t,!\b C#!fsync()
4Q!4!,\!%VbtG
*P*#!]P*O4WV,!%!%PGh\&!PLb!!PI*z
4\!4 fsync() '!bPLGP\\,!<\C\bJP(,\
,tb tbO#!X
PO
P(*P(\!%\!!]bbt%!
(
O'Gb\t!GbOP#\,
v
zCt
!zP\
!GC!,\P!a
SortSize
!#!U!\\Pt##G]C
P!P%bJ ,
,(!
PC,h,3 P<,\,(!!
!J,# P
SGZPJP%7V!tJPbP#P,G3!
*P\t '!,
z ]!,t4, *!
#,! SortSize Pb%!\&#P'!bP
0 ,O
DebugLevel
!\b0P*P
!,t\JP\\!Pt\*P!
!P3,!DebugLevel
!P2c DebugLevel O PGb\,h
Pb!P!
PcP0!XPIP,
]\ ]!
tP\'\,C!C\PP&!J!P',Cb\,L\bt
P&\ !W,P3 P*!%n#PJ4C
X
G
,GC!] V]\]\P!
!,tP#]\G
,*, P'#
!zP*,GV! postmaster
g
! J&\,b,&!PO#J\!%t*P
*c
P\bh!'!bP(
t]V postmaster (\O!OutputFile
+Q
\R V,70PW!X
P,]! OutputFile ,\PS!V!
tPL+ Q
&
PGP
postmaster
J'PV*b!!
!',t'
!# ,2
OutputFile
+Q
Y!,Pt\*PU!\CWWbJW QJ!h!#!#
!Gb0Dhbt%\!!<!]!\,0#]G0,Gb]!Mh\,
!' hI
protocol
!*VM h\!CPP\,(b%V**P\3C\PPL!
!P#
G,GP#t
VbtOP*P(
!,0*t !OCt\,
PC
PGb(!'!,tP2c
#WQ4h*
C t
G3Ph!,G@P!P!
b < d
@6 e -
[I d
e d
[ 8 ?J!X
P *
!',OPO!'**,V\,#*h\P\b
!P,<
P(,*GP. @
?E xc.c Oc.c
!Gb]P*P##\,!P!\,#!
\
,*bP\]!&,
g A
V0tW!0*P!WGS'\0%PP!!!7!
t*P
dbname
!C\PPL!J!bP !!P&
4!
,,
PGPGP4 PW!Jh,t !,Gpostmaster
P'!4 ,c
! P,\Pb 0 P0,Gbt!P
POP!!.Z
Salidas
\!&bP0\M hb\!0
!!
b\P ,CGP<!
\,'P%OCX!P,(!P#\G<P.@ !tb]!
Sugerencia: Es posible posponer la reconfiguracin del ncleo reduciendo -B para minimizar el uso de memoria compartida por Postgres.
Descripcin
!!\b
!4!P]!P%!4G,'t!,\b0!VS !!
Gtn!!, Q a h*\tV,]!!,t,WP' r ?
\b<PP<\PO!
!P<Y P3,GbP!PLh postmaster
&*P0!&G,O'!b
?4O!
P< P,\bPO!tb(W
QP,!0'P\PP!'!P(]btI V,
!\CE
P,
4J!J!PZ V!JVb!%*PIP 3PL3
!,3Qt%!3\bPO,!!P\bt*!b
\b' P4 P\,P(P!P*P#]!P
!\,P dbname ,G,*!\!V0V!!b!
b%C!4zPh!&]t,
!',Pt4c
dbname
Notes
!IGb\b!!&t4,GP<,\&!4\\P\tb!VP\
Z 0!\R V ] [\ e,
ipcrm(1 ipcclean(1)
ipcs(1)
g y
postmaster
Nombre
cbbP*!\bGtV!'b,
postmaster
Synopsis
postmaster [ -B nBuffers ] [ -D
DataDir ] [ -i ] [ -l ]
postmaster [ -B nBuffers ] [ -D
DataDir ] [ -N nBackends ] [ -S ]
[ -d [ DebugLevel ] [ -i ] [
-l ] [ -o BackendOptions ] [ -p
port ]
postmaster [ -n | -s ] ...
Inputs
postmaster
nBuffers
DataDir
g }
b
P(b<P\,cO#G3RQ]!'P\!Pz@
!]zM h\V!'bO!
\\Pt*P\b!
,G
!\P4t4'P*,GP'!!PLJ*!Cpostmaster
PL*!b\!
&,GbLP0i Lb !J!Lb,!!D &,%JLG,'!
V'*! r
; 7#
!GC!,h!Pt7]*P\SQ3!Ph!!b4!#G,V
!PzP
,G,* J P\!
!2Pt0,Cb\!V<,P
!44!4,Pt\ ?L?z ?&4?X,GYP! ,P
G&],z!Pt $POSTGRESHOME/data tcP
P]L!
P7#C*!R Q,!\! !*Pt7b\!%
Vz\P\xV!'P\P
nBackends
XP
Mh
!C I\ \!4P*,GP'\C!PL!n4P\GbL
\!4t2!0P!*P#,t\!
b'PYP\
!!
C!G,
z! bTP
X
PI\!
L0UG
\0,!GPP tb
0Y CPcb\n
*!b\!
*P\0X
PI\0!\P!!*!0G]\C4PGb,<%
Gcc*!zP!
!<t&\P!VPht!b4,
!'&zCPJ!
P&&**P0postmaster
'b\c!!tJLL*PP<*P
GC]!OnGb<C*P%!, Q:LbGVPbbJ4
P!&!,t*P'!,n\'!4
'G!
Y P!n
!!
,tPn P P0!,GbCP
!GbV\b
!,t\V*!7!4\PW!J!
tPWCP!DebugLevel
P,n!P2c DebugLevel ] P\Gb',pP
P!b P!!*PIY7!XPct#,JJ\J 3
t*P#,P4!z!PP\bh\,Gb#XP(P
\ *!!#,b#!!PO#b P0!]n0b%J
G(,G,*< h <(!P,n!,+ Q,V0P
\ &\P P& !L&,t\I!<# postmaster
!@
DebugLevel
BackendOptions
port
!Ph!
<<!4
GPC!
&bP!PPpostgres
n*!,C!BackendOptions
b(b\tO%
*G,t<P*,G'tb7 postmaster cC!4!4P,
*Pb
P ,P<!,' P]b&\
!,n,tb\ (zY\#IPT! !nGP,!!P\
4]z,0z postmaster
!,P&nPPI(b!!
!'O,OP!4!P!z!b*t\OP
!J
<!<PV c 4L,GC!! &b\
*P\*!b\!,PP!4!P<'P\!P
\\b6 J,2cG]J!Gb0C,!b\! %b
Pb(*! psqlc! PL Pn\\4,
V%\OP*P(!
R Q,]!
\!]'!
P n
!IGb#P<!'RQ
*P\!PO!GC(,!
#V!&
#40P,t\&!'\P\!P
]PPS,\\ postmaster ,Sb]P UfM d
: i[L + d < e 8
[ e +C d 8 [KC
Ci e 4 [
!3,Gb,3,GbP ,PJ3P!V!X
PVCPV
,t!PO%b\O,OJ\\Pt4#G,X
PPL\tb!PI
!WZ Q!!S P*,GW!3%3*P!3\,t,t Pb*
P! Q
P\!'bOtP(tb!P(!'b\t
!P,<,OP.@
, P<nb!bt\tb!x44P\C
! postmaster
Q*P\ shmemdoc I\L\\P#P
!',Gb!P('OX
PP
g
!, PbP!LP<X
P<CP(!P!P,R P!,<]
SIGSTOP ] PL&b\!Ph\b<&P\!P!
Gb\],,*PO!'Mh\
b(OP(!,zG,t!Pt
N postmaster
Salidas
Sugerencia: Tal vez pueda posponer la reconfiguracin del kernel disminuyendo lo especificado con -B para reducir la utilizacin de memoria compartida por parte de
Postgres, o disinuyendo lo especificado con -N para reducir la cantidad de semforos que utiliza Postgres.
ccL,*,'P0<\ !<G,&LLJIGbPPh
GP&! postmaster tYP!PG% ,\\,n,!V\4XP&P!J!,
\,,O\,!'z\
0Gb\(CP<, r J
g B
XP<!thGIXPL!%333\\
G,t!Ptcc 4PPP
,t0LXPh b
*b ipcclean 'b\,postmaster
tzPI,PP postmaster tP! P
! Pb'],P!b%CP
P!'G
*P7!VP]z#\P7!VP%\b%!4\\0\tb!
Description
\Gb
P\**P#bLP(P*,h!z,L!,zG,t!P
postmaster
ZQ,P\](*P4!b!P\!]XPP!zZ0W%XPnO
,\b
!Cb,G 2
3h4!
#z!'*! P\ #postmaster
,#G,!Vn
<++V 4
ekd [U% e u
d !.
2 [O e . 2 C+ a|W[f e d d ?JW Q
0GbPSn#W!Pt!P%SM h\,\Ctb!
c',!&tbnX
P(&#b\,0]\\X
P]z*!
postmaster
!&(,'3,P#M h\V!'V!*
Notes
JGUNbt
ter
!'t kill,*2! SIGHUP SIGINT SIGTERM
% kill -KILL
3\b
% kill -9
\! P<
!LPtP!,'\\P&P\
!&VXPPpostmaster
LPGUQ
h&t!0\ postmaster P
,t
tP P! 3,b PGb6b4JPZPP\V!
\\Pt
*P\
!t,P0b\b
!IGb3(!L%CP\<!\\Pt4*P\ ,
!G' ipcs(1) ipcrm(1 ipcclean(1)
Utilizacin
t'
postmaster
!bP(PtO!*,t\! tM@
g
c]L!'b
% setenv PGPORT 1234
% psql
g
8@
!\!!0 Jb!0*P\!T!!,GP!
, P\!P!PGb,(P\
0%]C]#,
b h\]Pt*P
]
r
* r L
- J
zJO L
\ J ,
L
Cz
L
L
I! U
\
# r
# r
# r
# r J t
# r c8
# r
4 J
c,i J
4
P
P
-
0
#
#O#
Procesador
;LLL
;
z
x
?J
?
z
Y
?4
tX
z
U
z
L
JL
X
z
X
#;JU
c
0%?O
z
;
z
;
c
zC
Y
z
z
Versin
I J
J
+
+ J
+
J
I
I
J
I
J
+
J
+
J
I
+
+
+
+
J
+
+
+
+
+
+
J
+
J
I
J
I
I
+
+
I
+
J
+
Enviado
LJ
Apuntes
\?J!*.O#b
r *LYI
I4 U@L
P\b'
+
- 22!P
LE
L L
I
r
UzO X
'b*
Uta
P
!,\ #
PV
I
cP zY
#,tP: LL,LI
#,tY2 LL
c
?J!XYU
Q
r PVYI
YOc<; LUtUb
!U NO,\
I ,,\4
I ,\4
LU NO
\ ?J!* Y
?J!XYt Q
Y,<Pt[
I c t
b ,O\bI
c0P
Ct
*P\
!* Q!P!4!P
ct,!P#
LJ J
LJ J
L L
LU
L J
LLL L
> L_J
> L_J
LUJ
L J
L
L
L
L J
L
L
L L
L_
LJ J
LJ J
L
L
L L
L
L L
LJ
g g
P\O!h
+
I ]\RV,0P#
+ J C4 \P
!V*Pt\*PcCR Q']\\]#P\\,!'P0!']
Nota: Para Windows NT, el porte de la parte del servidor Postgres se ha conseguido
recientemente Postgres Se requiere de la librera Cygnus para compilarlo.
Plataformas no soportadas
&+%H%%X%%
%%%
OS
S
#bc,
0
Notas
g q
Procesador
z
X
Versin
I
I
I
b
@ !c# PGb,G z!Pz\zP x
Enviado
L L
L L
L L
Apuntes
c 0Q\C
cVP
b_+
\!V*P#
!zx'P\bc(!P<,
configure
G
C!,!'P,,G!
$ ./configure -help
!P(,OP\,,!0!
,V,OCt
O@
Nombre de directorios y ficheros:
-prefix=PREFIX
ficheros de instalacin independiente de la arquitectura en PREFIX
[/usr/local/pgsql]
-bindir=DIR
ejecutables de usuario en el DIR [EPREFIX/bin]
-libdir=DIR
libreras de cdigo objeto en el DIR [EPREFIX/lib]
-includedir=DIR
ficheros de cabeceras C en el in DIR [PREFIX/include]
-mandir=DIR
documentacin man en el DIR [PREFIX/man]
Caractersticas y paquetes:
-disable-FEATURE
no incluir la FEATURE (lo mismo que -enableFEATURE=no)
-enable-FEATURE[=ARG] incluir FEATURE [ARG=yes]
-with-PACKAGE[=ARG]
usar PACKAGE [ARG=yes]
-without-PACKAGE
no usar PACKAGE (lo mismo que -with-PACKAGE=no)
-enable y -with opciones reconocidas:
-with-template=template
usar el fichero plantilla del sistema operativo
ver directorio plantilla
-with-includes=incdir
sitio donde estn los fichero cabecera para tk/tcl, etc. en el DIR
-with-libs=incdir
buscar libreras tambin en DIR
-with-libraries=libdir
buscar libreras tambin en DIR
-enable-locale
activa el soporte local
-enable-recode
activa el soporte de codificacin cirlica
-with-mb=encoding
activa el soporte para multibyte
-with-pgport=portnum
cambia el puerto de inicio por defecto
-with-maxbackends=n
define el nmero mximo por defecto de procesos servidores
-with-tcl
construye interfaces Tcl y pgtclsh
-with-tclconfig=tcldir
tclConfig.sh y tkConfig.sh estn en DIR
-with-perl
construye interfaces con Perl
-with-odbc
construye el paquete del driver ODBC
-with-odbcinst=odbcdir
cambia el directorio por defecto de odbcinst.ini
-enable-cassert
activa los chequeos de afirmacin (depurando)
-with-CC=compiler
usa el compilador de C especificado
-with-CXX=compiler
usa el compilador de C++ especificado
-without-CXX
previene la construccin de cdigo C++
4&,\LbOCP\<!*P\P!Lt,QGb
(,G,Q*(!PGb,IGt\ ,\L\!O! W\!N!
?
g
Y! VP\b@P*P!PP6Z!Ub%,Z\b!
!'
GbP3!&
!4\ P P PPn!,4*PP*OVV
! S,G bPn!!*P J!WT Makefile.custom
bb3!
C*P 0!,L,#*P,!bP<%bI0%, bI !0*b
P W!,\\,P&bWbY P
P#,O P*
make [ variable=value [,...] ]
4P!
\ (
,!*P.@
c
!XPOb#4PtPP!'
r
!*P#!'C**POb!!
! r
*P#!'O Q, !QP\!
%?
!*P#!'P( P(!
0z
r
*PJ!! Q, !] QP\! psqlODBC r
JPPOC P,\bhP&4&bx
h!2U Ph!&
\!,b3P!VV!!#*P! !,CG,t!P
Postgres
%?
!,*L.t&cP\!P! ,&!%pWW!
*PP(CP\P!b
O%
?
!b3K
!OJczP !t !J
!OCP\<!%P*P\!] t -v
%O,
*!VPt
{%Wn
hPO P\bP!,,*bn
4cM v
?4,PP!zbI
g A
c%O!
P !Y3 P P0tP]!P\*P#!
2#
W
GV\P'Jb7V&r tP,!34!\b!J!P\b
,' Y3\CO P r P0 doc/src/sgml/
z% !
P],Gb PPWCtPGb 0!P\*PS,#!tb!
W
#JG'\P r &b#YVh!!%'!P\*P0!<!P*\,
P(b' Y3*P\bO*P r P doc/src/sgml/
4WQ #t\C!
?
Makefile.custom
Gb\]!]!,\k@
# Makefile.custom
# Thomas Lockhart 1999-06-01
POSTGRESDIR= /opt/postgres/current
CFLAGS+= -m486 -O2
# documentation
HSTYLE= /home/tgl/SGML/db118.d/docbook/html
PSTYLE= /home/tgl/SGML/db118.d/docbook/print
Soporte Local
Nota: Escrito por Oleg Bartunov. Ver Olegs web page 1 para ms informacin sobre el
soporte de lengua local y Rusa.
#P!&!,!\b4PGb,n
!Vtnz7!,b,*b<
P!t*P*PJPP , &]GPPtb#*
!bPt\Ptb\,*!*#PGb\,tcS]!,!&]
'!V,Pt3 v % OWW v %?&S,!Jt<PGb\,&P
]P(!b P(*PJPt\PP*!bn G#bJ G
PGb,G
@
g y
#!/bin/sh
export LC_CTYPE=koi8-r
export LC_COLLATE=koi8-r
postmaster -B 1024 -S -D/usr/local/pgsql/data/ -o -Fe
VtV#c P*>Q
/bin/su - postgres -c "/home/postgres/runpostgres"
tPI\]<P
\P
P
z!(GW#P!PP!#t]!,<]b3t*b*,<!
,P
*P,I*!'&'!b\,J3,Gbcb
PGPPtb
P*,t
t&4c% v, ?4!<
!],
,]b\P<,PP* ]P*!8*
!bRQP!\b'V
Autenticacin Kerberos
,t,P
]7Gb\0!Vbb**P7!V!SYP!L!!!*!
!!V,!*I
g }
Disponibilidad
!PGGb\]!
bb*P 't,
!'*P!P!OP(!
bV!8
P<LV!b( `- d %C+ d w2 e e c,
!!!73O! 73!PJ srvtab keytab<3\
L,*bt
]
!P]
b'3G
,,!\<\,
Ct4GL3GPXJ
!
PLbP8
,tP<!,YP!t!0% r 0' ,3
!',!n!,]b\R VS\&0
!src/Makefile.global
P!J,*PbthLL, Q<GP! P&! P<!],t%#
,4'!,!P2
*P\ VP\b! b&!,J4\#\
*x!'04P\0Y
& `- d DnJ e
C+ d G. e e WP!\
,*P!O
X
P(!,&!zGbV'PI
Operaciones
<P!bP!POb!POP\V
tW VJh!<\
;'bP0
t' X
!PPhh!0
,cGJ!L
bb**P ! b+:
d wcD e 8|% f e [<O] 0(,(*,(
postmaster psql
!YPVP\btPV!
J!
', 4,4PG,V,GY P
zP\!V!'l@
!!P\,n!OP!GP\IO\Jt(P,C,P
&PGV*bcJcb0P\\Pb
!C*b'JG\J4<,!3P\!P'*P\Pb CP\
!#G,tSS\ P!3UGP=( PZbP!VP
cbP<!&!\t!2
&+%H"U%
%6%+8%
O%+
g
Parmetro
PG
Ejemplo
,];U 2
cl\( ; r t,z
];U
bZ v!\c* ]; U .
!!GPPtb#!#GP0!*P0!WV%!hSb\bt%#C#
!P0!']#!'
,tPE
JzYn
Notas
ggB
b
@ !c# \( G(;\tzP
b
@!c !t \2 ,!
P \t !
\l @ ,tP ?L ! ?3 Y!
\l @ ,tP , 6?L C ?3 Yn
, @ P\( PP*P t,P
P !,3!Pt!
]WQ!,\P
Jb V3,C!Pt
V7 ?J!XP ,
(!P\ b%G, P<,L/usr/local/pgsql/bin
b\b<GzLO !V,tC ,
!<!,Z
O cb't<!LP2zIV,!JP\&;hb\
WPt,#GP%J\P!*P\!]4]z?L !,Q%*P(J!P*\,
#',P\b!'3 V,t,'!&!,,(!&*Pb!t
z <,!<44PPPC!, (b<]!O
IPt\ P!P!'G
!b<,P]!,3%XP
\P b P&PnI\&I!nV
(!<PV cn
cc,
b\RV,*,Gb'c't<!Lb n r P\b zb
tOVPE
V,GbV4!b4PLP!(bG%\#
C postmaster !PP,&7PV
tV!J
,!VbO(!',PtO*POPtb
gg
gg
b,<
GbP3!&c4E L
!POP\!P(
'\,]*P*P#0P!POb!4z
P\! J !!CI ?\,#!YP
tbash
t P]P\!P] P\,,t\P Q!V]Gb\
%
X
<,!\(V
!bbPt\b
P\!PP(P\
X
!0 cDC
lK[+ d D bO!'b!
P(P\!PI
z h4J(&!V!(!Pc4 ,!(bb( PGb,G
4
b! \,
VP<!,,(P\!@
$ gunzip postgresql-7.0.tar.gz
$ tar -xf postgresql-7.0.tar
$ mv postgresql-7.0 /usr/src
#\b P<\!O!,0G,h!bP<#3Gb\
Antes de comenzar
tJ\CLPcVW%,%V #
b'!&\
* ++ e ,#!#PLGb\ #3z!make
# make ( ,t
\bPh!,*bt!0bOGb\O!&
b'
\b #
J,*,Jb!J\\\_ JWQ,\!,
make
\
bV\4t,tP
# make \ Ptb&W PC, \V
,'#b\ # make @
$ gmake -version
ggg
!'!PPCP!VP!
Pn!!nP!] ' !!&!,Q(P !P%
Procedimiento de Instalacin
%E%6%\/
V!t*!b#t%!!#CP!b !c4<_P%!Gb\*!,GVbV,n!]t
!b GW,PJ \, # postgresc\b
*,G4\VP V'bG&'CG 3
*,!&GV(
*,
zb,*b]c46*P\
W*JPbt\b*PU\!
*,G4,O,(#Vroot
!' bin
t ! Ph,YP\
#0 P%,\C(%b#JbJ] P2
z&
! P'!,*,Gb
,*b'\,zGCG']'!'P
cz,GY P,,!#,\]cbb G'
:
? Pt#b P0,U
##!!Th!GYG!
!P4IGbbPcOb3GbPZP\,,!#GZ!
!Pb L P P]#*C!&\\],*,!l @
z,ObC!!b**P4!OP,bn! (<P*P
zt pg_dumpall z0,\
VG,h&,t0,GC
*, P\#! Q%ObOb&!,!P&P\L,
V
?4'!
P\!
!
],tP3
P],t
!,\!,0pg_dumpall
]G!6 L]0!t!PcV
P\ P(<,! d xc,!b<(,tPV!Ob !, QO,
nP\! pg_dumpall ']tP C JC,tPt2!zP!b'
tP
L4 P
,0G,O'!bbzzY P!
!!%PPJJPZ J%I L !, P],,h!3!
G7]!4!P (PGb,> JV+ LU t,L%!J!P 3,,
z3!&
$ pg_dumpall > db.out
Atencin
Debe usted asegurarse de que su base de datos no se actualiza
durante su backup. Si es necesario, pare el postmaster, edite los
permisos del fichero /usr/local/pgsql/data/pg_hba.conf para permitirle a usted slo su uso, y relance de nuevo postmaster.
$ ps ax | grep postmaster
ggq
!Gb]!,Q<CMh\,P<CP]<LG,t(!(P !(V\P!
G\hM @
263
777
? SW
p1 S
0:00 (postmaster)
0:00 grep postmaster
$ kill pid
c\RV,!,PLbt!,!Ph!PtPb,&b%Gbc,*,LJ,+@
*P#!OP!bO*I
*P!'t]GGb\!b
<,GVP!
,
*(W!JPCt4!4PGb*P
,P#T3bb6! \!Pt src
@
$ mv /usr/local/pgsql /usr/local/pgsql.old
G,!!P!O<P<!
,\tG]]\%GbP
! Q4&b!,G7!<!!tP,&b0*P\b!4
P
*P ,*+ @
$ ./configure
4('P(
G'!b0XP(]\,!.@
./configure -help
z r ?4c
z,*P
0!,PVL!,<&
*P0!Lc4<t!
PP!'!b /usr/local/pgsql
cz'bP
\
!\b P0b'W P%,*b\Ic\0
\,
t'b,(P\
M V, P4 n
gg
#
O<,t,tx0bO((b*h!,tOPO
, ! !VP]\P!P] \,V /usr/lib/perl
'\
!, Pb,h*4P
P3Pt
b\b
# P!
P!,&!P!, r!
# b*
P0% Q,J!,t7]t\%,Wz!
!VCb Cb*
\C
P\I+@
$ gmake
!cP*,G4!L*P\P0P
,8L
\bO !J
*P#!']X
P]!'(P,(,!I
!6 h\]R Q!'G
\,Gb'PhPPV!, Q
U @
J
!L\_
!&\k\_
,3Gb\
,z\2I+@
$ gmake install
Q&
#,\\4PnhQP\! P\
VQ
!
Ob\P!V]b!&]#P!O,O,
z]t&!
bPtV v! r ? 2v?& @
$ LD_LIBRARY_PATH=/usr/local/pgsql/lib
$ export LD_LIBRARY_PATH
VP0,t#TP
b%!P%RQ,]WStCOt!Y
*P\ ~/.bash_profile
!0!POGb\O'&,zGb
X
Vb! 4!LGb3b
PP22!', /etc/ld.so.conf N!
] RQ
S Pt
*Pt,P*P\![%p%+%W
!S0!! !Q #%WP]!\!!Y,\IcV,UXP
#\b'*P\
/usr/local/pgsql/lib
P
VP!3,tP<,;Q\\b4%VG!
\ !3!b!t *,4 !3,6*Pbt
*P\3]'!CGtV!'bc4<2#VP
\PP2
$
$
$
$
ggA
mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data
su - postgres
/usr/local/pgsql/initdb -D /usr/local/pgsql/data
!P*P ]P#!!
\P#P(!PI!&Gb
(-D,<Pb PJ3,JPWV4b(b!Pt#!%
GbPIc,+ h!0#b!,!t\,!0,*
!bW,tP<,J!#%%(Ic,GbbZ,!WP
!4bP Gb PtP\,!!J!PcV !
,],3
,*b
*P\PP,\\,
t,h,z!Pt
!'!b
P(P! Q, '!!4\Vtnz!!&]G
!'!b
? \O PtI@
!Gb7t,P,ht!PY\]V,t\nz3\!t73!S
P -S
LtcPY PGb3*b!4!!&P3P I
<!bP.
@
$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data
\R V\V!4!!7!47,tP&
>Q
*P\#!]P!&P&!XPL ,PL]!J, O*!pg_hba.conf
0%4 b
**P bO*P\ P(!&*,(!&*,Gn
P
Pb!!b#'b0*P!,W Q\ P!
4Q\tP(CP\b,<]!P (*! *P!4x
P'*Pb4CcbV!bW't
!J,Ptn,\
!V!4G, P4X
P\,]% /usr/local/pgsql/bin b,
3z ?L t h,Gb N!,33! V!
t
!
]
b*P\ ~/.bash_profile /etc/profile I<LbL&b!PP
@
PATH=$PATH:/usr/local/pgsql/bin
XP zGbc
< ?&?,zPV!,zGCGJ!'P
4 Pb3P\
P -D postmaster initdb
?Oh
P\,&b]!\b
man
!Y<2I
$ cd /usr/src/pgsql/postgresql-7.0/doc
$ gmake install
@
,t\bhGGb \]P/usr/local/pgsql/doc
]!\b man/usr/local/pgsql/man
PN!]RQ
P\],
#,z! V!''!
,p@
MANPATH=$MANPATH:/usr/local/pgsql/man
!!\bPYPb\RVY!PYPt7bG2zchb,
]\Pt]Pt b\Pt
%*!C ,
PGb*(!!S!bW#\P P! P\\% W Q0J!t
\\,
b
$ cd /usr/local/pgsql/doc
$ gunzip -c user.ps.tz | lpr
ggy
$
$
$
$
gunzip user.ps.gz
gshp -sOUTPUTFILE=user.hp user.ps
gzip user.ps
lpr -l -s -r manpage.hp
!0'!!
(\]3I4
P,\b3!pQ\\,4P4,J WQ!,.?4!\bt!P%GO!b
P\b\b3SUPGb,z4 P3b3Pt\*P GP\
!,*P(]b#G&!
!b
b\b P]Gb\P!*P\]!
\P!
!(!% J!%!b'\J44P4\\ *Gb3&
C,t!PLPGb,z4WVJtLP\\bV!!4b'
!#P3!&PP2
&!\P%,W,
\P\*b,4%GLb&\b'V,W\! , ,!,L\P!JLP!% PLt!b0\
tL\
JWQzb\P<POGQ!!z,\]Ctk@
?
#!/bin/sh
[ -x /usr/local/pgsql/bin/postmaster ] && {
su -l pgsql -c exec /usr/local/pgsql/bin/postmaster
-D/usr/local/pgsql/data
-S -o -F > /usr/local/pgsql/errlog &
echo -n pgsql
}
gg}
4,YC!,!*PP*
]bt]!RQ]*P\\!,Gbb! n
*J!]G,(bt!,!X
P&R P%!!]4R QJG#G J\!
,cP!<I0G\6(! LYOY P\b
\!V
PL2
!#! N!3
GpP0It\ ''bt/etc/rc.d/init.d/postgres.init
' contrib/linux/ W'*P*P
'0\V
b' ,4!! /etc/rc.d/rc5.d/S98postgres.init
Notas
zP#'!P!P0,G
!ZGPZ*P !
LtV&PGb,z40*P<V#X
P
,&P\'&P!@P
*,V! Q *,,Gb!,!b\b(,!!,C
!JJP!*Px! /usr/src/pgsql/postgresql-7.0/src/test/regress/README
P
Gb*P<!On
b,hPOb(!
,*
b
@!cO b P
b
@!cO ( P
b
@ !c# PGb,G z!Pz\zP x
gg
gqB
b,OOGbPV!h!,tPO (!ObI M
Construccion de librerias
"!$#&%'(*)+,(*!.-,/102+,3-,456(7/98:<;=(*6(*:<%/9(*0>=?-,:"@%=?%AB-,0>=5CD:5E"-,3%+GFIHHKJL@=?M
N % N +,(7#&(7/1:<(/1O:=?% N %PQ(7/&(7/R:=
-,:(*#&%S7T
@- N +,(L02#&@-,+,%=I+,%U+,- N =?(*=V-,%*
#&%/13%+,M
#&(7/1:<((7/:=W0>%5S
8%=V%0>5/1:<=3-,="+,%"+,- N =(7=V-,%X0>%# N -,(Y%+Z4-,=(70>:=?-,
J9(70>=?- N %U+,560>5#&%/145
src
T:L%3#[(\3(U3:(74]:<-,(7/1(UE"-,3%+FYHHO(7/3O0>%#&-,/1^S
W-,;3-,(*/1:(76%=0>_1-,`5"(7=?%/02=(*%74a
b interfaces\libpq\Release\libpq.dll Mc%
+,- N =(7=?-,%U4-,/1%#&-,0>%d(7/1+,%e% N +,(
b interfaces\libpq\Release\libpqdll.lib MG- N =(7=?-,%WfD#&@.5=?:%4%g@%=?%g02/1(70>:<%=.(7+
@=;=?%#&%%
+,- N @\hS 4+,+
b interfaces\libpq\Release\libpq.lib McE^(*=V-,/T:<%:<-,02%U4(+,%d+,- N =(7=?-,%
b bin\psql\Release\psql.exe McT+i#&/1-,:="-,/1:<(7=?%0>:-,`i4(jGkL
%U3/1-,0>%
@%=V:<(Y4(I+,%
+,- N =(7=?-,%U\3((*=V%=?(*%+,#&(7/1:<(Y-,/1:<%+,%4%
(*6+,%+,- N =?(*=V-,%4(
S
libpq.dll
T+*%=0>_1-,`cU(7/
+,%W#&%J5=V-,%g4(l+,5^02%^4( N ("(7=1@3(7:U(7/
(7+74-,=(70>:=?-,
m ](7/
(7/n3/o-,:(7#&%qpr-,/145sutv1wZtxy?SjZ-(7:(i%=?0z_1WINNT\SYSTEM32
-,`c&(*d-,/1:%+,%4
3%/14WINDOWS\SYSTEM
[3/n@=5;5=V%#&%i4(i-,/1:%+,%0>-,/1Xc4( N (L(7=Y-,/1:<%+,%4[0>/o3/n(7{%#&-,/1%4=Y4(`c(7=M
-,5/1(7l3%/14uEYT|6jGfD}~f~}\53(I(*:<%-,/10>+,3-,4
(7/L(7+%=02_1-,`X@%=V%I%(7;53=V%=\3(g3/1%
`(7=V-,/#&%W=(*0-,(7/1:<(U4(U+,%
+,- N =(7=?-,%U/19(7%U N =((70>=V-,:<%1S
jZ-G@+,%/1(7%
4(*%=V=G+,%=h3%/14L+,- N @\q(*/q(7:%d#&%\53-,/c%X:(*/14=V%U\3(U%/1%4-,=+,W4-,=(70>:<5=?-,
J
%+Z0>%#&-,/1L(7/3W0>/1);53=?%02-,/1(7S
src\include
src\interfaces\libpq
G4%h+,%h5=4(*/1(7h4(W8:<;=(*"\53(I(g(VPQ(70>3:%/L4-,=(70>:%#&(7/1:(W4(*4(I3/L_1(*+,+G4(g/1-,{U(
(7/10>3(7/1:<=V%/i(7/q(7+Z4-,=(*02:<5=?-,1SSSw N -,/11SVf/102+,3-,=(7:<(4-,=(70>:=?-,(*/q3O`%=?-,% N +,(g4((7/1:<5=?/1
@%:<_qCD%02-,+,-,:<%=?U#&30>_19+,%
(?P<(*0230>-,/O4(Y+,56#&-,#&cS
T{-,:<(W3/1%U0>5+,(*020>-,/i4(g0>%:<+,5;5h4(7+-,:<(7#&%U(*/i0>%4%I(7=?`c-,4=VS%#&-,#&%Y-,/102+,3J5(Y3/1%
0>+,%( m
y.\53(u0>/1:-,(7/1(d3/1%u-,/1:%/10>-,%
@%=?%d02%4%d33%=V-,q`+,-,49(*/O8:;5=(7S2%
-,/1:%/10>pg_user
-,%O(*@(70>-,)0>%K3/o02/PQ3/:<4(q@=?-,`-,+,(7;5-,5L N =(98:;5=(7X0>5#&n+,%O@- N -,+,-,4%4
4(
%02:<3%=W0>5#&O3@(*=33%=?-,](*/&85:;5=(7X5+,%i@- N -,+,-,4%44(
02=(7%*=*wZ4(*:<=3-,= N %(7Y4(
4%:<5"J9+,%d@.5- N -,+,-,4%4]4(%02:<3%+,-,e%=+,W0>%:<+,;W4(*+-,:<(7#&%1S/33%=?-,i4(Y/1-,{
/1
@3(74(I_1%0>(7=^/1%4%02/q85:<;=(7"_1%:<%
\3((-,/1:<%+,(3/1%
-,/1:%/102-,%U%@=[email protected],%74%(7/q4-,0>_1%
0>+,%(SV83(74(I(7/10>5/1:<=?%=V(#&6-,/1C=?#&%0>-,5/q N =(Y+,5"0>%:+,5;55"4(*+Z-,:<(7#&%
(VPQ(70>3:<%/14
0>5/13+,:%W N =(Y+,%W0>+,%(7"%@=@-,%4%*S
Iniciando postmaster
~
+,(@3(74(Y302(*4(7=/1%4%U%U3/1% N %(I4(Y4%:l%U#&(7/c56\3((7:<Y0>=V=?-,(7/14(7+G@=0>(7
SFY#&
%4#&-,/1-,:=?%4=<X_1%J
3/1%Y(7=?-,(I4(I0>%h\3(I4( N (I=(*02=4.%=%/1:<(7h4(
-,postmaster
/1-,0>-,%=
SE(*%i+,%d(70>0>-,5/1(*d4(L-,/1:<%+,%0>-,5/nJ&0>/1);53=V%02-,/o(*/R(7:(i#&-,#&
#&%/13%+postmaster
S
(]:49#&45X-W_1%&3/1:%+,%4o8:<;=(*9-,;3-,(*/14B+,%i-,/1:<=3020>-,/(*i4(
-,/1:%+,%0>-,/r%[email protected],(4(q+,%O+,(7:<=?%X.+,n/1-,0>\3(q:(*/14=VK\3(_1%02(*=d@.%=V%-,/1-,0>-,%=
(7+h@=0>(7
(7"-,/1:<=?430>-,=l(*:<%
-,#&@+,(U=4(7/"a
postmaster
% postmaster
}L0>%-,/1%+,#&(7/1:<(7X
(70>=?- N (
#&(7/1%PQ(7d\53(i+,(L(7=?/R4(L%J34%i@%=V%i=(*+,`(7=
@= N +,(*#&%SjG-54(7(postmaster
7%d`(7=h+,5I#&(*/1%zP<(*I4(U4-,%;5/1:<-,0>q4(
X@3(74(U-,/1-,0>-,%=?+,
0>5/+,%
@0>-,5/KM4OJ9=(74-,=V-,;5-,=h+,%U%+,-,4%
%+%=0_1-,`94(=(*;-,:=postmaster
^a
% postmaster -d > pm.log 2>&1 &
jZ-G/1i4(7(7%U`c(*=h+,g#&(7/1%PQ(7X-,/1,0>-,(*+,i4(+,%dC=V#&%
% postmaster -S
(7=?
!jZ!-,+,(*/10>-,5^Sz} N (7=?`(\3(U%+/1i_1% N (7=(7+Z-,;5/1i%#&@(*=V%/14 m !
!yc%+
)/1postmaster
%+Z4(7++,:-,#&i(VPQ(7#&@+,X/1i(U(VPQ(70>3:%
0>#&9@=02(*4(UC/14S
J
Usando pg_options
Nota: Contribucin de Massimo Dal Zotto 1
T+G%=0>_1-,`@0>-,/1%+
0>/1:-,(*/1(@02-,/1(763%4%h@=(7+ N %0>'5(7/14K@%=V%
0>5/1:<=5+,%=l+,5I#&(*/1%zP<data/pg_options
(*g4(
:<=V%e%4.qJ:=g@%=V#&(*:=W%PQ3:% N +,(*g4(7+5#&-,#&lST+%=02_1-,M
`q(
`3(7+,`(u%u+,(*(7=60>3%/149(7+ N %0>'(*/14&=(70>- N (
+,%u(71%+cjGfu8*XG@(7=?#&-,:-,(*/14q02%# N -,%=
+,%5@0>-,/1(7U4(:<-,(7#&@]4((VPQ(70>30>-,5/n%+.`3(7+,X5-,/n\3((7%L@=(70>-,K=(7-,/1-,0>-,%=g85:<;=(7S
T/[(7:<(
%=0_1-,`K(u@3(74(*/[-,/10>+,3,=W@02-,/1(74(u4(7@3=?%70>-,/&3%4%Y@=g(*+1@%\3(*:(d4(
:=?%e*%4 m
yGd@%=?#&(7:<=5/13#&7=?-,0>5h3%4@=(*+ N %0>M
'(*/14O@%=?backend/utils/misc/trace.c
%
0>5/1:<=5+,%=h3O02#&@=V:<%#&-,(7/1:<^S
G4%6+,%6@;@:<-,5/1W(-,/1-,02-,%+,-,e%/%d0>(7=L%+-,/1-,0>-,%=h(7+ N %0>'(*/14gSjZ-Z(
%1%4(2/Ki(
#&5M
4-,)02%/@0>-,5/1(*X.(*=V/o+,(74%d@=U:<54
+, N %02'5(7/14r\3(9(q-,/1-,0>-,(7/o%K0>/1:-,/13%0>-,/"S
8%=V%\3(0>3%+,\3-,(*=I0>%# N -,K:#&(L(7C(70>:<K(*/&+,5 N %0>'(*/14n\3(L(7:</&%0>:-,`X(7@=(70>-,
(7/1`-,%=3/1%
(71%+jZfu8%+G@5:<#&%:(*=X*\3-,(7/q=(7(*/1`c-,%=?Y+,%U(71%+%U:4"+,5 N %0>'(*/14
%0>:-,`SjG(U@3(74(*/O%02:<-,`%=h+,I0>%# N -,g@%=?%d3/ N %02'5(7/14](*@(*02)02i(7/1`-,/145+,(4-,=(70>M
:%#&(7/1:(Y3/1%d(*1%+ZjGfDu
85S
%"@;55@.:-,/1W@3(*4(7/(7@(70>-,)02%=V(I:%# N -,*/K0>/+,%d5@0>-,/
4(85:<;=(7a
-T
%gC3/10>-,/1(7Y3%4%I@%=V%u-,/14-,0>%="(*=V==(7gJ#&(*/1%PQ(7Y4(u4(*@3=V%02-,/]@3(*4(7/K3%=6+,%
C%0>-,+,-,4%74 ?$1 S$5^#&(7/1%PQ(7h\3(g(W(702=?- N (7/(7/:43:u:<4(7=?=.-,/10>+,3J5(7/i3/L@=(7)GP<
0>5/+,%
C(70>_1%X+,%U_15=?%dJ9(7+/1#&(*=?4(U@=0>(7L4(*+ N %02'5(7/14K\3(
+,%6;5(7/1(*=V%1S
#timestamp
980127.17:52:14.173
980127.17:52:14.174
980127.17:52:14.186
980127.17:52:14.186
980127.17:52:14.186
980127.19:52:14.292
980127.19:52:14.413
980127.19:52:14.466
#pid
[29271]
[29271]
[29271]
[29286]
[29286]
[29286]
[29286]
[29286]
#message
StartTransactionCommand
ProcessUtility: drop table t;
SIIncNumEntries: table is 70% full
Async_NotifyHandler
Waking up sleeping backend process
Async_NotifyFrontEnd
Async_NotifyFrontEnd done
Async_NotifyHandler done
T:(6C=V#&%:uC%0>-,+,-,:%g+,%I+,(*02:<3=V%g4(W+,h#&(7/1%PQ(7^Ju@(7=?#&-,:<(g% N (*=(7{%0>:%*#&(7:<(g+,u\53(g_1%02(
0>%4% N %0>'(7/14&JK(7/[\3
#&5#&(*/1:^S*G%# N -,7/[C%0>-,+,-,:%
+,%L(*0>=?-,:3=?%4(u0>=V-,@.:Y%s'K@(7=?+
(7/10>-,+,+,5Y\3(d%/1%+,-,0>(7/K+,Y_1-,:<=V-,%+,(*I@%=?%u4(7:<(70>:%*=6(7=?=5=(2I@= N +,(7#&%g(7/O+,% N %(
4(
4%:<5"i@.%=V%U02%+,023+,%=^(*:<%4:<-,0>%":(7#&@=?%+,(764(:<=V%/1%0>-,/1(7S
#&(7/1%PQ(7
(702=?-,:<5U%9:=?%`74(LJ+,;&3:<-,+,-,e%/R+,%9C%0>-,+,-,4%4}u}FY
S7T+3
4(LJ+,;n(i0>/1:=+,%#&(*4-,%/1:<(9+,%q@0>-,5/oJ5+,5;R(*/o@;55@.:-,/1S85=Y4(7;=?%0>-,%X#&3M
0>_1%hC3/102-,/1(7"+,+,%#&%/i4-,=(70>:<%#&(7/1:<(I%
@%=?%I(702=?- N -,=^3l#&(*/1%P<(*l%:<453:
:4(7=?=<X0>3J%
%+,-,4%u/1q(d@3(74(d0>/1:=printf()
+,%=6#&(74-,%/1:(
+,%
5@0>-,/]J5+,;K/1-1@3(74(
-,/10>+,3,=
C(70>_1%iJ&_1=V%cSjG(7=?%=(*02#&(7/14% N +,(i3:<-,:3-,=U:<54%
+,%
+,+,%#&%4%*d%q@=?-,/1:Ch0>5/n+,%q#&%0>=
8|6f~XJK:4%Y+,%Y(702=?-,:3=?%I%:4(7=?=6@=W+,%L#&%0>=qT8|6f~X@.%=V%
@4(7=60>/1:=+,%=
:4%
+,%
%+,-,4%
4(U3/#&54L3/1-,C5=?#&(S
T+ZC5=?#&%:<i4(*+Z%=02_1-,`
(7"0>5#&9-,;53(a
pg_options
# comentario
option=valor_entero
option
option+
option-
# Establece el valor de
# establece option = 1
# establece option = 1
# establece option = 0
option
} N (7=?`(\3(
@3(74((7=d3/1%O% N =(7`-,%*:3=?%]4(3/B/1# N =(4(5@0>-,/B4(+,
4(7)/1-,4W(*/ keyword
S
backend/utils/misc/trace.c
7&i7
?>D5L5
85=h(VPQ(7#&@+,X#&-5%=?0>_1-,`@;@:<-,5/1W02/1:<-,(7/1(U+,W-,;53-,(*/1:(*g`%+,5=(*a
verbose=2
query
hostlookup
showportnumber
Opciones reconocidas
0>:<3%+,#&(7/1:<((7:/q4(7)/1-,4%6+,%"5@0>-,/1(7a
%+,+
A%=?0>%4(:=?%e%;+, N %+SW`%+,=(7"@(7=?#&-,:-,456/"a
AB(7/1%PQ(764(:<=V%e%74i%0>:-,`%45"-,/14-,`-,43%+,#&(7/1:<(
0>:-,`%=:4W+,g#&(7/1%PQ(764(:<=V%e%41
MD
f/1_1- N -,=":<54W+,g#&(*/1%P<(*W4(Y:=?%e%*4
`(7= N (
A%=?0>%4(`(7= N -,4%4gSzE^%+,=(7"@(7=?#&-,:-,45a
jG-,/#&(7/1%PQ(7X7:(U(*6(*+`c%+,=h@5=#&-,-Q/"S
T0>=?- N -,=l#&(7/1%PQ(764(-,/1C=V#&%02-,/"S
T0>=?- N -,=l#&"#&(7/1%PQ(7W4(-,/1C=V#&%0>-,/"S
\3(7=?J
Z=?%e%*=l@(7:<-,0>-,5/1(*SE^%+,=(7"@(7=?#&-,:-,4a
~qi(70>=V- N -,=h+,%
@(7:<-,0>-,5/"S
T0>=?- N -,=l3/1%
`(7=?-,5/K0>5/14(*/1%4%
4(+,%U@(7:-,0>-,/O(*/q3/1%d+,,/1(7%cS
T0>=?- N -,=l+,%
0>/13+,:<%d0>5#&@+,(*:%1S
@+,%/
T0>=?- N -,=l(*+Z@+,%/4(0>5/13+,:<%1S
@%=?(
T0>=?- N -,=l+,%
%+,-,4%
4(7+:=?%430>:<5=^4(U0>/13+,:<%S
=(7s=V-,:<:<(7/
T0>=?- N -,=l+,%
0>/13+,:%d=(7(70>=?-,:%1S
@%=?(7=:%:<
T0>=?- N -,=l+,%"(*:<%4:<-,0>%"4(7+:=?%430>:=4(0>5/13+,:<%S
@+,%/1/1(7=?:%:
T0>=?- N -,=l+,%"(*:<%4:<-,0>%"4(7+@+,%/1-,)0>%45=VS
(7{(70>3:=V:<%:
T0>=?- N -,=l+,%"(*:<%4:<-,0>%"4((VPQ(70>30>-,5/"S
_15=?:+,0>'
(
#&#&(7/1:<O/1K(
3%XZ@.(7=q(u@=(70>-,%@%=V%
_1% N -,+,-,:<%=6/13(7`%Y0>%=V%0:(*=V:<-,0>%Y(7/
(7+ZC3:3=^S
+,50>'5
Z=?%e%*= N +,\3(7S
3(*=V+,0>'
Z=?%e%*= N +,\3(7g4(33%=?-,S
@-,/1+,50>'5
Z=?%e%*=l@-,/+,02'5$S
/15:<-,CJ
Z=?%e%*=lC3/10>-,5/1(764(/1:<-,)0>%0>-,/"S
#&%+,+,0
jZ-,/3i@=l(*+5#[5#&(7/1:<^S
@%+,+,0
jZ-,/3i@=l(*+5#[5#&(7/1:<^S
+,50>'54( N 3;5-,4#&-,/
A-,/1-,#&3#=(7+,%:<-,5/q-,4]:<=V%0>(74 N Ji+,50>'5S
+,50>'54( N 3;5=$(*+,-,4
5-,4X-,C1/15:ce(7=X7C.=(7+,%:-,/:=?%0>(74 N Ji+,50>'5S
+,50>'5=(7%*4@=?-,5=?-,:<J
jZ-,/3i@=l(*+5#[5#&(7/1:<^S
4(7%41+,02'5:<-,#&(73:
G(7#&@.5=?-,e%4=4(U0>5#&@= N %0>-,5/4( N +,\3(7g0>-,=0>3+,%=(SS
J+,;
A%=?0>%4(J+,;hSE^%+,5=(*6@(*=V#&-,:<-,4a
AB(7/1%PQ(76%
:453:VwZ:4(7=?=zS
AB(7/1%PQ(76%
:453:VwZ:4(7=?=lJ9J5+,5;S
AB(7/1%PQ(765+,%#[(7/1:(U%UJ5+,5;lS
_15:<+,5'53@
% N -,+,-,:%=h+,%d0>/13+,:<%d4(/1# N =(U4(_1:1(7/@:%:<3S
_15s@=V:</13# N (7=
A:=?%=(7+/1#&(7=i4(Y@3(7=?:L(7/@:%:<3S
/15:<-,CJ3/1+,0>'
(* N +,\3(7i4(U@;5+,-,:(7/1(*=h4(*@.37W4(Y/15:<-,CJZS
/15:<-,CJ_1%02'
5=?=?%=h:<3@+,%643@+,-,0>%4%*W4(Y@;+,-,:<(7/1(7=VS
Notas
1S#&%-+,:^a 4e
02S 3/1-,:</"S -,:
b
b
b
b
8=:(70>0>-,/[4(d+,5Y)0>_1(7=5Y4(d+,% N %(u4(d4%:<S2G45Y+,Y)02_1(*=5Y%+,#&%02(*/1%4I(7/
+,% N %(U4(
4%:<W(7:<%/O@.=?:<(7;-,45W02/1:=?%u(70>=V-,:<3=V%d@.5="0>3%+,\53-,(*=l0>3(7/1:<%u\3(
/19(*%
+,%
4(7+Z3@.(7=33%=V-,L4(U85:<;=(7S
%d02/1(7{-,5/1(*4(+,L0>+,-,(*/1:(7
%+h(*=V`-,4=
4(+,% N %(4(q4%:<5
(*:<%/r@(*=V#&-,:<-,4%X
@=4(*CD(*02:<X/1-,0>%#&(*/1:([#&(74-,%/1:(]50>'5(7:9/1-,{+,0>%+,(79J/1B#&(*/14-,%/1:<([0>'(7:<
FY8WwGfD85S*q%i4(%=?=?%/10>%7=?(L(7+.4(7#&/1-,]0>/R+,%i[email protected],/
@%=?%L@(*=V#&-,:<-,=g+,%i0>5/1(7{-,/
-i
4(Y02+,-,(*/1:(76/1i+,0>%+,(7S
%602/1(7{-,5/1(*g4(U+,g0>+,-,(7/1:<(76(@3(74(7/=(7:<=V-,/1;5-,=l@="4-,=(*002-,/KfD8]JhwG9@=l/1#&M
N =(Y4(U33%=?-,#&(74-,%/1:<(U(7+Z)0>_1(7=i@;5_ N %1S 0>/1Cc-,:<3%4L(7/8u
YOS
%W0>/1(7{-,5/1(*I4(
+,5W02+,-,(*/1:(*I@3(74(7/(7=l%3:(7/1:<-,)0>%4%6#&(74-,%/1:<(
5:<=5W@%\3(7:<(7
(7{:<(7=?/15S
02%4%
33%=?-,q4(
85:<;=(7g(
+,(d%-,;/1%u3/O/15# N =(d4(
33%=?-,qJ m @02-,/1%+,#&(*/1:(7y
3/1%
02/1:<=V%(*1%1S>8=W4(7C(70:<5XZ+,5Y3%=?-,5g/1K:<-,(7/1(*/]@(7=?#&-,4(u(*0>=?-,:3=?%u% N %(*g4(
4%:6\53(U/19_1%J5%/q0>=?(*%4.^S
"33%=?-,[email protected](*4(7/9(7=-,/10>+,3-,46(*/ 1?5> X7JL(7+Z%0>0>(7
%U+,%":% N +,%l@3(74(I=?(*:<=?-,/1M
;5-,=V(Y(7/ N %(Y%d(756;5=?3@S
Autentificacion de Usuarios
8 %=V%0>=?(*%=^3//13(*`cL33%=V-,X(VPQ(70>3:(U(*+Z@=5;5=V%#&%
S
createuser
8%=V%
%1%4-,=63/[3%=V-,K3/&;=3@4(u3%=?-,U%
3/&/13(7`;=3@K3/1O4(
+,U33%=?-,5
4( N (W0>=(7%7=^(*+;5=?3@.J
%1%4-,=%+=(7:u%Y(7(I;5=3@^SVT/
(7:l@%5/1@3(*4(7/
=(7%*+,-,e%=?(i%0>:<3%+,#&(7/1:<(i#&(7/14-,%/1:<(q(*+0>5#&%/14 >?Postgres
95? Su;5=3@.5
(94(7)/1(7/
%1%4-,(*/149+,U`%+,=(7g%
+,%L:<% N +,%
XJK3%/14(7+c0>#&%/14 @%=V%u%-,;5/1%=
pg_group
@=?-,`c-,+,(*;-,W%+Z;=3@^S
Crear Usuarios
Crear Grupos
Control de Acceso
8=V-,`-,+,(7;5-,W4(%020>(7
T+.3K4(+,U@=V-,`-,+,(7;5-,U4(%0>0>(7K@%=V%+,-,#&-,:%=g+,%i+,(*02:<3=V%X(70>=V-,:<3=V%J[+,%@3(7:%
4(=(7;5+,%"%
+,%602+,%(*6(U:<=V%:%(7/ 1?>?2>? S
=V=?%41i4(U0>+,%(7"J9#&4-,)0>%0>-,5/K4((7:<=302:<3=V%S
u0>5#&%/145d\3( N 5=?=V%/o[#&4-,)02%/o+,%q(7:=30>:<3=?%q4(i3/1%K0>+,%(7X0>#& Q X
?5Q X.J ?5 X.+,RC3/102-,/1%/r0>/r(7+h@.=?@-,(7:<%*=V-,R4(9+,%K0>+,%(SFY#&
_1(7#&64-,0>_1%/1:<(7X7(7:%6@(7=?%0>-,/1(7l/1L(*:/q@(*=V#&-,:<-,4% 55z (7/q+,"0>%:+,5;55
4(7+ZJ:<(7#&%1S
Funciones y Reglas
%C3/102-,/1(7
J[+,%U=(7;5+,%@(7=?#&-,:(7/R%i+,d33%=?-,5U-,/1(7=?:%=I0>54-,;5[(7/R(*+(7=?`-,4=I4(
+,% N %(]4(O4%:<5i\3(&:=933%=?-,5i@3(74(7/(VPQ(70>3:<%=
-,/% N (7=?+,^S
# N 5i#&(70>%/1-,M
#&5g@(7=?#&-,:(7/K%u+,I33%=?-,I%+,P<%= z>>>"l> 0>/]=(7+,%:-,`%d-,#&@3/1-,4%4gS%u/1-,0>%
@=5:<(70>0>-,5/R(7C(*02:<-,`%i(7U3/n(7:<=(70>_1]0>5/1:<=5+ N =(L\3-,(*/@3(*4(L4(7)/1-,=YC3/10>-,5/1(* m @=
(VPQ(7#&@+,X7(70>=?- N -,=(7/9:<% N +,%h0>5/q0>%#&@ljGkLy5J=?(*;+,%S%# N -,7/9(Y=(*02#&-,(7/14%Y%34-,:<%=
(7;3-,#&-,(*/1:gJi%+,(7=?:%*W(*/
X
J
S
pg_class pg_user
pg_group
Funciones
%gC3/10>-,/1(7I(70>=?-,:%W(7/]0>3%+,\3-,(*="+,(7/1;53%PQ(u(*{G0>(7@:<9jGkL[(d(VPQ(70>3:%/K@=6(7+5(*=V`-,4=
m (7+6(*=V`-,4=
4(]+,% N %(]4(]4%:90>/(7+W#&-,#&@(*=V#&-,B\3([(7+633%=V-,
S5postgres
Ti@5- N +,(]0>%# N -,%=
+,%
4(O+,% N %(O4(O4%:<5iC3/c02-,/1%&02/(*+"3(*=?M-,44(
(7:=30>:3=?%4(64%:<5-,/1:(*=V/1%4(7+7(7=?`-,45=1@=+,5^3postgres
3%=V-,X4(*4("4(7/1:<=
4(6C3/10>-,5/1(*
4(U0>5/1)%/1e%1S>Tg@="(7+,+,q\3(
(7:<(
:-,@q4(
C3/10>-,5/1(*I@3(74(*/1X(7/1:=(
:=?%g0>%X(7`-,:<%=
0>3%+,\3-,(7=^-,:<(7#&%4(g02/1:=+Z4(Y%020>(7^S?T:<(Y(*"3/i@= N +,(7#&%-,/1_1(7=(7/1:<(Y%Y+,%lC3/10>-,5/1(7
4(7)/1-,4%"@=l+,W33%=?-,56(7/FLS
Reglas
Caveats
FY#&r(7/+,%iCD3/10>-,/1(79jGkX+,%i=?(*;+,%L:<%# N ,(*/(](VPQ(70>3:<%/02/+,%[-,4(7/1:<-,4%4Jr+,
@(7=?#&-,564(7+Z33%=?-,i\3(U+,+,%#&9%+Z(7=?`c-,4=4(U+,% N %(4(Y4%:S
en su Makefile.custom.
3:-,+,-,e%="0>3%.cshrc
+,\3-,(7="`%=?-,% N +,(
4(U(7/c:=V/1@%=?%d=(7C(7=-,=?(u%u3/1%u+,02%+,-,e%0>-,5/
%+,:<(7=V/1%:-,`%7X7%3/1\3((@=(7)(7=(Y\3(Y+,%"`c%=?-,% N +,(7l(*:<7/q@=(*)ZPQ%4%*"02/q!8u
YZ!@%=V%
(7+,-,#&-,/1%=^0>/1CD3-,/(*lJi+,%@5- N -,+,-,4%4O4(Y0>5/-,0>:W0>/K:<=V%l`%=?-,% N +,(7XL3K=(7(70>=V-,:<3M
=V%cS
8%=V%I0>=(7%*=^3/9%=(%Y4(g%+,#&%0>(7/1%#[-,(7/1:
4(g4%:<5(7/98u
YZX2%(7;5=(7(I4(g\3(
J%Y(7{-,:(gJ
@3(74(g(7=(70>=?-,:u@=(7+%4#&-,/1-,:=?%4=4(g@5:<;=(7S
(7@/ho37
me/postgres
4(74(I+,%d+,-,/1(7%d4(=4(7/1(7X(*0>=?- N %
% setenv PGDATA2 /home/postgres/data
% initlocation $PGDATA2
jZ3@.5/1;5%#&g\3(
\3-,(7=(U0>=(7%*="3/1% N %(U4(
4%:<56+,+,%#&%4%d#&- N %(5S83(*4(U_1%0>(7=?+,i0>5/
(7+Z-,;3-,(*/1:(
=4(7/"a
% createdb nombredb
nombredb
% psql nombredb
|6(*02- N -,=?
0>5#&L=(7@3(7:%U(7+-,;53-,(7/1:<(U#&(7/1%PQ(a
Welcome to the Postgres interactive sql monitor:
type \? for help on slash commands
type \q to quit
type \g or terminate with semicolon to execute query
You are currently connected to the database: nombredb
nombredb=
T:(W-,/14-,0>%:<-,`c
+,(W-,/1CD=?#&%Y4(g\53(I(*+#&/1-,:=^4(6:<(7=V#&-,/c%+(W(7/10>3(7/1:<=V%I4-,@3(7:
J
\3(
@3(74(g(70>=V- N -,=0>/13+,:<%"jGkLq(7/9(*+G(7@%0>-,
4(g:=?% N %PQ0>=(2%4
@=(*+G0>-,:%4u#&5/1-,:<c=4(
:(*=V#&-,/1%+$ST+@=;5=V%#&%
=(7@/14(6%g0>54-,;54(6(70>%@(6\3(60>#&-,(7/1e%/L0>/L+,% N %=?=?%
-,/1`(7=V:<-,4%X!
G!2S>8=6(VPQ(7#&psql
@+,X@3(*4(
N :<(7/1(7=6%J534%u N =(
+,%-,/1:<%{G-I4(u`%=?-,%*Y5=4(7/1(*
jZkO4(Y85:;5=(76(70>=V- N -,(7/14a
nombredb=> \h
/1%I`(7eI\3(g_1%:<(7=?#&-,/1%4u4(g-,/1:=430>-,=3l02/13+,:%(7/i(*+(7@%0>-,u4(W:<=V% N %zP<X*@3(*4(
@%%=^(7+0>5/1:<(7/1-,4L4(U7:<(%+(7=V`-,4=4(85:<;=(76(70>=V- N -,(*/14a
nombredb=> \g
T:O+,(4-,0>(L%+.(7=?`c-,45=g\3(L@=02(*(
+,%90>5/13+,:%cSjG-.:<(7=?#&-,/1%930>5/13+,:<%902/R@3/1:]J
0>5#&%X1/1n(7
/1(70>(7%=?-,n\53(-,/1:<=?43e0>%+,%O(70>3(7/10>-,%G;S
@=50>(7%*=VK%3:#&:<-,0>%M
#&(7/1:<(
0>5/c3+,:<%
:<(7=?#&-,/1%4%Y(*/&@3/1:KJO02#&%1S8%=?%L+,(*(7=Wpsql
+,%0>5/13+,:%U4(
3/&)02_1(*=5X
(7/q+,3;5%=l4(Y-,/1:=430>-,=V+,%"-,/1:<(7=?%0>:-,`%#&(7/1:<(7X(70>=?- N %1a
nombredb=> \i fichero
8%=V%%+,-,=l4(
psql
nombredb=
\q
Ji`5+,`(7=h%
/1-,{X(70>=V- N %ca
:(*=V#&-,/1%=VdJi+,(d4(7`5+,`(7=?
(7+-,/1:<7=?@=(7:(U4(U5=4(7/1(*S m 8%=?%
0>/150>(7=l#&g=4(7/1(7
psql
4(i
(70>%@(7Xc(70>=V- N %G_r(7/+,%K(7/1:<=?%4%q4(7+#&5/1-,:<c=VS yl5u(*@.%0>-,5u(*/ N +,%/10> m (7@%0-,X
:% N 3+,%4.=(7J%+,:<54(q+,,/1(*%yW@3(74(7/o3%=V(+,- N =(7#[(7/1:(q(7/B+,%0>5/13+,:<%jZkgSG5
0>5#&(7/1:<%=?-,5(*/r3/1%O5+,%O+,,/1(7%K(q-,/14-,0>%/B#&(74-,%/1:(q45
;53-,/1(7 m *yzSG54+,n\3(
`%J%q4(*4(i+,u;53-,5/1(7
_1%:<%(7+)/o4(9+,%q+,,/1(*%K(7=?q-,;/1=?%4^Su0>5#&(*/1:%=?-,
\3(
% N %7=0>%/#&+,:-,@+,(*L+,/1(7%X1\3(q(7:/o4(7/1:<=?&4(q3/1%K+,,/1(7%K(9(7/10>-,(*=V=?%/r(*/1:=(91wZ9SSS
*wGX3/1%d0>5/1`(7/10>-,/O\3(U(U:<5#&L@=(7:%4%U4(YfD/1;5=?(*S
J
T:%Y%0>0>-,5/9(*+,-,#&-,/1%
C,-,0>%#&(7/1:<(I:<545"+,6)0>_1(7=l%0>-,%4l0>5/q+,% N %(g4(I4%:<5lJ/1
@3(74(I(*=l-,/1`(7=?:-,4%X@=l+,i\53(U+,94( N ((7=h3%4%U02/;=?%/@=(70>%*302-,/"S
T":%# N -,*/K@.5- N +,(U4(7:<=?3-,=h3/1% N %(U4(4%:"4(74(3/1%d(7-,5/KjGkLK3%/14a
85:<;=(7l@=@=?0>-,/1%4l3:-,+,-4%4(7l@%=?%I=(7%+,-,e%*=^+,%l0>[email protected],%l4(I(*;3=?-,4%4q4(Y3-,:(7M
#&%1a
@%=?%U0>[email protected],%W4(Y(*;3=?-,4%44( N %(7"4(4%:W-,/14-,`-,43%+,(*6J
@%=?%Upg_dump
=(7%+,-,e*%=0>5@-,%W4(Y(*;3=?-,4%4O4(U:<4%
+,%
-,/1:%+,%0>-,5/K4(3/1%d5+,%d`(7ecS pg_dumpall
%I02@-,%Y4(W(7;3=?-,4%4q4(W3/1%+,% N %(W4(g4%:<5h@3(*4(W=(7%+,-,e%*=V(g3%/14u+,%-,;53-,(7/1:<(
5=4(*/"a
% pg_dump nombredb
nombredb.pgdump
[email protected](*4((7=h=?(*:%3=?%74%
3%/14
cat nombredb.pgdump | psql nombredb
T:%Y:*02/1-,0>%@3(74(g3%=V(Y@.%=V%Y#&`c(*= N %(*l4(Y4%:<l%U3/1%U/13(7`%+,50>%+,-,e%02-,/9J@%=?%
=(7/1# N =?%= N %(764(4%:6(*{G-,:<(7/1:(*S S
%49\3(d85:<;=(7g@(7=?#&-,:(d:% N +,%g4(
#&%J5=6:%#&%cq\3(u(*+@(*=V#&-,:<-,4q@=6(7+c-,:(*#&%
4()0>_1(7=5X@3(*4(U=(73+,:%=^@= N +,(7#&:<-,02L(7+Z`+,02%4i4(3/1%d:<% N +,%
%
3/K)02_1(*=5XJ5%d\3(
(7+Z)0>_1(7=i=(73+,:%/1:((*;3=?%#&(7/1:<(3@(7=?%=?U(7+:<%#&%1i#&{G-,#&L@(7=?#&-,:-,4^S
FY#&
(*0>=?- N (Y(*/9:43:X*@3(74(g3%=+,%l_1(7=?=V%#&-,(7/1:%l?/1-,{
@%=?%5=?:<(7%=(7:<5
@- N +,(7pg_dump
6@= N +,(7#&%a
L4(`5+,0>%4602#&@=?-,#&-,45a
b
+,%
=(*023@(*=%#&5W0>5/"a
% createdb nombredb
% gunzip -c nombrefichero.dump.gz | psql nombredb
(U@+,-,:Va
JL+,9=(70>3@(2=V%#[5602/"a
% createdb nombredb
% cat nombrefichero.dump.* | pgsql nombredb
85=^3@3(7:X(7+/15# N =(Y4(7+G)0>_1(7= m
y5J(7+G0>/1:(7/1-,4L4(I+,%U%+,-,4%Y4(
/1&:<-,(7/1(9@5=U\5390>-,/102-,4-,=Unombrefichero
0>/o(*+^/1# N =(q4(i+,% N %(i4(94%:S
4(7#&X+,%
Npg_dump
%(I4(I4%:<5=?(*:<%3=?%4.%@3(74(g:(*/1(7=^3/9/1# N =?(I4-,:-,/1:<5X7@5=^+,\3(Y(*:<(Y#&(*0>%/1-,#[
:%# N -,*/q(76(7C(70>:-,`@%=?%
=(7/15# N =?%= N %(7"4(4%:S
Notas
1S_1%/c/13
:<=?3:VS (7(
%J`%=V-,%l@5- N +,(7"=?%e/1(7l@%=?%\53(@:<#&%:(*=h/1L@3(74%Y-,/1-,0>-,%+,-,e%=?(SVFI5#&@=3( N (
(7+)0>_1(7=R4(9=(7;-,:<=&4(@:#&%:<(7=<X.n-,/1,0>-,(7+,R#&%/13%+,#&(7/1:( m -,/r=(74-,=?-,;-,=U+,%K%+,-,4%
(7:/14%=9+,%u4(U(7=?=5=(2y.@%=?%
`(7="+,g#&(7/c%PQ(7g\3(
%@%=$(*02(*/"S+,;53/1q4(U+,5W@- N +,(7
#&(7/1%PQ(764((7=?=5=5/%3:<5(*{G@+,-,0>%:<-,`5X@(7=+,56_1%Ji\3(U@3(74(*/q/19(7=V+,6:%/1:<a
FATAL: StreamServerPort: bind() failed: Address already in use
Is another postmaster already running on that port?
T:/15=?#&%+,#&(*/1:(U-,;5/1-,)0>%
+,L\3(3;-,(*=(az%0>0>-,4(7/1:<%7+,#&(*/1:(U_1%
-,/1-,0>-,%43/1%
(7;53/14%
-,/1:%/10>-,%u4(d@5:<#&%:(7="(7/O(*+c#&-,#&@3(7=?:q(*/](7+5\3(
J5%u(u(*:<u(VPQ(70>3:%/14q3/1^S2jG-,/
(7# N %=;ZX-(7+#&(*/1%PQ(L4(
(7=?=?=g4(7+./10>+,(7O/1](7U!44=?(2
%+,=?(*%74J]-,/R3(*!6]%+,;53/1%
`%=V-,%*/1:(*[email protected](74(U(7:<%=l0>3=?=?-,(7/149:<=?i@= N +,(7#&%cS8="(VPQ(7#&@.+,5X(7+5:=?%:<%=l4(U-,/1-02-,%=l3/1%
(7-,5/4(@.5:#&%:<(7=h(7/3/@3(7=V:<i4((7=?=5==(7(7=?`c%*4[email protected](74(@=430>-,=h%+,;5i0>#&a
$ postmaster -i -p 666
FATAL: StreamServerPort: bind() failed: Permission denied
Is another postmaster already running on that port?
/1%i`(7eL\3(L:-,(*/1(L(7+@:<#&%:(*=Y(7/R(VPQ(70>30>-,/1X1%+.:<=?%:%=I4(
02/1(70>:<%=Y0>/n*+#&(*4-,%/1:<(
3/1%
%@+,-,0>%0>-,/q02+,-,(*/1:(@.3(74(@=430>-,=V(I3/C%+,+,@=l`%=?-,%l=V%e5/1(*SV5"(VPQ(7#&@+,64(
#&(7/1%PQ(7h4(W(7=?==.#&:<=?%4h%\35/L@%=?%Y0>+,-,(7/1:<(7 N %%41"(*/L+,%h`c(*=V-,/1(7h=(70>-,(7/1:<(7
4(
+,- N @\5+,
0>+,-,(7/1:<(7 N %%4Y(7/&:=?% N - N +,-,5:<(70>%4(
-,/c:(7=?C%e
@3(74(7/]@=?430>-,=W5:<=5
#&(7/1%PQ(7X02/#&6i#&(7/16-,/1CD=?#&%0>-,5/"S
connectDB() - connect() failed: Connection refused
Is the postmaster running (with -i) at server.joe.com and accepting connections on TCP/IP port 5432?
T:(W(7+(7hC%+,+,u;5(7/17=?-,0>u4(g~u@3(*4u(7/10>5/1:<=V%=3/i@:#&%:<(7=^02/i(*+\3(I0>5#&3/1-,0>%=M
#&(7$S83(74(Y50>3=?=V-,=l%+,;L%0>3%/14i(U-,/1:<(7/1:<%
3/1%d0>#&3/1-,02%02-,/KFY8WwZf8[L#&(74-,%/1:<(
50>'5(7:1
/1-,{u0>/O3/@:<#&%:(*=l+,0>%+a
connectDB() - connect() failed: No such file or directory
Is the postmaster running at localhost and accepting connections on Unix socket 5432?
%U+,:<-,#&%
+,,/1(*%
(7":-,+Z@.%=V%`c(*=V-,)0>%=^\3((*+Z02+,-,(*/1:(Y(7:
:<=V%:%/14
4(Y02/1(70>:<%=^45/14((
3@.5/1(U\53(4( N (_1%0>(7=?+,^SzjZ-Z(*/=?(*%7+,-,4%4O/19_1%JL/1-,/1;/K@:<#&%:(*=l(VPQ(70>3:</14(U%+,+,,X
(7+1#&(*/1%zP<(L4(u(7=?=5=W4(*+./102+,(*O(7=?i4(7+c:-,@O4(
FY/1(7{G-5/R=(7_13%4%O4(
~K(7{-,:(
(7+5)0>_1(7=iq4-,=(70>:=V-,X0>5#&q+,I%/1:<(7=?-,5=(*S m Tg@%=V:<-,0>3+,%=#&(7/1:<(u-,#&@=?:%/1:<(d:(7/1(*="(7/
0>3(*/1:%q\3(qFY/1(7{-,5/o=(7_13%4%7^(7/(7:(90>5/1:<(7{: 5 /1&-,;/1-,)^02%q\3(q(7+@:#&%:<(7=
_1%J5%Y=(*02- N -,4u+,%Y@(7:<-,0>-,5/94(I0>/1(7{-,5/qJ
+,%Y_1%J5%=(70>_1%e%*47(7/L(7:(g0>%
(g@=4302(g3/
#&(7/1%PQ(i4-,C(7=(/1:<(7Xc0>5#&&(i`(7=?1S y}L:<=5d#&(7/1%P<(*d4(i(7=?==X50>#&&(7+4(i!FY/1/1(70>:-,/
:-,#&(*453:<!W1-,/14-,0>%/R@= N +,(*#&%#&U-,#[@5=?:%/1:(7X0>5#&O+,%9C%+,:%4(0>/1(70>:-,`-,4%4(*/
+,%
=(74gS
No pg_hba.conf entry for host 123.123.123.123, user joeblow, database testdb
T:O(7
+,]#&d@= N % N +,(i\3(L N :(*/1;%q-02/1-,;3(i0>/1:%0>:<%=Y0>/3/n@5:<#&%:(*=X@(*=
7:(9/1n\3-,(7=(_1% N +,%=U0>5/B3:(*4gSGFY#&n3;5-,(7=(9(7+h#&(*/1%zP<(7X(7+h@:#&%:<(7=
=(7_1%K+,%
@(7:<-,0>-,5/&4(u0>5/1(7{-,/&@5=\3(
/1O(*/1023(*/1:=?%L3/&=(7/1;5+,5/&4(
%3:<5=?-,e%*02-,/R(7/[3n)0>_1(7=
4(0>/1);53=?%02-,/@;5_ N %1S 0>5/1C
Password authentication failed for user joeblow
W#&(7/1%PQ(7W02#&i*:(U-,/14-,0>%/K\3(U_1%d0>5/1:<%0>:%4i0>/K(*+5@.5:#[%:<(7=<XJq7:<(U(7:U4-,M
@3(7:U%g_1% N +,%=102/3:<(74X>@(7=U/1d+,d_1%=?g_1%:%g\53(63@(*=(6(7+7#&7:<54
4(6%3:=?-,e%0>-,5/
(7@(70>-,)0>%4.K(7/&(7+.)0>_1(7=@;5_ N %1S 0>5/1CzSFI5#&@.=?3( N (
+,%L0>+,%`(u\3((7:<L(7/1`-,%/14X5K3
@=5;5=?%#&%Lf
T~(7= N (7=5X5-(7+#&(7/1%PQ(L4((*=V==I#&(*/10>-,5/1%9%+,;53/1]4(
(75U:-,@.5
4(%3:<(7/1:<-,02%02-,/"S
FATAL 1:
T:%I(7^5:<=V%I`%=?-,%/1:(W4(WC%+,+,u4(g%3:(7/1:<-,0>%0>-,5/"a/1u(I_1%I(VPQ(70>3:<%4d+,%Y5=4(*/L4(W8:<;5=?(*
0>=(7%*:(73(*=*G@%=V%
(*+Z/15# N =(U4(Y33%=?-,i-,/14-,02%4S
FATAL 1:
~_1%J N %(
4(d4%:<5Y0>/&(7(
/1# N =( N %PQ(7+10>/1:=+.4(
(7(d@:<#&%:(*=VS~:(7(
\3(
-/1R(7@(70>-,)02%(7+/15# N =(94(q+,% N %(94(q4%:X.(%@+,-,02%q@=
4(7C(70:<R3/15# N =(94(
33%=V-,(7/85:<;=(7X+,i\53(U@3(74(/1i(*=h+,L02=?=(70>:^S
Depuracin de mensajes
T+
@=(7(7/1:%[0>%-,5/1%+,#&(7/1:(]#&(*/1%zP<(79\3(]@3(74(7/(7=4(K%J34%[(*/+,%
postmaster
5+,3
0>-,5/]4(d@=? N +,(7#&%SjG-c4(7(7%u`(7=6#&(*/1%zP<(*Y4(
4(7@3=?%0>-,5/O4(
XG@3(*4(
-,/1-,0>-,%=V+,L0>5/+,%
@0>-,5/KM4OJ9=(74-,=V-,;5-,=+,%
%+,-,4%
%d3/)0>_1(*=?4(U=(7;5-,:postmaster
=^a
% postmaster -d > pm.log 2>&1 &
jZ-G/1i4(7(7%U`c(*=h(7:<5W#&(7/1%PQ(7X@3(74((*0>=?- N -,=
% postmaster -S
J[(7+
(*/1:=?%=?i(7/R#&4[jG-,+,(7/10>-,S~:(*(i\3(L/1](i-,/10>+,3J5(L(7+-,# N +,
G(7postmaster
/(7++,:<-,#&i(VPQ(7#&@+,XJ%
\53(U(7+@:<#&%:(*=l((VPQ(70>3:<%=VU(7/(*;3/14L@+,%/1^S
pg_options
Nota: Contribucin de Massimo Dal Zotto 1
T+)0>_1(*=?O[email protected],/1%+
0>5/c:-,(7/1(i@0>-,5/1(*d4(L(VPQ(70>30>-,/n3%4%
@=Y(*+
N % 0>'(*/14&@%=V%u0>5/1:<=5data/pg_options
+,%=6#&(7/1%PQ(7Y4(d(VPQ(70>302-,/]JK:=I@%=?#&(7:<=5W%PQ3:<% N +,(7S2K\53(
_1%0>(I-,/1:<(7=(7%/1:<(W%U(7:<(I)0>_1(7=u(7l(*+_1(70>_14(I\53(Y(7=?(*+,(7,4u@.5=(*+ N %0>'(7/14q0>3%/14u=(7M
0>- N (I3/1%
(71%+jZfu8*X_1%02-,(*/14
%Z@- N +,(Y02%# N -,%=^5@0>-,/1(7"4((VPQ(70>30>-,5/q-,/q:<(7/1(7=
\3(Y=(*-,/1-,02-,%=8:;5=(7S?%l5@0>-,/1(7l(7@(70>-,)0>%4%h(*/9(7:(I)02_1(*=?[email protected](74(7/9-,/10>+,3-,=^@3/1M
:i4(O4(7@3=?%0>-,5/3%4i@=(*+6@.%\3(7:<(O:=?%0>( m
yI
@%=?7#&(*:=i/13#&*=V-,0>W\3([email protected](74(3%=(7+ N %0>'(*/14O@backend/utils/misc/trace.c
%=?%U0>5/1:<=5+,%=h3O0>5#&@=?:%#&-,(*/1:^S
jZ(@3(74(7/4(*)/1-,=6/13(*`c%6@0>-,5/1(7gJq@%=?#&(7:<=56(7/
backend/utils/misc/trace.c
Ji(*/
S
backend/include/utils/trace.h
%"[email protected],/1(764(U@;5@:-,/@3(74(7/q(*@.(70>-,)0>%=?(0>5/(7+@%=V#&(*:=
4(8:;5=(7a
-T
%lC3/10>-,5/1(*63%4%l@.%=V%-,#&@=?-,#&-,=l(7=?=5=(2"Ji#&(*/1%zP<(*64(Y4(7@3=?%70>-,/@3(74(7/i%_15=?%
3%=Y+,%q3:-,+,-,4%4 ?$1 S7d#&(7/c%PQ(7d-,#&@=(75u(*/:<453:"[:<4(7=?=5/@=(70>(74-,415
@=h3/1%d(7:<-,\3(7:<%d-,/1C5=?#&%:<-,`c%U\3(U-,/10>+,3J(U+,%dC(70>_1%
Ji_15=?%
Ji(7+@-,4O4(7+ N %0>'5(7/14ga
#timestamp
980127.17:52:14.173
980127.17:52:14.174
980127.17:52:14.186
980127.17:52:14.186
980127.17:52:14.186
980127.19:52:14.292
980127.19:52:14.413
980127.19:52:14.466
#pid
[29271]
[29271]
[29271]
[29286]
[29286]
[29286]
[29286]
[29286]
#message
StartTransactionCommand
ProcessUtility: drop table t;
SIIncNumEntries: table is 70% full
Async_NotifyHandler
Waking up sleeping backend process
Async_NotifyFrontEnd
Async_NotifyFrontEnd done
Async_NotifyHandler done
# comentario
opcin=valor_entero
opcin
opcin+
opcin-
opcin
1
1
0
~:(7(U\3(
@3(74((7=h:%# N -,*/O3/1%d% N =(2`-,%0>-,5/4(7+/1# N =(U4(U@M
0>-,5/4(7)/1-,4palabra_clave
L(7/
S
backend/utils/misc/trace.c
E7%( g?>hc>7>5 @.%=V%63/1%Y+,-,:<%Y0>#&@+,(7:<%g4(W+,%5@0>-,/1(7hJu3@- N +,(W`c%+,5=(7S
Notas
1S#&%-+,:^a 4e
02S 3/1-,:</"S -,:
Entorno de regresin
8%=V%@=(7@%*=?%=
+,5:<(7:
4(q=(7;=(2-,5/1X^_1%;5% R& (*/B(7+h4-,=(70>:<5=?-,R4(+,:(7:<
4(
=(7;5=?(2-,5/"S>T:q0>#&@-,+,%u3/]@=;=?%#&%dF0>5/OCD3/10>-,/1(7I(7{:<(7/14-,4%685:<;=(7jGk&(*/]3/
+,- N =(7=V%
0>#&@%=?:-,4%1SVjG(Y;5(7/1(7=?%/9%+,;3/1W;53-,5/1(* m 0>=V-,@:<yjZkO+,0>%+,-,e%4lJL%=02_1-,`
4(K%+,-,4%K02#&@%=?%:<-,`cL@%=?%O+,i:<(7:L\3(O+,i/1(70>(*-,:<(7/"S%]+,0>%+,-,e%0>-,/B=(7(7#&@+,%e*%
#&%0>=5"(7/+,W%=0>_1-,`5"4(UC3(7/1:<(7"0>5/K=3:%"% N +,3:%6J9/1# N =(764(33%=V-,^S
~=V#&%+,#[(7/1:(*XG+,I:<(7:W4(
=?(*;=(2-,5/O4( N (7/K(7="(VPQ(70>3:<%45W@="(7+533%=?-,9@:;5=(7gJ5%
\3(L(7+4-,=(70>:=?-,]=0GwZ:<(7:VwZ=(7;5=(J&3 N 4-,=(70>:=V-,U/o4(3o@=[email protected],(74%*4gS7jZ-(VPQ(70>3:<%
+,5:<(7:^4(
=(7;5=(-,/R02/[:=K33%=?-,(7+.4-,=(70z:=V-,K=0GwZ:<(7:zwG=(7;5=(74( N (d:(*/1(7=W@(7=M
#&-,564(U(70>=V-,:<3=?%
@%=?%U(7(U33%=?-,S
/1:<(7h(*=V%I(7:<=V-,0>:%#&(7/1:<(Y/1(70>(7%=?-,u(VPQ(70>3:%=(7+@:#&%:<(7=^0>5/i+,%e/1%Y_15=?%=?-,%4(*+-,:(7M
#&%u(7:% N +,(*02-,4%d(*/O8jGX@(7=9J5%u/1q(7g/1(70>(*%=?-,^S>83(74(d(?P<(*023:<%="+,I:<(7:I4(d=(*;=(2-,/
N =(i3B0>5/1);53=V%0>-,/B_1% N -,:3%+^4(*+@:<#&%:(*=VST+^;3-,/ m 02=?-,@:<y"4(7+^:(*:"(*:<% N +,(70>(7M
=V
+,%L`%=?-,% N +,(
4(d(7/1:=?/1O8u'@%=?%%(7;53=?%=6\3(
+,:(*:<Y4(7@(*/14-,(7/1:<(7Y4(d+,%Le/1%
_15=?%=?-,%L@=43e0>%7/R+,
=(*3+,:<%4U(*@(7=?%4.S7(
:4%C5=?#&%X53-,:<(7#&%i4( N (
@=5M
@=?0>-,/1%=+,- N =(7=?,%4(g@=V:<(Y@.%=V%I+,%Ye/1%_1=V%=V-,%Y8jZx8
X2
+,5l:<(7:4(7@(7/14-,(7/1:(*
4(9+,%Ke/1%_15=?%=?-,%KC%+,+,%=V*/"SG8%=?%q02#&@= N %=U\3(3B(*\3-,@@=V:<%K(*:<5X.(70>=V- N %q+,
-,;3-,(7/1:<(a
setenv TZ PST8PDT
date
Estructura de directorios
Nota: Esto debera ser una tabla en la seccin anterior.
input/ .... .Archivos fuente que son convertidos, usando make all, en
alguno de los archivos .sql en el subdirectorio sql
output/ ... .Archivos fuente que son convertidos, usando make all, en
archivos .out en el subdirectorio expected
sql/ ...... .Archivos sql usados para ejecutar los tests de regresin
expected/ . .Archivos .out que representan lo que *esperamos* que parezcan
los resultados
results/ .. .Archivos .out que contienen lo que los resultados *realmente*
parecen. Adems es usado como almacn temporal para el test de
copia de tablas.
* ,+>.-5
0/5?>1- 02525?
1ST+G%=0>_1-,`cOwG3=*wG=?0GwG@;\+?wG=0GwG:(7:VwZ=(*;=(2wG|6T
ABTO:-,(7/1(Y-,/1:=30>02-,/1(764(7:<%+,M
+,%4%I@%=V%
+,%(?P<(*0230>-,/&(
-,/1:<(7=?@=(7:%*0>-,5/&4(
+,Y:(7:<U4(u=(7;5=(2-,/"S*\3(-,;53(
(7
3/1%
`c(*=V-,/O#&60>=V:<%1a
jZ-Z(*+5@.5:#&%:<(7=/1i(U(7:<
(VPQ(70>3:%/14LJ5%X-,/1-,0>-,(U(7+@:#&%:<(7=l(*/q3/1%d`c(*/1:%/1%
\53(
(7:4-,@/1- N +,(
(70>=V- N -,(*/14
postmaster
TZP<(*023:<(U@:<#&%:(*=l4(*4(+,%d0>3(*/1:%d4(Y3@.(7=33%=?-,94(Y85:;5=(7 m /1=?#&%+,#&(7/1:<(U+,%
023(*/1:%
@:;5=(7yzS
Nota: No ejecute postmaster desde la cuenta de root.
1SjG-Z_1%
(?P<(*023:<%4
%/1:<(7=?-,5=?#&(7/1:<(U+,5":<(7:64(=(7;5=(-,/1X N 5=?=(Y(*+Z4-,=(70>:=V-,4(I:=?% N %PQ
02/"a
cd /usr/src/pgsql/src/test/regress
gmake clean
1S TZPQ(70>3:<(+,56:<(7:64(U=(7;5=?(2-,/"ST0>=?- N %
cd /usr/src/pgsql/src/test/regress
gmake runtest
v1S
( N (7=?,%d N :<(7/1(7="(*/]+,%u@%/1:<%+,+,% m Jq%4(7#[W(*0>=?-,:q(*/O(7+5%=0>_1-,`RSwG=?(*;=(7S 3:y13/1%
(*=V-,(
4(+,,/1(*%-,/14-,0>%/14]\53
:(*:<
_1%/n@.%%4J[\3L:<(7:U_1%/&C%+,+,%4^S(7/1;5%9(7/
023(*/1:%
\3(
@3(*4(u(7="/15=?#&%+1\3(u%+,;53/1K4(
+,Y:(7:<YCD%+,+,(S8%=V%
+,5Y:<(7:<C%+,+-,45X
3(q4-,C<C6@%=?%02#&@%=?%=U+,%=02_1-,`
4(9+,54-,=(70>:=?-,5OSwG=(73+,:
JSwG(7{@(70>:(*4gSjGCD%+,+,%3%:<xX(70>=V- N %
%+,;L02#&i(*:<^a
cd /usr/src/pgsql/src/test/regress
diff -w expected/float8.out results
1S
(7@3*64((VP<(*0>3:<%=+,56:(*:6J9(7{%#&-,/1%=+,W=(73+,:%45X(*0>=?- N %
dropdb regression
cd /usr/src/pgsql/src/test/regress
gmake clean
@%=?%U=(70>3@(7=?%7=h(7+Z(7@%0>-,L(7/4-,02L:(*#&@5=?%+Z3%4L@5=h+,56:<(7:S
Anlisis de Regresin
"=(*3+,:<%415"(I(*/1023(*/1:=?%/9(7/i+,5l%=0>_1-,`54(7+G4-,=(70>:<5=?-,KSwG=(73+,:S?T:<5"=(73+,:%4.
@3(74(*/(7=.02#&@%=?%40>/i+,h=(73+,:%44(7+4-,=?(*0:=?-,KSwZ(*{G@(*02:<(74i3%/14u4-,C<CVS m T+
;3-,/ m 0>=V-,@:<y4(*+:<(7:_1%02(W(7:<
@5=3:<(74X*J
4(VPQ%+,%h4-,CD(*=(7/10>-,%(7/[SwG=?(*;=(7-,/"S 4-,C<CQS y
W%=0_1-,`g@3(74(*//1i0>5=?=(7@/14(7=?(Y4(UC5=?#&%
(7{%0>:<%1SVT+;53-,5/K4(7+:(*:1-,/1C5=?#&%=?
4(73/1%u4-,C(7=(2/102-,%
0>5#&q!$CD%-,+,3=(*! m C%+,+,yXG@.(7=9+,%4-,CD(*=(/10>-,%
@3(74(
4( N (*=V(
%u@(7\3(71%
`%=V-,%*0>-,5/1(*6(*/1:=(W@+,%:<%C5=?#&%h(*/i+,6#[(7/1%P<(*l4(I(*=V==<X0>#&@=V:<%#&-,(7/1:<
4(I+,%+,- N =(7=V%
#&%:<(7#&-,0>%X.(*:0GS!%+,+,!U4((*:<((*:<-,+,n/1-,/14-,0>%/o/1(70>(7%=?-,%#&(7/1:<(q3/B@= N +,(7#&%02/
85:<;=(7S
85=
:<%/1:X(7/1(70>(7%=?-,R(7{%#&-,/1%=
+,%
4-,C(7=(2/10>-,%4(0>%4%:(*:W!C%+,+,-,4!0>5/B(*+h)/B4(
4(7:<(7=?#&-,/1%="-1(7{-,:(d3/]@= N +,(7#&%
=(7%7+,#&(*/1:(5SI-,;53-,(7/1:<(7Y@3/1:<5Y-,/1:<(7/1:<%/[@=@5=M
0>-,5/1%=3/1%d;53%
@%=?%
4(*:(7=?#&-,/1%=-3/1%U4-,C(7=(7/10>-,%U(*W-,;/1-,)0>%:<-,`c%dL/1S
AB30>_1
4(+,5
=(73+,:%44(LC(70>_1%iJ]_15=?%95/R4(7@(*/14-,(7/1:<(7U4(7+.(7/1:<5=?/1[4(L+,%Le5/1%
_15=?%=?-,%1SZi%02_1-,`94(O=(7C (7=(7/10>-,%](7:</;(*/1(7=V%45L@%=?%]+,%[e/1%[_1=V%=?-,%[8jG^x8
m (7='5(7+,(7J>XZFI%+,-,C5=?/1-,%yJK%@%=$(7/1:<(7#&(7/1:<([email protected](*4(7/O@%=(70>(=WC%+,+,I-1+,Y:(7:<Y/1K(d(VPQ(70>3M
:%/O0>5/](7:%ue/1%_1=?%=?-,%
(*:<% N +,(70>-,4%1ST+@=5;5=V%#&%d\3(
(?P<(*023:<%u+,5Y:<(7:I4(d=(7;5=(-,/
(7:% N +,(*0>(+,%9`c%=V-,% N +,(
4((7/1:<=V/1&8u' %i8jGx8
r@.%=V%L%(*;3=?%=g=(73+,:%4U@%=(0>-,M
4S
8%=(0>(d\3(d%+,;3/1I-,:(7#&%I/1%0>(7@:<%7/O+,%-,/1:%{G-,I=(70>#&(7/14%4.%
@%=?%d(7:% N +,(*02(*="(7{M
@+,-,0>-,:%#&(*/1:(6+,%=(7;5+,%^4(6+,%Ye5/1%I_1=V%=?-,%g+,02%+,>@3(74(W(7=.\53(g/1(*02(*-,:(W3%=3/1%gC5=?#&%
4-,:-,/1:<%
@%=?%
(7:<% N +,(70>(7=^8u'r(7/(7:%6#&\3-,/1%S
+,;53/15U-,:(7#&%
\3(i3%/R+,- N =(7=?-,%7U%/1:-,;53%U4(e/1%U_15=?%=?-,%UCD%+,+,%/&%+.%@+,-,0>%=g+,%
0>5=?=(70-,/1(7U4(%_1=V=K4(+,3ei+,%=g(7/R+,%C(70>_1%Y%/1:(*=V-,=(7%it5*X50>%3%/14\3(L+,%
_15=?%
4(i(7%dC(70>_1%U%@%=(2e0>%/n(7/n8jGr%@(*%=Y4(i:<54^ST:&4%=?9@-,(i%q4-,C(7=(2/102-,%
+,50>%+,-,e%4.%6(7/+,W=(73+,:<%464(+,56:(7:<S
Diferencias en polgonos
Diferencias aleatorias
C3(7=/r%4%*@:<%4 4(7+l#&/15+,:-,0>o%=?0z_1-,`cn5=?-,;5-,/1%+
./expected/*.out
@.=?@=02-,/1%4R@=0"D+,+,JFY_1(7/"SE(7=V-,/1(7
#&#&4(7=?/1%
4(9(7:
expected.input
%=0_1-,`5
;5(7/1(7=?%4%*u(7/`%=V-,%d#&\3-,/1%u4(i4(7%=?=5+,+,[_1%/o-,4&3:<-,:3-,4%u4(7@37
4(
3/1%L0>3-,4%4% m >y-,/1@(70>0>-,/"SAB302_1%I4(
(7:%Y#&\3-,/1%Y4(
4(7%=?=5+,+,q(*:</O(VPQ(7M
0>3:<%/14R`%=?-,%7/1:<(74(7+h
/1-,{]}Lj m 5=(7(71jZ
X.-,/13{GX.(7:0>yW(7/o_1%=4s%7=(qfD{x1ST+l%=0_1-,`
5=?-,;5-,/1%+
CD3(d0>=(7%41O(7/]3/[-,:<(7#&%jZ8|"FjG5+,%=V-,Y1S 3%/14(7+10>M
4-,;5n4( expected.input
S3(q02#&@%=?%4&0>/B3/r%=0>_1-,`cR0>=(7%*4R(7/B3/
-,:<(7#&%dfpostgres5-1.02a5.tar.gz
x
jG5+,%=V-,61S
J9+,%W4-,C(*=?(*/102-,%*gC3(7=/+,%#&(*/1:(
(7/+,g@+,,;55/1W4(U@3/1:<
:%/1:(I(7/q(7+G:<(7=0>(7=4;-,:<
%U+,%U4(*=(0>_1%U4(7+G@3/1:<L4(*02-,#&%+S m `(7%#&l%=V=?- N %yZT+Z%=0_1-,`
5=?-,;5-,/1%+
(q N :<3`cn4(9+,%O(7/1:<=(7;5%K1S K4(9@:;5=(702/1:=3-,4%
@=9"+,+,J]sample.regress.out
FI_1(7/&JK(
-,/10>+,3J(
%\3.@.%=V%
=(7C(2=(7/10>-,%1S2(7/14=?,%\3(_1% N (7=?(d(VPQ(70>3:<%40>/
3/1%g#&\3-,/1%I
TF8J%g\53(W(*+
(*/L+,%g`(7=?-,5/L1S *Y4(6@5:<;=(7
Makefile.global
:-,(*/1(8}L|~qABT%+,@_1%1S
FY#&q%+,;53/1q4(
+,5I:<(7:W@=5430>(7/K=(73+,:%45W-,/1_1(7=(7/1:<(7g%u+,%u@+,%:<%C5=?#&%d3%4%X_1(7M
#&5W@=5@=0>-,5/1%#&563/1%
C=?#&%d@%=?%
3@.+,-,="+,5W%=0>_1-,`cW4(U02#&@%=?%0>-,/O(7@(*02-,)0>
@%=?%0>%4%
@+,%:<%C5=?#&%1S>=(*023(*/1:(7#&(*/1:(u(u4%L+,%#&-,#&%i`%=V-,%02-,/[(7/&#[+,:<-,@+,(7@+,%:<%M
C5=?#&%.(*/o`(7e4(q4%=U3/o%=0>_1-,`&4(q0>#&@%=?%0>-,5/o(*@%=?%74R@%=?%q0>%4%q@+,%:<%C5=?#&%X
(7{-,:<(L3/n%=02_1-,`O;3,%9\53(q4(*)/1(L\53i%=02_1-,`]4(L02#&@%=?%0>-,/3%=VS7
(iCD=?#&%9\3(7X
@%=?%K(*+,-,#&-,/1%=
C%+,+,5
:<5/1:<i4(q3/1%O@+,%:<%C=V#&%(7/r@%=V:<-,0>3+%=<X.4( N (9(7+,(*;-,=
n02=(*%7=d3/
ge
T/(*:<([02%Xl@.=?@=02-,/1%#&q3/1%n`%=?-,%/1:<(&4(7+g%=0_1-,`4([0>5#&@%=?%0>-,/1Xl-,/1:<M:M
+,%=;(ZS 3:XG\3(d-,/102+,3J5(d+,%
-,/1:<%{G-,Y4(d(*:<(
#&(7/1%PQ(d4(
(7=V==VS>8%=?%d/1q#&:=?%=6(7:I!C%M
+,+,5!^:<5/1:<5W(7/+,%"@+,%:<%C5=?#&%"88
X(7+=?(*3+,:<#&%@ m #&%@%4(U=(73+,:%4.y1-,/10>+,3J(
int2/hppa=int2-too-large
Migracion a v6.5.3
< (=(7\3-,(*=?(Y3/43#&@WwZ=(7:<5=(7"@%=V%%\3(7+,+,g\3(U(*:<(7/(VPQ(70>3:<%/14L3/1%dcS v1S *S
Version 6.5.2
Migracion to v6.5.2
< (=(7\3-,(*=?(Y3/43#&@WwZ=(7:<5=(7"@%=V%%\3(7+,+,g\3(U(*:<(7/(VPQ(70>3:<%/14L3/1%dcS v1S *S
Version 6.5.1
T:%
(* N %-,0>%#&(7/1:<(3/1%d+,-,#&@-,(*e%
4(+,%d`(7=?-,5/1S vcSz(7#&W0>=V=(7;5-,i3/1%U`c%=V-,(74%4K4(
@= N +,(*#&%"=?(*@5=?:<%74W@.5=h33%=?-,W4(Y1S v1S
Migracion to v6.5.1
< (=(7\3-,(*=?(Y3/43#&@WwZ=(7:<5=(7"@%=V%%\3(7+,+,g\3(U(*:<(7/(VPQ(70>3:<%/14L3/1%dcS v1S
Version 6.5
3:-,+,-,4%4Xc3/%@(7/14-,0>(i/13(7`&0>5/1:<-,(7/1(94(7:<%+,+,(7
N =(i(7+02#&@=V:<%#&-,(7/1:<R4(i4%M
:(wG:<-,#&(S7% 5
i
??>> :-,(*/1(L3//13(7`[0>%@-,:<3+,] N =?(=?(*+,30>-,5/n4(
@= N +,(7#&%h4(gG#%/1(S $ +,% 56? c?>>7> :<-,(7/1(g3/1%U4(*0>=?-,@0>-,5/i4(7+G@=M
02(*]4(q-,/1:<(7=?=5;5%0>-,/1X1:<%# N -,(7/4(ijZ:<(7C%/1XcJR4(7:<%+,+,(7
%0>(7=0%q4(q0>#&& N :<(7/1(7=U(*+
%= N +Z4(7+Z0>4-,;iC3(*/1:(Y4(85:<;=(76@=lFYEYj
%/1/1-,#&9JiFYEjG3@WS
Migracion to v6.5
/K43#&@WwG=(7:=(d3:<-,+,-,e%/14
(*I/1(70>(7%=?-,9@%=?%u%\3(7+,+,Y\3(d4(7(7(*/O#&-,;5=V%=
> @.3(74(L(7=3:<-,+,-,e%4
4%:<5
4(L0>3%+,\3-,(7=`(7=?-,5/@=pg_dump
(7`-,%94(L85:<;=(7S
pg_upgrade
@%=?%u%02:<3%+,-,e%*=W(7:%
`(7=?-,/[@=\3(
+,%
(7:=30>:<3=?%
(7/[4-,0>4(u+,%Y:% N +,%g_1%L0>%# N -,%4
0>5#&@%=V%41%d0>5/`(7=?-,/1(76@=(70>(741(7/1:<(7S
%Y/13(*`c%Y0>%=?%0>:(7=-,:<-,0>%U4(YFI5/1:<=5+4(YFI5/10>3=?=?(*/10>-,%AB3+,:-,ME(7=?-,5/ m ABEFIFYX2(7/q-,/1;5+,(7y
@3(74(64%=10>#&@5=?:<%#&-,(7/1:<5h3/L@50>d4-,CD(*=(/1:<(7(*/L(*/1:=V/1h#&3+,:<-,33%=?-,S 5?lgV2)?
6W??zV>L? 15?5h>?W>?Q15?>7@5h?h>z>V>A??5Dh>V>522i?
z>
7>?>#@l5?V??>
Control de Concurrencia Multi-Version
>0 %3%i4(u\3(L+,%+,(70>:<3=V%Y(*/ncS vL/1 N +,5\53(*%/R+,5U4%:<5X5%@(7%=g4(7+./1-,`(7+.4(%-,+,%M
#&-,(7/1:<L4(I:=?%/1%0>0>-,5/1X+,5"4%:6+,(*-,45l@.5=3/1%U:<=V%/1%0>0>-,/9@3(74(*/9(7=^ N =(Y(*0>=?-,:
@=Y:=?%1ST/R5:<=V%d@%+,% N =?%*Xc-^3/=(7;-,:<=](7U4(7`3(7+,:<[@=3B C *ED(7[/1[-,;5/1-,)0>%
\3(U(7:<(=(7;5-,:<=i(7{-,:%
=(*%+,#&(7/1:<((7/(7+#&#&(7/1:<9(7/\3(U(764(7`3(7+,:<S m -S (Y%+,;3/1%6`(7M
0>(7l4(7@3(7h4(Y\3(+,%(7/1:(*/10>-,%U
+,%U:<=V%/1%0>0>-,/90>5#&-,(7/10>(*y1/1-:%#&@0>L\53(Y(7+Z=(7;5-,:=
(7:(g@=:(7;5-,4u4(g(7= N =V=?%4u
%0>:3%+,-,e%4.
@=^3/1%:<=?%/1%020>-,/9(7/L0>5/10>3=?=?(*/1:(g%/1:<(7
4(\3(U+,%U:=?%/10>02-,/(7/0>3=Vi_1%;%d0>5#[#&-,:1i=+,+ N %0>'hS
8%=V%q%(7;53=?%=+,%(7{-,:<(7/10>-,%%02:<3%+4(93/o=?(*;-,:<=[JR@=5:<(7;5(7=?+,&02/1:<=V%%0>:3+,-,e%02-,/1(7
0>5/10>3=?=?(*/1:(7l(4( N (Y3:<-,+,-,e%=7B C *EDGFH /JIK2L D L3/1%U(7/1:<(7/10>-,% C HM*ENOD KPC
%@=@1-,%4%cSGT:n4( N (7=?-,%(7=
:(7/1-,4(7/B0>3(7/1:<n023%/14n(K@.5=?:(*/r%@+,-,0>%0>-,/1(74(74(
`(7=V-,/1(76@=(70>(4(*/1:(*W4(Y8:;5=(76J9:=W(7/1:<=V/1S
G(*/1;%R:4+,%/1:(7=?-,=L(7/ #&(*/1:(&33:<-,+,-,e%n:=?-,;;5(7=?
@%=?%&-,/1:(7M
;=?-,4%4B=(7C(7=$(*/102-,%+SG_1=?%O(=(7\53-,(7=(7/r:<(70>/1-,0>%
%4-,0>-,5contrib/refint.*
/1%+,(7SG/o#&54(7
3:<-,+,-,e%=
(7+
0>5#&%/14 C HM*>N ?*MQSR BT K/U/ HMV W * CI B QX
ZY H L -l3/1%O:<=V%/1M
%0>02-,/R`c%9%9%02:<3%+,-,e%*=7w N =V=?%=Y3/1%90>+,%`(L@=?-,#&%=?-,%9J[3:<-,+,-,e%=I(7+02#&%/14 C HM*EN
?*KQSR BT K/[Y H L -.3/1%:=?%/1%0>02-,/[`%L%%0>:3%+,-,e%7=*wZ-,/1(*=V:<%=W3/1%i0>+,%`(
C5=?%/1(7%5S
Nota: Notese que si ejecuta una transaccion en modo SERIALIZABLE entonces debe
ejecutar el comando LOCK anterior antes de la ejecucion de cualquier sentencia DML
(SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) en la transaccion.
T:K-,/10>5/1`(7/1-,(*/1:(7U4(7%@%*=(70>(7=?%7/R(7/&(*+1C3:3=K023%/14O+,%_1% N -,+,-,4%4n@.%=V%+,(7(7=W4%:
30>-, m /1q0>5/1)=?#&%4y m %u@(*%="4(7+5/1-,`(7+c4(
%-,+,%#&-,(*/1:yJ+,%u`(7=4%74(7=V%u-,/1:<(7;5=V-,4%4
=(7CQ(7=(*/102-,%+Z(*%
-,#&@+,(7#&(*/1:%4%cS
Mejoras
-------Aadida la utilidad "vacuumdb"
Se acelera libpq por mejor asignacion de memoria(Tom)
EXPLAIN utiliza todos los indices(Tom)
Implementadas las expresiones CASE, COALESCE, NULLIF(Thomas)
Nuevo formato de salida de pg_dump(Constantin)
Aadida la cadena min()/max() a las funciones(Thomas)
Extendidas nuevo tipo de coersiones para agregaciones(Thomas)
Nueva contribucion moddatetime (Terry)
Actualizacion a pgaccess 0.96(Constantin)
Aadida rutina para byte unico en tipo de caracter "char"(Thomas)
Mejorada la funcion substr()(Thomas)
Mejorado el manejo de multi-byte (Tatsuo)
Control de concurrencia Multi-version /MVCC(Vadim)
Nuevo modo Serialized(Vadim)
Correcion para tablas por encima de 2gigs(Peter)
Nuevo SET TRANSACTION ISOLATION LEVEL(Vadim)
Nuevo LOCK TABLE IN ... MODE(Vadim)
Actualizado el driver ODBC(Byron)
Nuevo tipo de datos NUMERIC(Jan)
Nueva SELECT FOR UPDATE(Vadim)
Manejo de "NaN" e "Infinity" para valores de entrada(Jan)
Mejorado el manejo de date/year(Thomas)
Mejorado el manejo de conexiones con el motor de base de datos(backend)(Magnus)
Nuevas opciones ELOG_TIMESTAMPS y la opcion USE_SYSLOG para ficheros de registro(Massimo
Nueva opcion TCL_ARRAYS (Massimo)
Nueva INTERSECT y EXCEPT(Stefan)
Nuevo pg_index.indisprimary para restro de claves primarias(DArcy)
Nuevas opcion pg_dump para permitir el borrado de tablas antes de su creacion(Brook)
Acelaracion de las rutinas de salida de registro(Tom)
Nuevo nivel de aislamiento de READ COMMITTED (Vadim)
Nuevas tablas/indices TEMP (Bruce)
Se evita el ordenamiento si el resultado ya esta ordenado(Jan)
Nueva optimizacin para la asignacion de memoria(Jan)
Se permite a psql ejecutar \p\g(Bruce)
Se permiten multiples reglas de acciones(Jan)
Aadida funcionalidad LIMIT/OFFSET (Jan)
Mejorado el optimizador cuando se unen un numero grande de tablas(Bruce)
Nueva introduccion a SQL de La Tesis de Doctorado de S. Simkovics(Stefan, Thomas)
Nueva introduccion a procesamiento del motor de base de datos (backend) de la Tesis de Doctorado de S. Simkovics(Stefan)
Mejorado el soporte para int8(Ryan Bradetich, Thomas, Tom)
Nuevas rutinas para convertir entre tipos int8 y text/varchar(Thomas)
Nuevos planes arboreos, donde se unen meta-tablas(Bruce)
Habilitadas consultas por la mano derecha por defecto(Bruce)
Se permite que el numero maximo de procesos en servidor (backends) se parametrice en el momento de la configuracion
(-with-maxbackends and postmaster switch (-N backends))(Tom)
GEQO por defecto tenga ahora 10 tablas porque el optimizador se acelera(Tom)
Se permite NULL=Var para MS-SQL portabilidad(Michael, Bruce)
Version 6.4.2
Migracion a v6.4.2
< (=(7\3-,(*=?(Y3/43#&@WwZ=(7:<5=(7"@%=V%%\3(7+,+,g\3(U(*:<(7/(VPQ(70>3:<%/14L3/1%dcS 1S *S
Version 6.4.1
T:%
(* N %-,0>%#&(7/1:<(3/1%d+,-,#&@-,(*e%
4(+,%d`(7=?-,5/1S cSz(7#&W0>=V=(7;5-,i3/1%U`c%=V-,(74%4K4(
@= N +,(*#&%"=?(*@5=?:<%74W@.5=h33%=?-,W4(Y1S
Migracion a v6.4.1
< (=(7\3-,(*=?(Y3/43#&@WwZ=(7:<5=(7"@%=V%%\3(7+,+,g\3(U(*:<(7/(VPQ(70>3:<%/14L3/1%dcS 1S
Version 6.4
Migracion a v6.4
jZ(9=(7\53-,(*=(q3/r43#&@6wZ=(7:<5=(93:-,+,-,e%/14
@%=?%K%\53(*+,+,%
\3(
4(7(7/q#&-,;5=?%=l4%:64(74(0>3%+,\3-,(7=h`c(*=V-,pg_dump
/%/1:(*=V-,=h4pg_dumpall
(U8:;5=(7S
Correciones de errores
-----Correcion para una minuscula perdida en PQsetdb/PQfinish(Bryan)
Se elimina char2-16 de los tipos de datos, se utiliza char/varchar(Darren)
Pqfn no maneja un mensaje de NOTICE(Anders)
Reducidas elevadas esperas por ocupacion a causa de bloqueos en transacciones con muchos procesos en servidor(backends) (dg)
Deteccion de bloqueos de transacciones atascadas (dg)
Correcion para masrcas de tiempo en estilo "ISO" en decodificacion y codificacion(Thomas
Correccion del problema con borrado de tabla (drop) despues de deshacer (rollback) una transaccion(Vadin)
Cambiado mensaje de error y eliminado mensaje actualizado no funcional(Vadim)
Correccion para verificacion de la matriz (array) de COPY
Correccion para SELECT 1 UNION SELECT NULL
Correccion para perdidas de buffer en llamadas a objetos grandes(Pascal)
Cambio de propietario de tipo oid a int4(Bruce)
Correccion de error en la compatibilidad con oracle de las funciones btrim() ltrim() y r
Correccion de invalidacion en rebasamientos de cache compartida(Massimo)
Prevencion de perdidas en descriptores de ficheros en COPYs fallidos(Bruce)
Correccion para perdidas en la pg_select de libpgtcl(Constantin)
Correccion de problemas con usuario/contrasena de mas de 8 caracteres(Tom)
Correccion de problemas con manejo de NOTIFY asincronos en el proceso en servidor(backen
Correccion de muchas entradas de sistema malas(Tom)
Mejoras
-------Actualizacion de ecpg y ecpglib, vease src/interfaces/ecpg/ChangeLog(Michael)
Se muestra en indice utilizado en un EXPLAIN(Zeugswette)
EXPLAIN invoca una regla de sistema y muestra plan(es) para la reescritura de consultas(Jan)
Conocimiento multi-byte de muchos tipos de datos y funciones, via configure(Tatsuo)
Nuevo configure con la opcion -with-mb(Tatsuo)
Nueva opcion initdb -pgencoding(Tatsuo)
Nueva opcion createdb -E multibyte(Tatsuo)
Select version(); ahora devuelve la version de PostgreSQL(Jeroen)
Libpq permite ahora clientes asincronos(Tom)
Se permite la cancelacion desde el cliente de una consulta en el proceso en servidor(backend)(Tom)
Psql cancelas las consultas ahora con Control-C(Tom)
Usuarios de Libpq no necesitan dar consultas dummy para obtener mensajes NOTIFY(Tom)
NOTIFY envia ahora al PID del emisor, asi que puedes decir si eras tu mismo(Tom)
La estructura de PGresult ahora incluye un mensaje de error asociado, si lo hay(Tom)
Se definen los argumentos "tz_hour" y "tz_minute" como date_part()(Thomas)
Se anaden rutinas para convertir entre varchar y bpchar(Thomas)
Se anaden runtinas para permitir el dimensionamiento de
varchar y bpchar dentro de las columnas de destino(Thomas)
Se anade un bit a las etiquetas (flags) oara soportar
zona horaria y minutos en la devolucion de fecha(Thomas)
Se permiten mas variaciones en numeros de coma flotante (por ej. ".1", "1e6")(Thomas)
Se corrigen el analisis sintactico de menores unarios empezando con espacios(Thomas)
Se implementa TIMEZONE_HOUR, TIMEZONE_MINUTE por especificaciones SQL92(Thomas)
Se verifica i se ignora adecuadamente constraints de columna FOREIGN KEY(Thomas)
SE defina USER como sinonimo de CURRENT_USER por especificacines de SQL92(Thomas)
Se habilita HAVING en clausulas pero no se corrije en ningun otro lugar aun.
Se hace el tipo "char" un sinonimo de "char(1)" (actualmente implementado como bpchar)(Thomas)
Se guarda el tipo de cadena si esta especificado por el manejo de la clausula DEFAULT(Thomas)
Version 6.3.2
T:%[(793/1%R`(7=?-,5/4(]0>5=?=(70>0>-,5/4(](7=?=5(*i@%=?%[1S cS {SFY/13+,:(*([+,%i/15:<%94(]+,%
`(7=V-,/`ccS U@%=?%
3/3#&%=V-,L0>5#&@+,(*:L4(U+,%"/13(7`%W@.=?(*:<%0-,/1(7S
jZ3#&%=V-,^a
b jG(d=(*@%7=?%u5@=V:<(d@%=?%
0>/1);3=?%0>-,5/]%3:#&%:-02%u@%=?%d%+,;53/1%I@+,%:<%C=V#&%X-,/10>+,3M
J5(7/14L-,/13{GX%U02%3%
4(UCD%+,+,5"-,/1:<=?430>-,4W-,/K%4`(7=V:<-,=?+,L(*/K`1S 5S 1S
b jG(K#&%/1(VPQ%/0>5=?=(70>:<%#&(7/1:<(K+,%L+,+,%#&%4%L%]C3/10>-,5/1(*9(7/+,%[@%=?:(K-,e\3-,(7=4%K4(O+,%
0>+,%33+,%"TpTT~ J9f1UTWS
~K(
=(7\3-,(7=(u3/R43#&@WwG=(7:<5=(
@.%=V%%\3(7+,+,U\3((7:<(7/&(VPQ(70>3:%/c4]1S
]1S 1S S/
#&%'5(g4-,:0>+,(7%/1X*#&%'(7X*J#&%'(g-,/1:%+,+,(7l:<54
+,
=(7\3(*=V-,4^S?T:<(g3+,:<-,#&@%u4( N (7M
=V-,%Y(7=(VPQ(70>3:%4#&-,(*/1:=?%l\3(+,%@5:<#&%:(*=h/1(7:(I(VPQ(70>3:%/145(S?( N (7=?-,%U=(7MQ(*/1+,%e%=
m =?(2M+,-,/1'5y.0>3%+,\3-,(*=l%@+,-,0>%0>-,/q02+,-,(*/1:(U\53(3:<-,+,-,0>(U+,- N =(7=?-,%"8:;5=(7S
8%=V%I%0>:<3%+,-,e%*02-,/1(7l4(*4(I-,/1:<%+,%0>-,5/1(*h@=(7M`S X0>5/13+,:<(7(Y+,%h-,/1:<=30>0>-,/(*h4(I-,/1M
:%+,%02-,/qJi#&-,;=?%0>-,5/@%=?%
`1S
Version 6.3.1
jZ3#&%=V-,^a
b jG5@=?:(%4-,02-,/1%+@%=?%U0>/PQ3/1:<c64(0>%=?%0:<(7=(7"#&3+,:-,M N J5:(S
b |6(*@%=?%70>-,/O4(Y+,%d5=4(7/1%0-,5/K4( N J5:(*W@%=V%
0>+,-,(*/1:(76JL(*=V`-,4=?(*"4(UC=?/1:<%+Z#&-,{G:<^S
b 0>:<3%+,-,e7%02-,/1(76#&(7/1=(7W@.%=V%U@(7=?#&-,:-,=-,/1:%{-,6jZkgS
b AB(VPQ5=?%"%
+,%d%3:<54(*:(70>0>-,/q4(+,%d0>5/1);53=V%0>-,/43=V%/1:(+,%d-,/1:<%+,%0>-,5/"S
~
(Y=(7\3-,(*=?(g3/q43#&@WwG=(7:=(I@.%=V%Y%\3(*+,+,5"\3((?P<(*023:<(7/9cS 1S?
/9#&%'(I4-,:0>+,(7%/1X
#&%'5(7XJ]#&%'5(
-,/1:%+,+,.(7:4K+,O\3(
(
=?(*\3-,(7=(S>
( N (7=?-,%L=(7M(7/1+,%e7%= m =(7MQ+,-,/1'5yh023%+,M
\3-,(7=h%@+,-,0>%0>-,5/q0>+,-,(7/1:<(U\3(U3:<-,+,-,02(+,- N =(*=V-,%"8:<;5=?(*S
8%=V%I%0>:<3%+,-,e%*02-,/1(7l4(*4(I-,/1:<%+,%0>-,5/1(*h@=(7M`S X0>5/13+,:<(7(Y+,%h-,/1:<=30>0>-,/(*h4(I-,/1M
:%+,%02-,/qJi#&-,;=?%0>-,5/@%=?%
`1S
Version 6.3
Nota: Bruce Momjian escribio las siguientes notas para presentar la nueva version.
jZ(*;3/14X+,%WcS W3:-,+,-,e%602/1(7{-,/L4(l45#&-,/1-,
3/c-,{ m 3/1-,{4#&%-,/
50>'5(7:yG(7/
`(7eWFY8WwGfD8
@=4(7C(70:<^S?8%=?%g@(7=?#&-,:-,=.02/1(7{-,5/1(*h4(74(6:=?%^#&%\3-,/1%X2:-,(7/1(W\53(g3:<-,+,-,e%=.+,%I/13(7M
`%
@0>-,5/O@:<#&%:(*=6MD-,XJ@=63@3(7:q(*4-,:%=l@;_14%1S 0>5/1CzSG%# N -,(7/O@.5=6(*:<%u=V%e5/
(7+ZC=V#&%:<i4(Y@;_ N %1S 0>5/1Cc_1%d0>%# N -,%4^S
G(*=?0>(2=5X+,%U02%#&@50>_1%= m yh@(*=V#&-,:<-,=?%/R%_15=?%i3/R%0>0>(7O#&%
=?%@-,4K\3(L`%=0>_1%= m yl
\3(
0>%#&@.5I4(u:(*{G:<S>T@(70>-,)02%#&(7/1:(*XZ(*+1:(*{G:<qJO(*+1`%=0_1%= m y:-,(*/1(7/[3/1%L@.(7/1%+,-,e%0z-,/
@%=?%W(7+7%0>0>(7
%g0>3%+,\3-,(7=.0>5+,3#&/1%I4(7@3(74(6+,%g@=?-,#&(7=?%g0>5+,3#&/1%I4(6(7:<(6:-,@.S0>_1%= m y
3:-,+,-,e
:<%# N -,(7/L(7:(I%0>02(*u@.(7/1%+,-,e%45X@(7=uJ5%/1(7{-,:<(g@5=^#&%l:<-,(7#&@^SVT:<@.3(*4(
3;5(7=?-,=
\53([=(*4-,(7/1(K%+,;53/1%94(O3i:% N +,%X(*@(*0>-,)0>%#&(7/c:(O-W:<-,(7/1(*90>5+,3#&/1%i4(
0>%=V%*0>:(*=?(*i0>=V:<5i\3(]_1%J5%[4(7)/1-,4r0>5#&o`c%=?0>_1%= m yYo:(7{:<S5T:(OJr5:<=5i02%# N -,
_1%0>(7/q+,%
1S
%3/#&%"=V%@.-,4%
\3(U`(7=?-,5/1(76@=(70>(741(7/1:<(7S
G(*/1(7#&^%_1=?%W0>5/1:<=V%(*/1%^4(*)/1- N +,(*^-,/14(*@(7/14-,(7/1:<(7#&(*/1:(64(l023%+,\3-,(7=.)0>_1(7=/1-,{.S
%J/13(7`5"0>#&%/146jGkK
jZT|
S?E(7%(I+,%U@%;-,/1%4(Y#&%/13%+G@;_ N %1S 0>5/1C@%=V%Y#&%
-,/1C5=?#&%0>-,5/lS*%JK3/1%i:% N +,%/13(7`%X@;5_1%4s
X5\53((73:-,+,-,e%4%L@%=V%
%+,#&%0>(7/1%=g-,/1M
C5=?#&%0>-,5/B4(+,i33%=?-,Jo+,%02/1:=?%(7/1%4(q+,5L33%=V-,XJo\53(O(7X@=u4(*CD(*02:<
5+,&0>/13+,:<% N +,( m jGTTFI5M% N +,(7yl@=U(7+3@(7=Y33%=?-,&4(i@:;5=(7S@;53(7=(7
%_1=V%
3/1%9`c-,:<%q4(i@;_1%45sUX1J[(7d0>/13+,:<% N +,( m jGT1TFY5M% N +,(7yh@=8fDFLS7
( N (i(7;53-,=
3:-,+,-,e%/14L@.;3(7=(7/3W%@.+,-,02%02-,/1(76-,/K0>%# N -,S
%:% N +,%U0>=(7%4%7U@=Y33%=V-,d%_15=?%iJ5%9/1[:-,(*/1(7/R@(7=?#&-,5
4(L0>5/13+,:% m jGTTFWy
@%=?%I8
fF@5=4(*C(70>:^S?T:<(g_1-,e
@=?\53(I+,l(7:%/14%=(l
~jGf+,
=?(*\3-,(7=(7/"S83(7M
4(Y@.5=3@.3(7:02/10>(74(*= m u|"~yc0>3%+,\3-,(7=^@(*=V#&-,i\53(\3-,(7=?%U4(*@3(7"4(Y\3(Y+,%
:% N +,%Y(7%U0>=(7%*4%1S?%h:<% N +,%l4(7+G-,:(*#&%
0>5/1:<-,/13%/q-,(7/140>5/13+,:% N +,(* m jGT1TFY5M% N +,(7y
@=h8fDFS
G(*/1(7#&I:%# N -,(*/]`(7=4%41(7=5g024-,;55Y4(
4(*:(*020>-,/]4( N +,\3(7 m 4(7%4+,0>'yzS~q#&%
(7(7/1:%Y(7;53/145"4(g:-,(*#&@
4(Y(*{G@-,=?%0>-,5/ m :-,#&(*53:<yzS $ (*+G/13(7`0>4-,;5L-,#&@+,(*#&(7/1:%
3/f}#[(VP<=<X%-\53(U4( N (7=?-,%
_1% N (7=3/K#&(7/1="%;55:<%#&-,(7/1:<94(=(70>3=?5643=V%/1:(U3/
3LC3(7=?:(S
AB30>_1%\3(VPQ%"_1%/9-,4
_1(70>_1%l%0>(7=0>%I4(Y+,%Y-,/1%4(70>3%4%Y40>3#[(7/1:%02-,/9(7/i`c(*=V-,/1(7
%/1:<(7=V-,=(7S_15#&%_1%@3(*:<
#&302_1
(7C3(7=?e7
(*/i#&30>_15l#&%/13%+,(7h/13(7`l@%=V%g(*:%
`(7=V-,/"SFY#&@=3( N ((7/4-,=(70>:<5=?-,]wZ40GS
85=
=?%e/1(7
4(q=?(*/14-,#&-,(7/1:<5X.:-,#&(K:<=?%`(7+(K(*+,-,#&-,/1%X@(7=R@3(74(q(7=d-,#&@+,(7#&(*/1:%4
3:-,+,-,e%/14o4-,@%=?%4=( m :=?-,;;5(7=?y m `(7%(O@;5\+wG02/:=?- N wZ@-wG|6T
ATyS8=C%`5=<X
0>5#&@=3( N (
(7+5/13(7`q0>5#&%/14Z4[@%=?%d:<-,@5XG5@(*=V%45=(2X(7:<0GS>%# N -,7/O+,%g`-,:%W:-,(*M
/1(7/%_1=V%g3@=@-,@(7=?#&-,5X2/1 N %%4^(*/L+,%^:% N +,%^3 N J%02(*/1:(7X>%-\3(W+,5^@(7=M
#&-,5@%=?%W(7+,+,%4( N (*/u(*=10>/1);53=?%45^(7@%=?%74%#&(7/1:<(SFY#&@=3( N (dwG@;\+w-,/1:(7=?C%0>(7
@%=?%U`(7=%+,;53/1%W#&%/c(7=V%64(4-,%+,;%=h0>/O8:<;=(*S
T:%
(7I+,%@=V-,#&(*=V%
`(7=?-,/[\3(u=(7%*+,#&(7/1:(u=(7\3-,(7=(d3/1%(*{G@+,-,0>%0>-,/[@%=?%u+,533%=?-,5
(7{-,:<(7/1:<(7S
(#&30>_1%U#&%/1(7=?%XC3(
/1(*02(*%=V-,K(7:<O@=\3(+,%i/13(*`c%`c(*=V-,/n(*+,-,#&-,/1%
#&30>_1%6+,-#&-,:%0>-,/1(7XGJi+,%"+,30>-,5/(7"@=`c-,-,/1%+,(7 m s5=?'M%=3/14yc\3((7=?%/+,%
;5(7/1:<(
(7:% N %3:-,+,-,e%/14iJ5%
/19(U/1(70>(7-,:<%/"S
Migracion a v6.3
jZ(W=(*\3-,(7=(6+,%3:<-,+,-,e%0>-,/i4(g3/
u4(g3/
@%=?%g:4l%\3(7+,+,l\3(
4(7(7(*/q#&-,;=?%=4%:<564(0>3%+,\3-,pg_dump
(7=h`(7=V-,/%/1:(*=V-,pg_dumpall
=4(U85:;5=(7S
Mejoras
-------Sub consultas con las palabras claves EXISTS, IN, ALL y ANY (Vadim, Bruce, Thomas)
Nuevo Manual del Usuario(Thomas, others)
Aceleracion por alineamiento de algunas funciones frecuentemente llamadas
Deteccion real de bloqueos(deadlock), no mas expiraciones por tiempo(timeout)(Bruce)
se anaden las "constantes" SQL92 CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
CURRENT_USER(Thomas)
Se modifica la sintaxis para ser compatibles con SQL-92(Thomas)
Se implementa las clausulas SQL PRIMARY KEY y UNIQUE utilizando indices(Thomas)
Se reconoce la sintaxis SQL92 para CLAVES FORANEAS (FOREIGN KEYS). Se pone una
aviso (notice) en el elog (Thomas)
Se permite la clausula de restriccion NOT NULL UNIQUE (cada una de ellas
permitidas separadamente antes)(Thomas)
Se permite el estilo de arrojar no constantes (::") Postgres (Thomas)
Se anade soporte para las constantes boleanas de SQL3 TRUE y FALSE (Thomas)
Se soporta la sintaxis SQL92 para IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
Se permiten cadenas mas cortas para literales booleanos(por ej. "t", "tr", "tru")(Thomas
Se permiten identificadores de delimitacion SQL92(Thomas)
Se implementa decodificacion para cadenas binarias y hexadecimales SQL92 (b10 and x1F
Version 6.2.1
%
`1S 5S
(763/%
`c(*=V-,/O4(Y0>5=?=(70>-,5/q4((7=V==^J94(Y3% N -,+,-,4%4O N =(U+,%
`1S
jZ3#&#&%=VJa
b jG(@(7=?#&-,:(Y%
+,%602%4(7/1%"(7{:(*/14(7=^+,-,/1(7%X@=ljGkt5S
b jG(-,/10>+,3J(7/O(VPQ(7#&@+,g4(UC3/10>-,/1(7g4(*(*/10>%4(7/1%415=?% m :=?-,;5;(*=Vy1@%=?%
-,/1(7=V:<%=h/15#&M
N =(7l4(U33%=?-,i(*/q%0>:3%+,-,e%02-,/1(7"4(:<% N +,%S
(7:%L(7
3/1%9`(7=?-,5/n#&(7/1=4(
02=?=?(*020>-,/R4(L(7=?=5=g N =(+,%9`1S i8%=?%i%0>:<3%+,-,e%*02-,/1(7
4(74(U-,:(*#&%I@=(7MQ`1S X(
=(7\3-,(*=?(3/O43#&@WwG=(7+,5%4]02#&@+,(7:<^S2AB-,=(U+,%g/1:%I4(U+,%
`(7=V-,/`ccS U@%=?%
-,/1:=30>0>-,5/1(*S
jZ(Y/1(70>(7-,:%U_1%0>(7=h(*:i%U:4%6+,% N %(*64(Y4%:<56(7{-,:(7/1:<(7X-,/10>+,3J(*/149:<(7#&@+,%:<(71S
Documentada nueva funcion de libpq que devuelve las lineas afectadas, PQcmdTuples(Bruce)
Funcion desencadenadora (trigger) para insertar nombres de usuario para INSERT/UPDATE(Brook Milligan)
Version 6.2
jZ(W=(*\3-,(7=(I3/L43#&@WwG=?(*:=?(g@%=?%I%\3(*+,+,5l\3(I4(7(7(7/L#&-,;=?%=4%:l4(74(W`(7=?-,/1(7
%/1:<(7=V-,=(7l4(U8:;5=(7S
T:%
`(7=V-,/&=(7\3-,(7=(
3/&`5+,0>%4 m 43#&@y02#&@+,(7:<O4(
+,% N %(d4(u4%:Y(7/[cS JK3/1%
=(7:%*3=?%0>-,5/4(+,% N %(Y4(4%:<56(7/q1S
~:(7(d\3(d+,%3:<-,+,-,4%4[@;543#&@&J@;543#&@%+,+4(d1S u4( N *( =V-,%d3:<-,+,-,e%=?(u@%=V%d`+,02%=
m 43#&@yc+,% N %(4(4%:WcS 1S
Mejoras
-------El parametro del optimizador genetico por defecto GEQO es ahora 8(Bruce)
Version 6.1.1
Migracin desde v6.1 a v6.1.1
Version 6.1
%@=3( N %4(W=?(*;=(2-,5/L(W_1%/%4%*@:<%4dJu#&4-,)0>%4d(7{:(*/1%#&(7/1:<(6@%=?%g+,%g`c(*=V-,/
`1S U4(Y8:;5=(7S
jZ(l_1%/%1%4-,4U:=(7/13(7`5^:-,@4(64%: m 4%:(*:-,#&(7X:<-,#&(7@%/1X2%/14i0>-,=0>+,(7y%+702/PQ3/:<
/1%:<-,`cK4(:<-,@U4(
85:;5=(7S*83/1:X02%PQ%X5=3:<%UJO@+,,;55/1U:<-,(7/1(*/&3UC5=?#&%:<54(
%+,-,4%0>/1-,:<(7/1:<(7@5=W(*/102-,#&%
4(u+,5Y:<-,@54(d4%:<5S2%%+,-,4%
@+,,;55/1K(7/[#&-,0GS 3:
5+,L(Y_1%d=?(*`c-,%41i@%=V%_1%0>(7=02=?=?(*020>-,/1(7"=(7+,%:<-,`c%*6%
+,%
%+,-,4%
4(Y=(7;=(2-,5/K=V-,;5-,/1%+S
85:<;=(7W`ccS d-,/1:=4302(d3/]/13(*`ci5@:<-,#&-,e%4=6%+,:<(7=?/1%:-,`9\53(d3:<-,+,-,e%u%+,;=?-,:#& 1?
Dz> ST:u%+,;5=V-,:<#&5
-,/1:<=5430>(7/3/o0>#&@5=?:%#&-,(7/1:R%+,(*%:=?-,[(7/+,%=4(7/1%02-,/
4(+,d=(73+,:<%454(L+,%L02/13+,:%q0>3%4/1]+,%L02/13+,:%q0>5/1:<-,(7/1(i#&+,:<-,@+,(7U02%+,-,)0>%4=(7
#&+,:<-,@+,(7:<% N +,% m 4%/14R(7+h@:<-,#&-,e%4=u3/1%K(7+,(70>0>-,/B(7/B(7+l=4(7/r4(q(7`%+,3%0>-,5/1yzS
jZ(Y_1%/K#&54-,)0>%4L`c%=?-,%6@=3( N %"4(U=(7;5=(-,/]@%=?%
=4(7/1%=(7{@+,,0>-,:<%#&(7/1:<(U(7+=(73+,M
:%45XcJ&_1%0>(7=?+,&%-,/1(7/1- N +,(%q+,%
(7+,(70>0>-,5/1(*u4(7+^5@:<-,#&-,e%4=VS/1%
@50>%
@=3( N %
4(9=?(*;=(2-,5/r0>=V=(*@/14(*/r%K:<-,@
4(q4%:u\3(q/r-,/1_1(7=(*/1:(7#&(*/1:(q4(7=?4(*/1%4.
m 02#&R@3/1:-,/1:<(7=?`%+,5
4(q:-,(*#&@yDX.J+,%L@.=?3( N %u\3(K-,/1`+,302=?%/r(*:<5:<-,@L(
C3(7=Ve*%/(7{@+,-,0>-,:%#&(7/1:(Y02/ 2\9%]_^`^] J ?>c5\ S
%9-,/1:(*=V@.=?(*:%0>-,/4(+,5u(*@(*0>-,)0>%4=(7U4(i`c(*02:<=?(* m +,u0>5=0>_1(7:<(7d%+,=(24(745=4(i`%M
+,5=(*g%:<5#&-,0>y^@.%=(0>(d_1% N (7="0>%# N -,%49%+,;53/1%
`(7eu:=?%I+,%I@=3( N %g4(d=(7;5=(-,/[=V-,M
=(4(?P<%/[(7:%/13(7`%i-,/1:(*=V@.=?(*:%0z-,5/1X
;-,/1%+,(7S
)0>_1(7=5Y%02:<3%+,(7
\a 3(U@3(*4(/1i(*=l0>5=?=(70:<%b ./expected/*.out
%I@=3( N %Y4(u=(7;5=(7-,/[0>5/c5%:<xLC%+,+,%/O%+1#&(*/15(7/[%+,;3/1%@+,%:%CQ=?#&%ST:K(
4( N (
%u+,%I4-,C(7=(2/10>-,%I(7/O+,%I-,#&@+,(*#&(7/1:%02-,/1(7Y4(
@s m yJ(7{@ m yJ%u+,Y#&(70>%/1-,#&5
4((71%+,-,e%0>-,5/q3:<-,+,-,e%4W@.%=V%+,%W0>/14-,0>-,5/1(*g4( N =(70>%=;Z%dJ93 N 02%=?;5%5S
u=(73+,:%4u!%+,(*%:=?-,5!Y(*/r+,%K@.=?3( N %K%+,(*%:=?-,%K4( N (7=V%/o@= N 02%=\3(q+,%O@=3( N %
!%+,(7%*:=?-,%!=?(*3+,:<%(
!C%+,+,-,4%7!$XG@3(*q\53(
+,I:<(7:4(
=?(*;=(2-,5/O(d(7`%+,%*/]0>/]3/]-,#&M
@+,(
4-,C<CS>jG-,/[(7# N %=;55XZ+,%L@=3( N %L!%+,(7%:<5=?-,%!h/1O@%=(20>(@=4302-,="=?(*3+,:<%4Y%+,(7%:<=V-,
(7/q#&-5#&\3-,/1%d4(Y@=?3( N % m -,/c3{.wG;0>0GwZ-,xyzS
Migracin a v6.1
T:%W#&-,;5=?%0>-,5/=(7\3-,(7=(l3/`5+,0>%4
02#&@+,(*:d4(6+,% N %(l4(64%:<5^1S WJd3i=(7:%3=?%70>-,/
(7/q+,% N %(4(Y4%:6(7/1S 5S
\3(*+,+,5Y\3(
\3-,(7=?%/[#&-,;5=V%=64(74(
`(7=?-,5/c(7Y-,/1-,0>-,%+,(7Y1S 64( N (7=?,%*/[@=?-,#&(7=%0>:3%+-,M
e%=(U%
1S tX7@=\3(U(7+ZC=V#&%:i4(%+,-,4%
4(UFI}L8 $ (U#&(?P<=?i(7/+,%d`(7=?-,5/1S 5S
Mejoras
--------estadisticas de optimizacin de atributos (Bruce)
nuevo cdigo de carga masivo btree mucho ms rpido (Paul)
aadido BTREE UNIQUE para cdigo de carga masiva (Vadim)
nuevo aspecto del cdigo de depuracin (Massimo)
cambios masivos en libpq++ (Leo)
el nuevo optimizador GEQO acelera la optimizacin en tablas multi-tabla (Martin)
nuevo mensaje de alarma para inserciones no nicas en claves nicas (Marc)
update x=-1, sin espacios, ahora es vlido (Bruce)
se elimina la manipulacin de identificadores sensibles a las mayusculas (Bruce, Thomas, Dan)
la depuracin del servidor ahora imprime un rbol agradable (Darren)
nuevas funciones de caracteres de Oracle (Edmund)
nuevas funciones de palabra clave con texto plano (Dan)
se cambian a mensajes diferentes no tal clase y insuficientes privilegios (Dan)
nueva funcin ANSI timestamp (Dan)
nuevos tipos ANSI Time y Date (Thomas)
mueve grandes grupos de datos en el servidor (Martin)
ndices btree multicolumna (Vadim)
nuevo comando SET var TO valor (Martin)
status de transaccin de actualizacin en las lecturas (Dan)
nuevos ajustes locales para tipos de caracteres (Oleg)
nuevo generador de series de nmeros SEQUENCE (Vadim)
ahora es posible GROUP BY una funcin (Vadim)
reorganizada la prueba de regresin (Thomas, Marc)
nuevos pesos de operaciones en el optimizador (Vadim)
nueva opcin psql \z grant/permit (Marc)
nuevo tipo de datos MONEY (DArcy, Thomas)
incrementada la velocidad de comunicacin por el socket tcp (Vadim)
nueva opcin VACUUM para estadisticas de atributos, y para ciertas columnas (Vadim)
muchas potenciaciones de tipos geomtricos (Thomas, Keith)
Pruebas de regresin adicionales (Thomas)
nuevas variables de estilo de datos (Thomas, Vadim, Martin)
Version v6.0
\3(*+,+,5Y\3(
\3-,(7=?%/[#&-,;5=V%=W4%:I4(*4(u`(7=?-,/1(7Y@=(7`-,%I4(u8:<;5=?(*U/1(*0>(7-,:%=?/
_1%0>(7=3/K`+,0>%4wG=(70>3@(2=V%02-,/"S
Se permite a libpq que distinga entre textos con valor y nulo (Bruce)
Se premite a los usuarios diferentes de postgres con privilegios de createdb
ejecutar destroydb.
Se permiten restricciones sobre quin puede crear funciones C (Bryan)
Se permiten restricciones sobre quien puede hacer COPY del servidor (Bryan)
Se pueden reducir tablas, pg_timer y pg_log (Vadim & Erich)
Cambiado el nivel de debug 2 para imprimir slo consultas, cambiado el formato de
la cabecera del debug (Bruce)
Se cambia la representacin de las constantes decimales desde float4 a float8(Bruce)
Ahora se fija el formato de fecha europeo cuando se arranca el postmaster.
Se ejecutan las funciones con el nombre en minscula si no se encuentran
con el nombre exacto.
Las correcciones del procesado de agregados/GROUP, permiten
select sum(func(x),sum(x+y) from z
Gist est ahora incluido en la distribucin (Marc)
Autenticacin Idendde usuarios locales (Bryan)
Se implementa el calificador BETWEEN (Bruce)
Se implementa el calificador IN (Bruce)
Libpq tiene PQgetisnull()(Bruce)
Mejoras de Libpq++
Nuevas opciones en initdb(Bryan)
Pg_dump permite volcar los oids (Bruce)
Pg_dump crea los ndices tras cargar las tablas, por velocidad (Bruce)
Pg_dumpall vuelca todas las bases de datos, y la tabla de usuarios.
Adiciones a Pginterface para los valores NULL (Bruce)
Se previene la ejecucin de postmaster como root
\h y \? son ahora legibles (Bruce)
Psql permite punto y coma escapados (\;) en cualquier parte de la lnea (Bruce)
Se cambia el promp de comandos de Psql para lneas intermedias en consultas
o en lneas entre comillas (Bruce)
Las variables char(3) de Psql se muestran ahora como (bp)char en salidas \d (Bruce)
El cdigo de retorno de Psql es ahora ms ajustado (Bryan?)
Se actualiza la sintaxis de la ayuda de Psql (Bruce)
Se re-visita y corrige vacuum (Vadim)
Se reduce el tamao de las diferencias de regresin, se elimna la
diferecia del nombre de la zona horaria (Bruce)
Se eliminan parmetros de tiempo de compilacin para capacitar
distribuciones binarias (Bryan)
Gestin inversa de mscaras HBA (Bryan)
Autenticacin segura de usuarios locales (Bryan)
Se incrementa la seguridad de vacuum(Vadim)
Vacuum ahora tiene opcin VERBOSE (Bruce)
Cambios en el rbol fuente
----------------Todas las funciones tienen ahora prototipos que se comparan contra las llamadas.
Se permite inhabilitar facilmente las declaraciones en Makefile.global(Bruce).
Se cambian las constantes oid utilizadas en el cdigo para los nombres de #define
Se desacoplan las defines de sparc y solaris(Kurt)
gcc -Wall compila limpiamente con avisos (warnings) slo a partir de construcciones
no corregidas.
Gran reorganizacin/reduccin del fichero de include (Marc).
Make ahora para en fallos de compilacin(Bryan)
Reestructuracin del Makefile(Bryan, Marc).
Se mezcla bsdi_2_1 con bsdi(Bruce)
Se elimina el programa MonitorSe cambia el nombre de Postgres95 a PostgreSQL
Nuevo fichero config.h(Marc, Bryan)
PG_VERSION se fija ahora a 6.0 y lo utiliza el postmaster.
Adiciones a la portabilidad, incluyendo Ultrix, DG/UX, AIX, y Solaris
Version v1.09
K-,(*/1:X1_1(*#&5
@%=?%74O4(L=(7;5-,:<=?%=W+,5
02%# N -,5U4(74(1S L%icS t1S
+,;3/1d4(
+,5
0>%# N -,56+,-,:%46(7/q1S
(*:<% N %/qJ5%
-,/10>+,3-,4g(7/+,%6`c(*=V-,/1(761S 5S
%
1S t1S
Version v1.02
Migracin de v1.02 a v1.02.1
\35:<(7/1(*#&5I3/O/13(7`9)02_1(*=?i4(
#&-,;=?%0>-,/]@%=?%d1S 5S 1ST:(
(7+50>%# N -,94(
0>@J5J
3/;3-,/@%=V%U02/1`(7=?:-,=h+,56%/1:<-,;3g)0>_1(7=5"%0>-,-S
Nota: Las siguientes notas son para el beneficio de los usuarios que quieren migrar
bases de datos desde postgres95 1.01 y 1.02 a postgres95 1.02.1.
Si est usted arrancando con postgres95 1.02.1 de nuevas y no necesita migrar una base
de datos antgua, no necesita leer lo que sigue.
0>5#&9(*/14M5CM4%:<%7X#&-,(7/1:<=?%I\3(
(7+5/13(7`q#&%=0>%74="4(
(7/14MDCM4.%:<% m )/K4(
+,5W4%:<5y
(76dS $SG%# N -,7/1X+,%"02%4(7/1%"`%0>,%"(U0>%=;%/q%_15=?%
0>5#[9d(7/+,3;%=l4(0>#&9~
gS
E(7%U+,%d@;-,/1%
4(7+Z#&%/13%+4(0>@J9@%=V%
N :<(7/1(7=4(7:<%+,+,(7602#&@+,(*:S
sed s/^\.$/\\./g
in_file
out_file
Version v1.01
Migracin desde v1.0 a v1.01
J9(7/1:<5/10>(76(VPQ(70>3:<(U+,56-,;3-,(7/1:<(7W02#&%/14 m 0>@-,%=J9@(*;%=4(74(Y%\3,yza
- funciones incluidas aadidas que son nuevas en 1.01
create function int4eqoid (int4, oid) returns bool as foo
language internal;
create function oideqint4 (oid, int4) returns bool as foo
language internal;
create function char2icregexeq (char2, text) returns bool as foo
language internal;
create function char2icregexne (char2, text) returns bool as foo
language internal;
create function char4icregexeq (char4, text) returns bool as foo
language internal;
create function char4icregexne (char4, text) returns bool as foo
language internal;
create function char8icregexeq (char8, text) returns bool as foo
language internal;
create function char8icregexne (char8, text) returns bool as foo
language internal;
create function char16icregexeq (char16, text) returns bool as foo
language internal;
create function char16icregexne (char16, text) returns bool as foo
language internal;
create function texticregexeq (text, text) returns bool as foo
language internal;
create function texticregexne (text, text) returns bool as foo
language internal;
- funciones incluidas aadidas que son nuevas en 1.01
create operator
create operator
create operator
create operator
create operator
create operator
create operator
create operator
create operator
create operator
create operator
create operator
ticregexne);
Version v1.0
Lista Detallada de Cambios
Cambio en el Copyright:
* Se ha aflojado el copyright de Postgres 1.0 para que sea
libremente modificable para cualquier propsito. Lea por favor el fichero
COPYRIGHT.
Gracias al Profesor Michael Stonebraker por hacerlo posible.
Incompatibilidades:
* los formatos de fecha tienen que ser MM-DD-YYYY (o DD-MM-YYYY si est usted utilizando
EUROPEAN STYLE). Esto sigue las especificaciones SQL-92.
* "delimiters" es ahora una palabra clave.
Potenciaciones:
* se ha aadido la sintaxis LIKE de sql
* el comando copy ahora recibe una especificacin opcional USING DELIMITER.
Los delimitadores pueden ser cualquier cadena de un nico carcter.
* se ha aadido la migracin a IRIX 5.3.
Gracias a Paul Walmsley y otros.
* se ha actualizado pg_dump para trabajar con una nueva libpq.
* se ha aadido \d a psql
Gracias a Keith Parks
* se ha incrementado el rendimiento de regexp para arquitecturas que utilizan
regex de POSIX regex debido a la memorizacin (caching) de patrones precompilados.
Gracias a Alistair Crooks
* una nueva versin de libpq++
Gracias a William Wanders
Errores corregidos:
* se pueden especificar usuarios arbitrarios en el guin (script) createuser.
* ya funciona \c para conectar a otras bases de datos.
* se ha corregido una mala entrada en pg_proc para float4inc()
* los usuarios con el campo usecreatedb fijado, ya pueden crear bases de datos
sin ser el superusuario.
* se eliminan las entradas del control de acceso cuando la entrada ya no tiene
ningn permiso.
* corregida la implementacin de formatos de fecha/hora no portables.
* aadidas marcas (banderas=flags) kerberos en src/backend/Makefile
* libpq ya trabaja con kerberos.
* se han corregido errores tipogrficos en el manual de usuario.
* btree con ndices mltiples no ha trabajado nunca, pero ahora le decimos que
no trabajan cuando intenta utilizarlo.
Nuevas herramientas:
* pgperl - una interfaz Perl (4.036) para Postgres95
* pg_dump - una utlidad para volcar una base de datos postgres en un fichero
fichero de script conteniedo los comandos de creacion. Los ficheros script estan
en formato ASCII y pueden ser usados para reconstruir una base de datos, incluso
Tiempos Resultantes
T:W/+,5W:-,(7#&@6=?(*3+,:<%/1:<(7"4(U(VPQ(70>3:%=h+,W:<(7:14(Y=(7;=(*-,/q0>5/K+,W0>5#[%/145
% cd src/test/regress
% make all
% time make runtest
v6.5
FY#&i_1%d-,4L(7+Z0>%i@%=?%
`(7=?-,/1(76@=(70>(24(7/1:<(7X+56:-,(7#[@5W(7/1:=(Y`c(*=V-,/1(7W/1L5/
4-,=(0>:<%#&(7/1:<(i02#&@%=?% N +,(7U@3(7:<&\3(i(i_1%/n%1%4-,4[/13(7`5
:(*:l4(i=?(*;=(2-,5/"ST/
;(*/1(7=?%+,X+,%
`1S vU(*W#&%W=?%@-,4%\3(U`(7=V-,/1(76@=(70>(74(7/1:<(7S
5-,(7#&@L02/
4(*% N -,+,-,:<%4^a
fsync()
Tiempo
Sistema
02:00 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 O2 -m486
04:38 Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
5-,(7#&@W0>/
fsync()
_1% N -,+,-,:<%4^a
Tiempo Sistema
04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 O2 -m486
8%=V%Y(7+-,:<(7#&%
-,/13{d%/1:(*=V-,=<X*+,%U3:<-,+,-,e%0>-,/94(I4-,02"pBMjGFYjGf5#&(VPQ=?(*6\53(+,5 m `-,(7M
P<y.f
T]02/1430>(7/%
3/1%d#&(VPQ=V%U4(U3/vf (*/+,%d`c(7+50>-,4%44(U+,56:(*:c4(=(7;5=(7-,5/"S
v6.4beta
v6.3
v6.1
Tiempo
Sistema
06:12 Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
12:06 P-100, 48MB, Linux 2.0.29, gcc
39:58 Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g
postgres
/R/1-,0>
#&%/1(VPQ%q3/1%90>5+,(70>0>-,/o4%4%L4( N %(7d4(4%:d(*//1-,0>[_1:zS
G%+G02+,(70>0>-,postmaster
/9(Y4(7/1#&-,/1%
3/1%-,/1:<%+,%0>-,/9L3/i-,:<(SV%l%@+,-,0>%0>-,5/1(*l4(IC=/1:(*/14K\3(
\3-,(7=(7/&%020>(74(2=g%i3/1% N %(
4(
4%:<5U4%4%
(7/R3/1%i-,/1:%+,%02-,/R=(7%+,-,e%*/R+,+,%#&%4%Y%L+,%
+,- N =(7=V%1S%d+,- N =(*=V%
(7/1`,%d(7+=(7\53(7=V-,#[-,(7/1:i4(7+33%=V-,9%d:<=?%`c*W4(+,%d=?(*4O%+
m ">
?I?D>zY5dz>5A> m %yQyX5\3-,(7/n(7/R3o:<3=V/c]%=?=V%/102%3/n/c3(*`cpostmasO@=50>(7
ter
(7=V`-,4=4( N %0>'(*/14 m 6>
g"?2?zh55IV25A2 mN yy
F 5?0gQ * -5Ri>
>Q>
U25*1-
J&(q0>/1(70>:%q(7+^@=50>(7[0>+,-,(*/1:(9%+/13(*`c&(*=V`-,4= m 6>u???>?V
5
z>SA> m 0>yy?S
B @%=?:-,=Y4(i%\3,X1(7+@=50>(7&0>+,-,(7/1:<(qJR(*+^(7=?`-,45=(i0>#&3/c-<0>%/n(7/1:<=?(i(*+,+,5u-,/r-,/1M
:(*=V`(7/10>-,/4(7+
ST/0>5/1(70>3(7/10>-,%X^(7+"@=0>(7
(*:<[-,(7#&@=(
0>5=?=V-,(*/14X*(7@(7=?postmaster
%/14u+,+,%#&%4%X*#&-,(*/1:=?%l\3(I+,5l@=0>(75l0>postmaster
+,-,(7/1:<(IJ(7=?`-,45=^`-,(7/1(*/9J
`%/"Sz%d+,- N =(7=?,%
@(*=V#&-,:<(U%
3/K/1-,02i@=50>(7i0>+,-,(7/1:<(U:<(7/1(7=h#&+,:-,@+,(7W0>5/1(*{G-,/1(7
0>5/&@=0>(75(7libpq
=?`c-,4=(7S*jG-,/&(7# N %=;55XZ+,%i%@+,-,0>%0>-,5/&0>+,-,(7/1:<(-,;53(L-,(*/14]3/&@=0>(7
#&5/1M_1( N =?%1SV%60>/1(7{-,5/1(7"0>/K#&3+,:<-,_1( N =?%402+,-,(*/1:(5wZ(7=?`-,45=/1(7:/q%02:<3%+,#&(7/1M
:(u5@=?:%4%Y(7/
S2
/1%L-,#&@+,-,0>%0>-,/&4(
(*:<%i%=\3-,:<(70>:3=?%
(7Y\3((7+
Jq+,I(7=V`-,4=(76-libpq
,(*#&@=(
02=?=?(*/K(*/]+,%u#&-,#&%u#&\3-,/1% m (*+(7=?`-,45=l4( N %(postmaster
4(
4%:yX
#&-,(7/1:<=V%^\3(g(7+0>+,-,(7/1:<(g@3(74(W0>5=?=(7=1(7/i0>3%+,\3-,(*=-,:<-,^S?
( N (W3:(74q:<(7/1(7=(*:<u(7/L023(*/1M
:%X5J%9\3(L+,d)0>_1(7=
\3(i@3(*4(7/R(7:%=g%0>0>(7- N +,(7U(7/R3/1%9#&\3-,/1%90>+,-,(7/1:<(7X@3(74(*/
/1
(7:%=?+, m (*:<%=?+,
+,02/q3/9/1# N =(Y4(I)0>_1(7=
4-,C(7=(2/1:(*y(7/9+,%#&\3-,/1%
(7=?`-,45=VS
( N (7=?,%q:<(7/1(7=
:%# N -,7/r(7/B0>3(7/1:<%K\53(
J+,(*=V`-,4=(7
@:<;5=?(*
02=?=?(*/
N %PQ](7+.3(7=M-,44(7+!3@(7=33%=?-,5!W4(
8postmaster
:;5=(7S7~5:<(7(L\3(L(*+3@(7=33%=?-,]4(L8:M
;=(*^/1u:<-,(7/1(W@=?\53g(7=3/33%=V-,
(7@(70>-,%+ m (74(*02-,=<X>3/i33%=?-,d+,+,%#&%4d!@:<;5=?(*!yX
%3/1\3(U(7/#&30>_1I-,:<(7#&%W(7:U-,/1:<%+,%4L%$SAB6%/1X(*+3@(*=?33%=?-,94(U8:;5=(7
C3/102-,/1(7
:-,@.5
@(7=?%45=(*
%1%4-,45
85:<;=(7W(7g(*{G:<(7/1- N +,(d@.5=\3(
+,%W5@(*=V%0>-,/1(7W/]0>%:<%+,;g(7/K4-,0>SjG-(*:<uCD%#&-,+,-,%M
=V-,e%740>/]+,Y(7:%/14%=?(2I4(d-,:(7#&%I=(7+,%0>-,5/c%+,(7XG% N (d\3(d+,%-,/1C=V#[%02-,/[(d%+,#&%M
0>(7/1%(*/ N %(7h4(I4%:<5X:% N +,%X02+,3#&/1%X7(7:<0GS X*(*/9+,L\53(Y(Y0>#&3/1#&(7/1:<(0>5/10>(Y0>5#&
-,:<(7#&%
4(
0>%:%+,;55S m +,;53/15Y-,:(7#&%I+,q+,+,%#&%/O4-,0>02-,/1%=?-,q4(
4%:<5yzST+c0>%:<%+,5;5
%@%*=(70>(Y%+Z33%=?-,L0>#&i3/1%
0>+,%(7X0>#&i:= N PQ(7:<i0>3%+,\3-,(7=?%X*@(7=L
ABjd+,L%+,#&%M
0>(7/1%L(*/n3/1% N -,+,-,:<(70>%1S7/1%4-,C(7=(7/10>-,%L0>+,%`((7/1:<=(
8:<;5=?(*
J](7+.(7:%/14%=g4(-,:(7#&%
=(7+,%*02-,/1%+,(7W(76\3(U85:<;=(76%+,#&%0>(7/1%d#&30>_1%6#&%6-,/1CD=?#&%0>-,5/K(7/3]0>%:<%+,;9
/1
5+,r-,/1C=V#[%02-,/4(O:<% N +,%JB0>5+,3#&/1%X^-,/1r:<%# N -,(7/-,/1CD=?#&%0>-,5/ N =(O39:<-,@X
C3/102-,/1(7JK#&(7:<544(
%020>(7^ST:%Y02+,%(*Y@3(74(7/[(*=g#&4-,)0>%4%Y@=I(*+133%=V-,X
J4%41K\53(u8:<;5=?(* N %%u+,%
@(7=?%0>-,/]-,/1:(*=V/1%
(7/O:4%W3Y0>+,%(7X(7:q-,;5/1-,)0>%L\53(
85:<;=(7
@3(*4(q(7=U(*{G:<(7/14-,4R@=
+,533%=?-,5SG8=
02#&@%=?%0>-,5/1X1+,%O0>/1`c(*/10>-,5/B(7
\3(+,-,:(7#&%
4( N %(94(4%:
@3(74(7/(7=
(7{:(7/14-,45
+,%#&%/1:<(K0>%# N -,%/14&+,
@=50>(741-,#&-,(7/1:<5i0>54-,)0>%4L4(7+l
ABj[o0>%=;Z%/14o#[543+,i(*@.(70>-,%+,#&(7/1:<(K(70>=V-,:<5
@=h(7+`(7/14(*45=4(
ABjS
85:<;=(7
(7d:<%# N -,(7/n4-,:-,/1:<&%q5:<=5d;5(7:<5=(7
4(L4%:<5
(7/n\3(q(*+^(7=?`-,45=Y@3(74(L-,/1M
0>5@=?%=Y0>4-,;](702=?-,:]@5=Y(7+33%=?-,[%9:<=V%`c(*
4( N - N +,-,:(*02%d4(L0>%=;%L4-,/1%#&-,0>%S}
(7%X(*+133%=V-,K@3(74(u(7@(70>-,)0>%=W3/&)0>_1(7=4(0>4-,;K N P<(*: m @WS2(VP?S X3/&)02_c(7=O0>#&M
@-,+,%4S N - N +,-,:(70>%4(-,/1:(7=0>%# N -,yg02/B+,o\53((K-,#&@+,(7#&(*/1:%[3/B/13(7`o:<-,@o
C3/102-,/1(7IJK8:<;5=?(*I0>%=;%*=V%
+,\3(d=(7\3-,(7=?%1ST+c0>4-,;(70>=?-,:q(7/OjGkL&(7I#&%Y4-,)0>-,+
4(i%1%4-,=Y%+(7=?`-,45=VST:%q_1% N -,+,-,:<%4@.%=V%q#&4-,)02%=+,%K@(7=?%0>-,/o%+`3(7+,^_1%0>(i4(
85:<;=(7I+,%
3/1-,0>%3-,:<(u@%=V%u@=::-,@Y=?%@-,4I4(d/13(*`c%I%@+,-,0>%0>-,5/1(*IJ(7:=30>:<3=?%
4(%+,#&%02(*/1%#&-,(7/1:<S
8%=V%
-,/1:<=?430>-,=?/15U(7/[+,
0>/10>(7@: N %-,024(
+,%L(7{G:<(7/1- N -,+,-,4%4XZ_1(7#&U4((7:34-,%=
0>5#&u(g4-,(4i%/+,5l0>%:<%+,;S?83(74(W%+,:<%=V(g(7:%I(70>0>-,5/i%_15=?%X2@(7=d%+,;3/1%(*020>-,M
/1(7I#&%g:%=41(u/1(7=?%/K02#&@=(7/14-,4%g-,/[+,%u-,/1C5=?#&%0>-,/[4%4%u%\53-,X%-c\53(u#&%=?\53(
(7:%O@%;5-,/1%]0>5#&r@.5:(*=V-,==(7C (7=(7/10>-,%1SZ549+,9-,:(*#&%i4(O02%:%+,;L:-,(7/1(*/3/
/15# N =(d\3(d(7#&@-,(7e%@= 1 S>%I-,;53-,(7/1:<(7Y0>+,%(7I0>/1:-,(7/1(*/[-,/1C5=?#&%0>-,/[\3(
4( N (
4(i(7=
3:-,+^@%=?%K+,
33%=?-,u)/1%+,(7S m %JR#&30>_1%u:<=?
-,:<(7#&%
4(q0>%:<%+,5;5X.@(*=?
(7:6=V%=?%*#&(7/1:(/O@.(74-,4W4-,=(*0:%#[(7/1:(5S y
Descriccion
@;57@0>+,%
@(7=?%4=h4(Y02+,%(*W4(Y#&(7:4i4(U%0>02(*
@;574%:% N %(
@;570>+,%
@;57%::<=V- N 3:<(
@;57-,/14(*{
@;57@=0
@;57:<J@.(
@;57@(7=?%:<5=
@;57%;;5=(7;%:(
@;57%#
@;57%#&5@
@;57%#&@=50
N % (4(U4%:
0>+,%(7
%:<=V- N 3:<564(0>+,%(7
-,/14-,02(*W(70>3/14%=?-,5
@=0>(74-,#&-,(7/1:<5 m %# N WFBJ9jGkLy
:<-,@ m %# N 5 N %(Ji02#&@+,(?P<y
5@(*=V%45=(7
0>/PQ3/1:DiJ90>/P<3/1:<94(YCD3/10>-,/1(7
#&(*:4i4(%020>(*
@(7=?%4=h4(Y#&(7:<5494(%0>0>(7
@=V:<(4(@(7=?%4=4(Y#&(*:4i4(Y%0>02(*
F 5?0gQ1?>Q1>>]
>75 025>D5?
T+#&%/13%+4(g=(7C(7=$(*/102-,%Y4%Y#&%h4(*:%+,+,(g4(g(7{@+,-,0>%02-,/L4(I(*:<5l0>%:<%+,;hJ3l%:=?- N 3M
:Sz
(0>3%+,\3-,(7=^#&%/1(*=V%X G5z>?DWV>D>$5W >?1? #&3(7:<=V%U3K#&%J5=
(7/1:<-,4%4(7YJ]3U=(7+,%0>-,/1%#&-,(7/1:<](7/R(*+.-,:<(7#&%94(0>%:<%+,;^S m 5U%:<=V- N 3:<5U\3(L/1](
=(7)(7=$(7/%d:=?%6(7/1:<-,4%4(76/195/K#&:<=?%4g-/19/K@%=?:(U@=?-,#&%=?-,%
4(U+,%d+,+,%`c(5SzT:<(
4-,%;5=V%*#&%[email protected](*4(9(*=U#&%uR#&(7/1L-,/c02#&@=(7/1- N +,(_1%:<%K\53(=(7%+,#&(*/1:(i0>5#&-,(*/10>(%
#&-,=V%=h+,g0>/1:(7/1-45W4(+,g0>%:%+,5;556J9`(7%U02#&9(U=(7+,%*0>-,5/1%/K(7/1:<=(-S8=l%_15=?%X+,
@=?-,/102-,@%+Z(*;3-,=h(7:(Y4-,%;=?%#&%ca
T/R`%=V-,%
4(
+,%
(70>0>-,5/c(7
\53(`c-,(*/1(7/%L02/1:<-,/13%02-,/1Xc@=(7(7/1:<%=(#&d`%=?-,%0>5/1M
3+,:%W0>#&@3(7:%6(7/K+,5W0>%:%+,;5564(7+-,:(7#&%u\3(U@.=?(*(*/1:%/-,/1C=V#&%02-,/K\3(U/1(7M
0>(7-,:<%#&59@%=V%[(*{G:<(7/14(*=(7+6-,:<(7#&%1SA-,=?%4(7:([4-,%;5=?%#&%[@4=(7#&q_1%0>(7=\3(
%+,;53/1%"4(U(7:<%"02/13+,:%W0>5#&@3(7:<% m \53(%
#&(7/134L(U0>#&@5/c(7/O4(:=(76i0>3%M
:<=K@%=V:<(7y(*%/&ABY0>5#&@=(*/1- N +,(7#&%UC%0>-,+,(7Y4((*/1:(*/14(7=<X4%4O\3(
(*=V%i0>%@.%7e
4(g`(7=+,l%:=?- N 3:l3%4"(*/i+,%l0>+,%`(7h-,#&@.5=?:%4%h4(g+,5lC=V#[3+,%=V-,l4(g02/13+,:%
4(Y5:<=V%60>+,%(7S
b A30>_1%i02%=?%*02:<(7=?-,:-,0>%i4-,:<-,/1:% m 02+,%(*X%:<=V- N 3:<5XC3/102-,/1(7Xh:-,@Xh#&(*:4594(
%0>0>(7X(7:0>y(7:<%/
(7:=(70>_1%#&(*/1:("=(*+,%02-,/1%4%*(7/
(7:(6(*\53(*#&%1S$/
-,#&@+,(W0>5#&%/14
4(Y02=(*%70>-,5/K@3(74(#&54-,)0>%=#&30>_15W4((7:<5W02%:%+,;S
b W:<-,@5WJ9@=0>(74-,#&-,(7/1:<565/(7+,(*#&(7/1:<5WCD3/14%#&(7/1:%+,(7"4((7:<(U(7\3(7#&%1S
b
Nota: Usamos las palabras procedure y function de forma mas o menos indistinta.
8=V%02:<-,0>%#&(7/1:<(:<54L02%:%+,;5L0>/1:-,(7/1(
%+,;53/1%
=(7C(2=(7/10>-,%
%
-,/1:%/102-,%W(7/3/1%
L%#&M
N %I0>+,%(7S28=W(VPQ(7#&@+,X585:<;=(7YC=(703(*/1:(7#&(*/1:(
3%)=?#&%Y4(d:<-,@ m @=W(VPQ(7#&@+,X
4(YCD3/10>-,/1(76J9@(7=?%4=?(*y5@%=V%U-,4(7/1:<-,)0>%=-,/1:%/10>-,%63/1-,0>%W(*/5:<=5602%:%+,;55S
%Jq#&30>_15g5:<=?g%:=?- N 3:IJq=(7+,%0>-,/1(7g\53(
:-,(7/1(*/]-,;/1-,)0>%4I N `c-,XG@(*=9_1%J
:="#&30>_1 m @%=V:<-,0>3+,%=#&(7/1:<(U%\3(7+,+,"\3(U:-,(*/1(7/q\3(U`(7=^0>5/+,W#&(*:464(Y%0>M
0>(7yG\53(6/1d+,5:<-,(7/1(7/"S$%=(7+,%0>-,/1(7(7/1:<=("@;5%#&X@;5%#&@X@;5%#&@=0>X@;5@(*=V%:<5=
Jo@;5@0>+,%9/@%=?:<-,023+,%=$#&(7/1:(]4-,)0>-,+,(7q4(K02#&@+,=(7/14(*=XJB(7=V%/4(*0>=?-,:%i(7/
@=C3/14-,4%74 m (7/&+,%9(70>0>-,/n N =(:-,@d4(-,/1:(*=VC%(J]5@.(7=V%45=(2
4(L-,/14-,0>(7y%/1:(*
4(Y\3(U(7:34-,(*#&56+,%6(7{:(7/1-,/1(7 N %-,0>%S
funcs.sql
funcs.c
Ejemplos
8%=V%g-,+,3:<=V%=.3/1%C3/10>-,/LjGkq(7/10>-,+,+,%X20>5/1-,4(*=(g+,
-,;53-,(7/1:<(7X*\53(W(W@4=?,%I3%=.@%=?%
0>%=;Z%=h(*/3/1%d0>3(7/1:<% N %/10>%=?-,%1a
create function TP1 (int4, float8) returns int4
as update BANK set balance = BANK.balance - $2
where BANK.acctountno = $1
select(x = 1)
language sql;
/33%=?-,o@4=V%[(VPQ(70>3:%=u(7:<%[C3/10>-,/@.%=V%O02%=?;5%*=Ke*1S ](*/+,%[023(*/1:%[5]4(O+,%
-,;3-,(7/1:<(UC5=?#&%1a
select (x = TP1( 17,100.0));
T+h#&-,/1:<(7=(7%/1:<(q(?P<(7#[@+,-,;53-,(7/1:(O:<#&%O3/1%]%=;53#&(7/1:<n(7/10>-,+,+,4(:<-,@TA8*X.J
4(7`3(7+,`(Y=(73+,:<%46#&+,:<-,@+,(7a
select function hobbies (EMP) returns set of HOBBIES
as select (HOBBIES.all) from HOBBIES
where $1.name = HOBBIES.person
language sql;
%9C3/102-,/ojGko#&d-,#&@+,(9@- N +,(i/1&:<-,(7/1(i%=;53#&(7/1:dJ[(*/102-,+,+,%#&(7/1:(94(*`c3(7+,`(
3/:-,@ N %(*X:%+Z02#&
a
int4
+(7@(*02-,)0>%=CD3/10>-,/1(7g0>/O%=?;53#&(7/1:<5W4(U:<-,@5W02#&@3(7:<5 m :<%+,(760>5#&qTA8yX4(7M
N (7#&h/1
+,(7@(70>-,)02%=.\3Y%=?;53#&(7/1:<u\3(7=(7#& m 0>5#&
_1-,0>-,#&6#&h%=?=V- N %I0>5/me
Jneyh-,/1&:<%# N -,7/R+,d%:<=V- N 3:<5
4((7(i%=;53#[(7/1:^S785=I(VPQ(7#&@+,X1 N (7=?`c(L+,%9C3/10>-,/
43 N +,(*%+,%7=?J9\53(U@=50>(7%
0>3%+Z(7=?,%
3O%+,%=?-,L-5(Y4 N +,%(5a
CREATE FUNCTION double_salary(EMP) RETURNS int4
AS SELECT $1.salary * 2 AS salary; LANGUAGE sql;
SELECT name, double_salary(EMP) AS dream
FROM EMP
WHERE EMP.cubicle ~= (2,1)::point;
+---+-----+
|name | dream |
+---+-----+
|Sam | 2400 |
+---+-----+
30
+-------+
|youngster |
+-------+
|Sam
|
+-------+
FY#&q`(7=(7#&X-,/](7# N %=?;5XG/1q-,(7#&@.=?(
(*I(7:(
(7+0>%ST:%u/1:%0>-,/[4(
C3/10>-,5/O(7
-,#&@=V:<%/1:(0>3%/14\53(7=(7#&L3%=
3/1%]C3/10>-,5/\3(4(7`3(7+,`%O3/1%]/1-,0>%]-,/1:%/c02-,%1S
%0>(7#&
(*:<[(7# N ( N -,(7/14[+,%q-,/1:%/10>-,%90>#&@+,(7:<%4(*/1:=O4(i+,%9CD3/10>-,/1X1%:=?- N 3:[@=
%:<=V- N 3:<SzT:<i(763/(VPQ(7#&@+,i4(U3/1%
C3/102-,/K\3(U4(7`3(7+,`(Y3/1%d/1-,0>%d-,/1:%/10>-,%dTAB8Wa
CREATE FUNCTION new_emp() RETURNS EMP
AS SELECT \None\::text AS name,
1000 AS salary,
25 AS age,
\(2,2)\::point AS cubicle
LANGUAGE sql;
FY3%+,\3-,(*=l0>+,(70>02-,/K4(
5=4(7/1(*W(*/K(*++,(*/1;3%PQ(
4(U0>5/13+,:<%
jGk[([email protected](*4(7/(7#&@%\3(7M
:%=ZP<3/1:<%lJi(g@3(74(*/94(7)/1-,=^0>5#&3/1%UC3/10>-,5/"S?%h=4(7/1(7l@3(*4(7/i-,/10>+,3-,=3@4%:<(7
m (7W4(70>-,=X702/13+,:% QR B / DlX I)2L D XJ LC D y1%02#&;B ,C *ED
SjG-,/K(7# N %=;55X
+,%=4(7/[)/1%+c4( N (
(7=W3/cB C *EDr\3(4(7`c3(*+,`c%
+,\3((
(*@(70>-,)\53(
0>5#&K(7+c:-,@
4(=(7:<5=?/14(U+,%
C3/10>-,5/"S
CREATE FUNCTION clean_EMP () RETURNS int4
AS DELETE FROM EMP WHERE EMP.salary = = 0;
SELECT 1 AS ignore_this
LANGUAGE sql;
SELECT clean_EMP();
+-+
|x |
+-+
|1 |
+-+
+,(7/1;53%PQ(7h@=02(*43=V%*+,(7h/1u(*:</0>5/1:=3-Q44(7/1:<=d4(W85:<;=(7SjZ(6@.=?@=02-,/1%/
0>5#&d#&43+,0>%=;% N +,(7S$85=.CD%`c=c4-,=V P<%(6%6+,%g450>3#&(7/1:<%0>-,5/@%=?%W(*+8i(7/
0>3(7:-,/
@%=?%W+,4(7:<%+,+,(7 N =(6+,%g-,/1:%{G-,^Ju0>5#&d+,%I0>+,33+,%gjI(W-,/1:(7=?@=(7:<%W@=(7+7#&%/1(?P<%45=
4(7+Z8gS
%J46+,(*/1;3%PQ(7"@=02(*43=V%*+,(7"4-,@/1- N +,(7602/q+,%U4-,:<=V- N 30>-,/K(*:</14%=^4(I85:<;=(7
m 8ZFYqJL8jGkyX7J5:<=5"+,(7/1;53%PQ(7"(Y@3(74(7/94(7)/1-,=VSV
-,=? PQ%(% ?*15$$? >z?
?
? @.%=V%#&6-,/1CD=?#&%0>-,5/"S
Funciones Internas
%C3/102-,/1(7U-,/1:(*=V/1%
5/nC3/10>-,5/1(*
(70>=?-,:%(7/RF\3(L_c%/R-,4O(7/1+,%e%4%7U(7:<:-,0>%M
#&(7/1:<((7/(7+@=02(* N %0>'5(7/14O4(U8:<;5=?(*Sz%
0>+,33+,%d4%
(7+Z/1# N =?(U(*/+,(7/1;3%zP<(UFB4(
+,%
C3/10>-,5/1X\3(
/19/1(70>(7-,:<%d(*=l(7+#&-,#&q\3(U(*+/1# N =(U\3(U(
4(70>+,%=%d@%=?%
(7+53i4(
jZkgS m 85=6=?%e/1(7I4(u0>#&@%:- N -,+,-,4%4R0>/[`(7=V-,/1(7I%/1:<(7=?-,=?(*XG3/1%0>%4(7/1%ujL`%0>,%
(I%0>(7@.:%Y02/9(*+G-,;/1-,)0>%44(I\53((7+/15# N =(Y4(Y+,%YCD3/10>-,/q(7/9+,(*/1;3%PQ(YFr(7l(*+G#&-,#&
\3(i(7+/1# N =(i(7/njGkLWS yl~q5=?#&%+,#&(7/1:<(7X:<54%
+,%dC3/10>-,/1(7d-,/1:<(7=?/1%d@=(7(*/1:(7U(7/n(7+
N %0>'(*/14&(d4(70>+,%=?%/K02#&C3/102-,/1(7YjGkR43=?%/1:<(u+,%u-,/1-,0>-,%+,-,e%0>-,/[4(d+,% N %(
4(d4%M
:X@(7=q3/&33%=?-,K@.54=?,%
3%=9* / D F I)R *ED Q H R @%=?%
02=(*%=6/15# N =(7Y4(u%+,-,%
%4-,0>-,/1%+,(7"@%=?%U3/1%dC3/10>-,5/K-,/1:(*=V/1%1S
%YC3/10>-,5/1(*U(*0>=?-,:%(7/[F(@3(74(7/[0>5#&@.-,+,%=I(*/& N PQ(7:<5U\3((@3(*4(7/[0>%=;5%=64(
C5=?#&%4-,/1#&-,0>%X2JL3%=@%=V%I-,#&@+,(7#&(*/1:%=CD3/10>-,/1(7"jZkq4(7)/1-,4%h@=(7+33%=V-,^SV%
@=?-,#&(7=?%i`c(*e9\3(9+,%9CD3/10>-,/4(*)/1-,4%@=I(7+^33%=?-,[(7
+,+,%#&%4%i4(7/1:=[4(7+ N %0>'(7/14X
(7+0>%=;5%745=U4-,/1#&-,02R0>%=;5%(*+0>54-,;R N P<(7:<R4(9+,%KC3/10>-,5/o(7/o#&(*#&5=?-,%XJR(*/1+,%e%q+,%
C3/102-,/0>5/(7+"(VPQ(70>3:% N +,(K(7/(VPQ(70>30>-,5/4(O8:;5=?(*SZ%]-,/1:%{-,LjZk@%=?%* / D
F I)R *ED Q H R (7/1+,%e%+,%YC3/102-,/qjGkLq%Y+,%UC3/102-,/9(*/90>54-,;5
FB4(g3/1%U4(I4lC5=?#&%S?jG+,%uCD3/10>-,/]jGkR:<-,(7/1(d(7+#[-,#&/1# N =(u\3(d+,%
CD3/10>-,/](7/O0>54-,;5qF(u3%u+,%@=?-,#&(7=?%
C5=?#&%1S*T+%=;53#&(7/1:<O0>%4(*/1%i(7/R+,%90>+,33+,%Ljq(7U(7+/15# N =(L4(L0>%#&-,/1 m @%:_1/1%#&(7y
0>5#&@+,(*:L4(7+)0>_1(*=?L\3(U0>5/1:<-,(7/1(
(7+ N P<(*:90>#&@-,+,%4L\3(U(U@3(74(U0>%=;Z%=h4(C=V#&%
4-,/1#&-,0>%1SjG-(7+/15# N =(g4(g+,%C3/10>-,5/9Fo(*h4-,C(7=(7/1:<(g4(7+/1# N =(I4(*(7%4u4(W+,%YC3/10>-,/
jZkX(*/1:/10>(7W(U3%
+,%d(7;53/14%
C5=?#&%1SzT/K(*:<%
C=V#&%d+,%
0>+,33+,%
j
:<#&%d456%=;3M
#&(7/1:<5Y0>%4(*/1%XG(*+c@=?-,#&(7=q(7Y(*+c/1# N =?(u4(7+02%#&-,/102#&@+,(7:<4(7+c)0>_1(7=q N P<(*:K\3(
([email protected](*4(
0>%=;%=h4(
C5=?#&%
4-,/1#&-,0>%XJ(7+c(7;53/14q(7I(*+,# N +,4(d(7/1+,%0>(
\3(d(7+c0>%=M
;%45=h4-,/1#&-,0>94( N (*=V% N 30>%=VST:(# N 5+,q4(
(*/1+,%0>(U(7g+,q(7+/c5# N =(
4(UC3/10>-,5/
(7/q(7+0>4-,;LC3(*/1:(UFS
Nota: Despus de que se use por primera vez, una funcin de usuario, dinmicamente cargada, se retiene en memoria, y futuras llamadas a la funcin solo incurren en la
pequea sobrecarga de una bsqueda de tabla de smbolos.
%d:% N +,%d-,;53-,(7/1:<(u4%d(*+:<-,@qF=(7\3(*=V-,4L@%=?%d+,5I@.%=V#&(7:=GI(*/O+,%WC3/102-,/1(7IF\53(
(0>%=;Z%=V/q(7/q85:<;=(7Sz%0>5+,3#&/1%d!
(7)/1(74Of/1!4%
(*+Z)0>_1(7=4(Y0>% N (*02(*=V%Y=(7%+ m (7/q(*+
4-,=(0>:<5=?-,
yZ(7/L(7+\3(g(7+:-,@
F(7\53-,`c%+,(7/1:(g(I4(7)/1(S?jG-,/i(*# N %=;X
-5-,/10>+,3J5( .../src/backend/X7(7:W)0>_1(7=56(-,/10>+,3-,=V/O4(YCD=?#&%
%3:<5#&:<-,0>%1S
utils/builtins.h
C Type
% N :<-,#&(
N 5+
N {
N J5:(7%
0>_1%=
0>-,4
4%*:(*:-,#&(
N 5+,3:<(75-,#&(
N 5+
m }n?y
mN J5:(7%?y
0>_1%=
FYf
m
%:<(75-,#&(y
-,/1:<
-,/1:<`c(*0:=
-,/1:<
%:<
-,/1:
m -,/1:`(70>:<5=?y
-,/1:
%:
5= m %:U?y
%:<x
%:
5= m %:xU?y
+,(7;
/1%#&(
-,4
-,4`c(*02:<=
@%*:_
@-,/1:
=(2;@=0
=(2+,:-,#&(
:<(7{G:
:<-,4
:<-,#&(7@%/
m jGT.?y
m ~%#&(7y
-,4
m -,4`(70>:<5=?y
m 8I ?y
m 8}fD~qO?y
=(7;5@=G0I=l|"Tu8|6}F
|6(7+,%:-,`(75-,#&(
m :(*{G:?y
fD:<(7#&85-,/1:<(7=
m 5-,#&(7jG@%/qy
:<-,/1:(7=?`%7+
3-,/1:
3-,/1:
{-,4
5-,#&(7f/1:(7=?`%+
3-,/1:<
3-,/1:<
m 6f y
Defined In
3:-,+,wG/% N :<-,#&(S _
-,/10>+,34(5wZ0GS _
3:<-,+,wG;1(*5M4(70>+,S _
-,/10>+,34(wG@:<;=(*S _
~nwZ
-,/10>+,34(5wZ@:;5=(7S _
-,/10>+,34(wG0ZS _=
-,/10>+,34(wG@:<;5=?(*S _
-,/10>+,34(wG@:<;=(*S _
-,/10>+,34(wG@:<;5=?(*S _
-,/10>+,34(wG@:<;=(*S _
-,/102+,34(5wZ0GS _=
-,/10>+,34(wG@:<;5=?(*S _
-,/102+,34(5wZ0GS _=
-,/10>+,34(wG@:<;5=?(*S _
-,/10>+,34(wG;(*5M4(*02+,S _
-,/102+,34(wZ@.5:;5=(7S _
-,/102+,34(wZ@.5:;5=(7S _
-,/10>+,34(wG@5:<;=(7S _
3:<-,+,wZ;1(*5M4(70>+,S _
3:<-,+,wZ;c(75M4(*02+,S _
-,/102+,34(5wZ@:;5=(7S _
3:<-,+,wG/% N :-,#&(S _
-,/10>+,34(wG@:;5=(7S _
:<5=?%;5(wG-,:(7#&@.:=VS _
-,/10>+,34(wG0GS _5=
-,/10>+,34(wG@:<;5=?(*S _
3:-,+,wG/% N :<-,#&(S _
-,/102+,34(5wZ0GS _
-,/102+,34(5wZ0GS _
-,/10>+,34(wG@:;5=(7S _
@% N i
J `%+,3(7X){G(*4M+,(7/1;5:_
@% N i
J =(7CQ(7=(*/102(*X){(74M+,(*/1;:<_
@% N i
J =(7CQ(7=(*/102(*X`c%=V-,% N +,(7M+,(7/1;5:_
T/R(7+5:<=]+,%45X+,d:<-,@5
4(L+,5/1;5-,:<34B)GPQ%94(L0>3%+,\3-,(7=I:%#&%1[(L@3(74(7/R@%%=g@=
=(7CQ(7=(*/102-,%cS8="(VPQ(7#&@.+,5X%\35(
@=(7(7/1:<%d3/1%
-,#&@+,(*#&(7/1:<%0>-,5/O4(U(VPQ(7#&@+,q4(U3/K:<-,@
4(8:<;5=?(*a
/* 16-byte structure, passed by reference */
typedef struct
{
double x, y;
} Point;
jZ+,
+,6@3/1:<(7=h%U:<%+,(7l:<-,@5l(I@3(74(7/i3%=%+,%_1=?%U4(I@%%=+,60>#&L%=?;53#&(7/1:<5
4(d(7/1:=?%4%u4(d=(7:=?/1(7/]+,%YC3/10>-,/1(7Y4(d8:;5=(7S5-,/1%+,#&(7/1:<(7X:<545Y+,Y:-,@Y4(
+,5/1;5-,:<34[`%=?-,% N +,(U(
4( N (*/q@%%=:%# N -,7/@="=(7C (7=(7/10>-,%1Sz54g+,g:<-,@W4(U+,/1;5-,:34
`%=V-,% N +,(L4( N (*/n0>#&(7/1e%=g0>5/n3/R0>%#&@]+,(*/1;:<_4((7{G%02:<%*#&(7/1:(i N J5:(*XJ[:45U+,
4%:<5i\3(]([:<(7/1;%/\3([%+,#&%02(*/1%=
4(*/1:=o4([(*(]:<-,@B4( N (*/(7:<%=
-,:<3%4q(7/+,%
#&(7#&=V-,%U-,/1#&(74-,%:<%#&(7/1:<(Y%
0>/1:-,/13%02-,/4(Y(*(Y02%#&@L+,(*/1;:<_"SzT+Z0>%#&@+,(7/1;5:_q(7"+,%
+,5/1;5-,:<34]:<:%+4(U+,%
(*:=30>:3=?% m (*"4(70>-,=<X-,/102+,3J5(U(7+:<%#&%1i4(7+02%#&@i+,(*/1;:<_K#&-#&cyzS
854(*#&564(7)/1-,=l(*+:-,@L:(7{:<i0>5#&L-,;53(a
typedef struct {
int4 length;
char data[1];
} text;
} N ` -,%#&(*/1:(7X(*+50>%#&@.i4%:<%
/19(763)0>-,(7/1:<(7#&(*/1:(
+,%=;5i@%=?%
%+,#&%02(*/1%=:4%6+,%W0>%M
4(7/1%6@- N +,(*G(7W-,#&@5- N +Q(d4(70>+,%=%=":<%+5(7:=30>:3=?%u(7/]FS+c#[%/1-,@3+,%=":<-,@5g4(U+,5/1M
;-,:<34n`%=?-,% N +,(7XG4( N (7#&Y:(*/1(7=W0>3-,4%4q4(u=?(*(*=V`%*=g+,%0>%/1:-,4%4R4(u#&(7#&=V-,%0>5=?=(70>:%
J]4(-,/1-,0>-,%+,-,e%=g(7+.0>%#&@K+,(7/1;5:_"S78=Y(VPQ(7#&@+,X-.\3-,-,7=?%#&5
%+,#&%0>(7/1%=W N J:<(7U(7/
3/1%
(7:=30>:<3=?%
:<(7{:X@4=?,%#&"3%=h3/CD=?%;5#&(7/1:<L4(U024-,;5i0>5#[9(7:(5a
#include "postgres.h"
...
char buffer[40]; /* our source data */
...
text *destination = (text *) palloc(VARHDRSZ + 40);
destination- length = VARHDRSZ + 40;
memmove(destination- data, buffer, 40);
...
_1=?%i\3(i_1(7#&d`-,:[:<54%d+,%U(7:=30>:3=?%U@5- N +,(7
@%=?%i+,d:-,@.5 N %(*X5@54(7#&
#&5:<=V%=h%+,;53/1g(VPQ(7#&@+,W4(UC3/10>-,/1(76=(7%+,(7SVjG3@/1;%d\53(
(7"%a
funcs.c
#include = string.h
#include "postgres.h"
/* By Value */
int
add_one(int arg)
{
return(arg + 1);
}
/* By Reference, Fixed Length */
Point *
makepoint(Point *pointx, Point *pointy )
{
Point
*new_point = (Point *) palloc(sizeof(Point));
new_point->x = pointx->x;
new_point->y = pointy->y;
return new_point;
}
/* By Reference, Variable Length */
text *
copytext(text *t)
{
/*
* VARSIZE is the total size of the struct in bytes.
*/
text *new_t = (text *) palloc(VARSIZE(t));
memset(new_t, 0, VARSIZE(t));
VARSIZE(new_t) = VARSIZE(t);
/*
* VARDATA is a pointer to the data region of the struct.
*/
memcpy((void *) VARDATA(new_t), /* destination */
(void *) VARDATA(t),
/* source */
VARSIZE(t)-VARHDRSZ);
/* how many bytes */
return(new_t);
}
text *
}L/}jGhwG
s(Us3+,4[:<J5@(a
CREATE FUNCTION add_one(int4) RETURNS int4
AS PGROOT/tutorial/funcs.so LANGUAGE c;
CREATE FUNCTION makepoint(point, point) RETURNS point
AS PGROOT/tutorial/funcs.so LANGUAGE c;
CREATE FUNCTION concat_text(text, text) RETURNS text
AS PGROOT/tutorial/funcs.so LANGUAGE c;
CREATE FUNCTION copytext(text) RETURNS text
AS PGROOT/tutorial/funcs.so LANGUAGE c;
T/9:=l-,:<(7#&%X@4=?,%#&l:(*/1(7=^\3((7@(*02-,)0>%=+,%U(*{G:<(7/1-,/q4(7+G/1# N =(Y4(7+)0>_1(7M
=L0>#&&S + m @%=?%U-,/14-,0>%=l\53(U(763/1%U+,- N =?(*=V% m N - N +,-,:(*02%y10>#&@%=?:-,4%yS
:<-,@5
02#&@3(7:<5
/1[:-,(*/1(7/n3/nC=V#&%:[)GPQ[0>5#&]+,%
(*:<=302:<3=?%
4(FLS7%U-,/1M
:%/102-,%"4(U3/K:<-,@i0>5#&@.3(7:9@3(*4(7/0>5/1:<(7/1(7=h0>%#&@56/13+,+S4(*#&X+,5W:-,@g0>#&M
@3(7:I\3(u5/[@%=V:<(d4(
3/1%IPQ(7=V%=\3,%u4(d_1(7=(7/10>-,%u@3(74(7/O:(*/1(7=60>%#&@I4-,C(7=(7/1:<(7
=(7@(0>:<q%u5:<=5I#&-,(*# N =?g4(
+,%u#&-,#&%gP<(*=V%=\3%d4(
_1(7=(7/10>-,%1S85="(7+,+,5X8:<;=(*I@=5M
@=?0>-,/1%
3/1%d-,/1:(*=VC%eU@=50>(743=?%7+5@%=?%
%0>0>(741(7=l%d+,602%#&@5W4(+,g:<-,@5W02#&@3(7:<5
4(74(LFSFI3%/14[8:<;5=?(*d@=02(*%93/n0>5/PQ3/:[4(-,/1:<%/10>-,%X10>%4%9-,/1:<%/10>-,%q(i@%M
%=Vd%
3&C3/10>-,5/O02#&3/1%(*:<=302:<3=?%
@%0>%u4(d:-,@
SjG3@5/1;5%
\3(u\53(*=(7#&
TUPLE
(70>=V- N -,=3/1%dC3/102-,/@%=?%U=(7@/14(7=%d+,%
0>5/13+,:<%
* SELECT name, c_overpaid(EMP, 1500) AS overpaid
FROM EMP
WHERE name = Bill or name = Sam;
T/q+,%d0>5/13+,:<%d%/1:(*=V-,=<X@54(7#&W4(7)/1-,=h025`(7=?@%-,402#&^a
#include "postgres.h"
#include "executor/executor.h"
/* for GetAttributeByName() */
bool
c_overpaid(TupleTableSlot *t, /* the current instance of EMP */
int4 limit)
{
bool isnull = false;
int4 salary;
salary = (int4) GetAttributeByName(t, "salary", &isnull);
if (isnull)
return (false);
return(salary limit);
}
char *str;
...
str = (char *) GetAttributeByName(t, "name", &isnull)
%
0>5/c3+,:<%d-,;53-,(7/1:<(U@(7=?#&-,:<(U\3(U85:<;=(760>5/1e0>%
%
+,%dC3/10>-,5/0>`c(*=V@%-,4ga
* CREATE FUNCTION c_overpaid(EMP, int4) RETURNS bool
AS PGROOT/tutorial/obj/funcs.so LANGUAGE c;
3/1\3(I_1%JC5=?#&%h4(I0>5/1:<=?3-,=/13(7`%h-,/1:<%/10>-,%"4(g#&4-,)02%=+,%l-,/1:<%/10>-,%l(7{-,M
:(*/1:(74(74(64(*/1:=U4(63/1%YC3/10>-,/LFIX>7:%5/L4(7#&%-,%4U02#&@+,(?P<%^@%=?%W4-,0>3:<-,=?+,%
(7/q(7:<(U#&%/13%+S
Escribiendo cdigo
_1=?%Y`+,`c(*#&5h%I+,%I:<%=(7%g#&4-,CD0>-,+4(W(70>=?- N -,=CD3/10>-,/1(7h4(*++,(*/1;3%PQ(W4(W@=5;5=?%#&%M
0>-,5/"SW`-,^a>(7:%d(70>0>-,5/O4(7+5#&%/13%+5/1q+,(
_1%=Vd3/K@=;=?%#&%4=VS
( N (
:(7/1(*="3/K;=?%/
0>5/10>-,#&-,(7/1:R4(iF m -,/10>+,3J(7/14&(7+3&4(i@3/1:<(7=5uJR(*+^%4#&-,/1-,:<=?%4=U4(i#&(7#&=V-,%
#&%+,+,02y.%/1:<(7g4(
-,/1:<(7/1:<%="(70>=V- N -,=lCD3/10>-,/1(7IF@%=?%d3%=V+,%W0>/]85:<;=(7S>3/1\3(
(7M
=V%L@- N +,(i02%=;5%*=YC3/10>-,5/1(7U(70>=V-,:<%U(7/R+,(7/1;53%PQ(7
4-,:<-,/1:d%iF(7/R85:;5=(7X5(7[(*U%
#&(7/134&4-,C02-,+ m 023%/14&(7u@- N +,(q_1%0>(7=?+,&0>5#&@+,(*:%#&(*/1:(7y"@5=\3(9:=
+,(7/1;53%zP<(*X
:%+,(7u0>5#&n5}L||"~ Jn8%0>%+h%K#&(7/134R/1-,;53(7/B+,%O#&-,#&% z>?V>n
>o?
\3(FLSGT:<n(*X.5:<=5+,(7/1;53%PQ(7
/1n@%%/r%=;53#&(7/1:<5
J4(7`3(7+,`(7/o`%+,=(7
(7/1:<=(
C3/102-,/1(7u4(q+,%#&-,#&%OC5=?#&%1S85=U(*:<%K=?%e/1X1%3#&-,=(*#&5u\53(+,%uC3/10>-,/1(7
4(93
+,(7/1;53%PQ(4(U@=;=?%#&%*02-,/K(7:/(70>=?-,:%"(7/FS
%UCD3/10>-,/1(7
F 0>5/:-,@ N %(i0>5#&&%=?;53#&(7/1:<5d(i@3(*4(7/n(702=?- N -,=4(i3/1%qC5=?#&%
(7/10>-,+,+,%1SG(7\3-,`%+,(7/1:<(7F 4(q+,5L:-,@.5-,/1:<(7=V/1L4(8:<;5=?(*L/%0>02(*- N +,(*
(7/B3/
)02_1(*=?nF (O-,/c02+,3J5(]02#&r3/)0>_1(7=
PGROOT/src/backend/utils/builtins.h
4(0>% N (70>(2=V%cSzT
:L(U@3(*4(0>5/1(*;3-,=h(702=?- N -,(7/14
#include
utils/builtins.h
%+Z@=?-,/10>-,@-,i4(*+5)0>_1(7=CD3(*/1:(UFS
%"=(7;5+,% N -,0>%"@%=?%U0>/1:=3-,="C3/10>-,5/1(*WF/+,%W-,;53-,(7/1:(*a
%u#&%J=?,%d4(U+,I)0>_1(7=5W02% N (70>(=?% m -,/102+,34(*y.@%=V%
8:;5=(7g4( N (7=V%/(7:%=lJ5%
-,/1M
m `c(*=h5-,;53=V%
ySz
( N (7=V%
-,/10>+,3-,=l-,(7#&@=(
:<%+,%4"(7/
b
PGROOT/include
-I$PGROOT/include
(7/i3"+,/1(7%l4(I+,+,%#&%4%%0>0GSV`c(*02(*X*@54=V%U(7/10>/1:=?%=^\3(/1(*02(*-,:<%U)0>_1(7=l02% N (*M
0>(7=?%\53((7:/q(7/9(7+Z0>4-,;5LC3(7/1:<(Y4(*+Z(*=V`-,4=^#&-,#& m (7l4(70>-,=<X7/1(*02(*-,:<%U3/q)0>_1(7=
\3(i/1&_1(*#&5u-,/1:<%+,%4[(*/-,/10>+,34(7yzST/n(75
02%u@3(74(L/1(70>(7-,:%=Y%1%4-,=I3/1&
#&"4(
-I$PGROOT/src/backend
-I$PGROOT/src/backend/include
-I$PGROOT/src/backend/port/ = PORTNAME
-I$PGROOT/src/backend/obj
b
b
Sobrecarga de funciones
jZ(@3(74(i4(7)/1-,=U#&
4(93/1%qC3/10>-,5/0>5/(7+#&-,#&R/1# N =(*X1-,(7#&@=(i\3(9+,u%=;3M
#&(7/1:<5l\3(I:#&(7/9(*%/i4-,C(7=(7/c:(7ST/9:=?%h@%+,% N =V%*X7+,"/c5# N =(7l4(g+,%hC3/10>-,5/1(*l(
@3(74(*/ ?>z> 1> S>/1%
C3/10>-,5/[@3(*4(u:<(7/1(*=g%4(7#&W(7+1#&-,#&K/15# N =(
\53(
3/[%:<=?-,M
N 3:^S2T/O(7+c0>%4(
\3(u_1%J%
%# N -,;u(74%4[(7/1:<=(
3/1%C3/102-,/[ N =?(
3/[:<-,@0>5#&@+,(?P<
Ji3/K%:<=V- N 3:<L4(*+5:<-,@L02#&@+,(VPQX(U3%=?
-,(7#&@=((*+%:=?- N 3:^S
@%=V:<-,=
4(K85:<;=(7L`1S X.+,%]C5=?#&%]%+,:<(7=?/1%:-,`%O4(K+,%]0>+,33+,%]j&@%=?%O+,%[=4(7/r4(
jZkJ* / D F I)R *ED Q H R 4(7(7#&@%=?(PQ%](7+h/1# N =(K4(9+,%]C3/10>-,5/BjGk4(7+/15# N =(
4(LC3/10>-,5/n(7/n(7+0>54-,;5[C3(7/1:<(iFLS7T:%9(7
%_1=V%9+,%9:<70>/1-,0>%9@=(7C(7=?-,4.%q@%=?%i=(7%*+,-,e%=I+,%
N =(70>%*=?;5%
4(YCD3/10>-,/1(7S
Pre-v6.6
8%=V%"C3/102-,/1(7^(702=?-,:<%^(*/FIX(7+7/1# N =?("jZki4(70>+,%=?%74
(7/K* / D F IKR *ED Q H R 4( N (
(7="(7{%0>:%#&(7/1:(
(*+#&-,#&\3(
(*+/1# N =(u=(*%+4(d+,%uC3/10>-,5/](7/](*+0>54-,;F m 4( N -,49%
(7:L4( N ((7=3//15# N =(U4(YC3/10>-,/O4(F+,(*;%+,yzS
%Jn3/1%O3:-,+l0>/1(70>3(7/10>-,%O4(q(7:(q=(7:=?-,0>02-,/"aG#&-,(*/1:=?%
+,%
=3:-,/1%L4(q0>%=;%4-,/1M
#&-,0>%d(7/+,%K#&%J=?,%q4(i+,5u-,:<(7#&%u@(7=?%:<-,`cu(7:</o#&%d\3(qC(*+,-,02(*d4(i@(7=?#&-,:<-,=V+,(
0>%=;Z%=l0>3%+,\3-,(*=l/1#&(7=L4(U+,- N =?(*=V%"0>5#&@%=?:<-,4%6\3(U0>5/1:<-,(7/1(7/O/15# N =(764(UC3/10>-,5M
/1(70>5/-,02:<-,`5 m 02/B-,47/1:<-,0>5/1# N =(7yDX.@3(74(7/1X.4(K_1(70>_1X0>_1%@30>(7%*=u+,%K02%=?;5%4(
C5=?#&%g-,/1:<(7=(7%/1:<(7S8=6(VPQ(7#&@.+,5X-3:<(74[4(7)/1(d3/1%C3/10>-,5/O4-,/1#&-,0>%#&(7/1:<(d02%=?;5%*M
4%i\3(L=(73+,:<%i:(*/1(7=Y(*+#[-,#&]/15# N =(L\3(L3/1%9C3/10>-,5/R@(*=V:<(7/1(70>-,(7/1:<(L%i8:<;=(*X(*+
0>%=;Z%4=
TFn}jZwGY4-/1#&-,0>d_1%0>(W\3(W8:;5=(7+,+,%#&(W%I+,%IC3/10>-,5/4(7/1:<=
4(W*+#&-,M
#&]@=(7C (7=?- N +,(7#&(7/1:<(L%i4(VPQ%=g\3(L8:<;=(*
+,+,%#&(
%93C3/10>-,5/"S78=Y(7:<5X5-\3-,(7=(L\3(
3OC3/10>-,/O(3(U(7/4-,C(7=(2/1:(*W%=\53-,:<(70>:<3=?%X=(70>#&(7/14%#&"\3(U/1i N =?(*02%=;3(I+,5
/15# N =(7"4(U+,%6C3/10>-,/1(7gFS
%JU3/L:<=302U-,/1;(*/1-,5>
@%=?%W=(7+,`c(*=1(*+@.=? N +,(7#&%W\53(g(6%0>% N %"4(64(70>=V- N -,=VS
%4
\3(
/1i_1%J9@= N +,(7#&%6%+5 N =?(*0>%=;Z%=lC3/10>-,5/1(*gjGkLX3:<(74]@3(74(U4(7)/1-,=l3/K02/PQ3/1:94(
C3/102-,/1(7lFo0>5/i/15# N =(7l4-,C(7=(2/1:<(7lJ(7/1:/10>(7l4(7)/1-,=^3/90>/P<3/1:<L4(gC3/10>-,5/1(*"jGk
0>5/O-,47/1:<-,02Y/1# N =(*Y\3(u:<5#&(*/[+,Y:-,@Y4(d%=;3#&(7/1:<I%@=@-,%4gJK+,+,%#&(7/O%+,%
C3/102-,/F0>5=?=(7@/14-,(7/1:<(S
}L:<=?%Y+,30>-,5/q(7/13%=+,%Y0>%=;Z%4-,/1#&-,02%X*-,/1
(7/1+,%e%=3hC3/10>-,/1(7l%+ N %0>'(7/14q:M
:-,0>%#&(*/1:(J[4(70>+,%=%=?+,%U02#&[C3/10>-,5/1(*
f~T|6~qgS*T/1:</102(*Xc+,%UC3/102-,/1(7U4( N (7/
:(*/1(7=U:4%
/1# N =(7uF4-,:-,/1:<5@(7=&(q@3(74(7/4(70>+,%=?%7=
0>/r+,5#&-,#&L/1# N =(7
jZk m -,(*#&@=(9\53(+,L:<-,@
4(q3
%=;53#&(7/1:<5
4-,)(7=?%/1X1@5=
3@3(7:yzST:<%KC=V#&%
(7`-,:%+,%U N =(*02%=;5%4(Y3/1%
C3/10>-,5/qs=?%@@(*= m (7/1`+,`c(*/1:(7ycjGkX70>5/q+,%4(7`(7/1:%zP<%4(
3/[#&%J55=g(7C3(7=?eq@%=?%@.=?(*@%=%=W3/&(VPQ(70>3:<% N +,(
4(*+ N %0>'(7/14&%L#&(*4-,4%1S m T:<%@0>-,5/
(7:U4-,@.5/1- N +,(U+,i(7/+,%
`(7=?-,5/1S vJ9@:(7=?-,=(7X4%4\3(+,%6`(7=?-,/1(76%/1:(*=V-,=(7
=(7\3(7=?,%*/nCD3/10>-,/1(7d-,/1:<(7=?/1%d@.%=V%L:(7/1(*=Y(7+#&-,#&[/1# N =?(i(*/njGkr\3(L(7/n(7+0>54-,;5
FLS y
complex.c
funcs.sql
/o:-,@R4(7)/1-,4n@=d(*+h33%=V-,R4( N (q:(*/1(7=
-,(7#&@=(9CD3/10>-,/1(74((*/1:=?%4%Jn%+,-,4%1S
T:%"C3/10>-,5/1(*g4(7:<(7=?#&-,/1%/0>5#&9%@%=$(*02(Y(7+:-,@9(*/+,%W0>%4(*/1% m @.%=V%+,%d(7/1:<=V%4%
@=
(7+Z33%=?-,LJL+,%
%+,-,4%U@.%=V%(7+Z33%=?-,5ycJ90>#&i(=;%/1-,e%U(7+Z:<-,@i(*/q#&(7#&=V-,%1SV%UC3/1M
0>-,5/4(W(7/1:<=V%4%W:#&%I3/1%Y0>%4(7/1%g4(60>%=?%0>:(2=(74(*+,-,#&-,:%4%g@5=./13+,+0>5#&u3i(7/1:<=V%4%gJ
4(7`3(7+,`(+,%u=(7@=$(*(*/1:%0>-,/O-,/1:<(7=?/1% m (7/#&(7#&=V-,%y.4(7+:<-,@S%dC3/10>-,5/K4(
%+,-,4%d:<5#&%
+,%O=(7@=(2(7/1:<%0>-,5/B-,/1:<(7=?/1%]4(7+l:<-,@J4(*`c3(7+,`(q3/1%]0>%4(2/1%]4(0>%=?%0>:(*=(4(7+,-,#&-,:<%4%
@=/13+,+SjG3@/1;%q\3(9\3(7=(7#&u4(*)/1-,=Y3/:-,@.&02#&@+,(VPQR\3(i=(7@=(2(*/1:%/1#&(7=
0>5#&@+,(?P<S>~q%:3=?%+,#&(7/1:<(7X(7+,(*;-,#&g=(7@=(2(7/1:<%=l3/K0>5#&@+,(?P<9(*/O#&(*#&5=?-,%u0>5#&9+,%d-,M
;3-,(*/1:(U(*:<=302:<3=V%U(7/FLa
typedef struct Complex {
double
x;
double
y;
} Complex;
J[3/1%q0>%4(7/1%L4(L+,%qCD=?#&% m {XJ5yl0>#&&+,%9=?(*@=((7/1:<%0>-,5/n(7{:(*=V/1%94(L+,%902%4(7/1%1S*T:<%
C3/102-,/1(7W/15=?#&%+,#&(7/1:<(d/1q/]4-,CD0>-,+,(7g4(
(*0>=?- N -,=X(*@.(70>-,%+,#&(7/1:<(d+,%uC3/10>-,5/O4(U%+,-,M
4%1SVjG-,/(7# N %=;55X_c%J9`%=?-,5"@3/1:<5W%
=(70>5=41%=7a
%UCD3/10>-,/K4(%+,-,4%
@3(74((7=l(7/10>-,+,+,%#&(*/1:(5a
char *
complex_out(Complex *complex)
{
char *result;
if (complex == NULL)
return(NULL);
result = (char *) palloc(60);
8%=V%K4(7)/1-,=d(7+l:-,@.o0>5#&@.+,(VPQ5X^/1(70>(7-,:<%#&50>=(7%=
+,%4CD3/10>-,/1(7L4(7)/1-,4%@=u(7+
33%=V-,0>5#&@+,(*{G-,/Ji02#&@+,(7{3:1%/1:<(764(0>=(7%*=l(7+:<-,@a
CREATE FUNCTION complex_in(opaque)
RETURNS complex
AS PGROOT/tutorial/obj/complex.so
LANGUAGE c;
CREATE FUNCTION complex_out(opaque)
RETURNS opaque
AS PGROOT/tutorial/obj/complex.so
LANGUAGE c;
CREATE TYPE complex (
internallength = 16,
input = complex_in,
output = complex_out
);
Objetos Grandes
9:-,@.5q4-,0>3:-,45q_1%:<%&(7:(]@3/1:<B/:<45q N PQ(7:q!@(*\3(71 AS c FROM test_complex;
+-----------+
|c
|
+-----------+
|(5.2,6.05)
|
+-----------+
|(133.42,144.95) |
+-----------+
COMMUTATOR (conmutador)
x|4wz|4o KUZ) , x|4m}{ _|4c{n, },|4{ {
_,||4%|o
c,w1,{
|4 },|4{ {_,||xw1x|4|4, )|4oc%_,||4}|4{{ |4%|
oc,wz {|4 },|4{ {nx_1 |49y,1;j},{0w1 r#}, |49{S|4
|3|4wz{~
jjxM w1
_,|
|49wzc4|4oc,wz {| xv, {|~.|4c}, l},|{~{S|4
, ,
yo},{9,6wz},
|w1
},{~wzo{x %,x,c|4wz|#|4w1{S|xonwz
{|K|4j },|4{ { , |4,x,c|4wz|>o c,w1wz_6o mxy_Kcxc v,|{K|4j },|4{ {
6|4#o c,w1w1_moM,
4w1},0|{Sy_,c|w13_,|4{S3|,6 },|4{ {o c,w1,
|4|44cxc_,|#|4wz},0,|
{Sy,c|4wz6|{|o|>xMoc,wz {z4Ko||{~xSw1 o|4|4j c{S|>|j}|4{{
oc,wz {9|>w1 M|v,xwzy_{S|4E|4o|wzK}{~)x|4{#;|wzK|4
c,wz{9
|4x%|wz,%m_,|3|
|wz0x|4{7},{S_|4K|4M0x|4wz|4o KUZ) ,
,Ewz%|wz|4,|43) },|4{ {
c,w1{},{x4cc0x|411oc,wzwz|
w1Mx c|4wz|E ,6wzM|4xwz|4,|4K,;},{|r},|{~ {S|
o c,w1,{S|4x
oxx ;,;},_,wz%c|4y_x c6},|4|9|4j},{c|4{S)x|4{|4,K{S|4,{~
|mMwz{S,,|M[x|4,cwz,K[,)x,o ||4xwz|;}{ |4c
Kc4wz,n|4 cw1{3;x|4wz|4o KZU) , |4|4}{~c|4{>},|{~{r_,|mw1
||jM|4wzo|4E},{S ||{#,M|4n)x|4y,K,|4,
n|
},|4{ {)|4x|_,|
v, wzy{|7x|#_,|r },|4{ {S|
c,w1w1_ _|4|%|9r},{S|
o,_|9>x|4y,
)|4,oc,w1 cw1oc|w1| _|4{6|4{K|c6x|4wz|4o 6UUK
1wz4wz|3|4M
},{c|4{0|4,o
;wz{,c|4{;c)|wz|xc|w1|;
,{0|w1|4o KUZ)
, |;c|4,o |4 ,Kv,xw1y{S|4x},{S
|E3},{c|4{0|4,o 6x|E
o,|4wz 6UU
, o|9{S|41|4{d|
>>,m},|{S|4{|4lxw1||4w1||4lxwz|4c>
{K,K|4wz{~,Kx|4o K},{K||}|4{~{|n6wz){S|4
},y },|4{wz{|
xxw1|cxwz3|4wz{r|
x0wz|4{Ewz 7x c|4wz|>},{~>|4j c{S|r,|4
},|4{ {z_w1}, |%{Sy,c|4w1
_,|4{Sn[|{|
ox[,Gwz},c|6{S|4x,w1,|4
M_||>w1 ,|Kv,xw1y{S|4x},,|4||4,o{|4|4x|)},,wz6},{c|4{K|w1{
)ow1 y,|4 },|4{ {|4{~oK|4xK|4w1{)|
xUrwz{S|
o,
wzJ|4,K|4x|4y,G },|4{ {z,|4xxw1|4nn
wz,|4wz{~x|4o
o Z
1 {~c
Uo |x|4y,|
wzJw1{wz)|,x{
|4 },|4{ {
x|4o Kwz|4>|),|)x|46| w1c wz|4{>,nc|4xx.|),|)|4{{S{~o1Mwz
NEGATOR(negador)
3x|4wz|4o0M , j|4},{S_|4 c_{03; },|4{ {_,|E|||4y{|
}|4{~{_,|9|4xw19x|4,
|4,S;x w1{S 7|4oc_,|#,6 },|4{ { |4||y_ {
|
,n},|{~{#cc>{S|4wz{n{S|,wzE,|E1 _|4>y,16
_}{~)wzE>}, x|4E|4wz{~,>jj
;wz%_,|K[|4Ew1cn|4|4y {#| v, {
|~.|4c}, , ,, M,}{7,|3|4y{S|},{~E0c{
|>w1}#|Ewz
1|{|
K| KMUUK , _,}{>|)},|{~,{S|4E,{x_},,|4,|4[|{>_
c|4wz|6c{So4,0
cc|4y {S|40|w1{S|6x|4xnxy_,o{; lc|43y,1Gl
},{3wz6j6|4|4_,_|w1|3},{~E},|{~,{S|4,{|4{S|x
K},|{~{3|m|4yo G|4|mwz|4|4{3|4ccwz},c|m{Sy_,c|4wz[|4{S|
[j
_,|4{SMoc|4 },|4{ {#|4cxcc_ |4wzo|43y,_,|6o KZU) ,
x6|4 c{S|3|},|{~,{|4o|4xw13|{,6|4M0x|4wz|4o
M ,
v,{ _|4|4{M , |r|
coK_,,)},{~)},wzco n|
>ox,w1>|4x|
_,|
},|4{cw1|
|4l},{S|4x|rocMMK[1 x|4{xc},,or|cKj
xwz;},{S|
o|
c>x|4y,|)E_,|Kwz|4|E}|4x{z }, {S_,|KMK>},,||4cx|4{#x|4{w1 E
c
,0ox|4o,|4o
|>wz{~{S|4o wz{S,
o |4
v,{S||9 },|4{ {S||4y {S|47},,||4%x|4{,|4,,x|jcxc)c4w1 )|4l},
o6}{~E},{S|4|Eo c,w1,{S|4
RESTRICT (Restringir)
|w1|
, jx|r},{S_|4,j c{K,)1o |
|4xwzconx||4ow1_
|{S|4xw1{oo)},{#|4 },|4{ {1 w19_,|#|4xwz
|4,K c{|,|91,o 0,6 c{S|
|,K},|{~,{`|w1|4o , mxn|4w1|#wz|4|4Kx|4wz
},{# },|4{ {|
{_,|E{S|4wz {~%{S|47 ,|4 3,|43|w1{|r;|wzc {||4ow1_)|
{S|4xw1{o
%|7x,},|{_,|>1{o
%,|r7|4%,Ew1rxwz1o|4{m,Ex|4wz|4o
|Eo
M |4M|4 1 {~c,{ j o,|# ;c|Ex|4x|31 {
field OP constant
or
or
=
=
JOIN (unir)
%x|4wz|4om1 M_x|0},{S | c{~m,m1,o|K|xw1co x|4|
wz_3z
},{K|}|4{~{#1 w1K_,|K|4xwz|4E,c c{S|)|,%1,
,cc{S||K,
}|4{~{l)x|4w1|
) xc|4w1|;w1||4Ux|4wz}{~M },|4{ {|
K{
_,|%{S|4w1 {%_{S|0 ,|4 lm|m|4wz{~3|6,|4xw1c,{Ex|4|4ow1_K.|40,
}, |4{)_,|1{ooZ|%,6|,Z},{)|Mw16xwz1o|4{`o o|
x|4w1|
3M |41{c,{
table1.field1 OP table2.field2
},{0|4}|4{~{7o{{|4w1| n;
|w1|4o , l|wz,
},wzc {
c,[xxwzoc|4wz|;}|4{~nw1|4 |m|4,o{Eo,|%}, |x|4o|o#.|
},{S|3_,|3wzc|3|c|{7w1{x.
ocwz|4x,|4xw1|;o},wz,},{S
,{{`|4j}
{
o c|o{{,1,
U|4xwzc
{~)x|4|4ow1_>. },|4{SMxc|w1|Kx,y|4{{S|4cE_,|w1,x|4E,|) 0|wzc {S|4
|4xw1{`#x y,
|4},o|_
eqjoinsel for =
neqjoinsel for E
scalarltjoinsel for or =
scalargtjoinsel for or =
areajoinsel for 2D area-based comparisons
positionjoinsel for 2D position-based comparisons
contjoinsel for 2D containment-based comparisons
HASHES(desmenusamiento)
>|w1|4o0 jMx|4xw1E},{S|4x|4wz|4|ro|>xxwz|4c3_,|>|4xw1E_|;,{,;c|w1
;xK. c},{
,x;|K. {S|
|4xw1|
},|{~{~ jM)xc|w1|w1||
x|4w1,},{~9 },|4{ {S|
7{~7_,|9{S|4wz{K_{S|4{
)|4KE},{owz
9| },|4
{~{wz|4|3_,|3|wz{y_,%0y_,Mw1}%|E,w1
%x,}, o Gx,_o|w1|6|)xM.|43_,|6|4}|4{~{.},,|4|Kx|c|4wz|6{|
w1 {{7 KM_|4{S|4{S _},{3},{||E_ {|_,|4{S %|4{S|xxj_{S|
},,|4xw1 >|4n,|{S|4w1|r{S|4o},|4wz|4rx ,z [,o6 >
c},{{K)|4 E|4wz
c},ow1c|w1|6,c|_,|6|{S|,wz|4, },|4{{.|4|)|{> ,[1
x wzo|46,o[wz|4|x|4wz|4x},|
,o{
jMc},{ },|4{ {|
m,|x|
{S|4}{S||w1;y,c|4wz|_
)|M|4o y,Zyo|4K,,o|4wz|4c|4wz|,|4|4}|4{{3wz,_c|z {
{S|4}{S||w1o [},{ry_,,G},,{~6_wmw1_}, {S_,|6m1,
xx|{~mo c},,w1
x{S|0K{S|},{d|4x|4wzo|
)c|c{)| >_{S|9xwz|4|4{|o,|4w1)_,|
xy_,
on 0wzlv, {9|~z|c}, y_,|Kwz|4{_E|w1|c},|4Ey_,[w7Kw1
|4 },|4{ {|
y_,,|
w1|{~_Mox|{~KEwz|4{>|w1|c},>y,|4Ex
|4 3wz|4|c%cxc%,{~
x,xcx [,E},,wz3|4E4wz
_,|
|4xw16xy_o
|#_,|0|4 ,x;|. 7|w1{S|3oc}, #|Ew1|4{_ 9},{S,o{3{|,wz
31|{|w1|4Ex,|4Ec},|4c|w1oc,m.,|4Ec},|c|4w1|4[ w1{S
c,l}, {,|
,
1{oo{Sy_3|39},{S|9_,|0|4|4{y,{7{S|4x,w1{M|4_
{S|71|4{S|4wz|476,
Ex|4{~%oc}{~}, {x0.v,|4{Sx|4j },wzc {|4y|
,{7,ox|E1|4{S|4wz|E|. jwz x r},{S|
9_,|0|4 },|4{ {7|Ey_, .)|
xy_,|rx|4{~|4o w1{ oMM_,|{S|4c9|4x|0w1},M|0oxxw|4ol|4wzo|r
c{Sxc 9y,M|3w1|{~_ #o c%wz #},{~Ex
MKw1c4;c,|>,|4},|4|
E|Ec,0|4;o,|4,Mx0.M},,|4,|>1{
|4[o|4{r
o 0|44v,{3|z|c},xwzGw1},n,|6w1|4
,;|4xwz{S,
wz,{~m|mo,
},,|4||4{#,|6|Kwz3x[w1|{S|4x|4Ex|4y_,{Sc{So{#|4 },|4{ {9|)y_,
jM1jc|4 x_,x4wz|4x
{|4wzwz{SK },|4{ {},{E|y_,{{w1|9_,|E #wz
x,xx [y_,|0%|4{SSKwz{S|~.|4c}|43_,|6 0wz},|)w1 E|K},,wz,wzwz|
xKx|4y_,{S },{#r.` {S|c_,_,|o,c},K|4xw1{S||
|},,wz;,wzwz|4x7c|;o|{Uc%
|{x%{S|461|4{S|
w1|4m,|{d|4wz|4
},wz{ |4K|wz>}|4{S|%|4xw1Z|4, m},{~o c},{{6y_,`,w1 o|4x7x
y_,[,|K},,w1 wzw1|6|wz,_|4x|)c{Sox|4x ,[c 0o|4{SM,cc3o|4{S
},{S|4c|4wz|nJx|4{y, m}, {6x. },|{G|4m|{~Jy_,,;}, {
o_,|4{wz{S%},{S
|x>.#
#,wzc>|>|},{#9o,w1%},{Sj|4c|4wz|#|4|4{,x{oc|w1|# ,M
},{3y,|>},|{~{S|
#,|3 6}, {~0x|4{c},|c|4wz0}, {c|c
c},1
_|4{4y|4|9,|z|c},M|0,y{S|4y4;_,|
{S|4_,|{|Ew1wz;,K1,o},{
,
{#%x,c%ow1,,%1,o[},{~K
,{#|o w1,{9ow1,` ,w1 E
xw1o#x;},{S
|x4xl{S|4x},,|4xw1
,_},{~
|_y_{S|4y4,;|49x,cK
wz,
_r},{|lo w1 {owz`)w1c77{Swzwz},l)wz_,|9,w1c
wz|4{~ {c|4wz|rxo cKwzc46E{S,wzE|9_x%|4w1|{~r|9v,xwzy_{S|47w1_},
{~3
,{
_x ,|30xc
}{7|4owz {~
Qu es un rbol de query?
"
0o,,o
6o,,o
c|K3,|4{|4E|4E,%|4l},{S|4xcc,xc{>Kwz{~6|KEo
w1|4,>|4cE|4wz{~>|K%wz% 4.|4wz_, {9{S|4xw1M|)|4xw16|j},{S|
|, |4M_,|o|
x) },|4{o Mj lKv, j),cMj
},{97,7|4{S|4x,w10l|4|{~rx|4{,|z|
,wzr7ro,x>;
|E,0xw1{S,ooMK9
w1|>wz|4{
,3 wz{~3},{w1|E|6,{~ ,|6_,|4{
_o cn%o,x,m ) __nwz|4|4
w1|4{4#_,`oxwz|4c)|{S|y_rx,wzw1,|)r|4wz{~,4r,}{||w1|9c|4wz{~
|4xw1E},oK{|y_x},|{SK_,|4%wz|4|3c,o%,|3o|4{
M #1,
c|4w1 ,|44xwz|4cr|{S|4y KKv%n|4,9 {c9|4x},|4o4|4)r_,|},{|
o|
,0|4,o|E,
_xw14m,M|4o|4xw13|{ o,c|4w1
%
x|4o,|4o
CREATE TABLE myview
(la misma lista de atributos de mytab);
CREATE RULE "_RETmyview" AS ON SELECT TO myview DO INSTEAD
SELECT * FROM mytab;
v,{S_,|m|4xw1|4)|jowz4c|w1|;_,|;o|;wz|4{c|4wz|M|7oc r E
xw1Mwz|4|Ky,3|41|4owz>o w1|{~|
K||4 0|4>,|K%1{co cx{S|),
_wz%|4[|4,xxw1|4nm|Kow1y3|Kv, xw1y{S|40|0|4lowzc|4wz|K|4cxcn_,|%},{~K
w1_)|r|wz|c },{9w1{,ow1 {S|4|#_,|4{|4x
1|4{S|4
9|w1{S|,rw1
%,
_xw1 %cxc{S|4o |4xw16|4%cc}, {~wzw1|E},{7 {~
oy_,1o |
cyolMc|,|~.|4c},c1o},{m|4c},|4{1__,
6x|4K|4cx,,{Sv,|4{SM|4Ec|~.{rw1||4{r,c|z|c},_,|)
,{%wz E3},,w1
x
,wz 9},x;},xm_,|
w1||4{c,o >|~.|4c}, r1|4{S|
w1|49_,|wz|4|4{_,|n|4o{
|4x},,4
9x||#wz|4o|4xw1,9},{9|~.|4owz{7|z|c},|#cr, |4{9},{Swz
|4}, {S_,||wz| c_{S||4o|4xwz9w1|4|{xwz3|44|4y,xz|},{ o|4,{~4v,9j},yK
__,|0|
|wz{S|4c 9,)},|4_,|4)1,oc1_,|
|4_,|4_
|4c|4 {|09
{S||w1|4{S {S|4c |4xw1
1,oMo c
CREATE FUNCTION min(integer, integer) RETURNS integer AS
BEGIN
IF $1 < $2 THEN
RETURN $1;
END IF;
RETURN $2;
END;
LANGUAGE plpgsql;
datos de zapatos
clave primaria (primary key)
nmero de pares utilizables
color de cordn preferido
longitud mnima de cordn
longitud mxima del cordn
unidad de longitud
- unidades de longitud
- clave primaria (primary key)
- factor de transformacin a cm
{~},, n
4|},{S},|w1{E|,
w1|
|3x},{~c|{~0junit
shoe_data
|4M|4xw13,shoelace_data
al_bundy=>
al_bundy=>
al_bundy=>
al_bundy=>
al_bundy=>
al_bundy->
al_bundy=>
al_bundy->
al_bundy=>
al_bundy->
al_bundy=>
al_bundy->
al_bundy=>
al_bundy=>
al_bundy->
al_bundy=>
al_bundy->
al_bundy=>
al_bundy->
al_bundy=>
shoe_data VALUES
2, black, 70.0,
shoe_data VALUES
0, black, 30.0,
shoe_data VALUES
4, brown, 50.0,
shoe_data VALUES
3, brown, 40.0,
INSERT INTO
(sl1,
INSERT INTO
(sl2,
INSERT INTO
(sl3,
INSERT INTO
shoelace_data VALUES
5, black, 80.0, cm);
shoelace_data VALUES
6, black, 100.0, cm);
shoelace_data VALUES
0, black, 35.0 , inch);
shoelace_data VALUES
90.0, cm);
40.0, inch);
65.0, cm);
50.0, inch);
al_bundy->
(sl4, 8, black, 40.0 , inch);
al_bundy=> INSERT INTO shoelace_data VALUES
al_bundy->
(sl5, 4, brown, 1.0 , m);
al_bundy=> INSERT INTO shoelace_data VALUES
al_bundy->
(sl6, 0, brown, 0.9 , m);
al_bundy=> INSERT INTO shoelace_data VALUES
al_bundy->
(sl7, 7, brown, 60 , cm);
al_bundy=> INSERT INTO shoelace_data VALUES
al_bundy->
(sl8, 1, brown, 40 , inch);
al_bundy=>
al_bundy=> SELECT * FROM shoelace;
sl_name
|sl_avail|sl_color |sl_len|sl_unit |sl_len_cm
-------+-----+-------+----+-----+-----sl1
|
5|black
|
80|cm
|
80
sl2
|
6|black
|
100|cm
|
100
sl7
|
7|brown
|
60|cm
|
60
sl3
|
0|black
|
35|inch
|
88.9
sl4
|
8|black
|
40|inch
|
101.6
sl8
|
1|brown
|
40|inch
|
101.6
sl5
|
4|brown
|
1|m
|
100
sl6
|
0|brown
|
0.9|m
|
90
(8 rows)
xw1E|4#3, cx|4o
_,| },,|4|ro|4{|4;x,#_xw1x|>c6_,|3
w1{S rw1 c{S|4c >},{|4j}
{Kx|0|
r{S|4y#|rxwz j c K
x|4
| 1,|Ewz|4{},{|w1,6}, {|w1{,ow1 {m},{S jz6,{~ |Ewz{~,oo
SELECT shoelace.sl_name, shoelace.sl_avail,
shoelace.sl_color, shoelace.sl_len,
shoelace.sl_unit, shoelace.sl_len_cm
FROM shoelace shoelace;
|4xwz|x||xwz|4cc|{S|4ylxwz|4cn|{|y_6_x.nw1{_46|nw1_
|6{y_ coc},{S,|4;xn{|y_
|4
},{my_,;{S|4o ,
x|},{So|4xK|4w1{6|Uw1|{pg_rewrite
y_},{
1|4,oGxwz {~
|4o,|4wz{~03{|y_ x|o| o |{~ |Ewz{~shoelace
,
o
SELECT s.sl_name, s.sl_avail,
s.sl_color, s.sl_len, s.sl_unit,
float8mul(s.sl_len, u.un_fact) AS sl_len_cm
FROM shoelace *OLD*, shoelace *NEW*,
shoelace_data s, unit u
WHERE bpchareq(s.sl_unit, u.un_name);
c|4},|)%o,,oo[|%oo[|)3{S|y_>{~ |Kwz{~,
o
{S|4x,w1wz|>|
SELECT shoelace.sl_name, shoelace.sl_avail,
shoelace.sl_color, shoelace.sl_len,
shoelace.sl_unit, shoelace.sl_len_cm
FROM shoelace shoelace, shoelace *OLD*,
shoelace *NEW*, shoelace_data s,
unit u
WHERE bpchareq(s.sl_unit, u.un_name);
c|4m|l},x%${S|4|4c},>w1 7{||4m|l{|9w1{,oo_,|rx|9{S|4,|4{S|4
9|4wz{~,4|#9w19|{y
19,o>|#x||4xwzr},{ o|4x3|4K|4xw1|c c|4wz},{
}, {9ro{{S|4x},,|4w1|>|4j}{||4>|
Kwz6 z|w1_Mo{{S|4x},,|4w1|
shoelace
0
0oo |>#{S|y_~,{S|,wzK|40_,|4{m,`
SELECT s.sl_name, s.sl_avail,
s.sl_color, s.sl_len,
s.sl_unit,
float8mul(s.sl_len, u.un_fact) AS sl_len_cm
FROM shoelace shoelace, shoelace *OLD*,
shoelace *NEW*, shoelace_data s,
unit u
WHERE bpchareq(s.sl_unit, u.un_name);
v,{~{|4{|wznx|J,nxwz{,ooZj6{S|4,,x,{G,cG|4|4{
w1|
|{
SELECT s.sl_name, s.sl_avail,
s.sl_color, s.sl_len,
s.sl_unit, s.sl_len * u.un_fact AS sl_len_cm
FROM shoelace_data s, unit u
WHERE s.sl_unit = u.un_name;
,
|40,y,{S|%
},w1 x_cx|6_,|%xc }wz
,|%w1},nx;|%x{~_|41
o{S |47x'&> mc{{S|xK},4wz _,|>|4o|wzmo {,|4c{~{S |47)x m
c|4o,#},{3 9,|4{S w1|{~x
0x0,|4w1{,owz{|4|4xw10_|43|4 {~ |Ewz{,o
SELECT shoe_ready.shoename, shoe_ready.sh_avail,
shoe_ready.sl_name, shoe_ready.sl_avail,
shoe_ready.total_avail
FROM shoe_ready shoe_ready
WHERE int4ge(shoe_ready.total_avail, 2);
x)x|{~)K},{c|4{{S|4yK}
)},{)){S|4o
|4{ |>w1{,oo
shoe_ready
MKo cM{|,wz
SELECT rsh.shoename,
rsh.sh_avail,
rsl.sl_name,
rsl.sl_avail,
min(rsh.sh_avail, rsl.sl_avail) AS
total_avail
FROM shoe_ready shoe_ready, shoe_ready *OLD*,
shoe_ready *NEW*,
shoe rsh,
shoelace rsl
WHERE int4ge(min(rsh.sh_avail, rsl.sl_avail), 2)
AND (bpchareq(rsl.sl_color, rsh.slcolor)
AND float8ge(rsl.sl_len_cm, rsh.slminlen_cm)
AND float8le(rsl.sl_len_cm, rsh.slmaxlen_cm)
);
Zn|4w1|6},oc>K{S|4y_K},{
,|K_6
|c3|4n1|4xwz6_|46|
,M{~ |Ewz{~,
o M_,|3|4,}o%shoelace
c#o c},
%wz|4|4c
c{S|4,
c )wz{_|4;M,xw1{S,ooGKZ{S|,|;x|4M|4_,_|4wz|m|4GMx
,|4 xwz|4c
|>{S|4y_l
SELECT sh.shoename, sh.sh_avail,
s.sl_name, s.sl_avail,
min(sh.sh_avail, s.sl_avail) AS total_avail
FROM shoe_data sh, shoelace_data s, unit u, unit un
WHERE min(sh.sh_avail, s.sl_avail) >= 2
AND s.sl_color = sh.slcolor
AND s.sl_len * u.un_fact >= sh.slminlen * un.un_fact
AND s.sl_len * u.un_fact <= sh.slmaxlen * un.un_fact
AND sh.sl_unit = un.un_name
AND s.sl_unit = u.un_name;
},{S o|4x4M{S|4o,{_m,|4xxw1|c6|0{S|4yr{S|4|4xo{`M,Kj c
|
,)xwzK|4
,{|0wz{~,,
o _,|
|49|4_,_|4wz||4low1c|4wz|
;_,|
,|4x|
w1|
|
|E6w1|4|{_xw1
Nota: Actualmente no hay mecanismos de parar la recursin para las reglas de las vistas
en el sistema de reglas (slo para las otras reglas). Esto no es muy grave, ya que la
nica forma de meterlo en un bucle sin fin (bloqueando al cliente hasta que lea el limite
de memoria) es crear tablas y luego crearles reglas a mano con CREATE RULE de forma
que una lea a la otra y la otra a la una. Esto no puede ocurrir con el comando CREATE
VIEW, porque en la primera creacin de una vista la segunda an no existe, de modo
que la primera vista no puede seleccionar desde la segunda.
xM},{ow1oc|4w1|Ew1o l
w1#|>{~y_6
wz|4|4M|4wz{~},{3w1wz
%wz
xw1.|4wz_mowz|4,
{|3_,|3},,wz
wz{~,wz%%|E
|4wz{3|
0wz0{y%},{3
wz0wz
E|4l},{S|x |40|)o,,o
[oc},{~c 3w1{,w1 E%|Kc_ 3{~y 3}{~
0y,#
3o |o|
|_,|3c{ |4|Ewz{~,oo ;;,y_{70}|4|E|z|
,o
xc{S|4S,mc>. |4wz{|97,wzSv,{rE)v,
o n_,|
},{d|4o|4G|Mw1w1 ZKwz z|w1_}{
|47 },wzc {z,G|
{|>w1{,ooM, |>|4|3oc
UPDATE t1 SET a = t1.a, b = t2.b WHERE t1.a = t2.a;
w1{
{
|41,o c|4wz;wz{Sm|4wz|3| v,xwzy_{S|49|3w1
mx
{S|4|
o{w1|4;|wz|3c c|4w1 m|}{|46},{7%_,| M 6 |4c,
{~},,,K},w1|4,|4_){S|4x,w1w1|0x|0x|4{~wz)|4)wz
wz{9{S|4wz{~{~|3|
ow1|n)
_|
|{`K|
Kw1,},)|
K,Ko,M
wz}wzKr|4wz{~,roc6
cl x|Kj.%|4owz {r,|)onowz,|4|4wz,
{9|Kwz{
o cow1,
1
wz)|m|4xw1|6c ;,Mw1|4{ {Ex|%o,w1;wz{~3|4occw|6;wz{~xoo c|
c}, {o,, },,|4|>{|4c|w1|3|c{~
9|4|4,o9|0c},|4c|4wz{9_wz9o |_xxw1|4nK|3{S|4y#|4xw1|4_,|
|4},
w1c0w1||;wz,M;1 {~co Gx {|%mwz
wz|4|4_,|m|{E{S|4_x4xc
r{S|4o |4r|w1{S|
|4xw1>wzxlc>>o,,
|4r{S|4xwz{~owzrK},{~wz{|
6|
,
|K3xwzx_c00o,,
|43|6%|{~n{y__w1 n|4[,[,o
{|rwz{,o
[|4xwzE|w1c46>wz,o;o,>_,|4{K{yj|4>
z |4w1{S|0_xw1 {~|_ },w1c {|4|0|4o{7o_|9c|~.{{S,wz)}{~
|z|
,
w1{_,|4{ ,w1c9 {cow1|4y
|4 },w1c{zlc|~.{|{~
|
x
K1 {~n6|4n,|)x|)c},|c|4wz%|4xxw1|c6|{|y_E|4nv, wzy_{S|>|y_,{)_,|Kw1 )
1{coMx {|>
_,|4{m|4xwz0,w1|_
cw1
|4>|0)xw1l>|
K9,w1 {|
|y_{{),|
,|)|4xwzrcwzo|4>,|4
x},{d|o;|4;|4 1,w1,{S
"
n_,|Kxy|`>{S|4yr|)}w1|c,|4xwz{~{S|4y_>_,|K|4xwzn|4,EK M
4)v %),9
K},,4wz|0w1 c
9{S|4y},o}, {|xxw1|c),|3{S|4y_#o,6
{|oM{S|4x,w1
n|4wz},n|6o cn,|6,{ |%wz{,ox y_,|
, z|w1cc|
w1|
c|w1[|4U|
c > )9jv,{{S|4y)|;,},wz|4,|4xxwz|4c
|K{S|4y>o{S|4%,%xwzm|K{|3,|6w1{,oo
c|4wz|6%xw1m|){~ |4E|
w1{,ox c|4xw1)_o
v,,|4|
|4{o|4{S;1},{Ko_|;6 M1,)Mc,w1},|
oo|4v,{)xc},,o{zj_|4{S|cr,{S|4y
,)ooxw1){S|4y
},,|4|0wz|4|4{
,0o,,
M%6m},,|4|>|{ M O%
o6,3|#,o,oo M|3,
{S|4y_9,9,
{S|4xw1{o
M_,|0x|3o|3
,mo
o|4|E,
{S|4y0x|3|_|{~4M{S|44{7mo,6xxwz0
,oo x mx|3},,|4|
{S|4.|4{{0},x|4,1{S|4o|9M 7j%K)_,|3xoc|4wz|Ex 3{|o;
oc6.|4wzm1},|4{S)
,
{~owz|4{xwz
#|4x},|
|4xx
)|K|4xwz|6cw1||4c 0o,w1{Sox3_,|6},{S ,
|c3xy_,|4wz|40{~ |4E|Kwz{,o
oM},{3,
{S|4y0|>,
o
jo,,ooM ;
*
jo,,ooM},|{Ko Mj
{|wz{,o
}{~))
o n|K{S|4y)KK_,|)x|)),;
,
*
;
#{||3w1{,oo; {y_|l
j|E0o,,ooMm6x|3 ;
{|0w1{,ox |0
oo |0
{S|4y
_,|
|0,%o,
*
oo ,|E0{S|4y0m3
,oo ,|E#{|4|>w1{,ooM {~y|4
j|E0o,,ooMmx|3 Mj
{~ |Ewz{~,
o ;|E0
o ;|E0{S|4y330_,|3x|EM)0o
*
;|30{S|4y0%0o,,
o M|E #{ |4#,|Ew1{,ooM {~y|l
l{ |9wz{~,oo % {~yll_,|r|9|9E)>o,,
o %|#>{S|4y
*
|4y
_c|4w1|x3{|y_E%|4 Mj )4|{~ |Ewz{~,
o ;{y xoc{x|
|79#xw1dv,,|4xwz
_,|x0{S|y_ M o,,
,4||4{~ |
w1{,ox {y__wz|4{cc 0o ,[clcwz w1,|K,3{|4E|)w1{,oo
},{3,
{S|4y3o ,0
o
9{|r|0w1{,ooy_||4{ 9},{w1{,|0roo|49|09{S|4y9x|
o o
|4m|xwz|4c0|r{S|4|4xo{~wz,{~>|r,|4_6},,|4|9x|4{_,|E w1{{S|4y},o{S|4xwz|4
|4[c3nc|4
{ |40|Kw1{,oo4)|6|4xwz|6c 0{_ |43|Kwz{~,
o [|
7oo|47|97{S|4y7||4{~4%w1|4|{|4% wz{)wz},)|#
c 4|46wz{3{S|4o
{S|4x,w1`)| w1{S3c o|4xw1|}{ o|4x0{S|4o,{_3w1|4{c{#|)K,o|_M0,6cw1|
|6{S|4o,{~x |4
o c},0owz,c|4wz|6|% )mw1|{~o |44wz{~3 )mwz|4{o|40,
xy_,|3|m{S|4y#,|3,},wz|E},{
},o{ l|4 xxw1|4c|3{S|y_x,c{~
,|
x|3
},{S,oK,M,
|>|4w1{S|>co|4,o |49|>{|y_%{wz00w1{xoo
{|,|w1{,oo)|
w1{ |4),o
|4|4owz y_3|xwz|4c
xMx%},w1lx)0_|4
_,|3|4 },,|4|4Mo|4{{S|41|
{S|4o0
|4w1{#,pg_rewrite
|3w1
|6{y_},{%M K)y_,3x,wzw1,o|0{[xn|4o0w1|0|6x|{
,w144v,{%o,_,|4{9{S|41|4{d|
6%M_%xw1m .|4w1_|6%_,|4{n {y_x|
{S|4 x_,x,m,)|w1{0o {~{S|}, |4w1|_xx|0|4o,|4wz{|4x|4w1{|3|4l
},{S|x [|)wz,c|4cK{S|41|4{S|
)|K w1{Sc M x|Kcwz|4|Ky,_,|KK
,_,|{{S|4.|4{S|
)6, |
{S|4|4c}
}, {#){S|41|4{|4oK)K|w1{|
Kwz
|E{y%_,|3|
{S|4x{S|4x,w1
Una primera regla paso a paso.
shoelace_data
shoelace changed
new available value
who did it
when
% xwz{ c{~c#|4;
w1_0|E y7
al_bundy=> SELECT * FROM shoelace_log;
sl_name
|sl_avail|log_who|log_when
-------+-----+-----+--------------------sl7
|
6|Al
|Tue Oct 20 16:14:45 1998 MET DST
(1 row)
%,
o
INSERT INTO shoelace_log SELECT
*NEW*.sl_name, *NEW*.sl_avail,
getpgusername(), datetime(now::text)
FROM shoelace_data *NEW*, shoelace_data *OLD*,
shoelace_log shoelace_log;
M
|w1{|
c 7r9|#rxwz>|xxw1|cE},y{S,|4dx},|4oc|4w1|#c},,r
xwzo K,|_,|_,4x
x|y#{S|41|{S|
#9;KJ|4) Mj o
,x
|4_ {cw1M| ,,%| Mj oK||4o M1|4{S|
K|4wz{|
, Mj
,K;, ; Zxj |_|{~ |0w1{,ox n_ 9wz|4|4
w1_|9{~y_ xwz.|4wz 4}||46w1|4|{
,oo |4wzj},wzc,{|
,|
c>w1{S|Kxo{S|4{,c}n||~z|oo n|w1{S|4x,w1 j_{~{Mx|4o,|4o {{
|Eo|4xz 6o,_,|4{7wz{Sm},{0|4x|3{ |3wz{,o
xj%m{S|41|
{S|4o#|
|4wz{~,4>|Kwz)|{yM},{S|4_r_{~ |
w1{,ooj4xwz|)x|)o |{~wz|)|n,
},|;|z|
,o 1_|4{x Mj ,,oo G|m){S|4y4)wz|4{ {
},,|4|ro|4{~wzc|4wz|3{S|4x,w1{|Mc{~wz|4
n{S|4y|4m,c{S|4yn Mj o,,
|c _,|n|4xwz|4cc|{S|4y
|4|4{`r| _|4{,{_ |4|w1{,ood9
o )|r{|y_c,o9|{~
|3wz{~,oo {~y`|_},{c|4{},xl)w1
|0{y;|0),|4{~m{y|4xwz
o{}, {~,3{,|Ew1{,oo;,|>0oo ,|>{S|4y4xxw1K0oc6{S|4x,w1,
INSERT INTO shoelace_log SELECT
*NEW*.sl_name, *NEW*.sl_avai,
getpgusername(), datetime(now::text)
FROM shoelace_data shoelace_data,
shoelace_data *NEW*,
shoelace_data *OLD*,
shoelace_log shoelace_log;
%|j},x)
,w1{S
x|>x,xw1wz,_|;7{S|41|4{S|
oM }, {|4w1{|93xw1E.|4wz
_6|{~ |Ewz{~,
o M{y 6o #{S|4.|{S|4o0{~_|
{{S|4x},|w1|
|E0{S|
;{S|4x,w1
INSERT INTO shoelace_log SELECT
shoelace_data.sl_name,
6,
getpgusername(), datetime(now::text)
FROM shoelace_data shoelace_data, shoelace_data *NEW*,
shoelace_data *OLD*, shoelace_log shoelace_log
WHERE int4ne(6, *OLD*.sl_avail)
AND bpchareq(shoelace_data.sl_name, sl7);
},x%3{||4c},
{S|41|4{d|
#K },{{S|41|4{S|
o#|3{S|4o;{S|,wz
INSERT INTO shoelace_log SELECT
shoelace_data.sl_name, 6,
getpgusername(), datetime(now::text)
FROM shoelace_data shoelace_data, shoelace_data *NEW*,
shoelace_data *OLD*, shoelace_log shoelace_log
WHERE int4ne(6, shoelace_data.sl_avail)
AND bpchareq(shoelace_data.sl_name, sl7);
[|4xw1)|4~)|rc)_,|r3clc3{S|,oo;|93x>|4lxwz|4c3,|r{S|4y7|
xw10|3,{|4|>w1{,ooM_,|3x %cc%_,|3xw1{S,o
_|4
INSERT INTO shoelace_log SELECT
shoelace_data.sl_name, 6,
getpgusername(), now
FROM shoelace_data
WHERE 6 != shoelace_data.sl_avail
AND shoelace_data.sl_name = sl7;
UPDATE shoelace_data SET sl_avail = 6
WHERE sl_name = sl7;
xw10o|~.|4o,w1,
|4|4xwz|m {S|4[|4xn|4
|4j
wz4n|4w1|mc_,|%;{S|4yM,|4,|_4
xxwzw1,o |4)co,,oo|
,
x|4y,{[_,|;xM,|4{~[ {y_1,|4x|
,
UPDATE shoelace_data SET sl_color = green
WHERE sl_name = sl7;
nx|%{~%|4xo{~wzny,m|w1{m|4[;wzm|6y_;_,|%|4xwzm|m|4{~ ,|
w1{,ox {~ymowz|4|0,
|4wz{0|3
xwz) .|4w1_m},{~0x,|3c
n_,|mM x_x|4{M{S||c},m}, {3x|o|4w1 {S|4x,wzn|4
_,|4{m,
INSERT INTO shoelace_log SELECT
shoelace_data.sl_name,
shoelace_data.sl_avail,
getpgusername(), now
FROM shoelace_data
WHERE shoelace_data.sl_avail !=
shoelace_data.sl_avail
AND shoelace_data.sl_name = sl7;
o
o,,
M,o)x|4{
o|4{w1x)
_|4
_,|0m;,|{S|o#
|_|3{~
|wz{~,oo K|w1{S|, Mj [dj
, Mj [ )j
w1{z{~9wzc
4
_,|4{; {~y__co
c,wz},|4ro cl)|0c ;_,|0 _,|4x|
},|4K|4 o c
UPDATE shoelace_data SET sl_avail = 0
WHERE sl_color = black;
x|4{~owz,o,wz{,1xx'$[xv|{Snx'$;w1|4|mx_ )
w1|,o,,ooG| %{|)|wz{~,,
x Z {~y|46|4K1|4{S|
w1|oc
{S|4x,w1%wz|4|4c 9|{~ |Ewz{~,
o Mo
INSERT INTO shoelace_log SELECT
shoelace_data.sl_name, 0,
getpgusername(), now
FROM shoelace_data
WHERE 0 != shoelace_data.sl_avail
AND shoelace_data.sl_color = black;
{;w1|4wz;o|4{>o,,|4{~m,|m|wz0},|{~o |4
|;{S|4oxwz
|47xxw1|c|M{S|y_
},o{~MK{S|4yl)_|4,|MK{S|4yw1|4|;ooshoe
|4K
x Mj )l0xw1{S|4x,w1wz|E|3{~ |4|Ewz{~,oo |wz{0_o%
_,|4{m
|4_ |{~%_|4nm,|mccm},{%x|4{>},wzcn|~.|4o,w1,nw1{3
ow1,|4xxw1|c
|3{S|4y_
Nota: Este hecho debera irritar a las aplicaciones cliente, ya que no ocurre absoltamente nada en la base de datos, y por ello, el servidor no devuelve nada para la query. Ni
siquiera un PGRES_EMPTY_QUERY o similar ser utilizable en libpq. En psql, no ocurre
nada. Esto debera cambiar en el futuro.
{0|4y
,}_,|4wz|E|3o{S |4|3},4wz 900wz|4
| m|w1||3,
y_{
xw1m|K{~wzo, l n|43},{w1o,{c|4wz|K,|4no|oo,x_nn_,|4{S|
c6ow1,c,c|4wz|_xw1nx |4o|_Zx,y_{zo{S|4c K%w1_
},|4_,|x,3,|r4l}|E|{~wz{w1 |93xw1E|r{~wzo,x6 w1{>
;,
w1{S,o%|},|
` #oc >
c},|4wz #x
CREATE TABLE shoelace_arrive (
arr_name
char(10),
arr_quant
integer
);
CREATE TABLE shoelace_ok (
ok_name
char(10),
ok_quant
integer
);
CREATE RULE shoelace_ok_ins AS ON INSERT TO shoelace_ok
DO INSTEAD
UPDATE shoelace SET
sl_avail = sl_avail + NEW.ok_quant
WHERE sl_name = NEW.ok_name;
arr_name |arr_quant
-------+-----sl3
|
10
sl6
|
20
sl8
|
20
(3 rows)
6,|>|4|4low1c|w1|r%_,|33|4M0xwz0|E{~wzo,){S|4c ,0{},3c{
|4; 9wz owz,|4
al_bundy=> SELECT * FROM shoelace ORDER BY sl_name;
sl_name
|sl_avail|sl_color |sl_len|sl_unit |sl_len_cm
-------+-----+-------+----+-----+-----sl1
|
5|black
|
80|cm
|
80
sl2
|
6|black
|
100|cm
|
100
sl7
|
6|brown
|
60|cm
|
60
sl3
|
0|black
|
35|inch
|
88.9
sl4
|
8|black
|
40|inch
|
101.6
sl8
|
1|brown
|
40|inch
|
101.6
sl5
|
4|brown
|
1|m
|
100
sl6
|
0|brown
|
0.9|m
|
90
(8 rows)
w1{xc#o{S |4{S|4o||4y
al_bundy=> INSERT INTO shoelace_ok SELECT * FROM shoelace_arrive;
%o c},{Sn#{|xwz
al_bundy=> SELECT * FROM shoelace ORDER BY sl_name;
sl_name
|sl_avail|sl_color |sl_len|sl_unit |sl_len_cm
-------+-----+-------+----+-----+-----sl1
|
5|black
|
80|cm
|
80
sl2
|
6|black
|
100|cm
|
100
sl7
|
6|brown
|
60|cm
|
60
sl4
|
8|black
|
40|inch
|
101.6
sl3
|
10|black
|
35|inch
|
88.9
sl8
|
21|brown
|
40|inch
|
101.6
sl5
|
4|brown
|
1|m
|
100
sl6
|
20|brown
|
0.9|m
|
90
(8 rows)
al_bundy=> SELECT * FROM shoelace_log;
sl_name
|sl_avail|log_who|log_when
-------+-----+-----+--------------------sl7
|
6|Al
|Tue Oct 20 19:14:45
sl3
|
10|Al
|Tue Oct 20 19:25:16
sl6
|
20|Al
|Tue Oct 20 19:25:16
sl8
|
21|Al
|Tue Oct 20 19:25:16
(4 rows)
1998
1998
1998
1998
MET
MET
MET
MET
DST
DST
DST
DST
{0x|3},o3
},{c|4{0{S|4y x |4o|4 mx|3_,|4_|_
UPDATE shoelace SET
;
wz{~)|
Mj n{y_x{S|
o,wz_,|4{M{||4xo{`w1x|},
xwz|4cc|{S|4y6|,|4_c}
shoelace_ok
Z|cx|4y_,n{S|y_ x |4o|4,},
},{S,o|
UPDATE shoelace_data SET
sl_name = shoelace.sl_name,
sl_avail = int4pl(shoelace.sl_avail, shoelace_arrive.arr_quant),
sl_color = shoelace.sl_color,
sl_len = shoelace.sl_len,
sl_unit = shoelace.sl_unit
FROM shoelace_arrive shoelace_arrive, shoelace_ok shoelace_ok,
shoelace_ok *OLD*, shoelace_ok *NEW*,
shoelace shoelace, shoelace *OLD*,
shoelace *NEW*, shoelace_data showlace_data
WHERE bpchareq(shoelace.sl_name, showlace_arrive.arr_name)
AND bpchareq(shoelace_data.sl_name, shoelace.sl_name);
)|;,|[x|m},o,c{S|4y;|;,},,w1|%}, {3|4[_,|4_|;My_{{EM{S,|4
|4yc #9{S #|{S||4x
{wz{#,c|{
$dxwz#|x|},o##{S|4y yx|o|
_,|3},{S ,
|r|4 {|Ew1{,o
;|4lwz{~
INSERT INTO shoelace_log SELECT
s.sl_name,
int4pl(s.sl_avail, shoelace_arrive.arr_quant),
getpgusername(),
datetime(now::text)
FROM shoelace_arrive shoelace_arrive, shoelace_ok shoelace_ok,
shoelace_ok *OLD*, shoelace_ok *NEW*,
shoelace shoelace, shoelace *OLD*,
shoelace *NEW*, shoelace_data showlace_data,
shoelace *OLD*, shoelace *NEW*,
shoelace_data s, unit u,
shoelace_data *OLD*, shoelace_data *NEW*
shoelace_log shoelace_log
WHERE bpchareq(s.sl_name, showlace_arrive.arr_name)
c|4wz{~_,|3 cwz|4,6
|w1{3|jwz{~30
w1_3|E{y%|4|{~
x|4{
Merge Join
-> Seq Scan
-> Sort
->
-> Seq Scan
-> Sort
->
Seq Scan on s
{E_,|{|r{S|4_x{o{S |4|>)
%
;y,;},{|>},w1 l,j}, {~
{S|4{
co c},o_,|{~Uo_|4G|J|}, |4c 6},{S|4},{4{,nxwzn
|41|4ow1
CREATE VIEW shoelace_obsolete AS
SELECT * FROM shoelace WHERE NOT EXISTS
(SELECT shoename FROM shoe WHERE slcolor = sl_color);
o0x3|4
al_bundy=> SELECT * FROM shoelace_obsolete;
sl_name
|sl_avail|sl_color |sl_len|sl_unit |sl_len_cm
-------+-----+-------+----+-----+-----sl9
|
0|pink
|
35|inch
|
88.9
sl10
|
1000|magenta
|
40|inch
|
101.6
{S|E r)))
o{S |49cy_|w1|_|{~4c r_x{7 w1|#|3,|
}c 9
o|4{~K|9,|4_ },|4{S|4x|r|4wz{SK},{S |4cS3|w1{>{Sx3{{c lv{~>o|4{
,}, ocr,
},{)v, xw1y{S|4xM{{c>{S|
wz4c|w1|
nxny{zj
{S|4{S|4
c,
,|4_0_xw1
CREATE VIEW shoelace_candelete AS
SELECT * FROM shoelace_obsolete WHERE sl_avail = 0;
al_bundy=> SELECT * FROM shoelace;
sl_name
|sl_avail|sl_color |sl_len|sl_unit
-------+-----+-------+----+-----+-----sl1
|
5|black
|
80|cm
sl2
|
6|black
|
100|cm
sl7
|
6|brown
|
60|cm
sl4
|
8|black
|
40|inch
sl3
|
10|black
|
35|inch
sl8
|
21|brown
|
40|inch
sl10
|
1000|magenta
|
40|inch
sl5
|
4|brown
|
1|m
sl6
|
20|brown
|
0.9|m
(9 rows)
"
|sl_len_cm
|
|
|
|
|
|
|
|
|
80
100
60
101.6
88.9
101.6
101.6
100
90
Reglas y permisos
)|4cc{S|4|4xo{`w1,{c|m_,|{~|;},{)|4xwz|4c[|{S|4y_m|v,xwzy_{S|4x|
oo|4[; w1{wz_xw11|4{S|w1|4)|%
|;M_,|4{[ {~y`Kwzc
{S|4y4|3,},wz|44|wz%},,||Eo,{oo|4x6||x
{w1,{00wz
7{S|4y|r{S|4|4xo{`w1,{36w1|4|m,;},{S },|4w1{~)1|4{S|
o~},{S },|4wz4{6|r,
{S|4
1wz
m_wz|49,w1 cw1oc|w1|0|4},{S },|4w1{`;|39{S|y_|0{S|4|
x
{w1,{
|4,3},{%|44xxw1|4cm,|m{S|y_
|6v, xw1y{S|4
ocm|4oc}, {w1c|w1n,|4
xwz|4cm|%o w1{S |6
o|4x,|6|41|4ow143{S|4o |40,|mx|%,wz|4m
{S|4y4
c},{S ,{w1|>
{||4x
{`w1,{
w1{ },|4{c 9|},{S},|w1{K|
{S|4
l
wz{~
_,|0
{S|4y
|E
|4,xwzmo|3_,|0|4 ,x{~%m|4o|4xw1|
x6},|4{c 9}{~E#wzjxwz
_,|34 o|E{S|41|4{|4o0|4Mx,#_,|{~|l
v,{|z|c},K%,x,{w1||r,Exw1>|r,c|{S7|9wz|441 |4m>_,|9y_, x
},{,r w1{S > n|w1|{~r},{K)x|4o{S|4w1{~|4K o },,|4,|o wz{S,{#
xy_,|4wz|_
CREATE TABLE phone_data (person text, phone text, private bool);
CREATE VIEW phone_number AS
SELECT person, phone FROM phone_data WHERE NOT private;
GRANT SELECT ON phone_number TO secretary;
M|%|4lo|4},wzc4|x,},|4{S,x,{~[|mMx|;|mwzx},,|4|4oo|4|
{
MMw1
}, |4wz_v,|4{S|4nc M cx|4o{S|4w1{n},,|4|j nwz{~%|
_wzm}, |4,c{S|_4,xwz|4cm|6{S|y_3{S|4|4xo{`{~mmj |6}, |4,c{S|
|4U,j J|}, |4,w1,|o,,
U|,| Gx|,xoU
|4wz{~,4ro,;`},{~_7x|41xK_|4
_,|
|4,,{~;x|4|4},{S },|4w1{~%|0},
|4,c{S|46|4owz{K
o||)%}, |4w1)x|Koc}{,|_6
wz{~%x,3},|4{cxx
_,|4{[x|Mox|{~M,wz{Moc},{S oG},{Moo|4|
{0M},|,c|4{0x|
{S|40|4wzo|4x|3c %,|3|Ec_,|3
x|4o{S|4wz4{0},,|4,0,w1{~
%},|4{cx mx
c},{S 6{S|4yn{S|4y)|c,_,|n|o{|w1{~n|% {
,o_,|M},,|4,|;_|4{3 K,c|4{S)|;w1|41[},,o llv|{Scx|4o{S|4w1{},,|4,|
o{|
{ w1{3_xw106,wz{{|4oo|4x)0|4E},,ow1
|4
,,|4{~E},,|4|r_|4{
>w1 >|)}|4,c_{S|Kwz{r|6_wz6|
K|
{S|4wz{~
M_,|)K|
{S|w1{~
m},,|4|Eo|4{|9o{S|44{,)_xw1
|
oo|4),{|
wzc|4w1|0}, |4w101{S|4c|4w1|
x},,|4|4},|4{SMwz{~z{},,|4xw1_,|KoKo
|M {w1{6%wz{xo
c,{w1|
noc},{S oJ|%},|4{cxx w1Z},{S w1Uo c|4,,{wz|4ycwz
c|
_,|K%x|4o{S|4wz4{%%|4{w1_xw16%},|,c{S|4|4},,|| /
.Exo
|
c|w1c|4w1|>|4x},,4xo,_,|4{7oo|4x60
_xw13|E|o{|w1{`#1{
nc,oEEox>_,|)|)o|4n,wzw1{yy_|4{>_,|K}||4n
|{~x|w1c4
w1;|4xxw1|c6|>{S|4y4E|
v,xw1y{S|4M_,|ow1,c|w1|
x|},,|4|
c
,
},|4c|w1{#%wz{~3,|){S|4yE [y,3w1}, 3|K{S|4xw1{oo|31oxwz{~w1xE},
x_|0xwz,{,{S|4y_
o,,o0|
{S|4|
xo{~,_,|4{;MK M x|4_{7|
;
,c[},{S|o|m|4G w1{Mw1},|{c|w1 o|4) K,w1 xG|4c )x|4
oxc|4wz|4%|4x6%|4,0,|40|j|3|
|wz;o c},{So |4#}{~E_{S|4
_xo|K|ox0,|9},4{S|4o|4{,6_ {_,
{,6c|x.|#||{~{S {1o|3|4|4{
o|4{|r}, { {0o,wz{y_y|4{~
v,{# w1{S ,cwz{~yy_|{#_,|Kx|)x},{S|
6},{~wz{#|), Mj |n,%_wz6},,||
o|4{)cxc6|r,3{S|4y4xw1,{ wz7|mo,_,|4{ w1{S)xw1)K,},{c{3
x|4{S
;|4;,3xwzv,|4{S)%},,|4|>o|4{%cxc%|;,0Kv, 6,3K,
}, {,|K,w1 E{|4|3|c6{S|4o n_wz6,|K},,|4|{#
c},{S _x }, {
|46|4w1{yy_|4{7,o
},{0|{7c m,0{S|4y0}, {0_,{`
v,{~60w1{w1c|4wz0_,|6},,{~[c},|4c|4wz{x|m,|6c01 {cx,|4},|4|{`m|4
,,|9>x|#|w1 7o,x|4rrc|~. {SKKwz{~yy_|{,x|rx},{~9},{~9o9,>1|4xwz
Kn{S|4yc},n|4#{~ |w1{,ooJGy|4|{~n,Uo ` )|c U_,|
x7x|c,},,Uc,o),K|4,xwz{S,
o {S|4y {S|4[,|{~
o l,x,c|4wz|>{~>,%c|~.{{S|4x,w1_,|>,mwz{y_y|4{_,|rx|>c>},{r
,0_, m|4|{~E|~.|4o,w1{x,# },|4{o|#c,o_|4o|4
v,{7|~.|4c},x%,w1
CREATE TABLE computer (
hostname
text
- indexed
manufacturer
text
- indexed
);
CREATE TABLE software (
software
text,
hostname
text
);
- indexed
- indexed
c
wzwz|4|4;c,o #c{S||r,%|4o|>x {|>xwzc|3|4,ox
o,c
xw1c|0o w1|4|3| c{S|3|E,cmo,,oKoc},|w1m|{S|
{M{S|4y_jw1{yy_|4{0||4{m|4x|4o|{E|4{{n|m,|mwz;x1w0+M{S|
_,|x|{S|4,|4{U,Z w> {{~,l,n|_,||4wz{~yy|4{)x|c},{o,
_,{{3,|3
c},,wz|4{zx|3},,|4|E,x{
xw1{S,oo
DELETE FROM software WHERE hostname = $1;
|4;,;},;}{|},4{)6m},x{|xw1,c|r|4;|4}{~c|4w1{S,E{S|4y3|4|
{~3x|4{7|4xo{~wz0oc
CREATE RULE computer_del AS ON DELETE TO computer
DO DELETE FROM software WHERE hostname = OLD.hostname;
)|c M_,|
M{~co)1|4{S|4o|
|on|4wz{S|0Kc},|c|4w1
n|
w1{yy_|4{%|30{S|4y M
y_,|4wz|0|4|4wz|4_,|4{S|4c 9c wz{{ {~{{ #)))3 {,|4
{S|ro,;xwzc|
|4c},|4o Mmr}x|4r|{~|r},{
o|4{|
K0|
DELETE FROM computer WHERE hostname >= old
AND hostname < ole
)|E|4},M|E|z|
,o },{~E0_,|4{m|E0{S|4y_3|{~
Hash Join
-> Seq Scan on software
-> Hash
-> Index Scan using comp_hostidx on computer
0 w1{0_,|4{%},x|3|4
DELETE FROM computer WHERE hostname ~ ^old;
oM,M},M|E|z|
,o
Nestloop
-> Index Scan using comp_hostidx on computer
-> Index Scan using soft_hostidx on software
xw1mc,|wz{K_,|0|4_}w1c{;
c},{S,|4)_,|0Ko,,oox{S|0xwzc|
|4Zoc},,wz|4{w1cJ||4{x|,wz},{,{{}{o||4Zx1w0+M{S|
|E%c,w1},|4#|4l},{S|x |49,|Eooo M
co M)_,|3|4o|
|4)9_|4{ K{|y_|j}K|9,|4{d4w1{yy_|4{x|4{9 o0,r_|4#},{~#o,#,9|
)|6,|4_c|4xw1n,|4|4{%{>occ{S|,wzco
,0},{m{{~{>|6o c},,w1|{
v,{|40|wz{y_y|4{x},{{~|,|4_0c,o_,|4{|4x{S||44|z|
,wz{~dv,|4{SE|44},|
{|y_x|4{
|3,|4_m,,
|36 {S|3{{~,|3o|j m,x
wz{S6o|3|4Moc},,wz|4{
Nestloop
-> Index Scan using comp_manufidx on computer
-> Index Scan using soft_hostidx on software
Koc6{S|4xwzK|30|{~%|E{S|4y
DELETE FROM software WHERE computer.manufacurer = bim
AND software.hostname = computer.hostname;
)| {S
w1,,c|4wz|4pg_am,
_c|4lpg_amop,
wz|%,Go cpg_amproc,
cxc},|%pg_operator
},{M
|{>|4xwzpg_opclass
)|4c wz{{S|4c
oc
c,o{7|4xw1 9owzy 9
wz{~_4|3,|~.|4c},m|z|
,wz|_x,
,|4_
ox|3|3 },|4
{~{},{~0|c4w1 6|3oo|4x61wz{S||3_,|3co|4|>%{S||E,c|4{S #o c},|~.#|4
{S|;x
||4wz|E|E_ {7 ,w1
mox|
w1||%,MxwzoM}{~mo6c4 n|%oo|4x|},{>|4
,,{~pg_am
x },{wz|;|%oo|4x;;c|4c {1|4}|wz;w1|4y{n|4v,xwzy_{S|},|4{S
w1 # #,|4cc4w1 #|>o
|6|4xw1;|4xo{~wz_,dx|4x_,|4c
|4
42568795 :;<>=?@8A
B8CEDFG5IH8DIC8JLKJ8H8M9NOD
Atributo
Descripcin
cc|
cP +M,|4{
cwz{w1|y_|4
c,},}{w
c{S|4{xw1{wz|4y
cy_|w1wz}|
c|{~w
c{S|3|4c4wz,m|Eoo|4x
,|4w1,o {|>.|4wzm|4},{S },|4wz{6|
|4xw1
xwzo
|4;},y,x|4{
,c|{6|E|wz{w1|4y},{0|4xwz|Ec4wz,
|3oo|4x61_4x|rc#_z
,c|4{S%|>{,wz#|Ex}, {w1|3},{~0|wz|
c4wz%|Eoo|4x61_4x|Ec#.
o|4{SK |4 o|3% {S|
|rx|4o,|4o
|
{S|c|4wzxm|4c|{S%|
|4xw1{wz|4y0|4 },|4{ {,|3|4xw1{wz|4y_E_,|
|4xo{~|>
|
,|
3|E {,|4c|4wz
o {|,|E},{So|4,c|4w16},{0
{S,w1#|Ewz|4{3o|4cw1 m|
oo|4xv, {|~.|4c}l_,j},{S|
|
|4wzo,{S|4{S|4y},{S#},{3{~{zo|4{{4{
m w1||4{xwzo#|,|E|4 c4wz,%|
oo|4x
+---+
|403 |
+---+
Operacin
ndice
c|4 {_,|
c|4 {_,|3%y,
y,
c{_,|36y_,
c{_,|
||4K_,|M|{~|4o|4x{y{S|4y{3},{S
|c|4wz6o{{S|4x},,|4w1|)K
c
},{4o |4Kc|4o){{~Mw1
_4|mc)x. lo y_[|
c4wz|o
|M},,|4,|),wz{9|4xw1 3cpg_amop
|{SE||4xw1{w1|y_ xcw1|4|{r|c
,|w1K|4
w1},[|;wzx},{M{S|4x_|4{3o cG},{wz
{0|47,wz{S|4|
oo{3x|4|4owz,|w1
o4w1|{~MMx|)}{|o,},|0,no|{6|
E|w1|r},{)y_{S|4y{}{ o|4c|4wz
oc},{S|4,>,|>|4|9|4lxw1{,mo z,,w1)|9},{So|c|4wz},{
%wz #|4cwz},|Ew1 # |E},,||E },|4{{,1wz{S|4|_ int2, int4, oid,
y,>_|4o|4xE|wz{~w1|4yr},{S },{So n61 {~n
cx,o|w1|K},{~){S|4x
_|4{,> {cE|#,wz{,mo|_ y,cw1 ,|roo|4x
{S|4|{S|46 wz{~{,wz
|#x}, {w1|9},{>}|{,1,
{~Sv {|~.|4c}, |4lcw1 |9o
|01w1{S|4|||9x|4{,
},
|0on},{~{ ro_|49m|4w1|{~c{x,|4rc {_,|4jy_,_l;c|4 {_,|
3 w1{~)|>c|4{3y|4lc4w1 6|>oo|4x 1w1{S|4|r|4|r|{
},3|roo{
w1|{~x|4oo|, |4xl;w1c#|3{S|4ow1y,
,wz},|{~o |4mo{{S|4x}, |4
K{S|_,wz >|4,x,{M|4n>o ,wz>j6,x{,wzEcxwz{~wz_r,w1
}, {7 9c4wz |Eoo|4x w1|4{c|w1|_
v,{~)c|z{9_|4{x>{S,w1E|Kx }, {~wz|Koxxw1|w1|c|4w1|6|w1{S|w1 3 3cw1
|Koo|4x|Kv,xwzy_{S|4x
o,_|6,[wz{wzc
,wz|Kwz{~,wz
pg_am
amsupport
co|4
|,c|4{Sm|0{S,wzr|
}, {~wz|
,w14r}{,c4w1 ;|0oo|4xv,{
1wz{||x|wz|E,c|4{SK|4,h
gE0{S,w10|>w1 c0 #o_|46|4_,|4_|>1)4
|4},||4Kx3},{~c|{o_|E|4c|4 {_,|y_,4%c{7_,|3
x|4y,
Nota: En trminos estrictos, esta rutina puede devolver un nmero negativo (< 0), 0, o
un valor positivo distinto de cero (> 0).
%|4wz{
|4[},yx
m|,c|{S|6|wz{~w1|4yE|4,
},{m|4c4w1amstrategies
[|%oo|4xn|4o,|4xw1 j
},{S
|c|4wz
},{~;c|{3_,|c|{
_,|0;y_,|4wzo4w1|{~;},{d|4o|4|4
)|
c|{~
xc{z
|4#x
c|4wz|>|4,c|{S6|r{S,w1|Ex },{wz|Epg_am
_,|E{S|4,|4{S|r|c4wzK|>amsupport
o|4x~{S,wz
{S|4|4#|wzMxw1,|Mwz{S6
|c4x
|4wz{~
,
0x|4 c4wz6|Eoo|4x%x }, {~wz
%m,
|4{Syo>_,|> xj)o|4
{S|4x {~{K{S|4 amorderstrategy
||4j,c|4{S
|9{S,w1r|#|4xwz{~w1|4y#_,|#o {~{S|4x}, |}|4{~{amorderstrategy
| {,|4c|4wz`v, {|~.|4c},
r_,|9o{{S|4x},,|9,c|{0|#|4xw1{w1|y_r|#`c|{
w1{S|4|wz|4|
amorderstrategy
_,|4
0},{lc
ox|3|3wz|4{4#|#},y },oxlxxwz0ox|3w1|4|3
c;,o
x
o{r,[ c{S|6nwz},n}, {>|41|xw1no [, 94[},yc }
%ox|K|6 },|4{ {
1w1{S|
|w1|4|n,
.,w1Z|},{S
|c|4wzx|,Un
o |x
{w1 mc;{{~
y,>ox|4E|) },|4{ {S|4>1}
x|4xx
|4o|4x{n_,|mK94y{S|4y,|%,Mxwzoo Gxint2_ops,int4_ops,
U c{|%|%ox|%|my}oid_ops
|4{~{r1},{
|~.|4c},
||4xw1)xw1o%|E,Ko|
1
pg_opclass
oid
{~|43| complex_abs_ops
wz{~ox|4
INSERT INTO pg_opclass (opcname, opcdeftype)
SELECT complex_abs_ops, oid FROM pg_type WHERE typname = complex_abs;
SELECT oid, opcname, opcdeftype
FROM pg_opclass
WHERE opcname = complex_abs_ops;
+----+-----------+--------+
|oid
| opcname
| opcdeftype |
+----+-----------+--------+
|17314 | complex_abs_ops |
29058 |
+----+-----------+--------+
M w1||_,||4 }{~xxwzon|
x|4{1|4{S|
w1|_;Gx|},{S|4 o
},|K}, {9|4xw146wz|4{S|4c E|4xw1|)n|4{Spg_opclass
|4xxwz|4cm|4x},,4Ey,_,|6oc3|
o|4{6o | |w1},m_,`
)|6|4xw1mc|4{~m{%wz|4|4c ,[c4wz|6o
|c,mox|6|6 },|4{ { ,
|4o|4xw1c6,Z
.,w1|},|{~ {S|
|},{So|4c|w1},{|4,{
},|{~ {S|4
1,|m,o,wznwz|4|4|4xw1|%c,`v,{;Mox|%|% },|4{ {Eoc},|j},0|4
w1{S|
|4x # },|4{ {S|4_,|3|4o|4xw1cx
valor
valor
or-equal)
valor
valor
or-equal)
valor
},{~0c#|w1|l
complex.c complex.source
M6,}{7,|Eoxc},{wzw1|#_,|3x,o|4|{~{
v,{~c|{ 4 w1|x|E_,|Ex|E|wz;|4,|4,6 },|4{ {S|c|4 {_,|4c|4 {7_,|EKy_,
y_,lc_ {_,|0;y_mc_ {_,|0},{
xj r|4xw1 r },|4{ {|
9|4xw1
|4, >},{
x.ME c{S|4m9 int4
7 )oE,|4_ 3 },|4{ {S|
}, {)x,},,|4xw1 int4
|o c},{wz|c|4{nxw1wzv{~y{wz{
_,|v xw1y{S|4m,x
|4xw1 >,|4_E },|4{ {S|4>|4n_|4K|) Ew1|{~ {S|4x|>|4o|4x{_,|x|4c c{~,
xw1wz)_,|E|4 ~xw1|9|4,m}wzK
|)9},,|4,|rx {|
{dy_{},|{~{S|4|4mv, wz
y_{S|}|4{S%x;x |4}|4{{;
xm|,m,M},{09w1}, 9|3 9{y,c|4
w1 ~|4o{zlK9~wz|4|6|K},{>wzw11K},,||>|{),|4_c|4wz|_
v,xwzy_{S|43noc}{,|;|xw1no,|4,|%,,|},|{~,{zx,|
_,|%|4|)|{
o v{~;|4_wz{E|4xwz|m}{ |4cx|mwz{n_{S|x},{S|
},{M },|4
{~{S|
o|)|4xwzc3c4wz,E|)
o|4xMx|4y,{~c|w1|)|4no,Mw1|w1|
o|4{{S|4x {~{ l
w1{SM},,wzc}, {w1wz|)|>_,|)wz,>>1,
|4E|
}|4{{,|4_,|4_|4n_ {|
yo9, |49c4w1 r|
o
|xm
,|w1o|4xw1|
|4o
1v,{wz{S; j
1,
|4,|;x },{w1|m|,|4_|4o,_,|4{3o x_,|m|4c4w1 c|moo|4xn},{w1o,{
|4x},|4{
gK||4xwz|ox j,|4wz|4{S;
xy {,wzK,_|4|{So_m|4r)`{S,w1
|>x },{wz|4c|4o 3o,Kwz{~wz_c|4wz{wzKcx,},},{w|>3
x|
pg_am
Kwz{d|c|4xw16c|4wz|_v, { {y{S|4
CREATE FUNCTION complex_abs_eq(complex_abs, complex_abs)
RETURNS bool
AS PGROOT/tutorial/obj/complex.so
LANGUAGE c;
{K|)E },|4{ {S|E_,|>,wz{ cx|) w1{z > c{S|4>|
}|4{~{S|
|4|x|4{3,o )|4w1{S|%wz )},|{~{S|
_,|;w1 cG, },|4{
ov,{)|{ > c_{S|>| },|4{ {S|4rxwz>c>{~{_)nxo,},
int4
}|c#
|{7,3
x,w1x{S|
pg_operator
/*
* esta consulta utiliza el operador de expresin regular (~)
* para encontrar nombres de operadores de tres caracteres que terminen
* con el carcter &
*/
SELECT *
FROM pg_operator
WHERE oprname ~ ^..&$::text;
4yx|9|%o,|4wzE_,|9x|9|4,|4moo},|{~{S|4o{{S|4x},,|4w1|7rc|4 {1c|4 {
%y,y,c_ {zmc_ {6y_,`
0ox|4c #wz|4{c~0,wzc0ox0,|E|4o|4xw1co|4{|4ow1,4{0wz
xv{~0
|{7|wz4|4o|4xw1c 9 #xy,|4wz|49wz{wz l
pg_amop
pg_amproc
Atributo
Descripcin
c},
|4
|E
xw1o
|
},{31w1{S||
oid
)$|>{{~ pg_am
|
|33wzo
|
}{~
oid
, 6pg_opclass
_,|3wz,%|4
_complex_abs_ops
|40|
4_4|>{{~
17314
|E },|{~,{S|
#},{~E0ox|E|
}|4oid
{~{1}
x1_,|3 _wz|4{S|c
|4wz{S%|E,Mc,wz
c},o
c}, },{
w1 o|4>|4o|4xwzc 3
>|E ,
} |4{ {S|E_,|K
c E|)|{~,xo{S|
c00c{S|43|6wz
oid
},|4{ S{ |4E_,|%w1 c
{Sy,c|4wz
|6w1},
com4mx xo{|4c # 9,|4xwz{
plex
|17322 | =
|
+----+------+
|17323 | =
|
+----+------+
|
|17324 | =
+----+------+
|17325 |
|
+----+------+
1)|,|4_
y,7|#x,,c|{ ,|
x|4{6x|4y,{c|4wz|9,|{S|wz|4 },|4{
{|#|4 r_,||xw1c 9wz|4{S|4x 9xoid
r_,|
w1|4|
9&$4xwz)&$4o
_{S|
%,|K9 w1|{~|{~},{ |4c|w1|,wzw1 oid
xG|_|M,xwzw1,{%x.
}, {7|4xwz#{S|4~M{S|4c|4xwz%oM,
x|4wz|4o0j
{6|4xwzcExw1 3},{6ow1,4{
c,|4xw1{%,|4_K
|)|) },|4{ {~
3o 3c#c}{w1w1|E|;w1 0|4xwz0|4pg_amop
l},oo;|4_,|E },|{~,{S|4|wz; {,|4
r|4x|0c|4 {_,|
xw1)c{,|4|
y_{S|
y_c>#wzo>|4o|4
pg_amop
x{~l
INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy)
SELECT am.oid, opcl.oid, c.opoid, 1
FROM pg_am am, pg_opclass opcl, complex_abs_ops_tmp c
WHERE amname = btree AND
opcname = complex_abs_ops AND
c.oprname = <;
{0y
mcxc;
#wz{S9 },|4{ {S|
9x,wzw1,|4%|4_d|4
w1|4{So|4{`
|4
|E{{0;|4 |4M
,w1c
|4xM w1||3|_ {S|4`c|{7_,|4|4`c|4 {_,|0
y_,|4`y|f$`c{7_,|3%y, |4%`c{_,|4|4
},{lc},x|m{S|4ywz{{c`{S,w1n| }, {~wz|4
},{S|4_c|4wz||4xo{w1n|4Zc|4l
},oo ,|
_
|c|4xw1[{S,w1|[x },{w1|c|4xwzco|4| [
|
o,pg_am
_Ko||4oid
xwz%
c},,|4xwz%}, {r|
|c4wz|K
o|4xM|4
|
pg_amproc
ox|E|3 },|4{ {xv,{c|4{S |4o|4xw1n9{S|y_oid
xw1{{7
1,
|4Mv xw1y{S|491{S|
oid
o|{S|
_,|6},,xc
|4
y _,|%c},|4c|w1m|4xwzM{S,wz;,|4,{So_||4,o,
c},|4c|w1c ##{S,wz#| },|{~ {
CREATE FUNCTION complex_abs_cmp(complex, complex)
RETURNS int4
AS PGROOT/tutorial/obj/complex.so
LANGUAGE c;
SELECT oid, proname FROM pg_proc
WHERE proname = complex_abs_cmp;
+----+-----------+
|oid
| proname
|
+----+-----------+
|17328 | complex_abs_cmp |
+----+-----------+
1)|m,|
xc|{Sc|
x|4{M},{S |4c|4wz|%xw1wzc[|4|%x,xw1wz{[x.
oid
}, {7|4 _ 7
{ ,|
_|4 v,|c
y{|y_{
,|0xwzo
|E
xy_,|w1|3c|4{~
INSERT INTO pg_amproc (amid, amopclaid, amproc, amprocnum)
SELECT a.oid, b.oid, c.oid, 1
FROM pg_am a, pg_opclass b, pg_proc c
WHERE a.amname = btree AND
"
{%|4o|4xw1c0y_{S|
y_{>,m|4xwz{~wz|4y%|K},{%},|{~cwz{r,|m|,w1},|m
|4l4,4Mo|4c E|4xw1,w1 w1{Sw1},|4[},y },|{{S|4,wzc 3 3cc_
}|4{~{S|
INSERT INTO pg_amop (amopid, amopclaid, amopopr, amopstrategy)
SELECT am.oid, opcl.oid, c.opoid, 1
FROM pg_am am, pg_opclass opcl, complex_abs_ops_tmp c
WHERE amname = hash AND
opcname = complex_abs_ops AND
c.oprname = =;
v,{~,w1{%|4xw1|o||4,Go,x, M ,|4o|4xw1nc,o{mox|
,|30xy_,|4wz|0c|4{
pg_operator
UPDATE pg_operator
SET oprrest = eqsel::regproc, oprjoin = eqjoinsel
WHERE oprname = = AND
oprleft = oprright AND
oprleft = (SELECT oid FROM pg_type WHERE typname = complex_abs);
UPDATE pg_operator
SET oprrest = neqsel::regproc, oprjoin = neqjoinsel
WHERE oprname = AND
oprleft = oprright AND
oprleft = (SELECT oid FROM pg_type WHERE typname = complex_abs);
UPDATE pg_operator
SET oprrest = neqsel::regproc, oprjoin = neqjoinsel
WHERE oprname = AND
oprleft = oprright AND
oprleft = (SELECT oid FROM pg_type WHERE typname = complex_abs);
UPDATE pg_operator
SET oprrest = scalarltsel::regproc, oprjoin = scalarltjoinsel
WHERE oprname = < AND
oprleft = oprright AND
oprleft = (SELECT oid FROM pg_type WHERE typname = complex_abs);
UPDATE pg_operator
SET oprrest = scalarltsel::regproc, oprjoin = scalarltjoinsel
WHERE oprname = <= AND
oprleft = oprright AND
oprleft = (SELECT oid FROM pg_type WHERE typname = complex_abs);
UPDATE pg_operator
SET oprrest = scalargtsel::regproc, oprjoin = scalargtjoinsel
WHERE oprname = > AND
oprleft = oprright AND
oprleft = (SELECT oid FROM pg_type WHERE typname = complex_abs);
UPDATE pg_operator
SET oprrest = scalargtsel::regproc, oprjoin = scalargtjoinsel
WHERE oprname = >= AND
oprleft = oprright AND
Sun Feb
M|4w1||4x|4wzG,||4xw1|c|4xy_|M||4{{S{,},{|
o|x|4{
y__,||4|{~4c
},{S|y,wz{0 |4x{{ {S|41c{0w1c4M0M w103c#_z ~6_,|3xy|4{{
_,|46_,|y,|4U|_ wz{ xy{,6|M,n1, , y_oo
1wzc|%61,|4wz|4
{y|43
w13{{%c},,|40c},{Sx|%1_4|6|z,wz7n
, z||
_,|
},|4x {S|3|4xw1xU|3},{S|
|Ecm|4
cl}|4{S%mc|0y,wz{0cw1|4|{~%c|4
w1{_,|3%w1wz0y|4wz|3
c},|4wz|4wz|3x}, _|
K}, owz9|;#,|w1|4
M1o}|,wz{
|4U_||M{y;vo
n9G{S|4{S|
{Go ||z
w1,wz{|)},xwzy_{S|4! p6},{~Ko|4{1,o{ w1|w16cw1|4|{~y_|4{
},|4{S
xK,m|4xo{w1 {|>c_|4,|4c,%}, {Sq
| gxc},|4c|4wz|>))1,o{y_,mc
K|w1 j}|4{S6o{S|4K_,|3 {~3|4#,M}, o%c}, {~wz|E_,|3|c_||>{y_`
c},#1,|4w1|4||~.|4c},c|w1c|4w1|#,|4x.
|},y`x{S1xc},|4c|4wz|
|4lw1{~.|K|{So_wz{
_Z_|4,|
},{S|4_c|4wz|
c|4o,x,}, |)_,||4xw1K,
_|4 },{|4z6|E},y`x{S9|,|wz{S%ox |4M},y_x_`jx{Sj},yy_xwzx
$ 3
c_ 3_,|Ko|6% 0,o|4{S 3
1,|4{S cw1 0x {o
| ro,|4 x},{S w1 w1},
|
,o |4Ewz},|4oxw1y,|4{K||4x c|w1|K,|4x|4o,%{xw1{)|)_{|4
,wz>,c},{9,|)},{S|4wz|4x>},{6o w1|w1{96yo}|4{S,|K|4xw1
0|4{S|4%#o c,o[
M6,M
cc|4wz{m|4M}, _}{ j x_`
Notas
ULTRIX
c,)1o4|4xo{~{,,o|4{S 7.|4wz|#o{Sy>,co>z) n
`) nnw1||
y_,c|4oxcn},{mwz|4o0
c},{w1,xn},{>nw1w1 c}w1|m{|wz{
o|4E>w1|{~1x|#|4o{Sy_{,coSv,{ w1{E}{~wz|4
w1|{S|4c _,|r{S|.|4xo{~{
,o{Sy {com;}{w1_|jm;},,{|c#,{_|4{S4|{~# w1|4o9
c
},{w1x.MK nj6,oK{S|4xwz{~oo|4>_,||4|
},{ ,o{o,
|{M z|w1
o;0 },oM1]
);wz|4x|E_,|E|w1{w1E|4,c|4{S(
)K|4wz|4{` `xv,{7|~.|4c},
# simple ULTRIX example
% cc -G 0 -c foo.c
DEC OSF/1
v x,o|4{Sm 4.|4wz;)|3o_|4{w1{x||,wz|4ooc},{~wz,m|4
|4wz{|r|4)|>Mv,1(no;E}
M1~j K|4xw16,|3oc}
},|{SK|
{S|4|4cc},|K_,|3 9oc},{3o|4{wz%|4xw1%x
# simple HP-UX example
% cc +z +u -c foo.c
% ld -b -o foo.sl foo.o
,
)|
|>wz|4o
c},{wzx4},,|4|rw1||4{_,|E|4x},|
,o{wz|4ooc
},{w1o|41{c|c|4w1|rwz|4o|>xxw1|c4o c6 w1|4o|
%cw1|4cw1ox|4M0|4
|>{S||4|3
Creacin de Triggers
"
tg_newtuple
es un puntero a la nueva tupla en caso de UPDATE y NULL si es para un INSERT
o un DELETE. Esto es lo que debe devolverse al Ejecutor en el caso de un
UPDATE si no se desea reemplazar la tupla por otra o ignorar la operacin.
tg_trigger
es un puntero a la estructura Trigger definida en src/include/utils/rel.h:
typedef struct Trigger
{
Oid
tgoid;
char
*tgname;
Oid
tgfoid;
FmgrInfo
tgfunc;
int16
tgtype;
bool
tgenabled;
bool
tgisconstraint;
bool
tgdeferrable;
bool
tginitdeferred;
int16
tgnargs;
int16
tgattr[FUNC_MAX_ARGS];
char
**tgargs;
} Trigger;
tgname es el nombre del trigger, tgnargs es el nmero de argumentos en
tgargs,
tgargs es un array de punteros a los argumentos especificados en el CREATE
TRIGGER. Otros miembros son exclusivamente para uso interno.
)w1,})|{~wz
U_|6}{~M|47}{ },[j U||ow1 |4xwz,},
wz|4wz{S|xcxcn1xjz|w1nK{|y_K|o|,o}, {)x,},,|4xwzrx
{S|4x,{_#
v,|4{S6m_,|3{S|4o {S{|4xw16x{S|E_x|4M0 o,c|4w1
|Ejv
Los cambios hechos por la consulta Q son visibles por las consultas que
empiezan tras la consulta Q, no importa si son iniciados desde Q (durante
su ejecucin) o una vez ha acabado.
xw13|4,0wzc4)},{ wz{~yy|4{~x4n|4w1{x|x|4{~wz9,9w1,}#1w1yw1{yw1,},|4
n|40x|%m
o x,w1|[w1{yy_|{> c|4wz{~
_,|%|4xw1;wz,},m1{|o4
Ejemplos
elog (NOTICE, "trigf (lanzado %s): hay %d tuplas en ttest", when, i);
SPI_finish();
if (checknull)
{
i = SPI_getbinval(rettuple, tupdesc, 1, &isnull);
if (isnull)
rettuple = NULL;
}
return (rettuple);
}
{jo c
},6o{S|4wz|0w1|
w1wz|4xw16w11j
{S|w1|01,ow1 cw1{y1{S|4wz{r },_,|
}4wzw1 x y_,y_|
vac=> create
for each row
CREATE
vac=> create
for each row
CREATE
vac=> insert
NOTICE:trigf
INSERT 0 0
UPDATE 0
vac=> update
NOTICE:trigf
NOTICE:trigf
UPDATE 1
vac=> select
x
1
4
(2 rows)
vac=> delete
NOTICE:trigf
NOTICE:trigf
NOTICE:trigf
NOTICE:trigf
from ttest;
(fired before):
(fired after ):
(fired before):
(fired after ):
there
there
there
there
are
are
are
are
2 tuples in
1 tuples in
1 tuples in
0 tuples in
^^^^^^^^
remember what we said
ttest
ttest
ttest
ttest
about visibility.
DELETE 2
vac=> select * from ttest;
x
(0 rows)
Interface Functions
SPI_connect
Nombre
SPI_connect
Synopsis
int SPI_connect(void)
Inputs
M |
Outputs
w
|4wz,{~Mxwzw1,
v /.E 6;M
o|
wz|4
KM;
v
wo|
wz|4
Description
},|4#
|4owzw1mwz|0v,xw1y{S|4o_|49xn ,n
wz91,o
w1SPI_connect
%_
+M|4|4mw1|j|
,wz|#_,|4{|4` c|#,w1wzKv 1,ow1 7c)|#o|4%1{S
,1
|4owz|4},{S
|,{|
n%y|4wjv 6;M |{~{S {
o|4M1{ ;{|4
o|4owz|4},{S o|4,{S|r|_ y7{S|
wz%o SPI_connect
|E},{S o|4,{S|>1{S wz|4{o|
wz|4
| ow1,
+M|wz|
%}{ o|4,{S
| +M||wz
,x|jv ,{},{S|4w},{So|4,{S|
+M_ w|E|3wzmo w1,|0w1%,|3jv 1wz|4{w1|3on{S|4w1,{
#
|4
SPI_finish
%wz|3o w #},{~
wzo|_
Usage
nnfnGwzc9pp&1
Algorithm
SPI_connect
}|4{~1 {c#wz|31,+My7
SPI_finish
Nombre
SPI_finish
Synopsis
SPI_finish(void)
Inputs
M |
Outputs
w
v /.E j },{S},|{~6xo|4owz|4
v )
K
MM O
|41{S M,1o|
wz|4},{S o|4,{d|
Description
ox|40[|4jxwzy[o|4owzw1w1|%v,xwzy_{S|40o_|494 ,
w1SPI_finish
1,
wz 1wz|4{oc},|w1y; },|4{wzw1{ ,ywz|3jv cy|4{~
nc%y_|ww1|E|4{~{S {{|w1,{;v ) KMM O
9o|4
SPI_finish +Mwz
+Mw1 ,wyMo,{~{S|
w#_Uo|
wzj|4{S|m[,c|4w1},{S |4
w1xwc|#wzw_wzzh
y +M|E_%w1|3jv cy_|{
Usage
Algorithm
},|4{1{cw1|E ,+My7
SPI_finish
SPI_exec
Nombre
_SPI_exec
,|4{
Synopsis
SPI_exec(query, tcount)
Inputs
o{7
query
wz{~y6owzy;,|4{m},
w
tcount
Zc ,c|4{7w1,}|4#wz%{S|4wz,{
Outputs
w
v
v
v
v
v
v
v
v
Description
o{S|4wz|4; |j|
,wz}, 1},{x|4{ },|4{ },wz|4{3|4j|
,wz|4Mwz|
_SPI_exec
,|4{m1 {
w1,},|l
tcount
Usage
%x , U|o|4J{S o|
wz|4},{S
|,{S|
%|{wz|4w
)
|4l|4o,w1|4#w1|_,|4{M1{w1,}|4>{S|4w1,{|4nMw1|_,|4{Mxo
tcount
)xy
cK{S|4xw1{ow_wz|E,c|4{ w1,},|41
{ +oMwz|>_,|4{/
+M|r|4l|4o,w1|tcount
9{|4lc},|4
SPI_exec ("insert into table select * from table", 5);
Nota: You may pass many queries in one string or query string may be re-written by
RULEs. SPI_exec returns the result for the last query executed.
v
v
v
v
v
v
)
)Z,M|{~%#;K {
) KMM O},{So|4,{S|r#,tcount
o|ow1|49
6v, 6v,,j 6xw1
) 9 ,6j
M K 9;
Kv,K
.3MK wz_},|3 _,|4{m,_, +M1wz#x , w o
,{
Algorithm
},|4{ {cw1|31 P+M,y7
SPI_exec
SPI_prepare
Nombre
SPI_prepare
Synopsis
SPI_prepare(query, nargs, argtypes)
Inputs
query
6,|4{6xw1{y
nargs
M,c|4{},,w},{~c|w1|4{9;~{Sy_MK11, wz
argtypes
Outputs
_
v wz|4{wz%M|j|4o,wzM},;1},{~x|4{ }|4{ },wzc|4{
Description
o{S|4w1|4#n{|w1,{9|4l|4o,w1 },},{~x|4{ },|4{ },wzc|4{_,w
SPI_prepare
|4x w|4l|4o,wz|Ew1|3,|4{j, ;|Eo|4{S
o|
wz|4},{S
|,{S|_
Usage
{Sy_,c|{ _},{c|4wz|4{796{Sy_;K11,
wz 14M{SycK|
)0 ;w1|4{S|># w/0M_,|4{
l|4owz ,},{S|},4{S|4|j|4o,wz},#rxc|4wzc|4rc,o1xw1|4{7x;w1r1|4w1,{S|Ec
|E,x|41, wz|3xc|3_,|4{X
+M |3|4l|4o,wz|4c%w1c|l
|M},{S|4w1,{|4U
c|;,|J GUo,{{S|4w owzZ #w1|
SPI_prepare
},{So|4,{S|Exo|
1{S|4|4c|4c {~%
w1|4 {3},j|4|
SPI_finish
SPI_saveplan
_x,o
|x1,E1, },wz|4
{ +M |E{S|4wz{|4Kw1|~{ +Mx|4 y|4w_3M)}
[ w1
|0jv {S|
x,
w +M|6x|4w7|%w1|K,|6{S|w1,{|4cjv |j|
o_|4jo|4}w7w1w
wrx|4w,wz;v KU;c_,|4{MrMK,{{Sy ) {{Sy_ )%(
{Syw1},|4MK9
SPI_saveplan
Nombre
SPI_saveplan
j_|40},xx|4},
Synopsis
SPI_saveplan(plan)
Inputs
_
query
vx|4},
"
Outputs
_
j|
,wz;}MowzxM),,oo|4xx1`
v {S|x,w
v
)Z;},m9M)
) KMM O},{S o|4,{S|>,1
|4owz|4
v
Description
xw1 {S|4M[},},{S|},{S|
|nc|4c {J},{Swz|4ow1|4
1SPI_saveplan
{ 1{S|4|
y;
{7w1|Ewz{x
wzSPI_prepare
cy_|{~
SPI_finish
wz|m
,{{S|4w_|4{ U v,xwzy_{S|4)wz|4{S|m)wz[w1[xwz{S|M}{|},4{S|Z},)Gw1|
x_xw1|
w1 y%1|4w1o;wz|4 1{S wz|4{S|E1 {|4l|4o,w1 + |3c},|c|4wz|4
1,w1,{S|
|{~x l Ecwz|4{w1_|4jw1|{|0wz|Kwzw1{|,|},{S|4}{S|4},>wz|
ox|4_,|w_
wz 0 _ ,{r}{ o|4,{S|
cw1|Ko,{{S|4w|x 4Kx|
wz
SPI_execp
|4l|4o,w1|rw1#_|4},
Usage
x_|4>},x|M},%1},{|},4{S|M
;c|4c {~K},{S w1|4owz|4
1SPI_saveplan
{ 1{S||y[_
nwz|%w1{xow1SPI_prepare
cy_|{>G{S|4wz,{0;}, w1|4{
w1Gw1|x_|4},SPI_finish
cUx_|wz|n}wz|4{6{S|4wz,{~|c
#_{4|_ '+M_
o|4o)_w1}, w1|{MK; { w|4wz|4{+M|4m},{S|4},{~y)>},m {,xy6m{S|4
},{S|}{S|4},Mjv |j|4o};x|4|E_|P +M
Nota: If one of the objects (a relation, function, etc.) referenced by the prepared plan is
dropped during your session (by your backend or another process) then the results of
SPI_execp for this plan will be unpredictable.
SPI_execp
Nombre
SPI_execp
,j|4o,wz|4
},;1{S
SPI_saveplan
Synopsis
SPI_execp(plan,
values,
nulls,
tcount)
Inputs
_
plan
j|
,wz;}
)w1,
values
ow1,j},{~c4| wz|4{7|
o{7
nulls
{{~m,|4x
{yX+Mw},{c|4wz|{y_|4wM)
owz|4MK,P+M|
j owz|4#;K wP+M|4
w
tcount
Outputs
w
|4wz,{~#w1|3xc|>,|E
q+M|4
MK{
)
v )Z;SPI_exec
plan
v v
#M) tcount
+M#,
} {S|4},{S|4L+MwzM c|0},{4c|w1|{~
values
v w1,}w1|
w1|4
SPI_exec
x, o|4xx1,
v },{d o|4x|
w1|4
SPI_exec
x, o|4xx1,
plan
Description
wz {|0m},},{S|4},{S|4G
x1|6c|4c {c},{Swz|4ow1|1{
1SPI_execp
{|
|4y%
{wz|3wz{~xowzSPI_prepare
Mcy_|4{~
SPI_finish
wz|m
,{{S|4w_|4{ U v,xwzy_{S|4)wz|4{S|m)wz[w1[xwz{S|M}{|},4{S|Z},)Gw1|
x_xw1|
w1 y%1|4w1o;wz|4 1{S wz|4{S|E1 {|4l|4o,w1
+ |3c},|c|4wz|4
1,w1,{S|9|{~x l
+M {~6{{ ,4wz|4{S|9#wz|>_w16w1K{S|4,x|>},{S|4},{S|4};w1|
ox|4_,|w_
wz 0 _ ,{r}{ o|4,{S|
cw1|Ko,{{S|4w|x 4Kx|
wz
SPI_execp
|4l|4o,w1|rw1#_|4},
Usage
MK,w1|
nulls
SPI_execp
x,c|4w1w_,|41_{S|E;6M)9
Nota: If one of the objects (a relation, function, etc.) referenced by the prepared plan is
dropped during your session (by your backend or another process) then the results of
SPI_copytuple
Nombre
SPI_copytuple
U|4o},%wz,},|3M,},},|4{l|4owz {owz|4lw
Synopsis
SPI_copytuple(tuple)
Inputs
M|4}},|
tuple
},,wwz,},|Ewz%|3o },|4
Outputs
M|4}},|
},|4wz,},|
1M)
# wM)wz|3o},h+Mxoo|4xx1,
tuple
MK;
M)
tuple
Description
c_|9
o},M ,wz,},|0,},},|{l|4o,w1 {o w1|4lw~
j|4|3wz|0|
wz
SPI_copytuple
U
|4c{6Zy_|c|4w~
Usage
SPI_modifytuple
Nombre
SPI_modifytuple
U,|4wz}|3{S|4wz
Synopsis
SPI_modifytuple(rel, tuple , nattrs
, attnum , Values , Nulls)
Inputs
|w1
rel
M|4}},|
tuple
},,wwz,},|Ewz%|3c ,|4
w
nattrs
M,c|4{wzw1{,w1|E,c|{~Mw1wz,
w
attnum
Outputs
M|4}},|
M| + wz}|+Mw1c,owz
1M)
# wM)wz|3c 1X+Mx,
o|4xx1,
MK; tuple M)
tuple
v {S|x,w
v
)Z;{S|4M){7w1,},|>#;K {w1wzo)
{7w1wz, MK,{ ,|4
M ,Kw1|{|>#;_w1wz{~,wz|E,c|4{Mwzwz 1wzw1,)
{0,c
v
Description
SPI_modifytuple
U|4c{6Zy_|c|4w~
Usage
#x,o
|x1,,},wz|4{
w1w1|M|+w1,},|M6{S|w1,{|4||+wz,},|Kowz|4U
,},},|4{l|4o,w1 {7o w1|jw1x|4|>Z|c{mcy_|c|4w1v,xx|4wz,},|3w
y_|4#
SPI_fnumber
Nombre
SPI_fnumber
_,#wz|3w1wz{,w1|E,c|4{71{7x},|4o|wzw1{,w1|
Synopsis
SPI_fnumber(tupdesc, fname)
Inputs
,},|4)|
tupdesc
},,wwz,},|E|o{},wz
o{7
fname
_|4c|
Outputs
w
zw w1{,w1|E,c|{
|x|4|4),c|{ w1wz{~,wz|
v M ,Kw1|Ec|4wzw1{,w1|># w1,
Description
{S|w1,{#wz|3wzw1{,w1|E,c|{1{wz|3w1wz{_,wz| +Mwzc|>1c|
SPI_fnumber
Usage
zw w1{,w1|>,c|4{~{S|r0x|49
SPI_fname
Nombre
SPI_fname
#w1|3wzw1{,w1|>c|E1 {wz|3}|4o|w1wz{wz|
Synopsis
SPI_fname(tupdesc, fname)
Inputs
,},|4)|
tupdesc
},,wwz,},|E|o{},wz
o{7
fnumber
wzw1{,w1|E,c
|{
Outputs
o{7
wzw1{,w1|Ec|
MKM1,c|4{9 ,w
{y|
v {S|x,wx|4ww16v M ,K |{~{S {
Description
{S|4w1,{w1|3w1wz{~,wz|Ec|31 {7wz|3x},|4o,|4wzw1{,w1|_
SPI_fname
Usage
zw w1{,w1|>,c|4{~{S|r0x|49
Algorithm
| w1,{#0|+M_1 ow1|
},%w1|3w1wz{~,wz|Ec|
SPI_getvalue
Nombre
SPI_getvalue
Synopsis
SPI_getvalue(tuple, tupdesc, fnumber)
Inputs
M|4}},|
tuple
},,wwz,},|Ewz%|3|4lc|
,},|4)|
tupdesc
},,wwz,},|E|o{},wz
w
fnumber
wzw1{,w1|E,c|{
Outputs
o{7
wzw1{,w1|E_,|>{7MK
w1wz{~,wz|EMK,
,c|{7,w{y_|>jv {|
x,wx|4wwzmjv M )
% ,w1},,w1,owz_4|31jv {S|
x,wx|4wwz%jv MK6)_)
Description
{S|4wz,{~%|jwz|4{1xw1{y{S|4}{|x|4w1w1 % w1|9_,|# w1|9x},|4o,|4
SPI_getvalue
wzw1{,w1|_
Usage
zw w1{,w1|>,c|4{~{S|r0x|49
Algorithm
ow1|c|c{m#{S|4{S|mwz|3_,|_
SPI_getbinval
Nombre
SPI_getbinval
|4wz{w1|3{m_,|>wz|3}|4o|w1wz{~,wz|
Synopsis
SPI_getbinval(tuple, tupdesc, fnumber, isnull)
Inputs
M|4}},|
tuple
},,wwz,},|Ewz%|3|4lc|
,},|4)|
tupdesc
},,wwz,},|E|o{},wz
w
fnumber
wzw1{,w1|E,c|{
Outputs
)w1,
wzw1{,w1|E{~6_,|
isnull
y61{7,_,|3Mwzw1{,w1|
v {S|x,w
v M ,K
Description
SPI_getbinval
{S|4w1,{w1|3{~%|>w1|E},|o|w1wz{_,wz|_
Usage
zw w1{,w1|>,c|4{~{S|r0x|49
Algorithm
)|# w ow1|>|+ }
|>1{7w1|3{m_,|
SPI_gettype
Nombre
SPI_gettype
|w1,{#wz|3w1},|3c|Ew1|E},| ,|4w1wz{~,wz|
Synopsis
SPI_gettype(tupdesc, fnumber)
Inputs
,},|4)|
tupdesc
},,wwz,},|E|o{},wz
w
fnumber
wzw1{,w1|E,c|{
Outputs
o{7
|Ew1},|3c|31 {w1|3x},|4o,|4wzw1{,w1|E,c_|{
v {S|x,w
v M ,K
Description
{S|w1,{#0o },m w1|3wz_},|>c|31{wz|3}|4o|w1wz{~,wz|_
SPI_gettype
Usage
zw w1{,w1|>,c|4{~{S|r0x|49
Algorithm
)|# w ow1|>|+ }
|>1{7w1|3{m_,|
SPI_gettypeid
Nombre
SPI_gettypeid
Synopsis
SPI_gettypeid(tupdesc, fnumber)
Inputs
,},|4)|
tupdesc
},,wwz,},|E|o{},wz
w
fnumber
wzw1{,w1|E,c|{
Outputs
|Ew1},|3 1{7w1|3x},|
,|4w1wz{~,wz|E,c|4{
v {S|x,w
v M ,K
Description
SPI_gettypeid
{S|4w1,{w1|3wz},|3 {wz|3x},|4o,|4wzw1{,w1|
Usage
zw w1{,w1|>,c|4{~{S|r0x|49
Algorithm
"
SPI_getrelname
Nombre
SPI_getrelname
|4wz,{9w1|Ec|E wz|3x},|4o,|4{S|4wz
Synopsis
SPI_getrelname(rel)
Inputs
|w1
rel
},,w{S|4wz
Outputs
o{7
|Ec|3 wz|3x},|4o,|4{S|4wz
Description
SPI_getrelname
{S|4wz,{~wz|3c|3 wz|3x},|4o,|4{S|4w1
Usage
Algorithm
},|4w1|E{|w1 Mc|Ewzm|+ xw1 {y_|
SPI_palloc
Nombre
SPI_palloc
Synopsis
SPI_palloc(size)
Inputs
|
size
Outputs
_
M|+ xw1 {y_|3x},o|>x},|4o|x|
Description
w1|4%c|4c {~,},},|4{)j|
,wz{owz|4lwj|4|x|4ow1 c|c{
SPI_palloc
c
y|4c|4w~
Usage
SPI_repalloc
Nombre
SPI_repalloc
Synopsis
SPI_repalloc(pointer, size)
Inputs
_
pointer
v wz|4{wz%|jxw1y%xw1 {~y_|
|
size
Outputs
_
M|+ xw1 {y_|3x},o|>x},|4o|x| +Mw1ow1|4wz9o },|41{S |jxwzy;{S|
Description
{|14 ow1|6c|c{Z,},},|{l|4o,w1 {
wz|4jw~j|4|;|
wzZ Zc|4
SPI_repalloc
c
{mny|4c|4w~
Usage
SPI_pfree
Nombre
SPI_pfree
{S|4|4c|4n{;1{S ,},},|{7,j|4o,wz{owz|4lw
Synopsis
SPI_pfree(pointer)
Inputs
_
pointer
v wz|4{wz%|jxw1y%xw1 {~y_|
Outputs
M |
Description
1{S|4|4>c|c{nc,},},|{rl|4o,wz{#owz|4lwj|4|x|4ow1 [[c|4c {nc
y_SPI_pfree
|c|4w~
Usage
Memory Management
1wz|4{
6o|Zo,{~{S|w#o w1|jw#6wz|M}{ o|4,{S| K| 7owz
{rnjv ,w1wzc1,ow1
1|4lo|4},w {
c|KSPI_connect
_
palloc repalloc
SPI_copytuple
{S|Ec|EMwz#
o w1|jw~
SPI_modifytuple SPI_palloc
SPI_repalloc
|4[m},{S o|4,{S|)xo |4ow10{S w1|%jv cy|4{r_
wz|%
,{{S|4w
owz|4lw{S|4xw1 {S|4wz%wz|3,},},|4{l|4owz {7o w1|4lw SPI_finish
w1 #c|EMw1|3}{
o|4,{S|>c|c{mo w1|4lw{|>{S|
|4
w|3,x|4mc {S|_
r_
+w>w1U{S|4wz,{Jx c|4wzyZw1Uwz|,},},|4{),j|4o,wz{w1|_|w1U owz|
c|4c {~%1{w1#Mw1|3,},},|{7o w1|jw~
v %wzmwz%,wzcwzom1{S|4|r
wz #w1|3,},}|4{j|
,wz{owz|4lw
v ,wzcw1oJ1{S||Mc|4c{
wz|4,{~y|j|4o,wz3_,|4{
+M|4 wz
_,|4{m |_
v,xwzy_{S|43wz%oy_|0_xw1c{S,|_4,{y%_,|4{c|4l|4o,w1 _wz6oy|4
c|
w1|9_,|{~Kwz| 1_>jK11owzjv 1,owzw1{yy_|4{x {|#_x|rwz)w1|9_,|4{
x
_ {>|jc},|4 [_,|{~ Mj M, 6j r 6 %wz,},|4Ex|4{w1|{S|
_|61 {>j x
[|4z1|4ow1 w1
,}
w1|4Ewz|%w1x|6w1(
| +Mw1w1x|4
1,.|4owwz%,|0,|4){S,|4x o ,{~x|4|
+Mw1 ,w{S|4x,{xy7
y|4c|3%_,|4{; {S|E_x|0m_,|4{|4q
+M
{S|Exwz{w1|41wz|4{_,|4{;K
cwzw1|4
{ +M|w1|4{
wz|4G{S|mxwz{w1|4Z,|M 1,{~ywz||4l|4o,w1 #69 {01w1|{3
|_
Examples
>|4lc},|
jv ,xy|
|4c wz{w1|Ewz|xw1{S,|_|{|
{S|0c {S|)oc}|4
|4lc},|4MM{Sjjw1|w~{S|y_{S|4x{S|
y{| #Mowz{7jx},`
M,+0oc}|3o{S|4wz|Ew1|>,owz
create function execq (text, int4) returns int4 as ...path_to_so language c;
vac=> select execq(create table a (x int4), 0);
execq
--0
(1 row)
vac=> insert into a values (execq(insert into a values (0),0));
INSERT 167631 1
vac=> select execq(select * from a,0);
NOTICE:EXECQ:
NOTICE:EXECQ:
execq
--2
(1 row)
vac=> select execq(insert into a select x + 2 from a,1);
execq
--1
(1 row)
vac=> select execq(select * from a, 10);
NOTICE:EXECQ: 0
NOTICE:EXECQ:
NOTICE:EXECQ:
execq
--3
(1 row)
a;
(4 rows)
^^^^^^^^
tuples visible to execq() in different invocations
89G89
8e!'P8U|9q,8('8'
qe'-P!8E9,8,|8q|
,|9|,>9%
,GE9'8
E,G|0EP89E|
'P|2E''G,'|P80EeEP#(
8E|2EL'9E|O',G|~>8,L8''G8oER'G|98
'88P
'|R,
8IE,'q9E|
'P|eE,O'G'|9R8'!E|P
8|8h,0'PE9hE
'|P80E'EPP'
8I9E|
',|GR~08P8/E9'|E|X'|09(8/''G8!E
'E8'!
9'|0/828'-9E|O',|-8'|PE!> |,~G' |8',PEG|0Pe88,
#G|~>8,P'E|9'E
8,8,P>0X'|0~8f8 'I0P'
E
pg_proc
~('/9E|
'P2E(|(8o!e~>
E0828|G|~>8,e G'|/2'P
0'PP,-8
'!0GIE|''',q2EG|0,8''G8 8 'I9E|
',h',q0'E,q880
2E82E'228,0 9h9E|98P
EEhE '9E|O', |
8|9,0~'PE0
EP!I8
oP'80PR
P|0!9/
P'cE|
',|%8/'|2E0 -
pg_proc
'fcE|
',|8EE8!!PP
P8O,Gh'9E|
'P|q8#'|PE!0(e
8E8|P E'9'EUo98RO',|oE
,G'G|,GPX898|
',|E!'GE
2E'PPEG|9,8 ''GEI8'!9'|0R
PL/pgSQL
Ee#2(XE('|P80qE,
8EOP2'qE~e!'!9G-EeP8q89,EP!0
2
'
Panormica
|8-9,8,q',e0'EP8E|'8,qP,EE','cE| ',|X',e,E8,O!
EE88E|'8/E!8P'-E,!RU8P0
Descripcion
Estructura de PL/pgSQL
Ee#2(LqE'|2E!>,~'|98/IP',2E
P'PPEEE|O,G
[
label
]
[DECLARE
declarations]
BEGIN
statements
END;
EE8o|PqOE'2E'e|EGL8%!EP2',2EG'/O
',G8o!|0|
'h8o82',
2E2O8P-!EP'PPEIEE8L8!!oE~oP
E'0qR~'P'/,9,-P'P2EEo!|0|
'
8e2~'P'e8O'~8eu'o!
O',u88O'
'P|e'|'
'''L%R'P
E,89
9hO8o2o2E!o'|'
'(RP',2E,|
8%2%2Eo!''('o''GEo
'I9E|
'Pf
!#" "
8e'GE,9|0|O,|9E|8'P!'2|'O8X8 8
# u'%PEEO',uE!|
9|O'8-(eE2(#h',8|E-'P8-89,fE
P|0P#E-0~|!
',|
89E|
'P|/,
8'G'|9,8'!E8,|(EE8/'|'
'8o''9|!
'P
|hE,0Pq|X!,E,~09|!
'P|f|'E8
Comments
&%
('
&'
Declaraciones
,8'R~'2'E'-
P'EG|-2Eo!EuEuP'P2E%EP',2Eo|o8!
8
'EX'o!
',u8I8
'O',|E2P',2E
E9h'e2'#'8I
P|0P
8PE
'(E/PE
' 2(G2Eq!'9/E(~|2E|9P8PEG9,88,8
E|cE|
',hEeE2(Xe8
'hE0PG0'
G|0qO,h','8|9'E
8,E!E'!
f8f8O'~
'P|q9'|'I!'2E'|9I!'|9 '
*)
,
name
9"
'!'P|
'P88
8,8E
'EP0'GE/8-0OE
',f!(8/PE
2', E,89O08h0P8I'2'P'I2',
E8h(8R9,8'
R'P'qE
'
PG (
8L|E 9|E2',E,E9
9
:"
"
;"
. ]=f87
name class<
>
name
7
/f
*)
"
8hE'
(8
E8'!EEP(!uE!G',XEP
8'G'|0PX
,G
2'!0,!8!9Xe|
!'XE,2EI8,!9PEG'!GEP
8'G'|98|
O8|8hEEE 9|!E
!P8'!E|P8'9O|9q0P'
name
.)P/ + 7
( 9
" .?
oldname
newname
@
"
Tipos de datos
8,9'E,8E|%R~'P'IEE8u!OE'2E'(8I',-9'E,P!'
Pe '!0|0L'
P! 8 89,
'O
',8 8
'O',|q-8E|
PG
@,
type
EP!02!9P!02E
variable<
A=
fE
=
class.field<
fE
P|PGP8E|0P' '!9|0X2'!98,|8
class
0~'PE0
field
< =
qP|,GPI8E
8#E!h8
Eu|
PEEe#EP/,PE!2E'f8E|'
',|e8-9'
class.field
PE9,eL'%E~'G~''G8%'o9E|
',|#8E|09,8%'o2'88I'%E''
',LE|
#EP|PG,h2E9|GPhE|u9P'LO,E9'PE9
|~ eU2E|(9E|
'P|
Ee#2(8
2EE,
!/O,|0|'8%E,EG8'I8qR''',O'3(|,~'PE'
8
'8q2EO|~ 2|o!E8
'|0O'~-' 0P'/'-
-
Ph0~'PE0oh
E!
9',8E|'8(
PG/O|~
90~'/2E !0EI'Pf89,~8o! | P'2'8E/8'
9E|O',|8,
'
8',f'|9~|,qE !09E|
X',q2',
9O~E(
|EP'/!'8%88|'EPE!|8%'8
'!',|
fE80,G9'
class.field
G|0II8E9uP
GP'X8I0G |,%!2R|E2XP8G(8I'%0P'8E|
#0~'PE0h
,Gh80'Eh0 9
#C B
D
B
< @=
Expressions
FE
"
G
SELECT expression
>
H#"
FE
>
I"
FE
FE
J
K
Sentencias
(!'P|
'P
R!'P|
'P8uE
!O'P
,
2'PoE|R~'P'u GE8E'EGP'!9!
identifier := expression;
L
"
N,
9) .?
H) "
O#"
8'G|IP0cE|
',
,8u'u9E|
'P|8E|'8E|P!889,uE,!9Pu8RE'R8
RUP~~E,'/9|0P'I9,GI|PG,8 ''GIE|I9E|O',~>
E9E|
P|
E'0h88 -LU'e8|X'P|
',92E/E('E2XE88 '|9|uE
8q#EP/8EL|
!,I2Eh|u'|9!h!P',!E'08P8('I9E|
O',|
PERFORM query
80~>
E0-#E8 -
/P!9,E cOo8!
9e!E'9838,'8|0'
query
8
8,Of
,G(R'P''P
'!,8e9,8PfG,8,!E!9'0E'8,X'PE~9
,
P'2'|8/8 'I9E|
',
RETURN expression
8I9E|O',9~G'|h#2',8
! 82,'R~IP0OE0,!EE',
expression
8q2',(8RE'0E,(E|G9E|O',|88u2E8o!P 8E|'~2e
,|9,
'
|eE(8P',2Eq8GPP||'RE'ecE|
',/!'(|
P|0E|e!|0|
'
8 ,
E~'IE~,8 ~>
E
'Pf
H"
(P,~0|8('I~> E 'P/G|!!>
.9#2E
RQ
Q
QQ
Q
Q
QQ
Q
Q
QQ
Q
QSQQ
Q
QSQQ
QSQ
ST
"
U :"V oH"
"9. $ "92QSQ
Q
QQ
Q
Q
QQ
Q
Q
QQ
Q
Q
QQ
Q
QSQQW o2E88f|P
XY-,GEL
P,,'2'|
-8
9
E|I~0
RAISE level
for [,
identifier [...]];
Q
Q
QQ
Q
Q
QQ
Q
Q
QQ
Q
Q
QQ
Q
QSQQ
QSQ
QQ
QSQ
QQSQ
Q
QQ
Q
Q
QQ
Q
Q
QQ
Q
Q
QSQQ
QSQ
QQSQ
Q
QQ
Q
Q
QQ
Q
Q
QQ
Q
Q
QQ
Q
QSQQeo|
9IEc,G9,[Z
<8\ !E!O,G!'0EO',/E~'PEP!9
!EEE|0'G''8E|9'E'
8P,!!
E8,-E,O,G8,-E,'P'-|'R'!PGo
8 80P8 ,8E
'P|9S
" (u9!O'P ,2'!0(8'IP-880PfX'
|2'I'%E''
',E,O''|9EX]H-E89 :" 9!
'2-,2'!0h8'%P!
8 80PfhPP9'9|!
'P|
-,|8'
'P|
IF expression THEN
statements
[ELSE
statements]
END IF;
expression
8Po82P'2ER',2EhEG|PIEE8h!8R98uE
9'E/PP,'|
8E
'
$
X2'Pf0'EPq8 PE '
[
label
]
LOOP
statements
END LOOP;
]H
]^
[
label
]
WHILE expression LOOP
statements
END LOOP;
#99ELE '
P|8UO',|2Euu0OE0G'|0~/'2'E
',8
I
'9|
pression
ex-
[
label
]
FOR name IN [ REVERSE ]
express .. expression LOOP
statements
END LOOP;
#90/8%EPE
'o2E(!%'9~(,PoEG|PEo2'P-|9P8o2~'P'
!I
E9,G0'
G|0
,u20'EX|0, '!0I,'8|0h8,PEOU2
name
8e8,- E!'P|8L|''G'0o'|9',L!EE~',82~R2!PGR'E,
,'h
E|8/!|9I#PEO'PE#E!h8 ''0
'PXq!'G
label
]H
"
"
Procedimientos desencadenados
Ee#2(GEE8IfE!8E8E|'E,O8'G'|0Pq8!|
8|8PqEPR|
9,E0Ph
P'P8 88
- 9 |'PE82EE|9E|
'P||E
!'PEG|0P!h82E'2E9'E//( q
a) "9 :"
^,
"
7
7
P'ELEo80 /f P-E|h2'#'(PEoG|0'|G'(E'h8o'(|E2/P!
8 80Pf'q,E
'P| #Ee E(8|'P8!|
8|,ef
/E
*#"
P'EE80X /f #E|%R~'P'PEIG|9'|'%E'%8'P!I880P
R'0IPE~
',| Eoq#o88|88',e8|O8|8P
!
"?
",GP8X9'8807|oE|R~'P'X2EO,|0'||PGP8,
8
! $ "
F7
& )
)288fU
!8 P
F7
? "8U8E|8'|88'
!(
7
b"
!8c
7 (
Sc
!8".?
7
! "oH%
7
>
!(^ P - /
^!
7
"
U
H!%E
ed
"
8u!PE|8'EP0|u882P'2
EGE|%E'(P'0X2E
P|0|P(
9G|9o'h!9E
9EX8('/9P'hPE/|XEP2,OEL'hO0'2
'P8,
8'G'R9
8!|
||8P8PhEP
8UG'|9,X8|
8|8PX
9'2|PE,( 288 8P
82,'R'GEE2',
88!'E,8EO'R'| E9
08,/E,
8'G'|0,
8!|
||8,
9'2|P E, 8 2('|8'
|P!0Pe8o,
8'G'|9,E!|
8O|8Pf2E-|h''
'I,E
'P!,P'E'I
0E
E|8(-82E'2
8e
8
E'2E'I,9
!P'LE'LP'!982E'0!E!9'0E2'LE''|~08
9E''8R8qE,!'P'GE'2','|E'R'8E'q8'O0|98|!R9|
'
X82,'R~',!X P|!0E'E||E2IE'hP'!9(X82,'R~'|
K"
)
)
"
"
Excepciones
hg
8
Ejemplos
#e'|
'EPE|EP
9E|
'P|qE~-8G,!9'(cO'2E f!
'P'9E|
',|f
Ee#2(e8~h0GE'PIG
,GE'~>P!R8EPPG|P EP'h
,|E'0-0!
8 P!',LE Ee#2(e
89''8,'P,u'u|,u8!O'P'cE|
',|/Ee#2( (G|08
'O,G''''G'289 0G8h'%9E|
'P|% 88
- 9
|8h!E|
j
i) "9 :"
Y?
o |E2,098| ',|Ee#EP/u0|8!L2E'2'|0'|PE!> /
f=
PL/Tcl
Ee#
2Eu'|2E!>EP
8EPERP!0P8P!q8I89,E,022EE
G'9X8E!EX
E~X'
O
', 8X9E|O',|EP
8'G'|9,%8!|
8|,
E,2|0,
'
Introduccin
-2 E0
I"
Descripcin
Funciones de Postgres y nombres de procedimientos Tcl
g
>g
G
JC
@,
lW
"
X
>
m=
$TG_name
H#%
$TG_relid
E 9
O8
$TG_relatts
|I''!0
#8 UP|PGP8
GE,f8 '9P'!E
8'8 8 E'G|0
8 ''!92
'!8!9/ |O EI2E,PE!OE|PGP8'G|0X'''!9
O,',88L
qU'!O|u8REURG'!G|EGE,!'9'2P
PG|
|8E, | 2EX',oOGEPo0 |EG~EP%
9',PG8!'!9G
UE 09'PE9
$TG_when
.8)P/f.)P88P8E|8'|8L8|!EOL8o'/''G8(8!|
8/
8|
8||02
$TG_level
8%
8|f
O8||92
$TG_op
"
? "
8
8| #8#
8!|
|||02
Eo8ho8E8888|8'|8o8#E !/8-'I''G8
$NEW
|XG9'X2Eh
P|0'|X',%R'P8/'E'E/'R8RX0P'XEX
'P|
Eo|h2
' EIo8888e
"8e
$OLD
K"
$GD
8IG0~'IE80Pf8 08/2',P'
PG/E!O'PIGf8'|9P
$args
|oU'0(
R8I',PEG|9,82E,
8'G'|0
PG!I8uu'%!|0|
'
-E-8u8
%8
8,ePEG|9,e!,u0GP
OU2'q
,G
OE~E(8#E,
8'G'|0
H#!
G
#"
+ "
. $
:"
l"
D )
0)
^,
8'PE'|0,8|qEG'9L
8Of%E|%P!8I80Pq8!8P'|9~',8IE
EP
|'G'|0XEe
k,
',
level msg
`"
D
H"
8|XE G|!!>X8h2'!08,%EP!'P'|'R'%!P ( -E o |8
( ,(8o
o
PG/'I9E|O',U',299#8 /
2E,9
O" :#"
string
G
G
G
,
nEP!|UJnO8!08o'EPo'/ 8O|/E% ,|
(,|8'/2'#'%O2U2'PO,|0'|
E'0
G
G
G Ho
!E 9O,E|
oUo 9~
G
S
&
#
'GE~'G'EhG|!!>-8eP'0o(
E
8E|8'E'8E O'
G
G
!E EOE
query typelist
=h
E
8
ooE|O,|!E'9E 8|~>
EO',E,0'P~8fEE,O(8'!
9'|08R
!XE P%2EoL!
!P'oO,|!E'9oE2'0%e80,G9'
G|9
O,E'8 #
,|9 0h8-GGP'I8-GPP|'2EP'/0|0P|/
9E'G|0
|'|2E|9,~G8-E'|'E
E|
,|E'0!'PE8'R
#'GO,|!E'9|
u9RO'G2EG|9,',|,G28u'PX9'E,|8
'|O'E'!9PG%8''!9%O3E22',82E'0XE, EE#q2'E|9'E
O8P8-'I
P|!E'92E-E~ 'fU2E'|0''G8U!E
E3 !
U!E
EE~E0GE'
G
G
M
G
P
G Ho
!E 9O,E|
oUo 9~
nam
EP !~'O,|!E'9|
n n
G
8"
G
G
G
G
G
,
.n
Yn
G
"
G
" . p"
ST
= \\
_
Sc
t L
Nota Histrica
8C
u,
G
#
Caractersticas de la Implementacin
8n
8I'GE'G|9O',8P>0Pe2|8f'|29'EPe!E~'PqP>0PP|8f 9,
, u'GO|(',I0PP-G0EE'-8%'/P!%8(80P U|8'O 899OoP|9'
EPE8E'8f8 EGo89,oO,
9o
E|8o''
!P8e'
0E
~h
'9EI'9,~',
In
Interfaces
^C
Nota: Toda manipulacin de objetos grandes debe ocurrir dentro de una transaccin
SQL. Este requerimiento es obligatorio a partir de Postgres v6.5, a pesar que en versiones anteriores era un requerimiento implcito, e ignorarlo resultar en un comportamiento
impredecible.
open(2) read(2)
0
8e9E|O',|e8I8!E'''G%!9eE9'|eEPP0
write(2) lseek(2)
|8!,'/',E9,8'|9 EEX,>9(P~|E2E,~>GE',! '!98h9'E(8ePP
09P|8q''GE9P0 !,~ePEe'G
|e9P0PP9'88q
|9,|
EE8
8E|'/E|X9E|
',''G8hPPh,P(',80,I8/9,9 !PE!| 8~Ph88
G'~0O''|9',eEoE|/9,9,P~9U#89G'|qRO,',8%'/PP(PEoE
G
m
F
^" P
:%
.#" P H
%
A" P ^ $ P
Y
8
Y,
inv_oid = lo_creat(INV_READ|INV_WRITE|INV_ARCHIVE);
"
]G
PGoEX,>9oP~|8EE8q''G8-' 9E|
',
E~ EP0IEP>0
9E|O',
P~|E8|0EE |'R8
G
| X2E(!('G
"9#]8EE8''%'
"9]
8|PEG|0
!EO'E
/('8P>0LP|8(2EooP~'P8P P'0E
lobjId
,|9,'u!2R,>9!PE'
9E%
f8o9#!
'9EohGPP
modo
P>0XP~|E |XEEE P'~!|08
O!2
8RE'R-EL8
'E9,8
lo_open
P>0P|8E~!E!EP!0'P%
lo_read lo_write lo_lseek lo_tell
#" P
lo_close
int lo_write(PGconn *conexion, int fd, const char *buf, size_t largo)
!
~'P
PP9q8!8
2,>9h2|8
8P2EG|9
8P'X!E
largo
buf
fd
fd
2'G|08RE'9E,E| ''G8
o28'Re EGo8qP20!
~'0,
lo_open
9
9'2G|02!8
(8~,9,2'P8 9,~|/|P9'2
8PEG|0
8P'G E
largo
fd buf
fd
2'G|0E28'9E,E|o''G8%
o2E'2IR EG8PP9e''8,
lo_open
9
9'2G|02!8
(8~,9,2'P8 9,~|/|P9'2
desde_donde
S
"
E
8! ~'9,XEG,092|88RE'0E,
z'0,
Rq|
fd 82E'2
~##|hE,0,2',8RE'9/q|
lo_open
29'2
lo_close
F
#
Programa de Ejemplo
/*----------------------------------------*
* testlo.c*
prueba utilizando objetos grandes con libpq
*
* Copyright (c) 1994, Regents of the University of California
*
*
* IDENTIFICATION
*
/usr/local/devel/pglite/cvs/src/doc/manual.me,v 1.16 1995/09/01 23:55:00
*
*----------------------------------------*/
#include stdio.h
#include "libpq-fe.h"
#include "libpq/libpq-fs.h"
#define BUFSIZE
1024
/*
* importFile *
importar el archivo "filename" en la base de datos como el objeto grande "lobjOid"
*
*/
Oid importFile(PGconn *conn, char *filename)
{
Oid lobjId;
int lobj_fd;
char buf[BUFSIZE];
int nbytes, tmp;
int fd;
/*
* abrir el archivo a leer
*/
fd = open(filename, O_RDONLY, 0666);
0) {
/* error */
if (fd
fprintf(stderr, "no se pudo abrir el archivo unix %s\n", filename);
}
/*
* crear el objeto grande
*/
lobjId = lo_creat(conn, INV_READ|INV_WRITE);
if (lobjId == 0) {
fprintf(stderr, "no se pudo crear el objeto grande\n");
}
lobj_fd = lo_open(conn, lobjId, INV_WRITE);
/*
* Leer desde el archivo Unix y escribir al archivo invertido
*/
while ((nbytes = read(fd, buf, BUFSIZE))
0) {
tmp = lo_write(conn, lobj_fd, buf, nbytes);
if (tmp
nbytes) {
fprintf(stderr, "error al escribir el objeto grande\n");
}
}
(void) close(fd);
(void) lo_close(conn, lobj_fd);
return lobjId;
}
void pickout(PGconn *conn, Oid lobjId, int start, int len)
{
int lobj_fd;
char* buf;
int nbytes;
int nread;
lobj_fd = lo_open(conn, lobjId, INV_READ);
0) {
if (lobj_fd
fprintf(stderr,"no se pudo abrir el objeto grande %d\n",
lobjId);
}
}
/*
* exportFile *
exportar el objeto grande "lobjOid" al archivo "filename"
*
*/
void exportFile(PGconn *conn, Oid lobjId, char *filename)
{
int lobj_fd;
char buf[BUFSIZE];
int nbytes, tmp;
int fd;
/*
* create an inversion "object"
*/
lobj_fd = lo_open(conn, lobjId, INV_READ);
0) {
if (lobj_fd
fprintf(stderr,"no se pudo abrir el objeto grande %d\n",
lobjId);
}
/*
* open the file to be written to
*/
fd = open(filename, O_CREAT|O_WRONLY, 0666);
if (fd
0) {
/* error */
fprintf(stderr, "no se pudo abrir el archivo unix %s\n",
filename);
}
/*
* leer desde el archivo invertido y escribir al archivo Unix
*/
while ((nbytes = lo_read(conn, lobj_fd, buf, BUFSIZE))
tmp = write(fd, buf, nbytes);
nbytes) {
if (tmp
fprintf(stderr,"error al escribir %s\n",
filename);
}
}
0) {
if (argc != 4) {
fprintf(stderr, "Utilizacin: %s database_name in_filename out_filename\n"
argv[0]);
exit(1);
}
database = argv[1];
in_filename = argv[2];
out_filename = argv[3];
/*
* set up the connection
*/
conn = PQsetdb(NULL, NULL, NULL, NULL, database);
/* check to see that the backend connection was successfully made */
if (PQstatus(conn) == CONNECTION_BAD) {
fprintf(stderr,"Fall la conexin con la base de datos %s.\n", database)
fprintf(stderr,"%s",PQerrorMessage(conn));
exit_nicely(conn);
}
res = PQexec(conn, "begin");
PQclear(res);
/*
/*
printf("como objeto grande %d.\n", lobjOid);
/*
8!99E|O',|E|/
o #oEG'9(8'
0GR9e9P!>
,
-/!E
!O'E0q8-
P
%'I!P'E
'R '|0G8'' E8
P,EP
!(8 0
09f8
8'0E~G'0''E,
!h8'
0/'
G~f8-O,GE|!
',
8 0>098
8'9/EPG8'/8!EPE9 | (XEGPE !|8/,GP8E'
8
E/
2E!9 EE8o,
!q90>0 8
8'9L8'!0G|0/h0~
8
%RUI!Eq!
~'98
P!8>|O'!'PE'|9qE~E',E,O!
D P
#
G
i P
G
^D P
Notas
-(|09
*, 8E9E3EX 8|~
,
]|09*, 8E9E3EX 8|~
,#E,8E
9,9#EP#
,GG
2O
2
|]|09*, 8E9E3X
E 8|~
,#EE#!EEE,~~
]|09
Nombre
( );
E/E,!9P/e
G
Ec
9
'cPE~'P
('
libpq++
libpgtcl
ecpg
2E|,
9,I8EO,GE,~0G'|08('U2'o!8'0G8('GP9|O'X!E2E'
E9'''E|/8 !0PqE2E0
#D
libpq
../src/test/regress
../src/test/examples
../src/bin/psql
8,LE,2GL
''|02EE0'''
8P~'|O'E' EO|8
POO
libpq
h8P|'!
P'P'P'',9
libpq-fe.h
libpq
PQconnectdb
"
9
80
',8EuE~G9X0'|'%c,G
9E~%
'P'E
keyword = value
2',-|E'GER'P2E
,|9'|h!E
'P|R!hGE'~
,G'''%!'GE'!REP
~>G'
8e
,G'''-!'GE' 8|0X8E2'P!%!
~'
keyword
= a value
P'G
PG
8,I!EO',I'8|P-8E!'2|'PEE!PPO',|'!8,E
\
G9Pf
,|P
'8,qO0E'G|0 !,
^,
"
host
,GP8P8|8PI2E
P|O0P!88|LO8|LE',|2'0E
8'!9'|0G8O,!GE0'''G
PGE|'
', -q 9PREeE!8u!9uEG9
!EEP| 8| E!2EEI8#|,GP8,P8|8,~ |P!088~
(
a
hostaddr
J
:
8#E!X8
'EP8
EG'9I'E''
'P2'0' E!2E
hostaddr
host
8-8|,GP 8eP8|8,9'(2E EE8e!'GE,~0|0 ''O!'P|q2E
0'|E|%''G'9
',LE9'G!'LGP2/'E9|9'
'P P,q|
!'9oP|PGP82P8|8P~!8L!9
!8E''
o'%!'P8'|9%!
E|
'|
!q!E
'EO
'
!qcE~e' E!2E88|,GPe8,8|
host
hostaddr
8,~~#-!E
'EO
'
#R'P8
E~ '8'
',
hostaddr
host
hostaddr
G,9 !|!GE' ~PP!PE!O~o8IGPE'|2!R|,GPo8R,
8|8P~8/E0|0
,G
P8R'P8
8~h'
host
hostaddr
hostaddr
8'!
',uG,0 ,R'PfE
!I'P|PG|,2EI!GE' P
host
P!
E2
!X!2',f!IE9'''~E~'%E0|9'
', P, ,0!
2EI''PEc''I2!IE!oE|,G2I8I,8|8,PE%|ho2|,GPE
'IGPE'|
Y"
hostaddr
port
"
G
",GP8 'IP!8-89,
dbname
",GP8#E!E'h2E!8P-O,| 0~
user
YE
YE
password
E! ,2E(!(EP/E0'''e8!2'8,e!,''
'9XE|hE0|0'OO',G
P
E! Pe
options
EE8|2''q,E
'P|q#
28OPEX,!R'EP~
tty
8!0I9E|O',|X!'2I|P|
PQsetdbLogin
PGconn *PQsetdbLogin(const
const
const
const
const
const
const
char
char
char
char
char
char
char
*pghost,
*pgport,
*pgoptions,
*pgtty,
*dbName,
*login,
*pwd)
8!0cE|
',Le'E8OO!P%8
,LE EGX>8X8IE~G
PQconnectdb
0P!E(
P'G'!G9E|O',|''8e
8!0I9E|O',|X!'2I|P|
PQsetdb
PGconn *PQsetdb(char
char
char
char
char
*pghost,
*pgport,
*pgoptions,
*pgtty,
*dbName)
8!0oeE|ocE|
',u2E''Go
,EE|0Pq|E'P-E',-E
PQsetdbLogin()
G0Pf',2'L e!EPE,
'P|'|'
''G|9IEIG|0|
PGE9'P'''8
,,P~G|9' EP
E
PQconnectStart PQconnectPoll
''E| P| ',!RU8P8P!E
89,E 9PG|hP',2E|02
8PfE~G0,
!-E0'''/EPE'8G|9E !PE82E
hostaddr host
|/! ''
,|!8'0f8 |,GP |#8|PGP '|2! 'EP
EG|0
'P
8 !0PEG0PfP!>/E(
P|E
9Eh|9fE~I,P9|GE9'U
E GE9''G
#
conn=PQconnectStart(" connection_info_string ")
,|h
8E''PEo|Pe'E%'|OEe8q
E||E2!9E
9E %O,|qo
,9%G,8,e82,'2~-EXEE|0o %O,|2''8%9E|2E9,82'|/E!|0
E|
,| ',2''8'GP!L8LE9,!!,oq2OEL8(
,||
99~0''GL
!99E 8E(!90E!9O,|||!90E--'2E|
- 9
8(o8(
PR|
99~
|P9''8
@"
Y6
: :"9" :"9S
8
,l
(
"9! . P
A
"9!
"9
(
#"9!
^ #"9
#"9! ^ #"9
0
#"9! .
."9" ."9
! ."9" ."9 .
F7
,
:"
"-9:"
##(880,~8!E~R8/2E!''OE|
P|',f
:"
"-9:"
?(oU,mP|',L.7!E|8(EI|2'~
" -9 :"
D
c #"9!f8E:
" U,, 8!E|8 E|!EE!0L8fE,!9
G:!9"
~
."9" @ ."9
-
9
~2'8,~
R,
switch(PQstatus(conn))
{
case CONNECTION_STARTED:
feedback = "Connecting...";
break;
case CONNECTION_MADE:
feedback = "Connected to server...";
break;
.
.
.
default:
feedback = "Connecting...";
}
# #8E|'8
!
FE
9 p#" " ."9
.D#"9!
."9" ."
3
E
PQsetnonblocking
8!0fcE| ',||X!PE~'|P~R
PQconndefaults
PQconninfoOption *PQconndefaults(void)
struct PQconninfoOption
{
char
*keyword;
/* Palabra clave de la opcin */
char
*envvar;
/* Nombre de la variable de entorno que recoge su valor
si no se da expresamente */
char
*compiled; /* Valor de defecto en el cdigo fuente si tampoco se asigna
variable de entorno */
char
*val;
/* Valor de la opcin */
char
*label;
/* Etiqueta para el campo en el dilogo de conexin */
char
*dispchar; /* Carcter a mostrar para este campo en un dilogo de conexin.
Los valores son:
""
Muestra el valor entrado tal cual es
"*"
Campo de Password - ocultar el valor
"D"
Opciones de depuracin - No crea un campo por defecto */
int
dispsize; /* Tamao del campo en carcteres para dialogo */
}
s
"
*n Gn
"
8!0I9E|O',|X!'2I|P|
G
Y"
PQreset
PQresetStart PQresetPoll
8-c,GI|XP',2E|02
#>
E0/8(!0#0~~#E8RE'2
2'X''G'X|X9''8E82E'2 PEEP
'(''GE'hE0'''|8E(!9E,'E
9G|9oG'hG'!Gh9,~G/G2E(|P'
8h'I
,| 'PE9'''|8hE(
P||O0EP'
PQdb
G
PQuser
PQpass
PQhost
PQport
PQtty
PQoptions
PQstatus
CONNECTION_BAD
,G'G|0OE| !'08O',hEe !qG|9|8~|!0
EE/c''8
PQfinish
'
PGE|'
',|%EEE/EPP,O-EOGP'EG0E38/'!'9EO',
CON~8X-
,' E''
'PhEPE~U'|0|9
EE~'
PGE|'
',
NECTION_BAD
''G|8/
"
" ."9 .
,
."
PQreset
E%2~'PEf,0~eEP!'P'-!'08O',|-2E%E,8~Uu
,GEPP!2''|
0~88 E(
P|E
90|h8(
P||O0EP>
(RE'Rh8G|!!>h8hPG
'|9/2Eh|P2|8
PQerrorMessage
'PE|I,E
'P'I
,| 'Pf
n
#
8 c 8~2'8,IoE9'''P'!!PE'|OEEE
'P8POoE
,GE',eG|0e8 (
92E'|
'EPuP 9 8,!2'8P2EI!9
''|8h'|,9'E
'P||2L
E|02EI, c O,P|8EE,O!X2E
!q!9~>
E0|8(,E|8,!2'8P8q'-P!8q89,! |%/,8|EP
',
K"
)=
kX
FW
f''8|%|2, O',uE,G
P'|02
o
|"
6
#"
N,
>"
@,
8#E,
''|9h-EE8PP9OE'2E'GPG|9X''G|8(E/!02|o
P,~29||8'
8!0fcE|
',||X!PE~'|P~R
PQsetenv
PQexec
8G'0E| P|!E'0IEP!9PX!E~I#!E'98
3"
n
o2E'2/EEE|9L %E'PRE,'P'G|0R8EE|0
8e %R~'G|
0h82P'2XE EE|0|G|E',
E0
P|8'
',|%8 9EX8hGG,~'
9,E99,c9GG,2GPO!',9'
,GG''|
'88/|2'-'XO,|!E'9
E!2'8P~!h82E'2hEEE|0|E',!h8PUX99-8h'G'!G9,G
2EXE !E'8G %f8 -, 8f/IEO,|!P8' Go'|9PG
'P!PP
#~,0E9'''
E(,
!!2P
|?
)
Sn
8o!9E
9E
|
E!E'o|!E'0882E'0E,q|!2'8,eo'/
,|!8'
PGresult
9REPe,P~G8POe8IE''OO',|
P
EP'LG,!9I
E'8EP!Pq8
libpq
G|0|q'/2!0~O
',8% %!E'~EP|'Pu'/9O|
'/8'
0(/',
GE,-8
'(0EO0E( %!E'9#EP2E!0!09, (
GP',-2980E
c|
'E!(E9'
8I'/2!'PL| (E%E,0P!#|o8~>88EPP
'P|~!'(88|'
',8 %!8'
''PE2992 f#0'| E!0L
P8'Ph|9U2E/2E
88'
9G|9I'P
GE,E
%E'0REE8hG|0|'GE9'''|8''PE29'|~ 0GP |RE'h
,G|8G,
2E!>E!9 E,|9/,
P8'P,
#
G
PQresultStatus
%8O8||R'8I#!2'8P!9P ROU|
%I8,
PG|8h! |0OE08(O,8 '9('82,'RE9,
PGRES_COMMAND_OK
% 8I
,|E'0!|~>
E98(
P9 '0
I
PGRES_TUPLES_OK
%u|u~|
8'u0~|G'!',889,/E!8~2'8,
PGRES_COPY_OUT
Ph(E9
% ||
8 '9|!G'!'P 880PL|
' !2'8P
PGRES_COPY_IN
P9 |
%8#~2'8,|IE8(8|EE08!O,|P
'8R
PGRES_BAD_RESPONSE
PGRES_EMPTY_QUERY
PGRES_NONFATAL_ERROR
PGRES_FATAL_ERROR
E!'9E ',EE!E'98
G
#"
P|2'9f'P89'E,|EG8P882E'0P8E,E(!E'990EEoE|
PQresStatus
8O|
P|!0|9PE8!
~'P ,O,8'Ph8 '!'0E
'Pf
sage
PQntuples
m7
0|
(
!R %!E'E P|0'|80PP'|~',L'e0EE'!#
y#"
N=
:
p
(
K"
Y"
o2E'2h''P|P'9E8hE
PQgetlength
8-9EE'Ih8
GE/GE'
GE90'PE9,fP208P'|8'
int tup_num,
int field_num);
8!0o'%'P|P'E8%',89,
9E'eE2R'P8I89,E9'
E'0E
'9
#0G |/8#,09XEE|9E/E,E(292'E2 P0!2EE2',fEO|
08,ho
90e9G |(0'|eE,Oo2E28
PX0G |oP'|'('|E'O8%EP
E(9'P
D
s"
N"
EEPIEOGE/E,!#9'| ER'P
PQgetisnull
8-OGE/GE'
,
"
8e8,f'|8' f89EE'
:"
o2E'2'O8|8''0E
'P
PQcmdStatus
(L2EP|h, %!E'
8 ,G|8E~O,G|8
PQcmdTuples
:#"
(RE'RXU8|9'E
8,I8XP>09,'88'0EE'L'|!98!
PQoidValue
,G|8h(LIE| #E8
/
P|0~~',82E'2
#"
InvalidOid
libpq
>"
8!0I9E|O',!|8!E 'Eh92,8
PQoidValue
X|h2EI'I|2|
header;
pqbool align;
pqbool standard;
pqbool html3;
pqbool expanded;
pqbool pager;
cesita. */
char
*fieldSep;
char
*tableOpt;
char
*caption;
char
**fieldName;
po alternativos. */
separador de campos */
lo inserta en tabla ... de HTML */
HTML caption */
cadena terminada en null de nombres de cam-
} PQprintOpt;
E9'''P|0'PG|0!0I98RO',EI'GE'G'',q!E'08,8-'O,|
psql
!E'9/0PI|Xf,
!PX!99E|
',P|h!!,EP0O0'2G|02
7
Y"
PQmakeEmptyPGresult
A
E,E,|2
!"
G
m?
u,
F
PQexec PQsendQuery
PQgetResult
E~e',E,2G|9'PEP2E-E0'''P(!99E|
'P|''8E0'''|8
PQputline
L!EPGP'PP88,||2'880P-8|!~2'8,0,!o |8''
PQputnbytes
9E|O',
PQsetnonblocking
PQsetnonblocking
#>,!08(8'I P| ',L|hP',2E|02
PQexec
u!EG2EGqE 'GcE0EP'G2,'G8''P]!|2G!PE~E'
9E|
'P|''8I8
PQsetnonblocking
PQisnonblocking
P! 8-80P
3)o8!!9
8|2UX8RXO,|!E'9XEP!02I'!E~e',!E'9EPo2E'2
PQsendQuery
8 !'
P|!E'08!E
|
,~O0|9 (E# !|cE!9
E2
!,E9'''
E/~, !P-E~I,P9|Gq'Rc,G
'P!PP ,9'',
`)
m?
|"
."
8!E~uU2E'|0u!E'988LE|~>
E
'PER'uE
PQsend 8
8|8/'
P|!E'9!9 O,GE'0/2 |
D"
PQgetResult
h'(82E'22#82E'2
Query
|PGq!E'98P
"
82 ''G
E0'8G|9I|02EI82E'2
88'|8'
|
PQgetResult
8/2E'
P|!E'0|''E!9#'''GI
E|8h|h|X|'|PE|
P|!E'9
0'R!'GE'G|9 E2P'2
88E-E~'|
'E', -E E|hE-',E'0
8,qR|8',eE
8PUIEP
!!IE9'''|8X'G'!Ge9E|
'P|
PQgetResult
8I
!% %E'8E,'G|0o8!
'9 ,'R'8''P
8,09!E'9
8(
P
8|8/'/|P|
| P0! 2E
!P'hP'P2E~
PQclear
PQgetResult
8G|h''8L',IE9, 8o!EE0
|LE|/
,|E'0X
9'2(
PQconsumeInput
|
',
K"
Y"
I"
S
0'''|8
!!E'2fE|8fUP,P'G88
PQsendQuery PQgetResult
PQexec
#PE|oO8|%8O,|!E'9(O,|0'|% 8'0'E'-
,G|8,-#(8'P-E'08,8I!,
PG|EP !(EE8PP0|e'|8'2'8E'G|92O980EG'9(E|(9PGh!|
'''/8
EP
!G'|0(~'' 'E''
'P/
''|9eEEE0EG|UEE'|8o'P!E'0,
8 E|
,|E'0G'|0~#!2'8P!'2E0~20|8/!,P-O,|!E'9qE,0'P8
'(G'!Gh
8|%8o
,|E'0'GPPP'/''G8%
!P8'(E,
PQgetResult
PP
|8PEo2O''|9%2E8P',2E8|!0(2E%R!2'8,O,GE'0oR!'P8'|9
PG|EX#(8I'%O8||!8!0XIEE8I'GE8'O,u2E!8
E88I9q9E|
'P|G
;
N,
PQconsumeInput
On
|n
PQgetResult
|7
|'|0|0~XPG'GG'-',89,E!~2'8, RP'',|!/8P
PQisBusy
h#!98h,OE8/|/9~G'|~I|E|
|
''GE'G(
8I|
!'G''G
E|O,| 'P |GP'P2E|9X|0%8h''G
PQflush
E/80G'|eE|h''28LE|X!EE!0| |h!EE!9(8
2E
select
2EI||E9,e|O,'8,P!~2'8,f2E|!%|2|2'8h9,82'|!,''
''O'P|e2E|E!8
|
'0!0
PQsetnonblocking
zU6 B 7
#
EIE,O!'I!EE!9|
Y7
PQisBusy PQgetResult
PQnotifies
88
,| 'P||IP',2E|0cP8|oE9'''8
|I8P~U
PQsetnonblocking
E0'''
|0e2E
|P-E28'9
'|8'
|E2Ee|%2E
8(80P
select
PQflush
'GO|8,!E|8h!|2'8,#!~2'8,~
select
PQsocket
-E|8|PEO'%E'|O'|80
9o2E(|LE8oE|/|988P'o''G
E~ ''I|08P8E8-8 f''G
!PE'8/E
PQconsumeInput
PQisBusy
U"
#)=
Nnk"
G
G
|''OO',O''|9I2EIE0'''O
0GP EE8I'|0|
PQsendQuery PQgetResult
9
|
'E|
,|E'02E E!! -EP
!|8(,!R'EP~
PQrequestCancel
#
0E
!/EE8/'|2, -8/G,8G!PEu8!8/EG|'EE'8,8/
E'|,!#'-8
'!'P
PQrequestCancel
|
'(-!9-9PG!EE8E9'''E
P>E|
'P
P
8-
|
'!EE8-0PGEG|'EE'8P8 !|
'PQexec
EP~>GE',
'|R,
psql
8!8EuG|'EE'8,8I'o!|
2!#",EG'9'|88I!9
PQrequestCancel
GPEh'I
|
'
','|9
0'R 8
P|!E'0e2EK
#20'P|%I0 f8 PQexec ~(P
!~2!2E
|0|8(9O0R'/
P|
',|!9(P'9%!
PQrequestCancel
GPG|9,X!,#!R'8,|/!9EP
!|8(E|
P|!E'9R
Ruta Rpida
EP!02(E,EP
'PRhEG'|99(~E'ELE~(|2'q''G8 8%98|
',!
2'8P~
80o-E|/EE0(9'!o'('|9',~'888|!'0G#L88EE,|eE
P0(8 !PE'8e8IG2,'I8-'PeE!E'(|X|
!'9~0I
9'!9'
|
J
sW
# Y
J
X
B #)
J Y
J Y
typedef struct {
ST
int len;
int isint;
union {
int *ptr;
int integer;
} u;
} PQArgBlock;
#'
PQclear
Notificacin Asncrona
" 8"
" "
9" @#)=
)=
|
"
G
"
G'9G'PO,G|8, c8
9#8
8''OO',|
libpq
#(L,8'|'8P!'PE'|9G|0'I''P8I8G|0 (
9''G|8/E(|P0'E!9!
"
/* nombre de la relacin */
/* que contiene los datos */
/* identificador del proceso ser-
free()
|7F
H"
U"
)=
)=
|I9,GG~>PfE
PGE,P',G|!!0 (
E|8/|X!8'!EP|8 O,|
!8'0/E9'''P'(X|
E|''GE
8
PGE,P|9,|
PQconsumeInput()
,#LEE8LE!
E~u~o'''P88LE9,X8!
PQnotifies()
select
2'8P0E|E9'''|8!9
!E,0|
'u8 uG|P(2E9|Pu'P2E
|
~ ,9u2Eu09PG9E|O',|
P
9G|9G'|9hE9'''
uE0
PQ
u!'G'G|0
Eh'O,|!E'9oP'/8!08
PQgetResult
PQexec
sendQuery
!'GP2,8
,|
PGE,P
9(O8
PQnotifies()
PQgetResult PQexec
EI
PGE,Pf!P|o''28X'PE|o|,0'8
',u8E|9I2E,
!8I'
,|E'
9R
("
=
8!9E9E|
'P|!,'f8P'oE9'''|9E,P9|EoP>0I!E'08
PGRES_COPY_OUT
I~0'8
PGRES_COPY_IN
PQexec
PQgetResult
n E n
:n
n
Hn E
:) B
n
n[ n
n[ n
n E
n
O =
i =
PGRES_COPY_OUT
Sc
''G%
3n E
.)
n
PQendcopy
2,'Rf8!E RE,O|,~G
8,80PE28'9,|!% 0|8~G
''(8oEG
9 | ''| O E,!'P'P!(82,'R~oE|h'U|h
PG'9(O8
2|E/!PP'G
|G'|0X,9!'8XE,'E''
O',2EI'''''G8
8G!'EP8 |LE~o
'P'E|/'U|/|2'E(E,|!R'EP0,!oE2P'2
89,/O'',LEE8E9O0%!9
PGE,P|8 !f E'0'GP20L82E'0
|#8
8|82E'0|!0G'|L
PE
O0I|E'c2E'
\n
E!9 |8'IE
880G'|
',|8!P88EIE|u',|P00E 8'
G
|G'|0hGE2E |2EI,9G |h8,'GO|G'|0h8-2EI'G|0
8'!E,|
Z
Hn E
"
n
^
EOF
.)
PQputnbytes
!,9,8/RP'|X8 X!,'|OE8|R''OE||
2E'2
:
9
>
NZ
N,
PG/E0GE'
M j
-E|8h!0oE0'''|8
'oE''OO',8P'%!E,|8(EuE'
PQgetResult
98
~>
E9|8XE0'8G|9
!PE'88
PGRES_COPY_OUT
PQgetline
PQendcopy
E|RXX80
9X''U|8h9~G'|
',f(P'X|0P|
R,'28PEO'
PQge'P,LE|9'#|!0I2E
82E'2
8q~'G''~G|9EE'
tResult
PQgetResult
98
!-E,O-E,E|!'8''GE
2E'8EP
PGRES_COPY_IN
PQputline
OoR,'2'|8o|0P|
PE
'
8!9,2|U
'P/!P8
PQendcopy
PQgetResult
2EeEh
PG|8%8qO,E'-8q|0~E-%Ee!''8G2P'8%hE|-!'q8qO,G|8,
#(L!~>
E0~
P
9G|9P
D"
N
o
9'2X'9h8h'X
,GE|'OO',
PQtrace
~U|9-8 E
|P
''R92!R'8, E~X8EE~' P
PQuntrace
PQsetNoticeProcessor
P|0P'o'I'|9PGI8IG|!!>8R'!'~GP|
8,fEP''PE
n E
n
,
static void
defaultNoticeProcessor(void * arg, const char * message)
{
fprintf(stderr, "%s", message);
}
E~XE0'''-8 EP
!|PEXR'!,o!E
''2''GX
'|
PQsetNoticeProcessor
G8'G|9-9f'O
',L8-8|ER/P>0X %O,|f
"
Variables de Entorno
#EE8XE9''''f'PE'|0fR~'P'8-|9,~|/E !'O
',|R'P8E
~G9, 8/
P| ',E(89
0P22E/!E9'''8 E,
$
G
%E/>hEE0Eo89O0L'(0|!',EoE
|8|!,OP8(8,G'|'
',
,E'
PGE|'
',L
,,~2'8,E,!9P/e
|G%
%o-,8 L#>,|,GP8 'IP!8-80PfEP!02(e
8 >E|PGP/8oEE'L80'''8LEh
P|O0!/h'XP!(8/89,I
E~ E9|0'
'Pf
88'PE'|02'P'O8|0P|%!qEE8oE!EE~eEOU8
|O,GE,~0G'|
9/8 8cO0(8 ',eE!E~'(EI
8 ',8 EP!02(
U,
U,
M
!%8(
;
8~!P PG|8X/
8 !0fR~'P'E |0P|
Programas de Ejemplo
Programa de Ejemplo 1
/*
* testlibpq.c Test the C version of Libpq, the Postgres frontend
* library.
* testlibpq.c Probar la versin C de libpq, la librera para aplicaciones
* cliente de PostgreSQL
*
*
*/
#include stdio.h
#include "libpq-fe.h"
void
exit_nicely(PGconn *conn)
{
PQfinish(conn);
exit(1);
}
main()
{
char
char
int
int
*pghost,
*pgport,
*pgoptions,
*pgtty;
*dbName;
nFields;
i,
j;
/* FILE *debug; */
PGconn
PGresult
*conn;
*res;
/*
* begin, by setting the parameters for a backend connection if the
* parameters are null, then the system will try to use reasonable
* defaults by looking up environment variables or, failing that,
* using hardwired constants
*
* Se empieza fijando los parmetros de una conexin al servidor. Si los
* parmetros son nulos, el sistema probar a utilizar valores de defecto
* razonables para buscar en las variables de entorno, y, si esto falla,
* utilizar constantes includas directamente en el cdigo.
*/
pghost = NULL;
/* host name of the backend server */
/* nombre del ordenador servidor.
*/
pgport = NULL;
/* port of the backend server */
pgoptions = NULL;
vidor */
pgtty = NULL;
ver */
/*
/*
*
/*
/* debugging tty for the backend ser/* tty (terminal) para depuracin del ser-
vidor */
dbName = "template1";
/* make a connection to the database */
/* conectar con el servidor */
conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);
/*
* check to see that the backend connection was successfully made
* se comprueba si la conexin se ha realizado con xito.
*/
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "Connection to database %s failed.\n", dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
/* debug = fopen("/tmp/trace.out","w"); */
/* PQtrace(conn, debug); */
/* start a transaction block */
/* comienza un bloque de transaccin */
res = PQexec(conn, "BEGIN");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "BEGIN command failed\n");
PQclear(res);
exit_nicely(conn);
}
/*
* should PQclear PGresult whenever it is no longer needed to avoid
* memory leaks
* se debera PQclear PGresult una vez que ya no es necesario, para impedir
* prdidas de memoria.
*/
PQclear(res);
/*
* fetch instances from the pg_database, the system catalog of
* databases
* se recogen las instancias a partir de pg_database, el catlogo de sistema de
* bases de datos
*/
res = PQexec(conn, "DECLARE mycursor CURSOR FOR select * from pg_database");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "DECLARE CURSOR command failed\n");
PQclear(res);
exit_nicely(conn);
}
PQclear(res);
Programa de Ejemplo 2
/*
*
*
*
*
*
*
*
*
*
*
*
*
testlibpq2.c
Test of the asynchronous notification interface
Se comprueba el interfaz de notificaciones asncronas.
Start this program, then from psql in another window do
NOTIFY TBL2;
Arranque este programa, y luego, desde psql en otra ventana ejecute
NOTIFY TBL2;
Or, if you want to get fancy, try this:
Populate a database with the following:
O, si quiere hacer algo ms elegante, intente esto:
*
alimente una base de datos con lo siguiente:
*
*
CREATE TABLE TBL1 (i int4);
*
*
CREATE TABLE TBL2 (i int4);
*
*
CREATE RULE r1 AS ON INSERT TO TBL1 DO
*
(INSERT INTO TBL2 values (new.i); NOTIFY TBL2);
*
* and do
*
y haga
*
*
INSERT INTO TBL1 values (10);
*
*/
#include stdio.h
#include "libpq-fe.h"
void
exit_nicely(PGconn *conn)
{
PQfinish(conn);
exit(1);
}
main()
{
char
char
int
int
PGconn
PGresult
PGnotify
*pghost,
*pgport,
*pgoptions,
*pgtty;
*dbName;
nFields;
i,
j;
*conn;
*res;
*notify;
/*
* begin, by setting the parameters for a backend connection if the
* parameters are null, then the system will try to use reasonable
* defaults by looking up environment variables or, failing that,
* using hardwired constants
*
* Se empieza fijando los parmetros de una conexin al servidor. Si los
* parmetros son nulos, el sistema probar a utilizar valores de defecto
* razonables para buscar en las variables de entorno, y, si esto falla,
* utilizar constantes includas directamente en el cdigo.
*/
pghost = NULL;
/* host name of the backend server */
/* nombre del ordenador del servidor */
pgport = NULL;
/* port of the backend server */
/* puerto asignado al servidor */
pgoptions = NULL;
/* special options to start up the backend
* server */
/* opciones especiales para arrancar el servidor */
pgtty = NULL;
/* debugging tty for the backend server */
/* tty (terminal) de depuracin del servidor */
M M
dbName = getenv("USER");
bre de su
* base de datos de prueba */
/* make a connection to the database */
/*
Se hace a conexin a la base de datos */
conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);
/*
* check to see that the backend connection was successfully made
*
Se comprueba si la conexin ha funcionado correctamente.
*/
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "Connection to database %s failed.\n", dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
/* Se declara el inters en TBL2 */
res = PQexec(conn, "LISTEN TBL2");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "LISTEN command failed\n");
PQclear(res);
exit_nicely(conn);
}
/*
* should PQclear PGresult whenever it is no longer needed to avoid
* memory leaks
*
Se debera PQclear PGresult una vez que ya no es necesario, para
*
impedir prdidas de memoria.
*/
PQclear(res);
while (1)
{
/*
* wait a little bit between checks; waiting with select()
* would be more efficient.
*
esperamos un poquito entre comprobacines; esperar con select()
*
sera ms eficiente.
*/
sleep(1);
/* collect any asynchronous backend messages */
/*
Se recoge asncronamente cualquier mensaje del servidor */
PQconsumeInput(conn);
/* check for asynchronous notify messages */
/*
Se comprueban los mensajes de notificacin asncrona */
while ((notify = PQnotifies(conn)) != NULL)
{
fprintf(stderr,
"ASYNC NOTIFY of %s from backend pid %d received\n",
notify- relname, notify- be_pid);
free(notify);
}
MST
Programa de Ejemplo 3
/*
* testlibpq3.c Test the C version of Libpq, the Postgres frontend
* library. tests the binary cursor interface
*
Se comprueba el interfaz de cursores binarios.
*
*
*
*
* populate a database by doing the following:
*
Alimente una base de datos con lo siguiente:
*
* CREATE TABLE test1 (i int4, d float4, p polygon);
*
* INSERT INTO test1 values (1, 3.567, (3.0, 4.0, 1.0,
* 2.0)::polygon);
*
* INSERT INTO test1 values (2, 89.05, (4.0, 3.0, 2.0,
* 1.0)::polygon);
*
* the expected output is:
*
La salida esperada es:
*
* tuple 0: got i = (4 bytes) 1, d = (4 bytes) 3.567000, p = (4
* bytes) 2 points
boundbox = (hi=3.000000/4.000000, lo =
* 1.000000,2.000000) tuple 1: got i = (4 bytes) 2, d = (4 bytes)
* 89.050003, p = (4 bytes) 2 points
boundbox =
* (hi=4.000000/3.000000, lo = 2.000000,1.000000)
*
*
*/
#include stdio.h
#include "libpq-fe.h"
#include "utils/geo-decls.h"
/* for the POLYGON type */
/* para el tipo POLYGON */
void
exit_nicely(PGconn *conn)
{
PQfinish(conn);
exit(1);
}
main()
{
char
char
int
M _
*pghost,
*pgport,
*pgoptions,
*pgtty;
*dbName;
nFields;
int
int
PGconn
PGresult
i,
j;
i_fnum,
d_fnum,
p_fnum;
*conn;
*res;
/*
* begin, by setting the parameters for a backend connection if the
* parameters are null, then the system will try to use reasonable
* defaults by looking up environment variables or, failing that,
* using hardwired constants
*
* Se empieza fijando los parmetros de una conexin al servidor. Si los
* parmetros son nulos, el sistema probar a utilizar valores de defecto
* razonables para buscar en las variables de entorno, y, si esto falla,
* utilizar constantes includas directamente en el cdigo.
*/
pghost = NULL;
/* host name of the backend server */
/* nombre de ordenador del servidor */
pgport = NULL;
/* port of the backend server */
/* puerto asignado al servidor. */
pgoptions = NULL;
/* special options to start up the backend
* server */
/* opciones especiales para arrancar el servidor */
pgtty = NULL;
/* debugging tty for the backend server */
/* tty (terminal)) para depurar el servidor */
dbName = getenv("USER");
tos de
* prueba */
/* make a connection to the database */
/*
Se hace la conexin a la base de datos */
conn = PQsetdb(pghost, pgport, pgoptions, pgtty, dbName);
/*
* check to see that the backend connection was successfully made
*
Se comprueba que la conexin se ha realizado correctamente
*/
if (PQstatus(conn) == CONNECTION_BAD)
{
fprintf(stderr, "Connection to database %s failed.\n", dbName);
fprintf(stderr, "%s", PQerrorMessage(conn));
exit_nicely(conn);
}
/* start a transaction block */
res = PQexec(conn, "BEGIN");
if (!res || PQresultStatus(res) != PGRES_COMMAND_OK)
{
fprintf(stderr, "BEGIN command failed\n");
PQclear(res);
exit_nicely(conn);
}
/*
MSc
3; i++)
for (i = 0; i
{
printf("type[%d] = %d, size[%d] = %d\n",
i, PQftype(res, i),
i, PQfsize(res, i));
}
PQntuples(res); i++)
for (i = 0; i
{
int
*ival;
float
*dval;
int
plen;
POLYGON
*pval;
T j
}
PQclear(res);
*/
*/
T
, >
h'(
o EuEP!02
hE
,0EE08L
'!XP8
libpq++
libpq++
EG'9/-',EPP~G
''|0eO,|
9~!q~2'8,E8eEP!9PE0
,| 'P|
2'|8 8,c,G E| -'! 8 8! 8 o9,hE|O'-8 (09, %|8
D
8 -'!X8 8X8X80Po0|!8E~G|UEE'IE|LP!E89,EE8
E0X|2'80PE-!E9e8q
PRE'0/X~2'8,8EP!9P!Oo
'2''EE0
8#!2'8P~
8 -'8(09, %|8(!0E|!8EuG|'EE'',XP>0Ph2|8/
'/P!%8o80,O(E|2E(E|/'|0|
'/8%(>0, %|8-EE8o|R'q
,|E'0
|PG'~2'8,q8(EP!02!P!,'u!0/E|!8E/
,|!8'0|
''' 2E(|
82E'2|'| E 89 ,>9 2|8!L8P2
PGE|O8|LELE
EO|88cE0EP282~Uh
PGE,9!h8/9PGXGEE 'GX'
8|I8
EO|(8
cin cout
cerr
Control e Inicializacin
Variables de Entorno.
8'PE'|02'P'O8|0P|!IEE8E0'''fE~I>f2'P'8I89
0
E E|9,~|,h~-2'0O,8'E
|,GPf8-'P!-889,fEE,2G
8 ''O
',
^,
Nota: Dirjase a libpq para conseguir una lista completa de opciones de conexin.
8(!'2E'|0/2~'2'(8|0P|!EE8E9'''%E~'
'P|%2'PoE
EG9,8-
,| ',8e89
0P2E !hE0'''8,E,8(
PR|
98/oE/!08
P8PP'u!2|I|o!E
'E
8h8'O0G|0|'| P0R'PEPE~08P
P8'P
2EX'''''G8|#, E0'''P'(~'GE8''L
,8'8
',8X|PGP%8
P! 8 89,fEPP~Gf8 E''
',|O''',
Nota: libpq++ utiliza slo variables de entorno o cadenas del tipo conninfo de PQconnectdb.
$
(
G
80h||,GP%8oE!E'E9'''8~o
P|O0!o/'(P!o8%80P-
E~ 'IE9|9'
',f
%( ](
%8o?
0
?
g
8!'PE'|92'P'e8o|0,~|!oEEEE9''UqE(EO'E
RO,GE,~0
G'|0h8 E9
9(EI',qE!E'PEI
8!!',LE EP!02
!%8(
O
Clases de libpq++
Clase de Conexin: PgConnection
>
DD
^D
PgConnection
G
ConnectionBad
int PgConnection::ConnectionBad()
o2E'2
Status
8fo(o8f
!,' P| ',L9''
ConnStatusType PgConnection::Status()
H ."9"-c."9:-."9"c."9 8o
o2E'2 -
'I
,| 'Pf
PgDatabase
EE|8'|8I8!08IE
2
Status
DBName
ConnectionBad
o2E'2I'o!'PE'|0%|,9'OO',8IE|o''!0(8IG|08I|P0'EO
Notifies
',!'G|'EE'
'P'8Pf8E ,!R'8,~
PGnotify* PgConnection::Notifies()
E/|,9>E!9|~ P|!PE'fGf80''
8|2'IE|
,|!E'9!~2'8,E,PP'G|9Gf8!P'-E0'''E|
Exec
8-'f8P!'2E'|0qcE|
',|
( ? =^
N=
(
.?? " .!,'I
P|!E'0IE
,G|8
%E E
8
%E
ExecCommandOk
o2E'2
8fo(o8f
ExecTuplesOk
8fo(o8f
ErrorMessage
(
int PgDatabase::Tuples()
int PgDatabase::Fields()
c9'PE9,e, '8 ,
T M
N
(
>
m"
S
;
(
>
m"
S
o2E'2%'o',|2'0E8IE
GE90~'PE0PL2P0O8,'|E'O8
GetLength
0EE'IX
GE/GE'
D#
o2E'2%'o',|2'0E8IE
GE90~'PE0PL2P0O8,'|E'O8
GetLength
0EE'IX
GE/GE'
TST
D#
cGE'G/0P8'08'I
PPO',|'GR92',|,GPIE(0~'
DisplayTuples
PE0h8 'O,~'|98-'U8I!E
'E
8|
cGE'G9,8e'e08'O,E
'P|'G|9',|,GP8I'Pe9'
PrintTuples
PE0P'I
P'|08 !''8IEO'E
8P
GetLine
int PgDatabase::GetLine(char* string, int length)
PutLine
void PgDatabase::PutLine(const char* string)
OidStatus
const char *PgDatabase::OidStatus()
EndCopy
int PgDatabase::EndCopy()
Notificacin Asncrona
y
99 |
;
99
e
"
Nota: En el pasado, la documentacin tena asociados los nombres utilizados para las
notificaciones asncronas con relaciones o clases. Sin embargo, no hay de hecho unin
directa de los dos conceptos en la implementacin, y los semforos identificados con un
nombre de hecho no necesitan tener una relacin correspondiente previamente definida.
T _
8oE''
',|(
P
,|P0'EO8(O8L2uP8E!~2'8,%PE!
libpq++
9O,|
98f
'P E|I|,9'E
'P!'|
P|R#'GP2/'I
PGE|'
',L|0
~2'8,('GE''
',
''|0G|!'|
PR|,8E''
'P
P
8
libpq++
P(''GqE!2'8PeE/2e!|'|9,GO',8('2E|h|,9'E
'PE|8'|02
#'h~>
E
'P8oE|h
P|!E'9PE|XE''
'PG
''|0(EEE(''Ge
PgDatabaE2!#!GPG|9X!|
E|9IE|8'|0-' E80(E |P
se::Notifies
9'E
'P8E,~2'8,~
82E'2'|,9'E
'P8E|
PgDatabase::Notifies
''!9E|,9'E
',|fE|8'|08G|'EE'88E-~2'8,~8-9E|O',82E'
2
8!,|h|/|,9'E
'P|E|E'|9#!R'EP~
PgDatabase::Notifies
!X
,GE,~0
,GE98hE|E''| |22E
|
PgDatabase::Notifies
82E'0/'I|,0'
'P|0I!
P|!'8~G|'8'8h''G'|8'I''!9E
D"
PgDatabase::Notifies
EEOI|P0'EOO',EfE|8'|98#!2'8P~
PGnotify* PgDatabase::Notifies()
88O,G|8
2
8h8,!9Po0'|XPE
',|oEX'
'P''
,| 'PE
LE0'''8IE,
EP!9,|!|
!'99E|
'PReEI
8!9
libpq++
P| ',u8I8'!0G|08I9PG%2E%'eE''
',|EEEL0Pf2|90
PGE'9f80I
E
'|e
length
G
PG'/E9U|/8%'!0Gh8 |
#0/E0'|h
PE'
O~
fgets
(3)
length-1
0O
8
PG
!'GP2,X2EO,|2'9-' 0G'|
'P
string
gets (3)
|E2I'U| 8E
0|E'
.)
Nn
PgDatabase::GetLine
PgDatabase::PutLine
8|2'E
9~G'|8h|E',,!R'8,~
string
TSc
PgDatabase::EndCopy
!'| P|'O,#!R'8,~
int PgDatabase::EndCopy()
8!09E|
'P~|!02E!R'EP|9G'|88EP
!
PG|8
oP'E9'''~!XP'
E|8!||2'8' 8'0'GL
E|!R'EP
P
E0'''|8
P'
E|8!G|
'P'8' E'9'G
8|
PgDatabase::PutLine
88 2!2'8,fE9'''|8
!oPIE0'''2!2'8,
PgDatabase::GetLine
EE889O0 9E8-!'|
P|U
9,E2,2!2|
2
,'E''
',X
''|9P |2
2E'2f80e9E|O',|
!R'EP|!9eE8I~
'2'R'e!'2E'|9q
P|!E'0|
9
Z
8R'P88RE'9%
O'9,o8'!0'|9(8eOX,9% !
E|8o! ,GE'0 ,
,
(f GE'
PgDatabase data;
data.Exec("create table foo (a int4, b char(16), d float8)");
data.Exec("copy foo from stdin");
data.putline("3\etHello World\et4.5\en");
data.putline("4\etGoodbye World\et7.11\en");
&...
data.putline(".\en");
data.endcopy();
_ j
#
-P8I'G2,'I8-'q9E|
',|qE
$pgtcl
#
O|f
libpq
Comandos
2 89 P8P
pgtcl
Comando
Descripcin
E8'!
,||
E
,||89E'0
E ,||
O'~IE| P| ',
E!E'
E
!'O
E
E ''!0
!9P'
-8|''GEIG|!!>
(
"
F
E'F,E
E
'F
'P!
E
'F
E
'F
E '9
E
'F '!
E '
)=
OE,>9/2|8
P E,>0hP|8
'~IE,09XP|8
'EP>0XP~|8
'PE,>9/2|8
PE!
X!
P',
!PP E|E,!'O',
EL,>9/2|8
F
E ' 0'
F
E'F'GE,
E ' E|''|
PPIEL,>9/2|8
'GEP0EE
|
2|8
F
E ' E,~
G
| oIE,09
EP9E,>9h2|8 EE
|
|
G
'
"
N !#" "
G
'
F
!" "
F
Ejemplos
PE,E2E |/~>GE'X8-O,GXE!'fE9'|
# getDBs :
#
get the names of all the databases at a given host and port number
#
with the defaults being the localhost and port 5432
#
return them in alphabetical order
proc getDBs { {host "localhost"} {port "5432"} } {
# datnames is the list to be result
set conn [pg_connect template1 -host $host -port $port]
set res [pg_exec $conn "SELECT datname FROM pg_database ORDER BY datname"]
set ntups [pg_result $res -numTuples]
for {set i 0} {$i < $ntups} {incr i} {
lappend datnames [pg_result $res -getTuple $i]
}
pg_result $res -clear
pg_disconnect $conn
return $datnames
}
pg_connect }
Synopsis
pg_connect -conninfo opcionesConexion
pg_connect nombreDb [-host nombreHost]
[-port numeroPuerto] [-tty pqtty]
[-options argumentosOpcionalesBackend]
K6
_
- c|,!
nombreHost
- cP
numeroPuerto
9uE#!R'8,2OP|L~
- c09
pqtty
nombreBD
nombreBD
- c,E0'P|
argumentosOpcionalesBackend
nombreBD
Outputs
dbHandle
#P9,8%|%'8P'|!E28'RIEL||8'IEE|%O,| 'Pu8IP!8I89,
8P||8'
,G'|
,P#> E2!2 O
:n
Descripcin
pg_connect
Gn
S
IE
Uso
]H]^]
L L
0|PG
pg_disconnect
Nombre
pg_disconnect }
'E| P| ',L#~2'8,POP|
Synopsis
pg_disconnect dbHandle
Inputs
dbHandle
8
'8
IE||8'-8 P!8 E9,fR''8
Outputs
"'|PE|
Descripcin
pg_disconnect
pg_conndefaults
Nombre
pg_conndefaults }
89OO0
Synopsis
pg_conndefaults
Inputs
"'|PE|
Outputs
option list
,
pg_connect -conninfo
Descripcin
pg_conndefaults
h#2',E,8cO
9/
9E#8 O8,E
'Pf
pg_connect -conninfo
Uso
E O,||8c8'0
pg_exec
Nombre
pg_exec }
Synopsis
pg_exec dbHandle stringConsulta
Inputs
dbHandle
8
'82IE||8'-R''8hEE|P!-8 80P
stringConsulta
8
'8
IE|I
,|!E'9/u2''8R
Outputs
handleResultado
#X82,'R~EP
!EP9
|EE8PP0|I!EE!08P
2|eo
P0G,8,2%
/EG,09LO,|!E'9h
,Gu!EE!0(L!(82E'2oEG|R8'
E 8!9%||8'%EE8!qE!8
E(,P9|q'P !E'9,
pg_result
8 'I
,|E'0|
Description
E!O|9E|X
,|E'0XEP
2RE(EP!02I82E'2(E!E'9E8
pg_exec
!E'9|h8'O,|!E'9!|
P8-G|~>,O,G'|/
P,||8'-8'I
PR
',X |8-EEE|9/E 8Gh
PGh!8'0|
i @X
pg_result
Nombre
pg_result }
Synopsis
pg_result handleResult opcionResult
Inputs
handleResult
8qP||8' EI#E'08(8E|I
P|!E'0|
opcionResult
8
'8
IE|IE 'R~'fE,!'P'q,E
'PR
Opciones
900E
#!98h8#E'08
9
|7
'I
P| ',L2E,8>h#E'08
9P'
#"#E,0EE'o8:9]'|!98F7O8,0IGP8oE/0~'|
,G|8%9EqE
R
U
9|EG#EE'
# EGhE 9EE',e8RE'9,qE,'O,|!E'9R
9|EG(09
_ M
o E|8!9|o
9!'P|P2' %|,GP(
!'2|u',/E'08uE~E!|8E'G0~'PE08RUP0
8%|,GP-8%9'PE9,-
PG
'2|EE|80-E8P|0P|
- |
8'8LO8L
'22 ERG|9E0P8,h
E0fE~'%
G8O8L08'
,G'G
|, GEG~O#8!|ELE|/RPG|
'0Eh8|0'E9R',E~'G
-GE, |,GP -GE,(||E#0~
929#EE'|EG,#EE'
990'2E0
82E'2-E|''!9
,'PeRPGP 8',9'PE9,qE#9EE'
9'(09'PE9
82E'2I8|o''!9(8EP9''!9
E'
9O'
''G'|#,09X
,|!E'9!E'9|92
Outputs
Descripcin
8RE'Rq'|9,~G
',
!-8E'08%8eE|
,|E'0
8 PE
pg_result
|9',~
pg_exec
pg_result -clear
'~o,9uGP8,0|8E P> e'GGP'8P0OGP!0~G|!!>
'|8'
|8(2E|
8/8G'EPf,>0,e
P|!E'0|
O
an
n
pg_select
Nombre
pg_select }
_ST
Synopsis
pg_select handleBD stringConsulta
varArray procConsulta
Inputs
handleBD
8
'8
IE||8'-R''8hE 8|P-8 80P
stringConsulta
8
'8
IE|I
,|!E'9/u!'O22''8|
varArray
hE 2~'2'~ 'Pq9EE',82E'9,
procConsulta
8,
8'G'|0hP8 -|~>
E98(!PP
89EE'/|
P|0~8
Outputs
handleResult
2!8U988RE'9eEG|!!>%E%~,E||8'E%E!E'98h8
O,|!E'9|
Description
u
Uso
Kn
n
^n
Gn .n|GnE9(9R P0P
s,
_ _
pg_listen
Nombre
*"
pg_listen }
#)=!'| P|,
Synopsis
pg_listen dbHandle notifyName comandoRellamada
Inputs
dbHandle
8
'8
IE||8'-8 P!8 E9,fR''8
notifyName
8
'8
I#|PGP8-'|P0'8
',EIGEhE8
E
|~
comandoRellamada
#2!9%EG0%E!(
,EG2',|L2
',#E,E,O',|(|
PG|8Lo~>
OE0OE|8/E||,9'E
'P2''8''2EP
Outputs
"'|PE|
Description
E
''0(OO
GP'e
|
'qE|E0'
'P(Ee!
EO|G|!!>@
" /
pg_listen
)=!U|O,|,q8!8,P
2|8 E,!9PY-,8E~G9o
PGR8Pf''G
82'E0'
'PX!0P'
G8!9'|8/
PG|8G8hE|E9'
',
'!9|9h!
OGE'8L'G|'|E
~G9L
,G|8,''G8,!%O|O'~oE|/9'
',
|0~',~
D"
"
)=
)=
#"
vwait
_Sc
pg_lo_creat
Nombre
pg_lo_creat }
EP>0XP~|8
Synopsis
pg_lo_creat conn modo
Inputs
conn
modo
8
'8
I#GP8h8
!/E~#P>0XP~|E2
Outputs
idObjeto
8,P'u9'L8,,09,|8#,>0XP~|8
E
Descripcin
pg_lo_creat
8,09/2|8-8'|R~!', 9|2~!',82-/> 0!
Uso
Hn4kn
c j
pg_lo_open
Nombre
pg_lo_open }
P-EP>0hP~|E
Synopsis
pg_lo_open conn idObjeto modo
Inputs
conn
idObjeto
8
'8
IE,'uR''8/E~IE,09/2|82
modo
8
'8
I#GP8h8
!/E~#P>0XP~|E2
Outputs
fd
'
Descripcin
pg_lo_open
Uso
#
yn |n SnkE9nn|E9nO
GPEhEE8-
pg_lo_close
Nombre
pg_lo_close }
'~IE,09/2|8
Synopsis
pg_lo_close conn fd
Inputs
conn
fd
F'
Outputs
"'|PE|
Descripcin
pg_lo_close
#
Uso
pg_lo_read
Nombre
pg_lo_read }
'EP>0hP~|8
Synopsis
pg_lo_read conn fd bufVar len
Inputs
conn
fd
F
c
bufVar
8
'8
uE|u2'P'EPE09IR''8uEL
,|9|of!PG|08,>9
2|82
len
Outputs
"'|PE|
Descripcin
pg_lo_read
'-'IGPPE9 E 'PqP208
len
X'/O,E'I'I2'P'
bufVar
Uso
bufVar
pg_lo_write
Nombre
pg_lo_write }
! ~'P E,09XP|8
Synopsis
pg_lo_write conn fd buf len
Inputs
conn
fd
F
buf
8
'8
IE|I2'P' !0~'|hR''8IE
'P'#P>9XP|82
len
Outputs
"'|PE|
Descripcin
pg_lo_write
'P'uGP,oE08
len
PP9(uE,098!8E|u2'P'
buf
Usage
buf
EP!#!9'|!O'P'0|hP|,GP8 'I2'P'2
pg_lo_lseek
Nombre
pg_lo_lseek }
PE IE|E,!' 'PEP>0X2|8
Synopsis
pg_lo_lseek conn fd offset whence
Inputs
conn
fd
F
offset
8
'8
IE,09RPP9qP!-O
whence
Outputs
"'|PE|
Descripcin
!oE,!'O',|/
pg_lo_lseek
8 E,>0hP|82
Uso
whence
offset
P20-8!8I|O,G'|P E 08RE,!'O',
yn HnSn8"nn8nO
EE8 ! #8
pg_lo_tell
Nombre
pg_lo_tell }
Synopsis
pg_lo_tell conn fd
Inputs
conn
fd
F
Outputs
offset
Description
pg_lo_lseek
offset
2P0o8!8
Uso
pg_lo_unlink
Nombre
pg_lo_unlink }
P,~IEP>0XP~|E
Synopsis
pg_lo_unlink conn idObjeto
Inputs
conn
idObjeto
]H]^]8%!9'PE2EX'8(09,/
Yofo
L L t B
Outputs
"'|PE|
Descripcin
pg_lo_unlink
PP~,P>0XP~|8-!E 'EO8
Uso
pg_lo_import
Nombre
pg_lo_import }
Synopsis
pg_lo_import conn nombreFichero
c M
G
Inputs
conn
nombreFichero
8#|PGP8#8
|
G
|
Outputs
"'|PE|O]H]^]o2E'2!9hEL'8(>9Foe8q'hG'GP8 '8/>0X,9q''G
8Yq
o 9|,G SL
L t B !
Descripcin
pg_lo_import
2|8P
Uso
pg_lo_import
8!"#"L
pg_lo_export
Nombre
pg_lo_export }
E,~0IEP>0hP~|8IE8 |
G
Synopsis
pg_lo_export conn idObjeto nombreFichero
Inputs
conn
idObjeto
c8|0'EO8P%8P>02|8P]^]^]
9|,G SL
L
t B !
8h'2EG'8(09
Yo[o
P0X''G8
cST
nombreFichero
"PGP E#EO|
G
|
Outputs
"'|PE|(]^]H]o2E'2E'8(>0o/8o0'PE'8(09,9o''G8Yo
9|,G
L
L
t B !
Descripcin
pg_lo_export
G
| E
Uso
pg_lo_export
c _
8!"#"L
D
/
9(EXo0P! P||O0'2'9 P|O0'2'8(P'9 E 88-o0P!2
E/o ,P!9
92EqEG'9q!
'2'E''
'P|2EqEEE/'|0,ERO,h2',
!~2'8,
E~(
9
'''9 E'|99-8 E,8EO0(|E9#|0-''OO',|
8/E!E~'u8|G!2'8,I8hP!8h80P!2EG'0'|8GPXEE!8~'
8!3,''8,!O'P'IE''
',|%9|!E,~0P'|9X!R'8,%8X8'9O|9oc
P~'
|0
Trasfondo
.
.?
8P( E(
?
Y
PGE9'P'
P(
/ 8!99'9E|0880,|E,8~U!8EELE
|h80 9
IE|If
o(~
' /EP!02
ew
r
Y?
FE
E
Aplicaciones Windows
8EOh
.,
F
P
.
D
F
P
P
!?2)pC
FE
E *"
D
(
!!o'E|'
'E 8'q!PP98'O0G|0 (
/
8!>
EX
'E
EEE8-8!#o |/
8
q
8
'!E
EEEEEE!I'L
'!
,89|'L
E|OEE'o e(
8|98%E|/
'!
| O8-|
G'|LG-cO'2!!9o8!P''|E
E~ '|8 eP!> '|8
;D
Escritura de Aplicaciones
cSc
EE8o'|9PGoG G
P D
8
G'| ( /
(E~(
P8'Pu
'E
!'9' XE 'O,!P99q/!Ee8,
EG|9,
e
:E
(
?
Fichero->Obtener
Instalacin Unix
G
(E' 9'|IE'|0cO-8P!880P(
!PE,98/,G|,e2'
E'0>,~G!oEE' - | | |!'8hE,P8(20(8'| o
,8,!9PRR E!|8
#8'2EP'/
,|9|U8h'8'!0~'PE
'PE,0P
Gu
C C
Construyendo el Driver
.
G
SBB(
8E'GPE8PP~!X
!88'RE!2'(
9
E'2E'IP08'2
/
-q(2E8P '!0'%EP!9,88'2I'!0Gu8,|82LE~!
8'Re(
/ '!9oEE~'2q(
-9 E | ''G8L',8P2E/EE8
PP0|! 2'PfEE|0Pq8 cR9|08GE o
8f'|!9E
'PEfE
'|!9'',8P-2LGe''%8,,098I0I8P
EG|0,Eh|EL8
|
READ2EXEE8h|
,|9h8|98EPE9h',8Pu !|
,GE'G'8PE8P
ME
E''
O,GX''''|!9'O',XEE0IG
||
E
G
G
8)
E
8#E~'2EE8-
,|0E'8XG,8h8-2E'E/'!'8,'|0
configure make
'
'Ph8-!,'/
''|0(
PG(E9e8'8'!0~'PE
'PE,!9P~8-'|0'
','!'8
o
P|2|'|98!00'|E''
'P|oO''|9oE(
E'09PGo E'0'
E'|0, |!8I'|!9'O',u'|0P~8IqO,|2|'|0IOE|8X'E'09PG
''|9~2'8,~e!,/'G'!G!IOE|8I
''|0q%!~2'8,0'|(
P|EPE~O',|
8 ~>
E
',!'G''
n
M j j
0n
n
n
n
8
9>
9PL98cP8
8!9 ,
8'G'|9/fEPE'8/E~ ''|0'
','|9P8|
XEE
'8
RPEG|0
-with-odbc
(Uq''|eEf PG|EP8E
src/configure
% ./configure -with-odbc
% make
% make install
| R
P|EPE~8P#E~'2(
!I
P|!08'Eh '|!0'8(8|0/8-'
8E|'8Eh,9,I
PEP||98EU0GXE,028EEO|u8/
,|8PE~O',
8L'|!9'O',/
!
P',
8 q8'O0P'E~'|
'Ef8qP,EL8!9'|
EP!02cE( %8 cf!8!0%EE8!E
GP'E('-'U|8q
PG|8PE
make
PG
#
8 9> 9PL89P8 8
OP'GeEO|0(8!''8!
'!0G8GE2 0'
R U
E8' 0P'
,
% ./configure
% make
% make POSTGRESDIR=PostgresTopDir install
|X8!'|0'',(O,GE,||0(8'9O|0oPP'!||9,|
(EE8X!E
'
8
2~',8!9'|, ''
'9G|9
,
% make BINDIR=bindir
stall
LIBDIR=libdir
0(9 98
8 9> 9P
/share
/etc/odbcinst.ini
/share
M j
G
K
O-)Eo(
% unzip -a packagename
PE
',
8
X|
!'E8!|
!L8L'PXE
-a
8
|,q9E|0
',
% cd interfaces/odbc
% make standalone
C|OP'eE
|I0E8f''8-!'!9G8q8!9'|(!E!8q9|!9'~'O,G
EE
|(2'R~'/E|8
ftp
OP|EPE'I'|!9'O','!'8,
% ./configure
-prefix
8
rootdir/lib rootdir/include/iodbc
#8'
0P'h!EO'E
|
-with-odbc
odbcinst.ini
E''
h80u8h!
8
P|EPE~
',
'|0'
',E,0P
!hE''
X,'GEE
|
-with-odbc
PG''|L''|0|!PE
PE,
O
odbcinst.ini
% make ODBCINST=instdir
G
M j
9%
E
t|O9|!9',O,8'Ph9E|0,
"
$
D"
#
,
!EO0'2G|02
/opt/psqlodbc/include/iodbc
8# PG|8
Ficheros de Configuracin
P|0'|G'|c,G
'P 8GO
!!EOUEOG8E!E~'E~Gq8'R
~/.odbc.ini
E!2'(
/8E8
|LEX
,|R|O',|9''OI8/',|'R,%8/fP'0u8 '|
8 !E(IE8-!9I!0~'
'PEE8 |
! 9E|
'P|~
FE
.
8EO|
0'|98!
'PRPE'88qE'Gq
.odbc.ini
[ODBC Data Sour'
88|''!98X|PGP%~P'0~~',%8!
'EO',|oE~
8P!h8
ces]
80PfI'2EE!
|~8I!PE|8!
O','I8|,G'|8(9I,E
E
'8
0'P/ '!9'IE|I8-!9f!
'P|E,
E P! 8-80P 8!
'P8P
!o9'2E98LO,f|PGPL8E
8PL
,|9|o'
[ODBC Data Sources]
!'2E'|0|0~E
u,
Driver = POSTGRESDIR/lib/libpsqlodbc.so
Database=DatabaseName
Servername=localhost
Port=5432
M j
Sugerencia: Recuerde que el nombre de bases de datos Postgres es por lo general una
palabra sencilla, sin nombres de trayectoria ni otras cosas. El servidor Postgres gestiona
el acceso actual a la base de datos, y slo necesita especificar el nombre desde el cliente.
2EE(EO|
8f~0GE',2EqGE!0~''|9PG
',/8qO
!I~
.odbc.ini
9fP!f8-89,
ApplixWare
Configuration
G
02
M j
GuE
-,GhP,08'9-,EO|
|Xo,E|,8#EO|
applixroot/applix/axdata/axnet.cnf
XPE!2E'IU'|2E ,G'|I ,
axnet.cnf
!-G2' 'I''|EI2E!'
G
TextAsLongVarchar=0
'P
'P!E
U8
X8hP!8h80PI8
X
9 0h|h!G,!98,q
,G
.odbc.ini
~/2E', GE,E
**BLOB**
888|X9q
28S>P8U99H
#>
E0
8 o889
|
Applix Data
e#82P
e2
#'
O',|h(.-RG|PXO''
G f
EP!/8/E9,2Eh
,|8P
8P'XG,!9PoE!h8h2E
E~E
|
.odbc.ini |'|9|0XO,|0
9e
P
|Host:
!9X2
'9E|LIUP
P0
field
|X' O',|
8
G2E'|%EPE!O'P! E 80P!
|0P| q|PIO'' h
Z
(P'/2 90'|G'c,8PI!~2
'/!2E'|'|c~',-'2E'8/8('hR|
9|X8(89,#8E
/E|XR|9|XEX~,0PRX'X!
O',8/8EE
'P8
P!>
|
C|
8|G|!!>o822EO
('/!2E'|/'|c~',q'|2E'8o8'/2|0|(E
89,8!9/'|8'
2EIE0'8-|PI!EEE''
,|!8'0
M j
Problemas Comunes
G
,
"h88/'|E!UI,!R'8,
elfodbc
|X88 | ,|9
libodbc.so
|2E!LEO|
axnet.cnf
8,88 !' /
EE8(OP!
'P!>E0
,
S ,!9''(,'|'E3'
!9E'L
G
C C
#t
U0G8L!PE'88,P~G
8
EOO8E,
!,EO|,!
axnet
axnet
|
o
,G|PGP(8|E!E~'LuGEG'!0Gh8o E'9'E' E!E'P8o28
8PU/0
E0
PG!PE'8E%,P98%0oP8EEEo'!
~'P'
8
8'
0P' EE!E~',oP~UL8E8!,G|8!9,8!'GPPP22E|
9|2/'8I8-2 9'h8|,2,e8-2E'8L,2P
I0
'P8P!'!9G |
G
strace
8888h
2L
9
E #
X0REEUG
#E,
!h
|~EP~>GE',
O9 |'
'EO,G|8
strace
FE
ps -aucx | grep ax
|
cary
cary
10432
27883
8|9,| q0 80
M j M
392
4596
?
?
S
S
Oct 9
10:24
0:00 axnet
0:04 axmain
OPGEP'I!''8I8-0~OP
Nota de Cary: Muchos de los mensajes de error de ApplixWare van hacia stderr,
pero no estoy seguro de a dnde est dirigido stderr, as que strace es la manera
de encontrarlo.
Y 0Ga0Ffme8:0G#0SGGIJ3Y[SaGGF IF|h
fJ|
mG@YyY*FG:K
us [fIGJf
G
|Y
Ejecutando la demo ApplixWare
OAG /opt/applix/axdata/eng/Demos/sqldemo.am 9Gef#FmG.GF[Sk
!OG#DY#fFG>Gf
F sqldemo.am
"I$ #&G& %
fG
Y ')(k9 (
N!DSGGG& %S[G
Y '*(+(
, -#GfG Applix Macro Editor
. |KF[eYG@
ID Macro Editor
/ 0Gf[GF 1
2432576$89
2 *: ;
< 0
GK Macro Editor
= -#GfG Applix Data
> 0Gf[GF ? 35@$A70
B -##eF7 C
fK
GFN
IGF
JfH
fGGE DG FH0
I.|GDNeeYOGG&DYJ
OG#
KD
#FK J#OGYG
GmGFN& C
Ge Ls
M Fm|GKYyf
C
ff@>G
^J
G
^@
NO4P
Useful Macros
macro login
set_set_system_var@("sql_username@","tgl")
set_system_var@("sql_passwd@","no$way")
endmacro
Atencin
Deber tener cuidado con las protecciones de fichero en cualquier fichero que contenga informacin de nombres de usuario y contraseas.
Plataformas soportadas
Notas
NOz
{I" G9
d g h 7-Td|{S
}`G
h g ~-# _7g dFGh!9IJ
g inhd*Gjh g #
h!jd
0u. ^#
dfe _ `GG
#
nh
_7g dGh
TS{I"I g Gah g _ h.GGf
jhJ
@#oh: g Gah g G> g G#jh
GPostgres
0 g h{#
u
3
dfeeG[Sh*G3JohK
J
nh#&d98ohJd g D _7g djdFEdf`kn"hf
nhdF
#Gn JoO
h g Gah g G _ G` S#d g e Gh _ h h m:b
h
de _ &`&h #oh g Gah g [Shh:nhdF
_ G`
#d g z
e
Building the JDBC Interface
o h: g G h g #&dF g
h:Gy`&dF[ShaGhJoh
h[jd )d#oh:ndF g
h
g hh(Y~d
de _ &`&hI&e _ `&
[SahK g h[jsrc/interfaces/jdbc
d g :d:#
g hYjd g E
8#g _ h g
% make
_ dF
dfe _ `&hJ& do adF99&`&`8Joh g fGah
G*GH#oh${2I"2 g Gah g
postgresql.jar
Nota: You must use make, not javac, as the driver uses some dynamic loading techniques
for performance reasons, and javac cannot cope. The Makefile will generate the jar
archive.
0u04^
Example
D-
ah8
_l_ `GG[S#&dF J
nh:#oh){I" g Gah g d`
fEhI:`G g h8
J
nh0
dF#
&^
G8
Y g Fd od
e Gf`odFkhf#
E-@
ah>#oh! _7_ `GGf
J&d0
Joh g Gah g GY#4`&`&hhG;Joh
(r g ru`&Fd f`+rmG` G
g h[fd g
0#ohJ
|DGIJ`&`&h3Gr g rm`&df`+rED <
md g 8JoKh _7_ G` Gf
J&d 4A- d 7G` 3nh
export CLASSPATH = /usr/local/lib/finder.jar:/usr/local/lib/postgresql.jar:.
java uk.org.retep.finder.Main
NO U
dF
GJohK g G ah g G *
dah g h*`G
h g dF9G9#G*[ _ h g
all
127.0.0.1
255.255.255.255
password
ih g h
[
hI^jd`&`F
Jnh* g h _ dYY&`&hK g dfe #oh$`&df`fe
fGohK9G#{I".
oh${I" I g Gh g n _7_ d g J* g Y
Ghj _
YYd g 0
0 g _ Joh#Gf
J&deh#odF
Using the Driver
GDh
#&dFGKodf@Goh7hh
D.Edfe _ `&hkh!aGhdG{Ic" _7g dF g eeGf7Yod7`G
oh` _ jd` h*a dfzn # g jhU d g ed g h
Gd g eJ&d g hh g jdJoh8n#S g {I" 7-U7d^
Importing JDBC
:nd g
h#4nh{2I"zohh|jd&e
_ d g o#oh
Ya` _
D
h4YGy
import java.sql.*;
Importante: Do not import the postgresql package. If you do, your source will not compile,
as javac will get confused.
"hd g h
d[Sz
dFoh
jdi;J
nh@dohhtjd`&dF
Joh3 g Gah g (oh g h9 g hG#d
ehJ odH
&`G`&h
0&7h _ hdF8df g
dhdJohhndFohjdnh
-w# oUh g nfehJodld g
dFh&e _ `GG[&j`Gc`&d
#ohU g Gh g YG#oh Class.forName()
ehJ od UYd g Postgres
adf0 d7G` ) nh
Class.forName("postgresql.Driver");
NO
a
f
d
d
h
e
S
E
h
I
o
f
d
#o h J n hG* #o h 7 g hSS d3 dFo #p7nhd g
g
hgres
~ hY& dFn #o h Jo hKn h
d) ehJo dF3G*g
GY `&h
o hDn h
dF*
ehJo d SIn hK Jo h g Ga h g
_ g 4 ehh g dc#o h{
& n J g Jn YG
Jo h
^I g a 7eho msu e _ _ `&h
% java -Djdbc.drivers=postgresql.Driver example.ImageViewer
2&J{I"84#h
G g h _7g h[hohh8HJGd g ehndf g
hOdF[4d g Ls2&J
# G# 4Dah Fd ohdo#ohDd`&`&dF9Gd g e
Postgres
( _ dn# g hYa`k database
( _ dn# g hYa`kr7r >hos r database
( _ dn# g hYa`kr7r >hos ">poh r database
9oh g h
ohKodnJehdJohKh g a h g Ih#7`&J|dw(+`&df`GodFn([
host
port
ohK#4nhKeh
database
md.
dohEj
adf0ohh*jdhdFoh
J&d9Gn#
hK g dfe{2I".m~ddw#Gn
adf8d7`G
h#o hI g Ga h g S
a h g h# do hE J& dFo J2LoehJo d*
Connection db = DriverManager.getConnection(url,user,pwd);
N
f
d
Y
jh0m# jgheh o d h gSh [
# S Sh
8*nh ah h2h g (` d g J ho h YnGh
J &Jd oh *EFd J ah SGhk adf Gh eS n
*nDh 0mh nh `&_ hk# ^
g`Gjh G)#G7d
7gehoGg d h$#Gg oDGdFYGG#ohke(g
&
dg ah ndfeh!&e g d ^
g
g
g
_ g
J
o _ d GoJ u
ohd`&`&dF9Genoh
dFIG7h g h 09ohGYGJohhn7`&j0uhkGoh g #
h
d9h[oYvoJdf&7e`G0h
Jfo
h hYy7h`Gdo `GwGadFh E9h&-`&`A#&`&Y`&
dF hndfdn#d8G
DcfjEdchIJDG
g7h`G0STe
#&eh*
^gdg 39
os Postgres g g
dfe nA
`&d nKh |h n7`&0mh Of`&`GG close() dFEhKdf;
ahGYoh39&J0&m
.b
[h Dh ojG` d d g h h 9hGJ
odf
J Kh oGh Hg E`&Fd7nh h g U: 9&J # oh0uJ jheh of nh *jd g h 4Uh |h n7`&0mhj# oh
gg
_
he
_ `&hG*S*df`&`&d9
Statement st = db.createStatement();
ResultSet rs = st.executeQuery("select * from mytable");
while(rs.next()) {
System.out.print("Column 1 returned ");
System.out.println(rs.getString(1));
}
rs.close();
st.close();
N
Performing Updates
g h g O g hn`&jLdf
md:E`pdnh#oh#4nhK
dohEJ&dFoY&e _ `G[4`&`JohK
`&dnhJLehJod)jdJohKdFoh
J&d*
db.close();
-
G` hdkh
#|J#`GndcDodF99
Kl&
LA hnhGjd.od`G04#K&#oh4#
nh
#4Postgres
Nf
odfh.ng d g h`G:od g e`70u.J`&hohg 3 g h!jd g h`
4`&haru-#h _
g
0 g h g h h g+g h *j
d g de df g d9J`&h:
bc-2IV`&7h
Importante: For Postgres, you must access large objects within an SQL transaction.
Although this has always been true in principle, it was not strictly enforced until the release
of v6.5. You would open a transaction by using the setAutoCommit() method with an
input parameter of false:
Connection mycon;
...
mycon.setAutoCommit(false);
... now use Large Objects
N4
md:Gnh g
&e
h
d0d7`G)nh
File file = new File("myimage.gif");
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps = conn.prepareStatement("insert into images values (?,?)");
ps.setString(1,file.getName());
ps.setBinaryStream(2,fis,file.length());
ps.executeUpdate();
ps.close();
fis.close();
dF GG#&hue _ `&hSnhj"G g 0u g hl4e g
Y2h g HnhAo7eh g dohH g de >n g h4e
Go d:`G g h$dkh
j
0nd g hTJohbc-2IVGod#ohK7h`G0odf`GG
g hh g hl
hjd&m
hk g & hG.
&e
hDG|hahh
Y&h g J2-#peYG: g h _ g h[0uJjhehooh g h7a0mJhkeho
f
ha `&`G
h$n h Ls
PreparedStatement ps = con.prepareStatement("select oid from images where name=?");
ps.setString(1,"myimage.gif");
ResultSet rs = ps.executeQuery();
if(rs!=null) {
while(rs.next()) {
InputStream is = rs.getBinaryInputStream(1);
// use the stream in some way here
is.close();
}
rs.close();
}
ps.close();
N S
Connection db = Driver.getConnection(url,user,pass);
// later on
Fastpath fp = ((postgresql.Connection)db).getFastpathAPI();
Class postgresql.Connection
java.lang.Object
|
+---postgresql.Connection
public class Connection extends Object implements Connection
These are the extra methods used to gain access to our extensions. I
have not listed the methods defined by java.sql.Connection.
public Fastpath getFastpathAPI() throws SQLException
This returns the Fastpath API for the current connection.
NOTE: This is not part of JDBC, but allows access to
functions on the postgresql backend itself.
It is primarily used by the LargeObject API
The best way to use this is as follows:
import postgresql.fastpath.*;
...
Fastpath fp = ((postgresql.Connection)myconn).getFastpathAPI();
where myconn is an open Connection to postgresql.
Returns:
Fastpath object allowing access to functions on the
postgresql backend.
Throws: SQLException
by Fastpath when initialising for first time
public LargeObjectManager getLargeObjectAPI() throws SQLException
This returns the LargeObject API for the current connection.
NOTE: This is not part of JDBC, but allows access to
functions on the postgresql backend itself.
The best way to use this is as follows:
import postgresql.largeobject.*;
...
LargeObjectManager lo =
((postgresql.Connection)myconn).getLargeObjectAPI();
where myconn is an open Connection to postgresql.
Returns:
LargeObject object that implements the API
Throws: SQLException
by LargeObject when initialising for first time
public void addDataType(String type,
N
String name)
This allows client code to add a handler for one of
postgresqls more unique data types. Normally, a data type not known
by the driver is returned by ResultSet.getObject() as a PGobject
instance.
This method allows you to write a class that extends PGobject, and
tell the driver the type name, and class name to use.
The down side to this, is that you must call this method each time a
connection is made.
NOTE: This is not part of JDBC, but an extension.
The best way to use this is as follows:
...
((postgresql.Connection)myconn).addDataType("mytype","my.class.name");
...
where myconn is an open Connection to postgresql.
The handling class must extend postgresql.util.PGobject
See Also:
PGobject
Fastpath
Fastpath is an API that exists within the libpq C interface, and
allows a client machine to execute a function on the database backend.
Most client code will not need to use this method, but its provided
because the Large Object API uses it.
To use, you need to import the postgresql.fastpath package, using the
line:
import postgresql.fastpath.*;
Then, in your code, you need to get a FastPath object:
Fastpath fp = ((postgresql.Connection)conn).getFastpathAPI();
This will return an instance associated with the database connection
that you can use to issue commands. The casing of Connection to
postgresql.Connection is required, as the getFastpathAPI() is one of
our own methods, not JDBCs.
Once you have a Fastpath instance, you can use the fastpath() methods
to execute a backend function.
Class postgresql.fastpath.Fastpath
java.lang.Object
|
+---postgresql.fastpath.Fastpath
public class Fastpath
extends Object
This class implements the Fastpath api.
NN
N4P
Nz
N U
Parameters:
value - int value to set
public FastpathArg(byte bytes[])
Constructs an argument that consists of an array of bytes
Parameters:
bytes - array to store
public FastpathArg(byte buf[],
int off,
int len)
Constructs an argument that consists of part of a byte
array
Parameters:
buf - source array
off - offset within array
len - length of data to include
public FastpathArg(String s)
Constructs an argument that consists of a String.
Parameters:
s - String to store
Geometric Data Types
PostgreSQL has a set of datatypes that can store geometric features
into a table. These range from single points, lines, and polygons.
We support these types in Java with the postgresql.geometric package.
It contains classes that extend the postgresql.util.PGobject class.
Refer to that class for details on how to implement your own data type
handlers.
Class postgresql.geometric.PGbox
java.lang.Object
|
+---postgresql.util.PGobject
|
+---postgresql.geometric.PGbox
public class PGbox extends PGobject implements Serializable,
Cloneable
This represents the box datatype within postgresql.
Variables
public PGpoint point[]
These are the two corner points of the box.
Constructors
public PGbox(double x1,
NO
double y1,
double x2,
double y2)
Parameters:
x1 y1 x2 y2 -
first x coordinate
first y coordinate
second x coordinate
second y coordinate
N4
N
N4
double x2,
double y2)
Parameters:
x1 y1 x2 y2 -
coordinate
coordinate
coordinate
coordinate
for
for
for
for
first point
first point
second point
second point
N S
x1,
y1,
x2,
y2)
Parameters:
x1
y1
x2
y2
coordinate
coordinate
coordinate
coordinate
for
for
for
for
first point
first point
second point
second point
N
syntax
Throws: SQLException
on conversion failure
Overrides:
setValue in class PGobject
public boolean equals(Object obj)
Parameters:
obj - Object to compare with
Returns:
true if the two boxes are identical
Overrides:
equals in class PGobject
public Object clone()
This must be overidden to allow the object to be cloned
Overrides:
clone in class PGobject
public String getValue()
Returns:
the PGlseg in the syntax expected by postgresql
Overrides:
getValue in class PGobject
Class postgresql.geometric.PGpath
java.lang.Object
|
+---postgresql.util.PGobject
|
+---postgresql.geometric.PGpath
public class PGpath extends PGobject implements Serializable,
Cloneable
This implements a path (a multiple segmented line, which may be
closed)
Variables
public boolean open
True if the path is open, false if closed
public PGpoint points[]
The points defining this path
Constructors
public PGpath(PGpoint points[],
boolean open)
NN
Parameters:
points - the PGpoints that define the path
open - True if the path is open, false if closed
public PGpath()
Required by the driver
public PGpath(String s) throws SQLException
Parameters:
s - definition of the circle in PostgreSQLs syntax.
Throws: SQLException
on conversion failure
Methods
public void setValue(String s) throws SQLException
Parameters:
s - Definition of the path in PostgreSQLs syntax
Throws: SQLException
on conversion failure
Overrides:
setValue in class PGobject
public boolean equals(Object obj)
Parameters:
obj - Object to compare with
Returns:
true if the two boxes are identical
Overrides:
equals in class PGobject
public Object clone()
This must be overidden to allow the object to be cloned
Overrides:
clone in class PGobject
public String getValue()
This returns the polygon in the syntax expected by
postgresql
Overrides:
getValue in class PGobject
public boolean isOpen()
This returns true if the path is open
public boolean isClosed()
This returns true if the path is closed
N4P
Nz
Throws: SQLException
on conversion failure
Overrides:
setValue in class PGobject
public boolean equals(Object obj)
Parameters:
obj - Object to compare with
Returns:
true if the two boxes are identical
Overrides:
equals in class PGobject
public Object clone()
This must be overidden to allow the object to be cloned
Overrides:
clone in class PGobject
public String getValue()
Returns:
the PGpoint in the syntax expected by postgresql
Overrides:
getValue in class PGobject
public void translate(int x,
int y)
Translate the point with the supplied amount.
Parameters:
x - integer amount to add on the x axis
y - integer amount to add on the y axis
public void translate(double x,
double y)
Translate the point with the supplied amount.
Parameters:
x - double amount to add on the x axis
y - double amount to add on the y axis
public void move(int x,
int y)
Moves the point to the supplied coordinates.
Parameters:
x - integer coordinate
y - integer coordinate
public void move(double x,
double y)
Moves the point to the supplied coordinates.
N U
Parameters:
x - double coordinate
y - double coordinate
public void setLocation(int x,
int y)
Moves the point to the supplied coordinates. refer to
java.awt.Point for description of this
Parameters:
x - integer coordinate
y - integer coordinate
See Also:
Point
public void setLocation(Point p)
Moves the point to the supplied java.awt.Point refer to
java.awt.Point for description of this
Parameters:
p - Point to move to
See Also:
Point
Class postgresql.geometric.PGpolygon
java.lang.Object
|
+---postgresql.util.PGobject
|
+---postgresql.geometric.PGpolygon
public class PGpolygon extends PGobject implements Serializable,
Cloneable
This implements the polygon datatype within PostgreSQL.
Variables
public PGpoint points[]
The points defining the polygon
Constructors
public PGpolygon(PGpoint points[])
Creates a polygon using an array of PGpoints
Parameters:
points - the points defining the polygon
public PGpolygon(String s) throws SQLException
Parameters:
s - definition of the circle in PostgreSQLs syntax.
Throws: SQLException
NO
on conversion failure
public PGpolygon()
Required by the driver
Methods
public void setValue(String s) throws SQLException
Parameters:
s - Definition of the polygon in PostgreSQLs syntax
Throws: SQLException
on conversion failure
Overrides:
setValue in class PGobject
public boolean equals(Object obj)
Parameters:
obj - Object to compare with
Returns:
true if the two boxes are identical
Overrides:
equals in class PGobject
public Object clone()
This must be overidden to allow the object to be cloned
Overrides:
clone in class PGobject
public String getValue()
Returns:
the PGpolygon in the syntax expected by postgresql
Overrides:
getValue in class PGobject
Large Objects
Large objects are supported in the standard JDBC specification.
However, that interface is limited, and the api provided by PostgreSQL
allows for random access to the objects contents, as if it was a local
file.
The postgresql.largeobject package profides to Java the libpq C
interfaces large object API. It consists of two classes,
LargeObjectManager, which deals with creating, opening and deleting
large obejects, and LargeObject which deals with an individual object.
Class postgresql.largeobject.LargeObject
java.lang.Object
|
+---postgresql.largeobject.LargeObject
N4
N
Parameters:
buf - array to write
Throws: SQLException
if a database-access error occurs.
public void write(byte buf[],
int off,
int len) throws SQLException
Writes some data from an array to the object
Parameters:
buf - destination array
off - offset within array
len - number of bytes to write
Throws: SQLException
if a database-access error occurs.
public void seek(int pos,
int ref) throws SQLException
Sets the current position within the object.
This is similar to the fseek() call in the standard C
library.It allows you to have random access to the large object.
Parameters:
pos - position within object
ref - Either SEEK_SET, SEEK_CUR or SEEK_END
Throws: SQLException
if a database-access error occurs.
public void seek(int pos) throws SQLException
Sets the current position within the object.
This is similar to the fseek() call in the standard C
library.It allows you to have random access to the large object.
Parameters:
N4
N S
N
Returns:
LargeObject instance providing access to the object
Throws: SQLException
on error
public int create() throws SQLException
This creates a large object, returning its OID.
It defaults to READWRITE for the new objects attributes.
Returns:
oid of new object
Throws: SQLException
on error
public int create(int mode) throws SQLException
This creates a large object, returning its OID
Parameters:
mode - a bitmask describing different attributes of
the
new object
Returns:
oid of new object
Throws: SQLException
on error
public void delete(int oid) throws SQLException
This deletes a large object.
Parameters:
oid - describing object to delete
Throws: SQLException
on error
public void unlink(int oid) throws SQLException
This deletes a large object.
It is identical to the delete method, and is supplied as the
C API uses unlink.
Parameters:
oid - describing object to delete
Throws: SQLException
on error
Object Serialisation
PostgreSQL is not a normal SQL Database. It is far more extensible
than most other databases, and does support Object Oriented features
that are unique to it.
One of the consequences of this, is that you can have one table refer
NN
N4P
Nz
on error
public static void create(Connection con,
Object o) throws SQLException
This method is not used by the driver, but it creates a
table, given a Serializable Java Object. It should be used before
serializing any objects.
Parameters:
c - Connection to database
o - Object to base table on
Throws: SQLException
on error
Returns:
Object relating to oid
Throws: SQLException
on error
public int store(Object o) throws SQLException
This stores an object into a table, returning its OID.
If the object has an int called OID, and it is > 0, then
that value is used for the OID, and the table will be updated. If the
value of OID is 0, then a new row will be created, and the value of
OID will be set in the object. This enables an objects value in the
database to be updateable. If the object has no int called OID, then
the object is stored. However if the object is later retrieved,
amended and stored again, its new state will be appended to the
table, and will not overwrite the old entries.
Parameters:
o - Object to store (must implement Serializable)
Returns:
oid of stored object
Throws: SQLException
on error
public static void create(Connection con,
Object o) throws SQLException
This method is not used by the driver, but it creates a
table, given a Serializable Java Object. It should be used before
serializing any objects.
Parameters:
c - Connection to database
o - Object to base table on
Throws: SQLException
on error
public static void create(Connection con,
Class c) throws SQLException
This method is not used by the driver, but it creates a
table, given a Serializable Java Object. It should be used before
N U
NSO
NS
Class postgresql.util.PGobject
java.lang.Object
|
+---postgresql.util.PGobject
public class PGobject extends Object implements Serializable,
Cloneable
This class is used to describe data types that are unknown by
JDBC
Standard.
A call to postgresql.Connection permits a class that extends this
class to be associated with a named type. This is how the
postgresql.geometric package operates.
ResultSet.getObject() will return this class for any type that is
not recognised on having its own handler. Because of this, any
postgresql data type is supported.
Constructors
public PGobject()
This is called by postgresql.Connection.getObject() to
create the object.
Methods
public final void setType(String type)
This method sets the type of this object.
It should not be extended by subclasses, hence its final
Parameters:
type - a string describing the type of the object
public void setValue(String value) throws SQLException
This method sets the value of this object. It must be
overidden.
Parameters:
value - a string representation of the value of the
object
Throws: SQLException
thrown if value is invalid for this type
public final String getType()
As this cannot change during the life of the object, its
final.
Returns:
the type name of this object
public String getValue()
This must be overidden, to return the value of the object,
in the form required by postgresql.
Returns:
NS
NS
Methods
public int tokenize(String string,
char delim)
This resets this tokenizer with a new string and/or
delimiter.
Parameters:
string - containing tokens
delim - single character to split the tokens
public int getSize()
Returns:
the number of tokens available
public String getToken(int n)
Parameters:
n - Token number ( 0 ... getSize()-1 )
Returns:
The token value
public PGtokenizer tokenizeToken(int n,
char delim)
This returns a new tokenizer based on one of our tokens. The
geometric datatypes use this to process nested tokens (usually
PGpoint).
Parameters:
n - Token number ( 0 ... getSize()-1 )
delim - The delimiter to use
Returns:
A new instance of PGtokenizer based on the token
public static String remove(String s,
String l,
String t)
This removes the lead/trailing strings from a string
Parameters:
s - Source string
l - Leading string to remove
t - Trailing string to remove
Returns:
String without the lead/trailing strings
public void remove(String l,
String t)
This removes the lead/trailing strings from all tokens
Parameters:
l - Leading string to remove
t - Trailing string to remove
N SS
N S4
NSN
while another one is receiving results, and this would be a bad thing
for the database engine.
PostgreSQL 6.4, brings thread safety to the entire driver. Standard
JDBC was thread safe in 6.3.x, but the Fastpath
API wasnt.
So, if your application uses multiple threads (which most decent ones
would), then you dont have to worry about complex schemes to ensure
only one uses the database at any time.
If a thread attempts to use the connection while another is using it,
it will wait until the other thread has finished its current
operation.
If its a standard SQL statement, then the operation is sending the
statement, and retrieving any ResultSet (in full).
If its a Fastpath call (ie: reading a block from a LargeObject), then
its the time to send, and retrieve that block.
This is fine for applications & applets, but can cause a performance
problem with servlets.
With servlets, you can have a heavy load on the connection. If you
have several threads performing queries, then each one will pause,
which may not be what you are after.
To solve this, you would be advised to create a pool of Connections.
When ever a thread needs to use the database, it asks a manager class
for a Connection. It hands a free connection to the thread, and marks
it as busy. If a free connection is not available, it opens one.
Once the thread has finished with it, it returns it to the manager,
who can then either close it, or add it to the pool. The manager would
also check that the connection is still alive, and remove it from the
pool if its dead.
So, with servlets, its up to you to use either a single connection,
or a pool. The plus side for a pool is that threads will not be hit by
the bottle neck caused by a single network connection. The down side,
is that it increases the load on the server, as a backend is created
for each Connection.
Its up to you, and your applications requirements.
Further Reading
NSP
Notas
NSz
_ hkh g q g hh _ d g y 7D
! poj _ s rr93O
SdFs
dfe
,po j _ s rr93O g hh _ d g y D
_ h g e;&hThn#4`&h
h g
dohGF _ d g n d
DhF
d
_ NC: h `77hh.
YGO GJh g #dF>C _ hc g 0m.hk`e
`lfJ Jhd)~hg d Gg AG`&h og &h:d)hh&d G g hh.h~ejdSn[Ls
`7Eej`&7e`&dhohjh.fod ^
_nd d #h g J
f_ Go
7jhoJGf
fG_ FG$h h dFdfkhdF_ U
h|J`G ahdkh
JLs
_ g g_
g g
g
g
` fGdyJ#ah g I&dFM !4LmhJ*G _ dF&`&hnd`G`GG
hfGT!9h oj _ r7r98O fohC
dferuhke g I7h|r(7d9
De &Fd *7h YhG` y7`&J &
e >h g YGF^
!#- M .E`&L 9h f&d 4G` G
z
Fd }H e S[J _7g df
lhd
d 2;e
[ B ,8. !M ! H e S[
J ] G`
n7 8h Kh
df[`&&7Fd e oh
nYL 7 h _7g d ahh h*eh# SG2d g e
fGJG` GJ ;h*
nh :0h jd n@ h
`&Fd hUIGng jhoehh KoFd *7h$ _ N g h n7`&u Fd 8
od g
Dh d g
- o d
h$e S*fFGad h 7jd
dfe d
fGF
_7g
g
7d g #
ad g fhnh!a7hhnJch -@h _7g d g ed g hn0od
d g ehDGoh g #C
dFGhk`n g &d@sujhke _ `&dN
_7g d _ d g f&dF.G
(defun demo ()
(interactive)
(let* ((conn (pg:connect "template1" "postgres" "postgres"))
(res (pg:exec conn "SELECT * from scshdemo WHERE a = 42")))
(message "status is %s"
(pg:result res :status))
(message "metadata is %s" (pg:result res :attributes))
(message "data is %s"
(pg:result res :tuples))
(pg:disconnect conn)))
Notas
N S4U
NO
`S2d g ehkd!h`u
dFGd!27hoh7#&`G&C
h _
f&d>$.
d`&7eSK#7`G
S[
j`&ehojh
d
J7`G
[&dFoh _7g dfhG
|J#k h`G
TJ7`G
fGoh^odndF*h _
GHyh _
f&dFLs
g | he
fn I ]
hK`&dYG&hohTJd`GadKY&e&`G g LTj: g [GadhHGGfG`G&C
f&dF ~/.emacs
;; comprueba los archivos con un path que contenga "postgres" o "psql"
(setq auto-mode-alist (cons ("\\(postgres\\|pgsql\\).*\\.[ch]\\" . pgsqlc-mode) auto-mode-alist))
(setq auto-mode-alist (cons ("\\(postgres\\|pgsql\\).*\\.cc\\" . pgsqlc-mode) auto-mode-alist))
(defun pgsql-c-mode ()
;; configura el formateo para el codigo C de Postgres
(interactive)
(c-mode)
(setq-default tab-width 4)
(c-set-style "bsd")
; configura c-basic-offset a 4, mas otros cosas
(c-set-offset case-label +)
; vuelve la indexacion de la cajas para que se empareje con el cliente PG
(setq indent-tabs-mode t))
; nos aseguramos de que mantiene las tabulaciones cuando indexa
g
4j
vi
~/.vimrc
set tabstop=4
more
less
_ 7hh
nh g GdFf
^
ded
more -x4
less -x4
nh
_ p7`&d;oGIGFhoh g `h`&hn g 7
g
Goh g o
h`edjd g hdFn g h
g `&y`&h
g 7h`&
UY&&hohnh
[&dFohn~jhh g yo!Ghk7hEdfed
nh _7g d
hn
o *
dF7`&jdh _ h g h
avo0h g _ fGah4`&`&
J g hda7hh8hn g _ fGF
hj`&`& 9Go
`&7h djdSy`&
hn g 7
g
>h4dFyof&doh7#&`G&C4
ha7dFn^
g h hm
h h g p h$M4MM _ Go
LsYnh
_ p7`&d:Gohoy g h`&yEdfe _7g hYGF0hk`
do g d`aho h g 4` hk`7mjd hU jd@ ho g d h`~edjd g hI7 hU 7hDn h g hf& ho
dF 7`&j
n 7hK h$he& hG `&dF g hn `&j
dF
El camino de una consulta
IedFv
ao
d g j g h&IGFw`&dF _ SdF@7hU7hhHnh g o
dFn7`&
ndfhoh g
g h 7`&j
oNd
0mh h n`&hk[ G7doEdFohuGF:hIhT _7g d g e*hT _ `G&
fGF`
nh g Gd g 7dn^
g h
m7` _7g df g 4eK h$ _ G` &E4[ GF g
ne &jh$o
dF7`&jy g hf&hh` g hn7`&
7dcho&^
d _ d g hF` nh g Gd g
!5> |#f
T
|FS[| |K# #|
am #[l h a7hky`&
Fd n7`& g
ne &J G _ d g h` _7g d g 4e h
_ G` &
f GJ
G` &h ojhL _ g cEdfe _7g dfa g 7hc`&: YGoj
G$h $
d gg h
jc* g hk g f l fo
&Ts
Xaeb
, `| p| # KS k|m |&#||jdehS` g d
` hT`&
Fd n`&j g h dh wh` _
n!d h`4 g
7
jd g
n
e&
lJ24`&e
ho
hw`&dmf2f&
eep|#
LFa7h _ 7h _ `G&
g `&h`4fl[
Kbws
X| b#c g hkG` &C`&
g S Id g e4[ &Fd oh a7O
h n9h S h hk`+ru`&Fd s |e
++S Kb++
eb|o
do g ed|o _ `G&
fGFOh`(YGnhkeh g hkhn g &j g h`& g hk`G&Ck[GF
h
`&
|
p| #
(0 &hke _7g h a7Dh h g hG` &C o
Fd 7`&j
Fd o g o Gn$J2h hf g oK #
l &
b|#fpLhk`
IGnjhe h g hh n g & g g hh n g &h`&
Fd n`&jD h` 7 g &dyh w o
d n7`&jD 7h4E
h 7h
`&
H
l&
l
|y
Sh`&y
TXpmp
Xw
y&
p|#*G&f&`k
. 7(`
&
X eES [9e YS. pfZ
Yjdfeh(` g du` h$`&
Fd 7`&jJ g hh n g &4Low g h$ 9
bEXc
@&
s
Xaeb*a7hKnh g hk`G _ 7 _ g h`F s#[l
i
hh jdc g h d _7g h &eh oh$jFd
K`&
_ Fd I&`&h He#
@ h`&h
Fd 7Eh e Gn^
ed g h 7`&j
@d u7d g hjhke _ `&dA I 4 i&&
hh o g h`&s G2a79h hOh h g Edfe^
_7hkg Ed7h
oo[& 4`80 `&Fd df g 7j
d Y&_ &`Gg Gc
df}e h_7yg 7dJ&`G &gC`& lh`No& _ &Fd
Yh&S &G` 7Gh
ad3h $h hnJ&Ye&e _ h`&`vhw
dF gjhg Gd h
hh
7[ GF9h$
g _ `&
_ o4O nhhG` &h$hh
7yg h` _ `&
e
g _ G@d
/ `Thh
7d gwg hG` &C4 7heFd d g h
g I&adhk`f l fTS |H
&
X} g hn _ h g j _ `&
h `&
2d g e g h _7g [h nh oS wh hk` _ `&
^l`ohjhk
jd g 4Eh 8
d h`| p| #
Ufp Em X
. &X #
e &h o g
h J g h Gn
d`&
g h`&4[ &Fd oh n g hkG` &C8 [
X Em &
X | f|TR fpXlha`&7
s [b m
s &
X v
o4`&eh oh hk7hk`&h`&
_ `&
Hh g &a S u
`&
^Y&a &h h *hkEf &Fd oh n4
7 g g heFd |Fd Fd T`&Fd _ S Fd G` Gj
Fd TS oh |h
e
^hk`&`&hk
_ g . g ehjd g
Fd odf &e h oj0d h`&
h n g 7
g
.h jd $0 hc
Fd o g dfA` Goh g o0d h
7d nj g h
N
hn dF
do
gg ho hT c`&dF jdFuf ! g * g h
do hkEJ& d|
&`&n g `&:Go jh g
[GF h` _7g df
hn dGe
jh g postmasteruhk` _7g df
hn d9 h g G d g postgres
o y _ `G& E4[GF
`G& ho h
` _7g d
hn dy
`G& ho jh _ 7h hHn h g h`SGo h g
hH hn 7 g & dyJ# g dFo jh L psql J _ g g h`&& C g EdFo ^
n `&j
0m.hGo h g 4EJ& a
L7d*
7`Ga & h g _ `G&
fG; hn 7 g & d9& e _ `&hkeho j
w7J& `G& C
d
`&& `G& djh
La etapa de traduccin
|#f
y#|
mp
XwEdFYGjhh
dF
_ g jh
Dh `(.#|
G s#Y@h Gdw h gram.y scan.l nh$
dFn g 7ah7#&`G&CSdw`&S h gg e&ho
yacc lex
4`SFd eH
7sh|aShky`&
eE X YId [hk.`u
s
EX 7g
hkd `G&C edFG7
[pdohT7ehojdFy`&
h g 7
g
*7h
_ g g
g
`4 g
7
d g hh
dfe _7g d g `&EShoUhT
g
h g hNhT`&
dn7`&j$J#a7h`&hT`&`&h
dfed
hm jd 0m-2- _ `&
odfL _ g $Edfe _7g df g `&`GG7hCh$`&KIGoj
uG
0f`&YGoSGhEd gg hk
k
nh
dFn g 7ah[f
D#|
s
Xnhha7h`&ahehnnhhh gg d g hdf g d
nd@
7 g G`&;& e _ `&hehofGF nh
7J&`G&C
d`&
&h
dFodfG
h gg e&hoj
h9.G
lex yacc
`y& s#f J`&h~ h g L*n h9 ho hGh
h`7 h g d
hc h` h dFn `&h97 h h
dFo d
h `&dF
p
X# Ts
fk 7`&S!
f&
l|
m&
$
clscan.l
hku7 g
g_ `&_ g *
`&ahdg G ho JG
g 7 d g
a7hho
7ho g 4Sn h$aho h g g S `&S `u g
7
jd g g
7
jd g o | fR
`
7
d hn J7 hG dh*
h` h d
dFIGn jhh) )
dF jo jd9 he &
|S
|
cg f s .g
m&
X @a 7h h g S hh
7
g7
gram.y
n
h
o
G
g g
g
lex gram.y
gram.c
yacc
Traductor
N S
hn7
Sd g
d3Ydnh:g e4hka[&hdFohono
E7 `Gahk`G&&h Cg Edf
e e_ &`&&
d)hd g `&dF>_ 77h h hGdF7J&`G&Ca hg oh h _ S g d)n g hk7 hg hkn`|h g
^
g
g g
g
g
_
g
nd g hh n g &Fd |`& _7g Fu&ehkC a7Kh nh
`&`&eSd lex d yacc
Nota: Las transformaciones y compilaciones mencionadas normalmente se hacen automticamente utilizando los makefile vendidos con la distribucin de los fuentes de Postgres.
2
h`&
hchhnhceGned;7d
7ehojd;nh. g wo7hn g _ fGFh7h`p`&
:h yacc
d2 h`&
g h`&
O h) g e #&
S h gram.y fie7 d`G& g dFd
7ehojd
Ihh g & n jh9 e&`G& g &Ck g hT
dF yacc
ohyhhe _ hkC g
ghh`&kn [& dFo &
dF`&
d elex
J& Eyacc
edFn g
h gram.y _ 7hU hydf g dedFd9odhojhh g jh
g
g
`&da 7hh J f& h7 dN
7 g c8
ehd g EdFo df[& e& ho d;7 hc`&
$ hn g 7
g
h.7 dF 7J& `G& C
h dFn g h _ g
_7hn g dS
hhn g 7Eo j
SdH7 n hK7`& jdF|J& `Gh& C
g
hk edhw j hjhe _ `&d _ g 3& `&n g g `&d
e& dF h d
g g
_
do h
j
4`
e _ d targetList 7 h`Fo d d SelectStmt
g g h h g h%4E`&n haEe7hn g h`u g df`u hTd _ h g
d g
dn g d _ g `&E`&4 7^
`&ti9 H07 h`&
dFn `&j h0u.8 S $h h`uhhe _ `&d)X a Q * | Xam&&bE 7|#N R .
b
s
Xb Xb e & X#$ m
Xae&# | Xsb&& l$ || !a eE S XS[e&
$S m|& m&
X K|
&
&f9
&
| & X# | m&
X V
s
X|&#
| . l&
!#E lbE SE SE Xi S
&b|
.f#n l
|y
X8|p
Xp SE Vl|e& mT VX
. o| V4 X YIe
|
&b| o||bp e
ee VX
N 4
E XVsX | VX
a 7hwhn JGdG`lE4e _ d qual hk`Aodd SelectStmt `AodFd
n _ h g &d g hk` g d`
hd _ h g
d g h
odFd A_Expr
g h _lg h[nhoj
dod _ h g fG f&
nh.ddJ&hoh:dFK7
hnd g h`&`&4e
dF lexpr rexpr _ oSd)dF|afAND
`F7 g df`aGd lexpr g h _7g hhoy`&
7`GG7E4[GF s.sno 2 h`Gd rexpr
h h ho
|
&7dfnh g hkd
odFd Attr h
do^
#g & h_oo g h$h`Fo dfes.sno
g hD h$=`& se.sno
h`&sGGg _ ojh g g dw9odFd Value
7hEdFo#phohh`Fodfe g h
g
h`7 g & 7jdNS7 g h`h g eGo d
dn j
o hOa 7h _ g h
hh
`&EdFn 7`&n h g h d
od7 d Const a 7h
dFo #& ho hhk`f`&d g
`NSe
sec
#|
Xa YI[.
sEXjdeh`N g df` _7g dF7fGd _ d g hk`v g
7
jd g
dfed8ho g
df
h h h
Y& 4eho h) 4n7ad@a0(^nh)ho
7ho zodd
nh
g
_7g Y d g eg h g io d7 d Queryg a 7hOn h g h`@odFdn _ h g &d g g h`&
o7haSelectStmt
hn g 7
g
h
jd
S
g g h g Y d g eh le7hn g `&hn g 7
g 9hdFy g SId g e
J2`&
_ d g hH7 hho `&d s [w |h &) f& dn |7 f & g hSo Ih d g e$
e dn hU `&dhc ho `&h 7 dc hg c o g hn dfg `&> Yd g e4hLY 7% h g ha
_ g
_
_ g
g g
g
g
d g 0n h g h`&& C)o )
de _lg dffGn df g h
Y `&dFw
X
clk
e|bE m&
X ! hG`&)mp fa eb
a|[ n dFG
dFo dfG
_ d g h`(YGn jheY7 g
Ko dfe g h h g h`&kfG8a 7hhn J _7g hn ho jh
h `pdK m[ f&
l
| |p |# .
n h g hko d dN
a 7h
dFo #& ho hh`
o de g h h`& g h`&YGFo
h`X
clkT
ef&&
*hk`p
X# Ts
f|
^&Kk|&
s
Xy _ g J g hy d g ( hy7J& `G& C
`&dF
G ho JG
7 d g h[ h g h`&fGF _ g g h h g g n hc`&
k|&
sb
X *
h
`&EdFn 7`&m dF d
`&d.o dF dF N n dF g h
dfG7 dc h} `&3bp |#
> X#|
y
&#E lb
K|
XkO 7h*hn #G Edf^
oh
S `
e _ d;|#
l&K7 h`@o dF d Query 0@n h hjh
jh
`&
dn 7`&jGho de g h h
ghh$`&k`&[GF
dF n hn `&j
d o dffG d _ g ch`AYGn he4Fn h. ha7h`&ah8 h gg d g 3n hcd g whk` _7g d
hn
d
`(Y& a& ho h _
n dhT
dfe _7g d g Ya `&dF X
clk K
yf#|p l
7J& `G& C
dFT h J
do jhG dF
h `&
g h`&kf& do hH
SK h `&
dn 7`&js7 g
4 g & 7d.a 7hn h$ho E7ho g n h$ g h
od7 d
@3a 7h
dFo #& ho h _ o h g d0o d7 d Resdom J 7hy
dFo #& ho hhk`o dfe g h h`&
d`&7eo Lf _ o jh g dy$:o d7 d VAR + i dFyo 7eh g dFy& e _ d g j
o jh hw h`uo dF d VAR
`~
e _ d varno `& _ dFY& [GF
h`& g hk`&fG:a 7h
dFo #& ho hh`m4 g & 7d
j7`~h
`&$`GGn
hho g S * h`&y4`&> h g So ad g h y
o jh
Y `a
e _ d varattno y`& _ dY& fGF3 h`
g & 7jd
ho g d h`& g h`&k[GF^ 0 hk`o dfe g h! h 4 g & 7d
o d9n h
dFIp a7hho
do g g
nh ha7h`&ah$
h gg d g On hd g hk` _7g df
hn
d. h$`&
dFn `p
Proceso de transformacin
&p Zf
sbEX
|#
e&7
b g &Go`&ehojh$h`(YGnhkeh g hka`&
Nh7dnj g hK
dFIG
#p
h
dF*&e _ `&hehojf&dohu
h*` h7_ ` g 9&Remh g #df lg `nIGnjhe7:#&7`G&h C
h7`&d
hkn` h!_7g dfG EhSkdwG
Xp
evah
CKa#7
hbcnhhn
h
Eh&e Ap_ w`&hkeochoj 4`&
g
_ g
_
G& G7`ksj&e _ `&heho4[GF9h g hk# g wh BB /
7
d`&7`&#&eyah g I&dFf&`
hk` _7g dh
d.7dnj g hHnh g
Yd g eh9dFn g h B /
#|. S hkNa& s
X. | &e b#_ (`&Yhe`f|h o| #j f GFh
y7kh|` Ym G|n&#he|: h |h Gg he`&
F7h`&dOao7hJhfGn&
hwh`&o`& eh$S`&>.ekf|
Tm
|ep
#|
s [hF`
&
X m
f [S.
[Z
[lYJ J f &
yEFd o# Go7> &e _ `&heh ojg
NN
7 g DGd g efGF
nd g h`&YGo
uG|`&$ g hkfG9h
`&R&
||[e&Sv
|kay
g h`&|h
YGnhkeK7dnj g h|I g
nh
El sistema de reescritura
n g hka`&^hSp|
f|fv
ahCHa7hHh^hjh
h|oT07Dc
do g `& g hk`&fGF
m hohedF
ao$`GGnjhT`&dF _
nd g h`G&C4
d _ d g hk`
YGnhkeh g hhn g &j g DhT`&$
dFo^
n`&jESahCa7h hEEhyow
dFn7`&:7hn7 &dEdFo
J#`I&&hojh
`GGn
d8ho8hn g _ _ fg GF}e7aGd g e`yh`v`&ag d g &edgtest_view
&
ehojh _ g GoG
de^
_7g hlYGF)
Y&
m7 g o > h g _ fG
hk`&`&S K g
nh$y#EXl|
f||fp U z ULs
@$kE
A test_view
~dey`&EFd n7`&>S _ d g `& _ g jhh$4EfGF9h$`& g h`&
! _ `&G` Gn4^2dfkh# &ad _ g g h
dfah g h`o7eh g dccd g hOh`&dF| g &7jd
7dKh
`&
d n7`&> 7h`f 7 g &@d
, ]o
7h`&
4G` G
f GFO
h`&$
`Gn`&i
H87h`&EdFn7`&7h`mn7 g &d`&
E7G` G7
f GF87h$`&
d n7`&j>
h`& _ g jhh`&
fG9h$`& g hka`&
I
`& 7h &[ GFhhw`& g ha`&w
oh g &d g `&
d n7`&
hk`l 7 g &;d nh g g hh g &w`&O I&^
a &h oOh d g e#J 9jh nOh a7h`& g hh n g & g O h
hh `& g h _lg [h nh ojf GiGojh g o8 7h`p
NP
dn7`&h`mn7 g &dha7h`&j _ d g `&hk _ Dh g
7
fGo _ h g d`&Dohk$hn g 7
g Dh
jd g h _7g [h nh o g `&K I& &h ojhEdFn7`&Ls
select s.sname
from supplier s, sells se, part p
where s.sno = se.sno and
p.pno = se.pno and
s.sname
Smith;
Planificador/optimizador
)j g h3hk`HS&
X s
Y9ef
#ppZf
fhw g hk g _ `&
h*hjhkE7fGF _ #pedN g &eh g d
` _ `&
G7
d g rmd _ #&e&CSd g hfGh _ `&
ohHhh g
ahoh g g nh
Y
dFnh$h`&dF
# _ dFhUG&
h7hGdndf g h`&
g hk`&[&dFohNa7h _ g h
hho$
dFn7`&0(&hke _7g h
huGjh`& _ dY&&`GG
h g h`G&C g ) gg GdOnh
7hof&`hyo g h`&fGFo(hedFd9a7h
Y& he _7g hHn h g h _ `&
.a 7hYf `&d7#&`G&C gg Gd@hkE7ho[&4`&h
0mhT
n7eh*a7h h7^
G dOG&
hh
o g h`&fGF
J _ d g hjhke _ `&dOG&
h"^ g hhkLfco$
dFn7`&
dFo#&hoh
`& g h g & EfGF relation.attribute
n 0
f& h g j
G
dFGo fG g EdF} `&*
`&ahO h`y&&
h"^OPR
g hhconstant
OPR hGn #relation.attribute
Go jd` h#+c#n h g h _ `&
7#& `G& CS dh`F&&
h"^ g hh _ g gg h g `& g h`&kfG^ 0 df g dFUG&
h _7g hn ho jh| `&
g h`&n
o g h&
[ & dFo hy7 h`&EdFn 7`&4[& h g j EdF o
`&ahU hG&
h h
dYG h g g
df g dF
_
g | ho
dFo g g dF dFT `&dF _ `&
o hK 7#& `G& C4`&h _ g g hGn gg h`&f& dFo h| & ES Sn h g hk
`&dF
_
h`&
o hh _ h
g
>g 7 CdF g JhjdF`&Go f&L dFg o hh`&k f& d o yhu`&IdF `
_ `&4
`&hG 7 h
G n d hyg rmd o _ #
& e`G &C4n
`&d !g
hdY7G
hyh g
>d Y h`&d dFg o7^^
g
g
_ g
g
gg _
& ho jh|Jh hf g _ g T`&
7
7`&h huG jh|o g hn g &
fG
dfed WHERE rel1.attr1=rel2.attr2L
h `&
7`GG7 EfGF:7 h|`&i9 ^U 0uh|aho h g Sc jd7 d `&d _ dY& `&h _ `&
o h _ g T
T g 7Eh
Q
|svj S`&b*e|h
os
p
dFX.o
X
h|J#o`&h nhh9`&f&jGh Fg a#&&C
dFa&dh Go7Ls|u ng jhG`&4hYG
47hhg &h h !#h fg&`yh
d hOgg &he _ `&gh ^
g
_
eho gv_ _ h g d _ 7hh$g
dFn7e g g e7 d#phe _ d@g
Q |&as7jFdS*:fhk
`KX
s7
EhGXG
ojZ
h s.&
8hGJe&f h &g ahhn`Kd g f7j
dFhGGoe LsGne
Nd fIg hkh`& fG*hnhGd eg hhC4oE
`&S} `&_
d .g `&dFd
g
g
g g
_
gh7`&jkdf &d ohkh `oy h
&hh fnd*jhh e8dFE7h ho`&d9 hy7 hw7Eehyh
eg h
`&f & d o
h #&ahd J
d8dag77hyhEo
7 hk_7`&g [dGGF`&dF3y7h g &h ^
g
g
g
_ g
g
nh g gg G Y`&d oyahC
Q e&aam 7jFdpX
|
h`uJ
7 Eh d G7
sL Fdlo# Gog hk7`&4[ [ G&F7 nh$h`& hh g `&h h. `&4[ h GFG
&
C h a~ &_7h g &e4h wg 0d `&Fd nTdfa g h `&d n h
_lg g d _ &Sd_ Ug hESg j _ `&ho
d g
!nhy7J&`G&Cgg
*Edfg ed
`&ahKGhg ~
_ g y`&d
g `G&^
C g `&S Tj _ `&
^h`& g h`&f GF
h g h
Nz
h
E
h
$
L
h
^
`
n
h
a
d}G7d`
g h`&4[ GF
nhd g h o
m7d g h`&`&dh o
d o g 4ed 9oFd d Sort h
7 _ `&
^Y7
4`GG
fGF
&f&dFo`N7
h`&
dn7`&j*J s.sno 2L^hhopGj
`&hjdF
ded8h
_nFd I&`&`&
h^
nhy oh`a
e _ d qpqual h`& g e SeqScan h` od
d hk`fEd gg h _ d &h oh
_
TG` Gn G`
e _ d mergeclauses h` oFd d Cruce Mezclado (MergeJoin)
Fd o^
#&hohGd g e4[GFOndf g h`&dF4 g &7dFyh g 7
hedKa`&d g h 65000 65001 h`&dF
e^
a7hw _ g h
h 8h 8`&G` Gnj mergeclauses J)e Gh 8`&
_ Fd varno )`&d KoLd e7Fd h nVAR
Ejecutor
N 4U
NNO
` h dd f&do`
EdFoJ&hohyd _ f&dFohDhy#&hke _ d
hyhh
7[GF)7J&^
`G&C
g _ d g _ h`nh g Gdata/pg_options
d g_ g
do g d`& g `&dF)ehjh0hhnh&e&hojdttdf g dF _ g ^
eh g Fd yjnj`&h>h:nh g Gd g Sd;7h Ehhjh h g d3Goh g hSohhh` hk d;h
a7hh g hk^`&hGd _ d g hnh g Gd g h g hf&hco
nh]o`0m-2i9k f&hd
Y _ dFY&`&h
kend/utils/misc/trace.c backend/include/utils/trace.h
7d g hhe _ `&df n _ d oeFd >a7h a7h g heFd $]o
g eh nnh Kh nh &
e &h ojd
d &f &df^
o` _ g eh g `
d o7e g &
dj nj`&h`Kf F&adh }hk` h g d foo.c ~d d`&ad 7h
oh
h Y&4ed
h g h v]o
g `&EFd nS o*h D S% abcbt.
b
% bwbc
% h bac
kend/include/utils/trace.h
/* file trace.h */
enum pg_option_enum {
...
TRACE_FOO, /* trace foo functions */
OPT_FOO_PARAM, /* foo tunable parameter */
NUM_PG_OPTIONS
};
oy`G&oh
d gg h _ dF&hojhh
backend/utils/misc/trace.c
/* file trace.c */
static char *opt_names[] = {
...
"foo",
/* trace foo functions */
"fooparam"
/* foo tunable parameter */
};
NN4
#include "trace.h"
/* int my_own_flag = 0; - removed */
#define my_own_flag pg_options[OPT_MY_OWN_FLAG]
#pid
[29271]
[29271]
[29271]
[29286]
[29286]
[29286]
[29286]
[29286]
#message
StartTransactionCommand
ProcessUtility: drop table t;
SIIncNumEntries: table is 70% full
Async_NotifyHandler
Waking up sleeping backend process
Async_NotifyFrontEnd
Async_NotifyFrontEnd done
Async_NotifyHandler done
NN
h` g
n g d _ g Khkh
j g h gg d g h[Td _7g d`&hke
|h`&
nhhDdFn4dw
`&
7`& g hnj
Gn#&
h$J &he _ d:h$`&
g
n
f&doh
Fd eh nnh
&e _7g hndFhh`Un`&df7#&`G&CS`&f&`GG
h g S g dibc%
bc M
` n
d :h n n`&d 7hh.h
do d`&
dF`& _ %d _ #&dFan`&dfN~Ihn g f&
7ehojh
e7
> of &d oh_ `&`&e
hg g h
gehohw printf()
O&e &e nehjhh
n# df77
d J h gg 9 n3 G` & od _ 7h h h g|g h g & G7y n_ g `&dfGd_7g h oh g g G&
f &d h g d^
odG` f &ES h h`&`& 0uh g p h hk`&Dh a7hFd
K`&
K`&`&eS
K _7g GoJ h g S g hhe _ `&kC
S
d8`&e g d8|-
@)`&n`GG7n#h gg 7hnhc
e&
_ g w7#&`G&C4 g |-9)h
n)`&7 g S h$eFd :
d a7h _ d 7ed
d o g d`& g jd
|`&
HnG` G
^h eFd d Gd g eh
u` o7hkdehkES Ged h`&
_ %d _ # &Fd Kh v
e
d oah &h oh a7Dh h g o7hkS d _ f &df^
oh Hh n9
& h `&Fd Unh g Gd g h _ d g a7h
`& dY~jdh ohSe`&Fd
ad 7Khf&7dFoh h hg nJ
9079 h&j G
Gh
g dfh eod h _ `&g
7
`&Gahh> ah7*Kh 07h7g 4 eh d dThE~Fd oh g odfd ^
_ g
g g
`&ge4Eh o dwh _ hF` g h
jd g &:d 7h jd
edc`&eh h oohehyFd `&
Hd 7h f g &hd ogh g
o7
h ` g n7h d nGj d g h n_h h g Eh4f eG7 ES& )g h` `uad `&nd jeg
hnh `& oS d S _ f dG^Y
d g ^
_
g g _
_
g _
nh g Gd g
7
dnh gg oESdN d g ndF*`&hGdHh$97 h g dN
7@d Fd 7hd e7FdheEd 4e hc& h g j`&hw
ed Fd _ f ;d&d oGoh aDh nndf# & g hy`&4`&ea og Fd ce df&h `&oh eg
h`
# h &ag
Gd dGg `&h Fd n# e
h d gg&nh oh ^
Kh nh &
e &h oj9d If`&d
7
d _ g h
hhg ` _7g d`&he_7 g I7Fd heFd je G3Gh oj g Ghk^
g hojh|a`&d g hHh _ g eh g dTnn`&hu
(` d g ej
d h`&
pg_options h T
dfed Y&h
# comment
option=integer_value
option
option+
option-
#
#
#
#
set
set
set
set
h h g
n hG4`T
_ p7`&d`h*`&aRb
epX|#|
f!nd g h*`&
wd _ [&dFoh
7hG#&hke _ dih
hh
7fG _ g o y`GGn j
dfe _ `&hj hd _ f& do h*n d _ d g S
Ej7`&ehojh
`&d
h`[F& dGhGn jho h>a 7h7#& `G& Ca g & `&h _7g & a
h!Go h gg _ jd g hhd _ f&dFoh
nh
8
e&
d _ g
h g n d3 h`&
_ dFY& & `GG
hK h`&
_ a%d _ J& dn eho^
4`&eho hh postgres.c
u 0mh p
hn h`&hedFG
jd d8h`K
dF& adhuGn ho hhhnjh
n ho #G7 d hed7 d0a 7h _ d eg dF
h g n d0 he7 g dK hc`&dF 9& j h h `&w`GGo hk: h
de
7 d: hD dFn g h _ dF h g ho h g e
T d _ f& dFo hT jn j`&h| EdF `&7a g &
d _ g
Y& 7 g `&dT a`&d g h[*7 h`&
| d _ f& dFo h
Notas
NN4
NN S
` h*ekdFdOhYa7h7 h g &n#&
a7hd _ h g yeh&
ojhYa7h>hjh g e&^
o
`&hkd g &S7`
dFjojdh:nd`&7f&dFoh _ dFY&`&h _ g hk` _7g df`&hehc`&d _ J&e&^
CYGFnh
dYGh g
dfed*o.
l&
sp
X0hXa
p
f`l g
d9h
_ jfGFhc
G& G 7dh9n *hojd g odhnj>hjh g eGo
d _ d g n3
f
l&bp
Edfd g 7 ho
U h8G& G 7dhG
h`h _ f& d h`&yYa 7h Shn#S g h _7g hnhoj
_nd g n `&hdF
$ fGsFe
0 E heE G
fdhe dFhnn dhoef& a 7 h
ddG7 o
yd3h` h4
`&
d h o h
D* hc
&
g d
jh g h
elhk d X*h h$ >o h
g
g
_ g g
nh g d _ J& e& C
d@Y
| dFG7 E4[& dFo h # _ &
_ g
ah _ 7h h
n h g lp Xf|b
|d: Xe|
}h& o h$`&KI& e7`&fGF9 h$d _ h g f& do h hkdf`&7#& a
^k s
cl X
s
Xa
mp
Xak|e& sp
X
nhho
7ho g S3o 7ha
ho h g f& dFo hD h _ dFK7 hYa 7h 4f`&d$
7`&h eh g
ed g & ah`F h
_ 4& `GG
0a 7hKn T So h
h d g h
NN
+=========================================+
|> Algoritmo AG |
+=========================================+
| INICIALIZACIN t := 0
|
+=========================================+
| INICIALIZACIN P(t)
|
+=========================================+
| evaluacin ADAPTABILIDAD de P(t)
|
+=========================================+
| mientras no CRITERIO DE PARADA hacer
|
|
+-------------------------+
|
| P(t) := RECOMBINACIN{P(t)}
|
|
+-------------------------+
|
| P(t) := MUTACIN{P(t)}
|
|
+-------------------------+
|
| P(t+1) := SELECCIN{P(t) + P(t)} |
|
+-------------------------+
|
| evaluacin ADAPTABILIDAD de P(t)
|
|
+-------------------------+
|
| t := t + 1
|
+===+=====================================+
dG7
dF _ d g
ho
*hhojh g d
ho g h _7g hlnhojh`d g h8h`&co g h`&k^
fG9 h A7 h`&yEdFn 7`&y`&>Y& & ho jhYn h 4h`( g df`Fh$`&y
dn7`&j
/\
/\ 2
/\ 3
4 1
hn
dFG7ESd _ d g `&
hoOhwhoh g dFy#.^^,^!#a7h
Y&G7E4o`& _7g &eh g g h`&fGF
h$ GF*#.#m#p#pS7h _ #p,#p4h _ |#p!4#pSdFh4!4,44.nd g h`GG|h97dnj g hu
7 g jh ^h`u
e F7`&dbc! S8YGdw
_
SH7h`f`&ad g &edwh&d g hI0n &`&hk(
|
g k
h g &J &
|h _ hf G7ES*h`&&e _ `&hehofGF0hbw!h97dn g hHdF^
jf`fG 8:d hh`& df `&hfG9o| u#o
dhs `
Xh| hk#eEX #v`&J Cg hde jdf_ `&`FCkOd hhG`&Fd a*h&oh & [GG7FoFdL h
Fd e*&ehh
odFd og
h _ h ^
_
g _
g
_ g
g g
g h_ `&G
kd eh no7j`&h y h Gf & _ J `&&
hoe h d ehjdCgFd
oFd `&h hw
Fd 7`&j njd)h h nh of &` _ g hk`le
ohd
_ g
NNN
a7`h nd2hh)
dm|ahkm`u`G&
e&jeh$me
cholpd X
sph
X2h bpG&l#E
S O 7h`&hKnnjd`&7h f_ GFh8f&7`&he`7ho jh)d
e _ h&d:d _ h g
g
g _ g
_ g
_ g
&d ee7h
4
[GFGnGeEFd df*edh d _ h h g fGf FG*F h $J&
ah onhh g hkEdf e&n&h h`&h>`&h^8hhF` 7 h odhk
9oh
hn^
g
g _ g
_ g
g g
`fe7`&dbw!
_ g dw
d `&>& e _
7 g `& g
K
dn7`&S*h# _ d A h`u
nd.hJ&he _ d:h
dfe _ 74[GF _ g d _ #&^
e&C g hk#&
h`&
dn7`&j _ g h
hnh g oI&e _ `&hYfeEsEX8hk`#&hke _ d9a7h>oh
hY&
7dnj h _ g `&`G&h g fG0hehked g &eh&
ojh`& g 7#Go MemoryContextFree7h`
g & ag d backend/utils/mmgr/mcxt.c
Ih g
d
nhyedn g 9a7h>nh4
n
yh
7E`&h h`p g 7#Go OrderedElemPop g &ad _ backend/utils/mmgr/oset.c
m7d|eGn^
ed _lg df`&he
_ g hE[& h g dF
dF
dn 7`&S `& g a
E7
d
hn ch``&ad g & ed8o d g e`
h$d _ #& ep CfG9 h7 dFn g h
Mejora de las configuraciones de los parmetros del algoritmo
gentico
b&_ he#&edO&C74[h$GF
d8e h`7_ j`&
fG9hEdFn7`&
_
_
h`m &ad
7#Go
NN4P
Referencias
Notas
NNz
_ 7r g h[hk g rndj
de _ rwrmh`&
dfeh je`
h 7#& `G& CGhn df7`&8G2d g efG}h}h`y7 h g d _ a% EdFJ/L _ g 9hjh g eGo g a7h
G d g efG)
& f& do 4` hy7ho #G7
fG3o h
hY& . h` g dFo h8
J#YohuGjhL7 g h _ dFh
`( g do jh* hG
dFo Ed g
o f&
` g do jh
ho & cho dFo
h
7`Ga & h G d e4[GF h7ho JG7 E4[GF h 7h G7 [o
ahCKa 7hh` _ dn je
n h g a`GG $hn G gd g e4[g GF g h _ d7 h`( g dFo h0 7g hhn #g$ 7ho #& ^
7E
7 dGho g hkao c
dFo huG)
c
DhUI `4EDh
ho jdo
h ho p c)
ehn njh
G&
dG gg a 7hw
d gg h
dJ
n d9o d g e`&Lvd0 `&`&dGJ _ d g hjhke _ `&do dfe g h. hcS h
h 4dFHGo `GG dfLs
K 7Y& & ho hy
de&
f& dFo h!n dF _
7hh> hw
dF 7`&j g hn 7`&
dFKGo h g
e^
&
dF ho g hh`A g dFo jh 4EDhU[ ` _ dF je
n h g o d0Go h g & ho hwh `&wEdfe&
^
fGG d g Go g & 7 hy
dFn `p
r g h 7`&j
dF
n 0(GG he g dh` _ dFn e
n jh g n hGo ad`&7 g
7
o ^
dh`y g do jh h hk*
o
h`& g o )
dFn 7`&;a 7h8n hhn #G
h2 hk
7 dh2n
DhU
2
H7 h4`&`&h^ df g h$hn jd _ g hE
h
e
| ndN
7
dhk` g do jh hn h! hn
dFo h
g ho & _
a 7hjh _7g d _ &
dGf& h gg `&
do h^
GF9YGG
h _ h g g o g h _ 7h j hk`ua4EDhU
dF _
a 7hkhU dF)
ho & S d
dfed)
7mjd9 h jd
I ` _7g & eh g ajh hjh g eGo 7h!n h
hh g p h _ h g g h h` g hn d> hk` _
a 7hjhR Thm
h _ fGF:n dFw
`&dF Sa 7hjh ho & S d@ hY h
g dFo h ` _ dF je
n h g a`&dF
7`&hGo
`&7h `&`&dFo & a_ h` _ Sa 7hjhwh` g hn d8 h
`ksn jG h g ho f& h Gn # g & E
Protocolo
n;nh
fG hn g &h)h`mdh*ehnnh
GnjhE7 g d# _ d
G2h g h[ojh
h)7ud
h _ h& h d
hk`hnj
d9h`pw
dohGF^lG&f&dfEdFn7`&u`&`&e
h>2ofGF8o4`k
NN U
Inicio
gg d g |h _ d
h
` _ dnje
nh g f&h gg $`&yEdfe&
fG8Goeh&jehh
7 h oJ &E4# &Fd obwD
` _ d nje
nh g hodFo
hK
hhT`&$
dfe&
fG4`~
DahUk` _ dFne
njh g oddfe
_ g hh `&yEdfe&
fG _ dFnh g &d g ehoh
7 h oJ &E4# &Fd oh g h g Fd n$.
` g d ojh 9hhjde g_ g hh oK G4`&d:
d 7h7jh oJ G
f GF$h g h g dFK$.J#od
h n g &jd
a &Lu
d hk` _ Fd ne
njh g |w
n!d h &jdh` _ d nje
nh gg h _ dFh
d
7 h o# &
J &d obcDh
dw
d o g g &d g h _ Fd h
d 9 gg d g h _ Fd nh
7 h oJ &E4# &Fd oh g h g Fd n$/
` g Fd ojh ;hhdfe g_ g jhh * 3G`&df
NPO
_ehhJ&[n&ndFohh
h h)d
dFo
hp`&4
[dGFoJGoe7
h g
l7h
`* g d dFod hpoed2h7hnnh hg & hgSh _ Fd d ch 7g h (h njh
_ g _ g
g
_ g
g g
hk
d g c7h g
7` gg
a7:
h h`
Dh 7a;d u&jNd S` g Fd ojh _ 7h hw d g h o & g ehnh
h _ hJ &f &d oh Tdw`&`&e
|> of G^
gg d g |h _ d
h
7`4 gg
a7Hh hk`44EDh :od7a>d u&@d R
d oh GFwh
h gg
* h _ 7h @hKh o & g
h nh$eh nnjh
df# &
h|h _ d nh
0uhh o p* }eh nn9h h
ah g [h of & 7y` g Fd ojh zhkah g pGeFd n g g }eh nnh
_ hdg ;d nh hh g pEFd oJ Go7 g G`&h _ h g
h eh nhhk
d g c7h g 8d gg d g h ^
_
`meh nnh$|h
d g c7h g ch hk`m
e Gned a7h$hk`m
Dah 8hhh o & h 7h ^7h
f&E`&0d hw
d n7`&j Ih _ h &h ;d hc`&S oh
h I&
7h 7hwEFd G7
8d hg ` g Fd _ ojh ah g 4^
CFd o`&h
d YGh g g hS d g c7h g
de
d G&f &
d )f &
`&Od h
d n7`&jcJh oFd o
h
"
Dah$haI49G&
*o)
do
`&YGF
d gg hkEj0h`&0
nh97h9G&f&dLd
dYGh g g
hk
d g c7h g
ded oG` &CS d`&9 2S h h gg
a7h8
n Y& &h ohf &
`&d h
dn7`&
.}f&
`&dihG
dFn7`&;nh0G&f& _ d g h`^ g dojhho&
7dehnnh)w7h g `|
^
DahUY `a4EDh) ho jdFo Eh ho &yoddeSehnnhh g h _ hn>h _ h&hd:h`
Consulta
NP4
g o
nhojhof&
Gh g jJ`&Lhk`
Dhho&ehnnhdfe _ `&hjh|h _ dnh
EdF.h(+-0N rows(Adh rows h|h`(o7eh g d.h7`&
^Gnh g
S
oid h h`u-I h$dkhjdoid
h$`&>7 `&>Gnh g
7KY rows hThd g d
nd oid hTM
g co n ho ho [& : h`&hjhJ`&Lfh`l
Dh
ho p 8
ehn nhcdfe `&hjh |h dFh
EdF : h(+I rows( d h rows h hk`Fo eh g d h7 `&
_ d gg
_
g o ho ho f& _ jhJ`&L7hk`
Dah8 h p c* ehn nhdfe _ `&hjh |h _ dF h
EdF : h(k I rows( dF h rows h| h`Fo 7eh g d: h7 `&
edG7
_#& dFg ^$[o * hkn aho jGho d
f7 & h hj J2`&
LadFd.* n h`&* h
ejJ2`&hLknhn`uh
Dan h[G& G|dh o d& $"Go eah|dn n h$J7 hdfhIh & h g _ d ^
h:YN h _ hfG7 E
7 _ d)
g d g Go g & dfL _ g
O7 `&
a 7g hhy ho p
_ ` g dFo ^
h*l7 d g 7`&#& edfh`l
Dh ho p w eh jhcde _ `&hh h _ dFn hw
d j
h$(+0o D ([
e
&hh` _7g d
h
7dwjh g eGo
nh$
d8 u&dwd
dh gg d g_7 g
df# &
h|h _ d nh
.eh nnDh h
ah [h of &K h o &
dh h`&f GF
Fd `&$
Fd 7`&j mnj
K
ah ^
h of &
Knhwh o &
8h 8g
&[ GF8d g
g h _ 7h g j
nh Khf g h`
Dah EFd oJ Go g g
_7g d
hnd`&nhojhof&
.
g Fd oh 9hhh n gv_7g h _ g
d _ g $
h _ j g eh nnh gg d g h _ d nh$
df# &
h|h n^
_ Fd h
7
.d nhh _ h g h$
7G` &h g df g dw# _ :d h$eh nh
Ih h dh _ d Y&`&h 7h dfJ &Ehkh _ Fd nDh nh g hf &U GoE`& nd
7
dyhS` g d oJ oh Oodh n#
h _ h g 7daGoJ _ dhhehjhkh.hf g 7
7
d8h`K
DhhnJ0od g e4`&ehoh
Go
# &a@d | _ g # &
7`& g
h` g Fd oh _ 7h 7h ndfG` &[ &j g `&D G` &Cf G:h`
Dah *ewh nh
.f&
`&d;hc`&`&4e
OofGnh:G&f& _ d g h` g dojhho&
d*ehjh:o
^
#& dFo 4`&`T`
DahUF `T4EDh ho jdFo Ehho&od}deSehnnhh g h _ hjh
h _ h& h di7 h`&dF g hn 7`&S d h`&`&`&eSofGoKo`&ehojhtehjh
Llamada a funcin
NP
hk
d g c7h g (4hk
ad g c7h g Gd g e` g dFojh7h _ 7hhho& g o
o7ha
Respuestas de notificacin
77hheh g h
h g `& _ ho _ oj g 7h`&dFodfe g h7#&`G&C4
dFhG`&d
dfe
dF`GGnh*
odJG o d:oh
hY&SGjhoh g o
7Ka7hah g
d`&dF*odfe g hHh g h`&f&dFoh|J`&SLaw
nh
hU dFK 0m:*mdFHodfe g hhodJG
fGF
nd
Y&e _ `&hehohDode g h| g & g g &eho^
hD hk`&h
[& dFo
dF
NP4
I g
ojhhk` _7g d
hn
d8ho
dn7`&4hk`A g dFojh _ 7hh.nd`G&f&j g `&wESoEhk`&fG;7h
`&
dn7`&eh&Sohwhk`hopdhwo _ h#&f&dF _lg d _ &` _ dnje
nh g S _ hJ&fG
hw
o
h`&fGF`odhyho&
O g hkEjkehoh`
Dh _ d gg 4Cdohhh7f&hof&Oh
&e _ `&heh of GF^o
d h nheFd jh oh g 4`
Dah }
Fd j
ojhehojhGh _ h g do7had
jd 7h` g d h g
ohyh` _7g d
h n
d h
Fd n`&j
lS hJ&[&dFohDhy
o
h`&fGF
hh g p
nh gg hk`&# &aeh o.
h G g h
7h ojh n _ d g `&3d a7hw`&
_ hed _ dfEd*e
adf`&7^
eGod n
d Gh(` #G9hh & g o _ h o4G` &Cf GF*h Ghk`u
:d od g ek`
7 g h o & g o _ hJ &f G8h
o
h`&f Gohk` g d ojh g h$ o! o7haEFd oh uGF)
d Gh`
_hoFd j&e
&noh d g eh o`& e&ho jhyehh nho7
hko
yh
`&|dFoh ha7Gh F^jkIh ` adhCnjeh
`neh h nndh
h0mnj g yj h_ 7j
DahhkJ(&faG7 h
h gg g g y`&yg
d oh uGF^f7d gKg CFd oh Hh nh g GS S o_ Od nhh o &yg| _7og g h _ g7h nj _ g h
j`
eh nnKh h$
o
h`&f GF^
.eh nnh
o
h`&h a7h n^ nh g
& od g
deh oFd a7h
d ojh oG`&Fd
e Gned jFd
o
h`& g EdFn7`&
` g &hnad0g h:nha g G
_ hyg
g dFod g hag g &hd*_ `&
g `&hhk g hk g
ah oh g
K G4e &E4eh ojh
Finalizacin
NP S
nnh
fGF87hn g &d`&dFTJ _ Fd T
Y&
dF*hK4dF7J&`G&C
dFh`&dehnnh
-o nJ iL
.hojh g d h8d g 7hhchKh g hU0 i hJh _ hfG7
dGh$h`la`&d g `G&h g 4`k
h -#o<-on,4!J.!Ls
&e0m g Go nJ sL
8 k;
hw
kEjh h hwh m
jehojh ajhKGoh hkd)
dfedoESho
h g e Gogg
yh )#mg M# f`ag #mMF# nhdfe &>h Yodh nGnhyh _ f&gdO_7gn7f&hohE0 s hnJh _ h^
[ G7
dch ojd o
h h h`f4`&d g G` &h g 4k` s h Y&e0m g Go,!S&e0m g Go<.J(nh g (+Ls
0u g GoaJ sL
oc
h o> h
Fd oah of &d o`h g
e Go
h )#mM# YG)G` &e &j[ GF;hy`&Fd o &j UE0
hs n# h _ hf G7E
7h |h`fa`&d g G` &h g 4k` s h 0m g Go0u g GoJ(+ nh g (YL
Nota: No existe lmite predefinido para la longitud de una cadena que puede ser
retornada por el backend. Una buena estrategia a utilizar por el frontend consiste
en usar un buffer expandible para que cualquier cosa que quepa en memoria pueda
ser aceptada. Si esto no es posible, se debe leer toda la cadena y deshechar los
caracteres que no quepan en el buffer de longitud fija.
"h nJ cL
~Ejehh ajh
l0 c hn#h _ hfG7ESh8h*hk`4`&d g `G&jh g 4`k hl"7ajh|"^
h4J2#(o#LY n
Formatos de Mensajes
n!nh
f&d0hn g &hh`d g ejd
hj`&`&7d
hE
7yehnnhE
ood
&
d _ d g 8 g dFo hG J L _ d g
Dah*J"Ld _ d g edFTJ#w"Ls
nfG&df
_ 7hhnh g ho^
J2"7L
"ajhJ9#pI#pL
- h oJG7EGh`ehjhEdfedo3`&8h97dF 0m--~J#.ehjh hkF&d
|dIh g _ #&dF9hohh`(o7eh g dhE4e _ d|h`&7`&:nK# _ dF^hD_7g jdFLs
"ajh n
.we _ hT &# vEFd w & _ g ES E4e _ dyh w`&D 7`& e` _7g &eh g
e _ d
d g ^
gh &a _ <>Fd h` hy&`oe h &=wa#J }jh0"h`u@L df
h`4_7dwg &Ee4he g daj
hd fhk`h nhdFh$d*`u
&e M_ dJ#
0md "gLg h h_ ` Fd &ehyh `
hkfhA` o_7dfg ah odg
e _ dG
d gg h _ d 7h_ `l &gg = _ hA` nh dGajh*
YA_7n7g Eh Y&g ^
aeh oh
&Kh nJ 4EJ &a;d Yh`a`&d g h`
e _ d
d gg h _ Fd &h oj:h odh
.U
0 ohA` o7eh g 8
d h
e Fd Dod)h e7`&# _ `&0d h > uh` g h nj0d hk`o7`&# &ed
hhh`fe _ 7h$&#Hodh|_ 7J&`G&C
d@
NP
7d
g `&dwSodf _ g
$E4e _ dw
dFa`&d g o d9jhohedF`&dY&a&hoh
-#o,4!
_ hfG7
h`fje]od7h`ua`&d g h`u
e
_ df
Go
`&7ah7dhnjhe4]odN
"7ajh n
_ hfG7Eyhk`a`&d g h`
e _ deGnedhGE g h g h 0m--Y hTh`Soh^
gjh&d g 0jehkah]od]oe
h o`&dFd.$I.lad &h h$*o#md@M #a`o`hk`o
e _ d9h4ndFnfh` g dFo^
g
g
7 hoJ&E4#&dFobwDJ"L
"ajhJ9#p#L
#- h oJG7Eyhk`uehnnhEdfedo _ hk#&fG9h7ho#G7
fG^
-oj,!JML
_ hk[ G7
a7h`&y4jh oJ G7Ef GF7ad &jdN
7 h oJ &E4# &Fd oh g h g Fd n$.J"L
"ajhJ9#p#L
#- h oJG7Eyhk`uehnnhEdfedo _ hk#&fG9h7ho#G7
fG^
-oj,!JL
_ hk[ G7
a7Kh nh g h &h g h7jh oJG
fGFG$h g h g dFT$.
7 h oJ &E4# &Fd oh g h g Fd n$/J"L
"ajhJ9#p#L
#- h oJG7Eyhk`uehnnhEdfedo _ hk#&fG9h7ho#G7
fG^
-oj,!J!L
_ hk[ G7
a7Kh nh g h &h g h7jh oJG
fGFG$h g h g dFT$/
7 h oJ &E4# &Fd .oh o g _ h S Ind g GJ2"7L
"ajhJ9#p#L
#- h oJG7Eyhk`uehnnhEdfedo _ hk#&fG9h7ho#G7
fG^
NPN
-oj,!J,L
g hoy
do g
nh]o>odh g _ j
7 hoJ&E4#&dFo g _ jh7
Yd g *J"L
_ hk[G7
a7hKnh g h&h
"ajhJ9#p#L
#- h oJG7Eyhk`uehnnhEdfedo _ hk#&fG9h7ho#G7
fG^
-oj,!J.L
_ hk[ G7
a7Kh nh g h &h g h oy
do g
nh]oyho g _
"ajh!
7` n`&jd7J &G` &C g `fh o g _ g `&
Fd o g
nh]o
"
Dah $haI4J"L
"ajhJ9#p$#pL
#- h oJG7Ehk`kehnnh
dfedo
`&ah^h|
o
h`p[GF^ ` g dojh:hkh| g g
h jFd K`&d g hDnhhnh _ dh g ho& g ehnnh|
o
h`&|ha7h _ dFjh g &d g ehojh
-oj,!
7`-I 7h _7g d
h n:
d h`u
Dh U
-oj,!
7E`&4Dh hk g hk hh nha4EDh U
"Go g a|d J"L
"ajhJ9#p"#pL
#- h oJG7Ehk`uehnnh
dedwo`&Khjd|Go g &dFunJ#ehnnh$dfIhk^
n g _ # &dF _7g h&d:hohhk`(o7eh g dh
e _ d|h`&>7`uOn# _ dFUhDdFnL
"ajh n
.we _ hT &# vEFd w & _ g ES E4e _ dyh w`&D 7`& e` _7g &eh g
e _ d
d g ^
g h &a _ >< Fd h` hy&`oe h &=wa#J }jh0"h`u@L df
h`4_7dwg &Ee4he g daj
hd fhk`h nhFd h$d*`u
&e M_ d#J
0md "gL g h h_ ` Fd &ehyh `
hkfhA` o_7dfg ah odg
e _ dG
d gg h _ d 7h_ `l &gg = _ hA` nh dGajh*
YA_7n7g Eh Y&g ^
aehoh
&KhnJ4EJ&ad;Yh`a`&d g h`
e _ d
d gg h _ dF&hojh:odh
.U
0 ohA` o7eh g 8
d h
e Fd Dod)h e7`&# _ `&0d h > uh` g h nj0d hk`o7`&# &ed
hh h`fe _ 7h$ &# Hodh |_ 7J &G` &C
@d
7 g
7E4e _ dw
Fd * a`&d g GnJ GoO
d 7h 94h oheFd T`&Od Y& &h ojh
NP4P
-#o,4!
_ hfG
h`je]od27h`a`&d g h`TE4e _ dh~E`&7hd}hjhe4]odN
de _7g df g hn df _ d g a 7h$
a u&
h%hm
`&7hdf%c
ojh|J2`G&oh$=/<kL&^
h^Go
`&7h d
"7ajh n
_ hfG7Eh`4a`&d g h`4E4e _ dyeGnedhd g e4dyGo g &d@ n hh`~je]od
_7g h&d@
o
h`&|ha7hJL
-oj,!J<4L
7`je]od:h` _
7hhhajh
-oj,!J > M > ==4M!L
7`u[ F&
d h$
o
h`&4[GF
h h#&fGF^Y`f4`&d h|h`&hGd Ka7h
dho
(+4!,.4(h`l`&Fd y<&JeSY&_ G
J&adn(+/<k= g > (h`&dF<_ &g #ehodFY&&^
7
J &Fd
e7 g h & g
d YJFoh nhTf &a!d o!d hka*h nh g h`~
e Gned a7Uh Goa
o7eh g .
d hah g YG9hk` _7g djd
df`&Nd
-oj,!
7`-I 7h _7g d
h n:
d h`u
Dh *dfhJ &aNd
-oj,!
7E`&4Dh hk g hk _ g $h`f
Dah *dkh
# &a@d
dfe _ `&hjh |h _ d nhJ"L
"ajhJ9#p#L
#- h oJG7Eyhjh$ehnnh
dfedo _ hJ&[GF
de _ `&hk
0u g Go
`m
dfe
Nd |d g e`&eh ohJ _ h g >d od.I&hke _7g hLo _ `& g I&e _ `&hDa7hGho^
J G7EK a7h
de
7d0m:
3nh$
dfe _ `&hJN
d _ Ic4|d9 J"*O L
)m8
d 7>h 7`&
Ud hy
oh n# h g e GoS _ d g *"ajhJ#o#pLs0mh
dfe^
_ `&hjEFd o> nh
7h of &"h4J2#m#pL4"hkJR# #pL"ajhJ#o#pLs
NPz
d _ -oh _ dnhJ"L
"ajhJ9#p#pL
#- h oJG
h`ehnnh
dedo g h _ 7hnj0m g d _ -#^` g dFohahh
h o & g ehnnhd _ I4df8
d _ bw7jh _ Fd nhJ2"L
"ajhJ9#pi#pL
- h o#G7
$hk`mehnnh
dfedco g h _ 7hn0m g fd _ cbc7sejhehjhnh g
nh Gd _ d g Gehnnjhd _ aIjdf9
g d g h _ Fd nhJ"L
"ajhJ9#&7#pL
#- h oJG7Eyhk`uehnnhEdfed
g nd g
0u g Go
7` odfe g Kh h`u
g d g n0uh g $(+`&
o
d( Yfh`f
g nd g hH&e _ `G&f&jdN
e _ jac7h g a|h _ Fd hJ"L
"ajhJ9#p-2#L
#- h oJG7Eyhjh$ehnnh
dfedo g h _ 7hn$o>hoho[&yaf&
0u g GoJ(+(+L
0 G7# &G` &C4 g
o g _ jh 7 Ynd g 7
Dho#J L
-oj,!
0u g Go
_ jJ2LLs
"ajhJ9#&#pL
#- h oJG7Eyhk`uehnnhEdfedh gg d g
NP U
0u g Go
7`ehjhK7h$h
ao
J&do`&`fJL
gg d g eGnedN
"ajhJ9#&a#L
#- h oJG7Eyhk`uehnnhEdfedoy`&`&eS>ofG^
0u g GoJ(+(+L
0 G7# &G` &C4 g
-oj,!
_ hk[ G7
h`f-I hdkhjO
d h$`&> of GFG`&`&e g
-oj,!
_ hk[ G7
hF` o7eh g :
d h$ g 7eh ojd Ha7Kh nKh ne GG g S*`&K2ofGF^
7 g
7 g a7eh odfS nh# &h oh$`&
d Y&a &h oh
#- o,4!
_ hf G7Eh`4e]o!d h`4a`&d g h`~ g 7eh ojdEh ~
`&7ah dh nhTje]od@
"7ajh n
_ hf G7Eh`4a`&d g h`4E4e _ dy
e Gnedh d g e4dy Go g &@d n h h`~je]od
ojh g &d g
ao
J&do|hn7`&h _ Fd nhJ"L
"ajhJ9#p$#pL
#- h oJG7Eyhk`uehnnhEdfed g hn7`&
7d:h`&`&e
K2ofGF^
"ajhJ9#p#pL
_ hk[ G7
a7Kh nKh hkdf`& G g hn7`&
d.odaf&d@
-oj,!
_ hk[ G7
h`fje]o:
d h`ua`&d g h` g hn7`&j
df4h ~E`&7hdchnh$e4]odN
"ajh n
_ hk[ G7hk`u4`&d g h` g h n7`&S dh 92d g edc Go g &Nd n Th`uje]odw
ojh g pd g
"ajhJ9#pM#pL
(0 G)J &G` &C
Ji`&
d d &eh ojh a o
# &Fd oh n7`&jh Fd nhc8
a o
J &d o^
Fd Gh _ d gn>h Fd )`&d;e G_7eg d _ _ h g d
d *`&a o
_ g h Td _ f _&d o`&h h *h`eh o^
nnhLs
NzO
ao
J&dodFGh _ Fd hJ"L
"ajhJ9#p$#pL
#- h oJG7Eyhk`uehnnhEdfed
"ajhJ9#pM#pL
_ hk[ G7
a7Kh nKh hkdf`& G
df#&
h|h _ d nhJ"L
"ajhJ9#&#pL
#- h oJG7Eyhk`uehnnhEdfedoy
ah g jhof&
0u g Go
7`eh jKh 7h$
ah g h o[ &$
e Gned
df#G7
# &Fd oh _ d
h$J"L
"ajhJ9# #pL
#- hoJG7Eyhk`ue
nnjh
dfedo g h _ 7hjhDodJG
fGF^
-oj,!
7`-I 7h _7g d
h n:
d h` _7g dfEh dw
DahU
0u g Go
7` odfe g Kh h$`&
Fd &f GGh `& a7h nh$`&
C `& odf# G7
f GF^
w7h g w#J aL
"ajhJ9#pc#pL
#- h oJG7Eyhk`uehnnhEdfedo _ hk#&fG^
0u g Go
7 _ hJ &[ GFG
e Ge
hk
d g c7h g J"L
"ajhJ9#px#L
#- h oJG
h`4# _ dhehnh+|h
ad g w7h g hvho&
7d
7
dhk`
Dh
h J G` Gnd _ g 9o7hadf&
`&dh _ hk#&fGF^
Nz4
dfIhn g _ J&dGJ"L
"ajhJ9#&#pL
#- h oJG7Eyhk`uehnnhEdfedo>h g _ fG9h7`&
-oj<
_ hk[ G7
hF` o7eh g :
d h$
e _ Fd Th oK`&yJ _ 7hhnh g E h g dLs
7 g
7E4e _ dwjh ohked T`&
d Y&a &h oh
0m g Go
_ hf G7
hF` odfe g h h`u
e _ @d
#- o,4!
_ hf G7
h`f-2V
I hdkhjOd h`uJ _ d h
e _ Nd
#- o4<
_ hf G7
h`fje]o
d 7h`u# _ @d
#- o,4!
_ hf G7
h`feFd G7E
7d g h`uJ _ Nd
0uj g j _ 7
DahJ#aL
-oj,!J! B <L
7`je]od:h` _
7hhhajh
-oj,!
N` o7eh g
d hah IGFihk` dfdf
d`&d@dF<&#e
>I&G7E4#&ad.ndFh`
o7eh g 3
d hwah g IGFge4ad g _7gd4<&Jyehod!Y&G7E4#&ad>dFhk`@o7eh g d
7h$ah g YGFehod g
&e0u g Goa<.
7A` ode g .
h h`&
nh h Fd n _ d g h 2hk
dhA` odfe g .h h`l n7 g &3d YAo3d nh
h _ hf G
&e0u g Goa,!
7` odfe g Kh h`u n7 g &Nd
&e0u g Goa<.
7G` a &h g G` Goh> h$ g 7eh ojd _ g _
g `u4EDh _ d g h` _ d nje
nh g
&e0u g Goa<.
0 G7# &G` &C4 g
Nz
&e0u g Goa<.
jd _ f&dFo`a7hh`~
Dh:hh g & 7#&`G&C4
mh g
e Gojh$J#L
"ajhJ9#p#L
#- h oJG7Eyhk`uehnnhEdfedoyjh g eGofG^
.oho g _ h 7 Ynd g 7
Dahko#J L
-oj,!
0u g Go
Notas
g
Nz4
Nz S
_ g *`&)
dfe&E4[GFho g hh` _ dnje
nh g `&d
a
$ 3: l
4
0Signal
-i9.
0-- 9
0-: -
0-! @7H
0-! #-
0-! c0m
0-! c0m!
0-9i I
0-! @#-
0-! @l:b
0-.b 9
0-!
Accin postmaster
D &`&`&J Y& _ L
&h
D&`&`&J Y&ajh g eL
D&`&`&J Y&h g eLD &`&`&J B LS&h
& od g h
D&`&`&J I& g 4L2
&h
D&`&`&J I& g !4L
g h _ h g
& od g
d
& od g
7d
7e _ n4
o
h`&`&
dF7`&j
`&hk% g
e7h g h
e7h g h
e7h g h g _ G
odf# G7
f GG
YGo g dFo
& od g
dwJ _7g hk h
Accin del servidor
`&d4#~
h _ J &doiS`&h
dF
Gof `&h$
e&dFK7h`l&hd*hnd h.nh]o`lhhk`ld8hc0m-2.-h`&7 h
0u-i9_7g _ _ g ahJ&do g `&dGndFo0m-2gi92Goho g h`&hh g h`N7 h g dh _ %d _ #&g dF
`&d g h A g h
f&dojd7dw`&d
Dah
J&dF:h*0u-i9.k0m-7H}0u-!c0m*
0u-! c0m|!y`&`&e
dF _ d g h` _ dnje
jh g fd g hnjhE4eGodGhj
Unhk]o`&hho&
y4` _ dFn^
e
nh g$_ 7h h anh g h o &
S 7dfe J &E4eh ojh f &Fd Fd `&d
Dh !YGiohkEh Y&^
ihEFd odfEh g _ Guu7 g n g_ Fd n g h `&d8 &
h
d 79h n
h ohk
h Y&h h o &
0u-! H ` _ Fd neS jh g h njd _ g g 7jde 4# &
eh ojh$jd Fd `&Fd EDh
g
nh]o`0m-2! 0u|!h e G n
d hkh hk@` h d e &h oj3d hk`7E4 :h 7h
`&wj`&w0m-hnd _
nc
7
dG`&a4E_ Dhg _lgod _7g dfg Eh`&
g h0m-@ g Soh`& g ad
_Y&h e g &d `&7h
deh ohj# hw&hh e o_ &Nd w
o7O
nhk]odhk`7``
d Danh je
7nhh hkEhj`7!
a77hA` `&h jh `&j 0u-wh njjcd Fd ey
`&Fd7h4 E*Dh =M
_
_
g
_ g g
h ndfE _ S d |`&Fd
h a7haf &hhk`fE h
`u nd# _ &
:
d h`&S Hnh]o4`&h _ d g `&d _7g d g e
d g lh _ 7h Dh h g h(` Y& &h ojh
# stop postgres
kill -TERM $postmaster_pid
Nz
Notas
NzN
7 g
dF g g a
_ g g f&h g j
d _ [&dFoh _ d g hh
jdlY&e _ `&hehojh .a7hh&^
h`y7 h d
u`N2d ed7h
hng h7 h g dg h/usr/local/lib/gcc-lib/platform/version/specs
nj
ohY&e _ `&hs`u h g dchn#&GGdh
nh
f&dohn4
og h g h
`GGo h
h`&do&U _7g &eh g *hw(
section_name ($Jh Nm(
Sez (+Lsu8nh)h
o `GGo h>hd _ f&dFohn`&yjh g
h g yh|oy`GGohyh`&
Ed@
`o
e& dGe
Dn ho f& `&`&d)h ]
g `&
$d _ f&dFohhnh
7$w`&c`GGjh`&.nh
[GF _7g df^
_!& =
!hG[7 n djg `&
h hd}e h_ `&dfnFn `&_ 7dFao aed dFD a h7 hhynjdNho he dhD`* Go !h wdhjhkrm
j
rm`& ddF
n h`+rmh`G&o vr)
. E> ^<`G& v
dFr) & . > E<k ^
`GGo !7rm! = !ar _ hf 4,`GGo h
g e_
g nd:n hho
7ho g `&g Y& a& hg o jhn h
[GF^
- -------SECTION------*cc1:
- -------SECTION-------
- -------SECTION------*cc1:
%{!m386:-m486} -fomit-frame-pointer
- -------SECTION-------
Nz4P
gcc
Nzz
dFy h g dFyhUGoh g
hvJ2"7-LFnd g _ #7hDY g ah:hho g
_ g `&dFKa4EDhOh
7dn j g hKhh
7J
dFhheddch _ hf&`(+ddf#n g _ ( _ h g e&h g h`G&Ck g o[&dFohh
n h hjdFI&;a7hhGnjd4&h`IGnjhe:hy`&
nh!h>jd
[d7 h g dF"_7
h 7 h h _ d dFg y `&d"$
- o jd> n h g n
h dFh m_
jg e ghho jg hhkh`
n YdNGn 4 hkeh D hh|`aISGn jhHhe7 hU87 7 hdFa S4 `Sh:&7 & hO[& 7d@ initdb
dF
Ih
4`Ga & h g g e
o h g _ `&dFg H h g g dF| "- h initdb n dFg ag h h g 4`&eho hDGo h g o dF
I7 d aho h g
S d`&d7 h g dF global1.bki.source local1.template1.bki.sourcela 7hDn h
ho
7ho g
} h h`^ g h
d g & d` hG(+`G& g h g &
n (K h87 dFn g h
F jdFOn h0G j`&
|
ded
_ dg
hhn d9hy `&hcG
dF jn `&7fG
F[;GF hh> h.dF7 n d n g jh
lhn n
jddFD7 h G g dd d df g
h!n hydfa ho eh g cS) `&`&
ede
d d _ g jh>7 h`
_7g dfec
dfeg dho
`&dFD g h dF 7hg o jh! h>_ 7 dFg j h_lg a 7g hY h)
dfedGgenbki
ho
genbki
h genbki 7hEdFn g 7g hT`&
7 !7 g h g dF@ hKEhkEh g ^ h|g h h* hn g g & h hn j
jg `&
0uh _ 7h hho
do g g G d g e[GF8 ` g h _ hkEjd*h `& dfE7eho fGF h initdb creahG hk`
dfe
d: h$0m: 6$@$7T*Ta$#|c:
tedb
ded}hhe _ `&dN J2
dfed2hh _ `G&
gg &g vhnjh;7 h g dV ndf g
g h3oglobal1.bki.source
dhhm
jehojh8
7 h g dc"$-2 _ h g d.7 h$dF dFT edF dFT `&hKn h g g _ g
de _lg hh g h` g hn7`&SdIf`&d7hh
dFc
dfe
dFc
hn
Edfe _ 7hn jd _ d g iG7 ho #G7
d g hkaG d _ d g g a7eho jdF hk^
_ g j;dF7 h>_ d d g eh _ h f& dFh
f
& `kdF
0 g 7en hdFo jd`&dF> 7 h& `&edF h
dde7 Sd
d >a
7hh
hdfn ~eh& o ho dFCo
h _ hd ` g&% ' & e( hn h
g h& o d g wh`m _ 7eho jd:% ' n h'( d
hn Do _7d g e`&g eho jh 0(u g h` g n haG d d _7g h g ^
% ' ( n
f& dho dFo
hg H h g g
dedw 4_7`&g d g 9Ug Ihd g dwedF d`&d% ' (
g k
h g h hka_ Gg dF^_ h
hGo jh g_lg hk
)
EdfedGh`Ao dfe g h! hco ce g dff`&d8a 7h _7g dfad
: 7hch`o g 7eho jd
% ' ( n
nh g hhe _ `&
h _ d g h`ua`&d g h`&$e g dN 0(~ `&e g do dwh J7 hG Kn hho h g $
h gg d g
| e g d^n hK ho h
n
d
define macro macro_name = macro_value
nhKa&jy`&>h&fGn d
Comandos Generales
b:
classname
g h`&E`&
nh`&`&4e
classname
Dbc0 classname
D &h gg `&
`&
nh&h g `&`&e
classname 0mhhoh g h gg d g I classname
odhn#
j7`&ehojh*&h m0(Hod} h
h
vhojdo
h`&
`&
nh3a7h
7`&eh oh$h J &h g jK ng hf &h gg _ g classname
*)
Nz U
7-#9
2- e _7g &eh`&
`&
nha7h4Ej7`&ehojh$hnJy&h g
-0N bc-2I' oid_value J value1 value2 L
- nh g o.o7hkGn
of& _ g `&
`&
nh&h g jcn
d value1 value2fhk
Edfeda`&d g h.h*`&d g &7dFw oid_value
dedbw-I0a0 oid_value odh
M 4h oFd o
h |h nh4`&d nh$ n
de.d Gh oJ G7
d g h`~dkhjdGnSo[&Ih$df g d
ed df _7g dadf
Gh gg d g g g
-0 N *J value1 value2 L
dfed gg &4 _ h g dchF` YGjheyh oh g 9Gh oJ G7ES d g h$dfkjhkdw &E@d
^ classname J name1 ' type1 name2 ' type2 # L
g h oE`&S h`&`&eS classname
Fd )`&Fd g &7Fd Go g d 7f GFd h o g h _ g o^
h YG
b J name1 ' type1 name2 ' type2 # L 0 classname
:
g h o
`&
nhc`&`&4e
classname _ g wh n g &j g _ h g 9
d od) 4 h Gnjh of &
h `&Fd
J `&dfaFd ^Dh YGnhke #J ndch _7g &ed g &`&eh ojh`&.
d a7h$g `mdfdJ g _ ^
_ Goy L
I 0 |b classname
Ich n g 7ah$`&E`&S h`&`&e
classname
I a#- 9#- I
b class_name 0u#- amname J opclass attr
.
J functionJ attrindexname
LL
hw h&&
hc`&`&e
7d indexname _ g w`&
`&
h`&`&e
classname n
d
h`vg ehkFd `d 7h
h nd amname
Fd E4e _ d nh`&`&4e
name1 name2 hk o`&Fd
d _ h g
7d g [h !h g h
d G
a7h n9 nd collection_1
collection_2 h g h^
_ hk
# &aeh ojh
,)
++
++
Nota: Esta ltima sentencia no referencia a nada del ejemplo. Deberia ser cambiado para
que tenga sentido. - Thomas 1998-08-04
Macro Commands
`&
7`&
hIh$`&yhjhk
fGF07h function_name
EdF`&d g 7ehodFg rettype
7
&
`
g dFTy`&e
oh g h$.
args
Ia#- 90 b macro_name .b #- filename
Ich h$ oye g dc`&`&4e
macro_name `&
7`uh g Ga`&d g a7h nh`&hh g Khk`
g &ad filename
NUO
Comandos de Depuracin
Nota: Esta seccin de los comandos de depuracin fue comentada por completo en la
documentacin original. Thomas 1998-08-05
g
e^2
eM
#&a`& g hkE _ h g fG9Goeh&4ehoh
e{
M MM M4M B>k>
#& a`& g hkE _ h g fG9h`&>2dfd _ g G#&hke _ dh _ hk[&
d@
e!{
M MM M4M B>k> S hM MkM MM$ B>>
#& a`& g hkE _ h g fG _ g g
o dh _ hk[G7
d
hy#&he _ dN edF#&he _ dDhk^
hOn h gg hhe _ `&4C
7 d _ d g h _ f& dch `&
o
d:Yu h` g
o d.hJ&he _ d.hnhdch
& `G& e&
7 dN
.
classname natts name1 type1 name2 type2 ...
]o
h$ & 7dF #p & ajd#f`&`&eS d
c|
.
oldclassname
hodfe g y`&E`&Sh newclassname
d
oldclassname _ g newclassname
c
`&
YYoehdfG` J oeDh ohJ oeh classname oldattname newattname
h odfe g wh`o4 g &7d oldattname hy`&w
`&
nh`&`&4e
classname _ d g h` ne.
wattname
Ejemplo
`(Y&a&hoh
d7d7hEdfe
dF g h g y`&yE`&Sh %_ %d _ E`&
Y (
dFoh&hdoy
d^
`&h
fG` h int_ops
ded8 dfkhd8
dFbc-2I & 7`v 421lGn7`G&C`&
`&
nho
h _ | `&f& h gg
create pg_opclass (opcname=name)
open pg_opclass
insert oid=421 (int_ops)
print
close pg_opclass
NU
NU
.oDhn g _ [ GF
h`u2d
g edh _ GoKhhh
jd!h`&dF^ h g dF^h`&$aShUhjd
n!nh
fG _7g d _ d g f&doocGYGFahoh g `7h`d g e4d
h _ Go7#&`G&C
7d _ d g `&
/&a!/&hohwj`&e7hn g
dfed)hn10
8hn g 7
g
$`&
_ 0/Go
$
ojdh`&
`&
nh
od g e`&h h:7 dFn g hy
dfedh
`&
`&
n h h32G!/&Ehh:7dFn g hyJhKh/ g 42&/&
h
"^ g hEhL
a
3
tA
y 7A2w ao
5
76 8
9!:
7Campo
oh g dc jd 2jhe 7d Gh g j
_ k &d & g h `p`&h g
ke _ d
7k
f 7
Fo G 7 F Fo G 7 wj
7k
&
$
$ 4 o 7 j
;
9<
>=?
/ 3C/
7=D
3EF&E
BHJ
@; /
<
Descripcin
1GH 5I5I5I5
/
G3EFHG K!J EG
L@J!G3EF
BHJ
MG
/ K
/
N OEFM<
GH>=? FL
MG
/ K
1/
G <
/
G3BHJ!F / P
L@J!G3EF7E
1GHQ (
L@J!G3EF7E
1GHR (
<
<
S1GHTEF
/
NUVEF
j$pqno
F\VF EFY<
o
&
j
CGHTJ]Y^/
L@FYGH`_MX ZS1FHaEF
EFY<
L@J!GW=?S1FL@?E<
E MJ!0 Z/
U
S A
S A
&$
T
GUH/
S1FUbFUWP
& o 7 k
F\VF e
Z/
U5<lFlFGh E!lJ!K!US1FYGblK!U{ L@J!GV=kj$nvmZkoAyYFEGVJ!GY>;GHSYFHMGUH/
HSF
FUbK!UbU!L@FYG$EF7FHS1YKS1K!Y^7gK!Ub2
UE/
FMEFMK!UV/
EFUS1/
D!EGYyEFML@J!G5lUg/
EFUS/
D! e
EGYdE!Fl L@J!GrGUS1/
FUF$K!U@XSF$E!FlYFFYFU/
3 PJ]Y^/
U/
J!/
GrEF$K!U@ L@J!GhHKP
GU/
S1KE
FUbXSFHh gK!UVGU ~1K!US1GgEF&X/
S1HEFM SY/
XK!SGH|K!F&J!K!FEFUbFS1 Yy9HKO/
USFY^J!YFS1 /
NUT5
CGH7 L@J]GHML@/
HL@GH&FHfS10 U{P
L@ FU EGH7FU{K!UFHJ! /
GrH/
S1K! EGVL@0 Hc P
P
0$EFPZDU PEFP
FHJ! /
GlP
/
XYFZ5\V X/
S1K! P
L@FUS1FhP
GH L@J!GHTUGWHGUr/
US1FYJ!YFS1 E]GH 5 /
UbFL@X YZGhK! UEG
FP L@J!GrFH7EFL@Hf/
EGVP
YZGVJ! Y3HFYH/
S1KEGOFU@K!UW!U/
WJ!0 /
U3GrK!UEGOHF$EFe
HFcP
MY L@FUS1 /
NU3EFP L@J!GhHSFdL@/
HL@GlHfFdE/
Z/
EFl EcJ! YSF>HFdL@ U/
J!K!P
MGL@G
L@J!GHE/
HS/
US1GHaE!FdP
MH/
ZK!/
FUSFdL@ UFY5MEcKUcEFP
HJ! YSFHyFU$|ZK!FcHFdEFHGL@J]Ge
UF9HfF9H/
S1K!lFUOK!UFHS1YK!S1K!Y^[EF9GUS/
UK! /
NUEF& L@J!GW=kj
nmvmZpvwnmZlppA5BHS1
FHSYK!SK!Y9GUS/
FUF9K!UrJ!K!USFYGW=?S1FL@;!G/
US1FY<l S1 A]/
[P
[H/
K!/
FUSF9J!Y^S1FZ5C[!P
S1/
L@
EF7FHS1 HTJ! YSFHTHF&L@ U/
J!K!P
[UGYL@ P
L@FUS1FZ5
Ficheros
data/
CG P
NUrEF7P
GH>DFYGHE!F7X HF&EF7ESGH>GL@J! YS
EGH>=P
GX P
FHA
data/base/
CG P
NUrEF7P
GH>DFYGHE!F7X HF&EF7ESGH>P
G P
FH
Bugs
BPiGY^L@ S1GlEFMP
7J!
U&J!K!FE!FM L@X
YFUbFPiK!SK!YGlJ! Y7J!YGJ!GY
GU YK!Ub FHGlL@ H
FD!
FUSFM9P
GHGX~FS1GHP
YZGH
BHSdHF
NU3GUS1
FUFdEFS1 P
P
FH
UHK!D!
FUSFdJ! YdHFY!E!FdP
ZK!Uc H
HSFU
cFU3P
cFHY
S1KY
EF7K!UVUK!FZGWL@SGEGWEF&FHGy
BHSFcJ!
S1K!P
G3 J]YF
N$GY
U Y^
L@FUSFMGL@G$J! YSFcEFMP
9S1FH
HTEGS1GY PiE!F
L{e
GZ
H =vwj$nvus A
CHFGUFY^S1
EGFUFPP
FUK~1FEFGUHfK!P
S1YFP
GU P>L@ HWJ!GJ!K!P
Y^BP>UGL@e
XYFb i
COFH3K!UXYFZ
S1KYrEFroZu^okOlZkoqpmpk[=CFUK!~FVEFbGUHK!P
S
B
lBC
EG$
U
P
L@FUSFMFUbK!UbJ!YGS1GS
J!G3EFM?P
P
L@ EG
B
HFEFDU
NrK!UlYF
H
NU{EF
lB]CP
P
L@ E
Cd
?EFH YYGP
P
N$K!UgUK!FZGlJ!YGS1GS
J!GlP
P
L@ E!G
K!U4L@J!P
G@HfK!XGU ~1K!U!SG@E!F
P
F3
FYGU4g=UG
$B!C>iQr=UG
J!K!FHSGH[E!FgK!HK! Y
GhSUSG{
US1FYUGH[FU*?GL@G@FU P
ZK!UGHP
FUS1FHHFP
F
GU EGH
HSFLFUrP
GHdL@
HfL@GHh?
U
NVFPEFH YYGiP
P
GbEF
Y^
H P
SGbg FJ!S
NUrEF
J!YGE!KS1GHMGL@FY
P
FH7|ZK!F$
L@J!P
FL@FUS1 X U@FP]P
FUK!~F
CX HfE]GOFU@P
WS1FUGP
G
HSFL[
<lK!Y^ US1FP
GH GHHf
K!
FUS1FHh?lX HS1 USFHGSYGH`ZFUEFEGYFH` UK!U
YGU$J!YGE!KS1GH
CbS P
FHaGL@G
Cdi<
i
CO=<$S
CFH$S L@X
U,KUFHfS1 UE Y9GD!
PaGiB!UR _Q hP
OlL@FY
UV S1
GU P S1 UE YE]H
?UHS1
SK!S1F3=l
?AFU YNgHK4MGL@
SWEF3HfFH&EF$<$SGH[T \VQWFPEFH YYGP
P
G{EF3K!U
?ZK!F
SL@XZ
U FJ!SEGOJ!GYcP
g3Y U
NU?US1FYU
GUPEF$BHfS1 UE Y
NU=? $ABHS
ZFY^H
NUFHfS1 UE Y>GY
Z
U PEF
C@YF
X
Nb
UGY^L{ P
L@FUS1FlFPZUGL@XYF[EF[
Cdi_ fBU
Cdi_ L@X
U4FU*R _bHFgEFH YYGiP
P
NK!UFHSUE Y7YFP
GUEG@P
P
L@ EG
CA
? UWFHfS1 EGlS1Y^ X~ UEGE!K!Y^ US1FdL@K!GHT GHTFUgP
MEFD!U
NU
EFgK!UrZFYH
NU,L@K! L@J!P
CK!U@P
FUK!~1FlEF$ P
UFlGL@J!P
FS1GO=FK!Y
UZe
GL@J!P
FSFrP
UZK! FAhFH$EF
Y1hHFY UJ!GH
XP
FHWS1GE H$P
HWGUHKP
S1 H3GL@J!K!S1 XP
FHh=J!GY
F^~FL@J!P
GVGUHK!P
S1 HMYFK!Y^H
ZHABHS1$FHMK!U$S1 YFL@K!rGL@J!P
F^~lOJ]GY>FP
P
GVUGVHFlEFXF
FHJ!FYY`P
9D!U P
NUVEFPUK!FZGWFHS1 UE Yy US1FH>EF7R Z
CFHK!U*P
FUZK!~FVYFP
GU PBHS1G|K!
FYFWEF
Y&|ZK!FgHfF
EGW
U
P
L@FUSF&J!GYaBd MGEEFUVR <l e
YFL@GH9K!UgEFHY
J!
NUGYL@ P!EFP]L{GEFP
G{EF3E S1GH&YFP
GU PL@ H&S YEFl=FU
nojlp
K!E EV=c?
AE!F&K!UrJ]YGZFFEGY^
; $bFH`K!UMS XP
c|ZK!Fc P
L@ FUcFP UL{FYG=;!b3AFPUGL@XYFc=;!VlBAi$FP J!YF
G
P
L@ FUW
UGY^L@
NU4HGXYF3|ZK!W YS
K!P
GO=;!V$A`FH&FUE
EG{J!GYM|ZK!WJ!YGe
ZFFE!GY= b3A^B!HfS1GWH
YF&FUVKUVHFUS1
EGWJ!Y^&GUFSY`P
HEGHS1 XP
HTFUS1YF7FP
P
H
SUPPLIER
PART
SNO | SNAME |
---+------+----1 | Smith |
2 | Jones |
3 | Adams |
4 | Blake |
CITY
London
Paris
Vienna
Rome
PNO | PNAME
|
---+---------+-----1 | Tornillos |
2 | Tuercas
|
3 | Cerrojos
|
4 | Levas
|
H[S1 XP
H $
SELLS
---+---
SNO | PNO
1
1
2
3
3
4
4
PRICE
4
|
|
|
|
|
|
|
1
2
4
1
3
2
3
10
8
15
25
HFVJ!K!FEFWFY
{GJ!FY[FUVP
HdS1 XP
H>S PGL@GW UOH
EGWEF!U
E HhJ!FYG
US1FHTEF7FP
P
GgFHSK!E
YFL@GHP
9S1FGY
&EFPL@GE!FP
GWYFP
GU P
PTGUFJ!S1G,L@ S1FL@ S1
G,|ZK!FOHK!XZ FX~G*FP>L@GEFP
G,YFP
GU PTFH3P
@okxpu^vwm,EFrP
SFGY
MEFMGU ~KUS1GHhP
7K!PiFHaK!UbHK!XGU ~K!US G$E!FPiJ!YGEK!S1Gl Y^S1FH
UGlEFcK!U&P
HS7EF
EGL@
U
GH HS$YFP
NU@EFP
WS1FGY^w3EFGU ~K!US1GH7J!YGJ!GY
GUW PL@GEFP
GOHfKUGL@XYF
UG3GUK!UE!
Y`GUbP
9YFP
NUVEFPn kxnmZvwp>kxwpuvwm!ZGYL@ P
L@FUS1FhK!UVEGL@
U
G
FHTH
L@J!P
FL@FUS1F&K!UbGU ~K!U!SG$EF7Z P
GYFH!GY`F^~FL@J!P
GhFPGU ~K!USGWEFMP
GHFUSFYGHTFH>KU
EGL@
U
GiL@X
U4HGU*F~1FL{J!P
GH9EF3EGL@
U
GH9P
H[ EFU H7EFW YS1FYFH&EF3P
GUZ
S1K!E
Q &WP
GHU!L@FYGH>YFP
FH
eS1K!J!P
H
hII
D D
hMII
h`FHY
SGH
II
FHgFP
Dk h
D
D2 " " Dk
hI1I "
v1 v2 vk
v 1 # D1 v 1 # D1 v k # Dk
!GYF^~FL@J!P
GhK! UE!G&S1FUFL@GH
Q h
FUSGUFH
FH
k$
D1$ {0,1} D2$ {a,b,c}
D1 " D2 {(0,a),(0,b),(0,c),(1,a)
GU ~K!USGWEF7P
H
1 |ZK!2
hS1 P
FHT
F
$UTFP
NUOFHdK! P
|K
FY>HKXGU ~1K!US1GVEFPJ!YGEK!S1GbY^S1FH
UGgEF9K!UGbGbL@ HdEGL@
e
U
GH
R % D1 " D2 "
II
" Dk
!GY`F^~FL@J!P
Gh
{(0,a),(0,b),(1,a)}
FH>K!U[YFP
NU'&)(lF&FG3FH>K!UOHK!XGU ~K!USGWEF
L@FU
GU! EG$ US1FH
D1 " D2
GHWL@
FL@XYGHWEFVK!U{YFP
NU
Y^S1FH
UG
EF
D " D2 "
II
eS1K!J!P
H 1
" Dk
HFrP
P
L@ USK!J!P
H MEOYFP
NUEFr P
!UJ!YGE!KS1G
HFME
Fd|ZK!FMS1
FUFcU
FP
$UdYFP
NU$HfFdJ!K!FE!F>FY!GL@GK!UMS XP
GL@GZcE ~
L@GHhYFK!FYEF>pTpsk] k!$pns
P
P
L@ EGHT SY
XK!SGH+!
P
HTGP
K!L@U Hh UGHd FY L@GH>[P
9EF!U
NUrEF7K!UVks-,kj$pokxwpuvnmpx
$U$ks,zkj$p`okxpu^vwnmZpx
hJ] Y^c Ec S1Y^
XK!S1G
FHK!UgGU ~1K!US1GU
S1GlEFd SY
XK!SGH
hzR.
A A
hII
k H`EFP
GHa SY
XK!SGH
hEFdEGUEFcHFdSGL@ UgP
1GH`2Z P
GYF
A
$ i $ k
i SGUFH>FHY
X
L@GHFHiFH|ZK!FL@[YFP
GU PZGL@G
DU
Nota: Un esquema relacional es slo un juego de plantillas mientras que una relacin es
un ejemplo de un esquema relacional. La relacin consiste en las tuplas (y pueden ser
vistas como una tabla); no as el esquema relacional.
P
@HF
NU
US1FY^
GY^>F P
Y|ZK!F{FPE!GL@
U
GFHh
J!GYlF^~FL@J!P
GFPGU ~1K!U!SG*EFP
GHbFUSFYGHgG*FP
EFgP
GH$U!L@FYGH3YFP
FH+!)U*SYL@
UGH$EFVH
HSFL@H3E!FbX HFbEFVESGHfhFL@GH$ XP
EG
SNAME
EF9P
[S XP
SUPPLIER
P
L@ FUY^[FUSFYGH (lF!U
L@GHdFHSGb H
U UEGbK!US1
J!GbEF[E S1GH$ E[SY
XK!SGy
SNO
PS
J!GbEF
i
J!Y^[ EFU HdEF9 Y SFYFH
[MGU P
H
U
NU EFS
J!GHbEF
$
SNO
E S1GHhS1 L@X
U@ XYFL{GH7HFP
F
GUEGrK!UEGL@
U
GJ] Y^$K!U@ SY
XK!SGy3
P]E!GL@
U
GOEF
FHcFPZGU ~K!USGVEF[SGE HP
Hc EFUHdEF9 Y SFYFHdEF[P
GUZ
S1K!E4.
Q hiL@
FUSY H
SNAME
$
FPEGL@
U
GgEF
FH>FPGU ~K!U!SG3EF7S1GEGHP
GHdU!L@FYGH>FUSFYGH
SNAME Q !haFP>S1
J!GE!F
EFP
GU
S1K!E1.
Q /!
FHS1F[FHcFPS
J!G
HfFY^2V
SNO
L@ S1FL@ S1
3EFP]L@GEFP
G{YFP
GU PlGYWGUGFL@GH&GL@GP
GH&E S1GH&J!K!FEFU PwL@ e
FU YHfF7KS1
P
F^~FL@J!P
Gh PwZK!
FUWJ!GEY
cJ!YFK!US1 YJ!GYP
GHaUGL@XYFMEFdSGEGHaP
GHaJ!YGZFFEGYFzHa|KFdZFUe
E U{FP YSwK!P
G65wS1GY^U
P
P
G75 z\V rEGH7GYL@ HME
FYFUS1FHMEFUGS1
GUFH&J] Y^lFJ!YFH Y>P
H
GJ]FY^
GUFHTFUS1YF7YFP
GUFH
P+83x kzopa>kxpu^vwnmpxFHyK!UcUGS1
NU3 P
ZFXY^
hFU3P
dK! PP
HyGUHK!P
S HyHfFFiJ!YFH U
J]P
E]GHd9P
HYFP
GUFH
P
xwu^Zxwn`>kxwpuvwnmpxFHK!UdUGS
NUWP
NZ
hEGUEF>P
HyGUHK!P
S HyHfFFiJ!YFH U3GY^L{Ke
P
UE!G3 P
K!U H>YFHSY
GUFH>P
N
H|K!F&P
HTSK!J!P
H>EF7P
[YFHJ!K!FHfS1&EFX UbH S
H FY^
lgebra Relacional
P8Wx kzop9>kxwpuvwnmpxK!Fl
US1YGEK!
ElJ!GY9d MGEEFU{R QzMGUH
HS1FlFUKU@GU ~KU!S1G
EF7GJ!FY
GUFH>GUOP
H>YFP
GUFH
EFUGS19FPZ P
GY`EFPSY
XK!SG
t
R t(A)
A
t
THG
!
c JI ! FSY FWpovwzns GP
K!L@U H+>
! FHJ!FK!
GHEFgK!UrYFP
NUT F
K!U
YFP
NUb|KFMGUS1
FUFMK!UbSY
XK!SG
IL* !
S M!A
DS
IF hEGUEF
! EFUGS1&FPR P
GY
X
R $CB
tX
# R
EFP SY
XK!SG
EF7P
[S1K!J!P
EEZ F
!TH(llM
kO
S
l6
$ -Q ! HK!J!GUFVP
VK!U
NU,EFgP
VSFGY
bEFgGU ~K!USGZHEFgEGHS1 XP
H Rl
( E H[P
H
Q
S1 XP
H
P
HTS1K!J!P
H|K!F&FHS UVFU
RS
GWFUbP
H>EGH
V
M S !cGUHS1YK!F7P
9
US1FYHF
NUbEFMP
&SFGY
7EF7GU ~1K!US1GH>EF7EGHTS XP
H
(l EH>P
H>S1 XP
H h Q
FH>FPGU ~K!US1GgEF&P
HTS1KJ]P
H|KF7FHS UVFU
WFU
U(lF
R S R S1FSU UVFPL@
HL@GgY^UZGy
R
ST
UK!FZG3YF|ZK!
FYFM|K!F
(MbV
eGYXWY!HK!J!GUF$FPGU ~K!USGOE
FYFzU
$EFlEGHMSXZP
H FU
J]FYG3UG3FU
GH
[Z !GUFS1gEGH&SXP
H7J!GYcHfK!H& S1Y^
XK!S1GH&GL@K!UFH
S1Y
XZK!S1GH
WHF
EF
RF$FSHS1 U
HMFPGU ~1K!U!SGVEFP
HMSK!J]P
HM|ZK!
K!U9S1 XP
&GUbP
GH> SY
XK!SGH
F
K!UgS1 XP
WGUP
GH
\V 3KUbSY
XK!SG$GL@!U
I7\[] </^ C\[] _;D^ \[] `^ abE] c3^ a@] d;:\[] `+>Jab] `*
Z
!!e K!
$
"
fg S1 L2h g f U'ihl |j!KkA!Y^ml f Yhn
jn
l2h gof np!Y-hij!Sbh YS fg
U'h R S USbhU fg
p Y^ f n S1Y^
Xj!SbhYhql@!U
g+f n f mhUl2h g n
g Sbjpn
g j!h g ZnmhY fg !
g+f c
" j!n ;:\[] `=>)a@] ` !
l'hYS f U f l2h g j!UlSXn
l|j f hUS1 f U ff
n SY
Xj!Sh
ih g f f/g C6nmhVYhYY f Zml2h grf n
e
C
l@
U U'ihsn
9hqnmjl{Uijp=n
!
i Z
AB
W @t uvwvv
xyv{zu|v}xyv~w-v
v
0 f l2h g n
g S1 Xn
g |j fg+f U{p!Y-hqij!mih f
f Un
g g
j! f US f/g S1 Xn
g ii g
~@hwUT
A | B |
--+--+-1 | 2 |
4 | 5 |
7 | 8 |
C
3
6
9
g p! g h g
U
S
C | D | E
--+--+-3 | a | b
6 | c | d
!Yml f -Y h3n
jn
l2h gf np!Y-hij!SbhW YS fg
R x S
nmj!U'ihnmh
U'h
A | B | R.C | S.C |
--+--+---+---+--+-1 | 2 | 3 | 3 |
1 | 2 | 3 | 6 |
4 | 5 | 6 | 3 |
R" S
gS
D | E
a | b
c | d
a | b
f U'iY f l2h g
f f g
Ymh
g p] Y^j!U
4 | 5 |
7 | 8 |
7 | 8 |
g n
g+f n f
iY^
mU
:\[] `+>Ja] `*
"
6
9
9
! S
|
|
|
6
3
6
U iY f l2h g
f '
| c | d
| a | b
| c | d
A | B | R.C | S.C | D | E
--+--+---+---+--+-1 | 2 | 3 | 3 | a | b
4 | 5 | 6 | 6 | c | d
! Y f n
ml@
U Y=n
g hnmjl@U g ijpn
i g Y f n
/l2h g n
g
j! f
SC
!!ZshXS f U f l2h g
"
US
f hqp f
Y mUT
I \[] <3^ \+] _;^ \[] `U^ ab] c3^ a@] d -: \[] `+>Ja] `
A | B | C | D | E
--+--+--+--+-1 | 2 | 3 | a | b
4 | 5 | 6 | c | d
(0( [ ! f
j!UWSXn
WhUnmh g S1Y^wXj!Sbh g lhhMh~( g+f
j!UgS1 Xn
3hU
S
Sb
nmh g SY
Xj!Sh g (OR+( f !Uml2h g n
Xi
Z g mUVhl2hy
S9DU$S
4Sn|j f
$CB
# |j f h# U g g S fg nmh
S $hI! S;S Mh(! S FRihU'i f S hI!i f U'hSj!UlSjpn
i f n
S1 Xn
R
$
$
f U~nmh g hql2phU f US f/g x y 6S f/gUf |j f n
$Sbjpn
t hU g g S fXg nmh f U~nmh g hql2phU f US f/g
i f
n 9Y f
n m
U
A B
R
(
l
i g
n gMg
!
j f US f/g S1 X
n g
R
g+f i f
A | B | C |
--+--+--+-a | b | c |
a | b | e |
b | c | e |
e | d | c |
e | d | e |
a | b | d |
Y
Z9hl2h
D
d
f
f
d
f
e
S
C | D
--+-c | d
e | f
A | B
--+-a | b
e | d
XY^b
f n
mhUni
Y ~ U g+f
f n
Yl|j f f l2h g hY[ljn
ihShqih g6fg Sh g hp f YihY f/g Y f n
mhUn fg Yhql2hp! fg
Y f Yjp f Y YXi Sh g i f n
rX g+f i f i! Sh g )0hn
Zl2h g OU'j
f g SY-h f ~ f l2pnmhi f n
gUf mU
p!Y f Z
$tkopuvnmks`kmgkxzn kxndk`$pns`Tkxpu^vwnmZpx!=ihU'i f n
j! f Ur|j f Y
&YhU'h f Yonmh g
i f
U hl@XY fg i f Shqih g nmh g p!Y-h ff ihY fYg |j f f U'i f U f n Y^S1
jnmh
'
+ g Sp!Y f
j!US1
j Smn
U'ih f nn
f XY&Y f n
mhUnhUn
g
j! f US Tornillos
g+f Y fg phU'i f !
f hp f Y^mUT
SUPPLIER.SNAME
PART.PNAME=Tornillos
(SUPPLIER
SELLS
PART))
n
l@l2h g f/g S1 g hqp f Y mhU f/g jU7hU g jn
S f Znmj!l2h g n
&hU g jn
S19 US f YmhYyhUS1Y
n
g S1 X
n g i f U'j f g SY-h f ~ f l2pnmh pTpsk k!$pns! k!on kk noksqWowu^Zxns-!hXS f U'iY f l2h g
j f US ff ~ f l2
p nKh
f n g
!
SNAME
----Smith
Adams
Clculo Relacional
nMn
jnmh[ f n
mhUn g+f
Y f
n m
h Un
n
X
g
(lTV!hihU'i f n
g
g !7i f
n g bS jpn
g
n xwu^ZxnMTkxwpuvnmpx k} Ztxwps` f
t xk`>kxpvnmpx
Xn fgAfg p f Y^ UbSbjp
n g
Z Y^
Xn
xwu^xwncTkxwpu^vwnmZpx ky$nj$vmZvns
S1Y^
Xj!Sbh
pxwu^ZxZs
Y^
US
f/gAfg p f
fg i f nn
jnmh
Y Ubhl2phU
>r!hihU'i
f
n g
US
fg
Z Y
e
RphU'iY f 2
l h gVg qnmh f nn
jnmhbY f n
mhUni f Sjpn
g =
p hY|j X
f fgrf n!U
h6jS1mn
ihphYMn
l@
h Y
i f n f Uj!~ fg Y f n
mhUn fg 3! Yj!U|i! g j g mU2i f Snmn
i]i f (l> VS1l@X
U
i f TV
! f $pk h xwxwjlpmZ
g hU g jn
S g j!Smn
i gf Ul>S f U f U f n g
j! f US f hYl@ Shy |!D R!RihU'i f fg j!U
x
f i f S1mphVSjpn
h A f/g j!U{hU ~@j!UShi f SY
Xj!Sh g F f/g j!U3Yl2jn
$Y f n
mU
|j fg S1 g U
Y fg j
n S US f hU g g S fVf UVShqi g n
g Sjpn
g
t(A)
F(t)
|j f Y f l2h g Y fg p
h U'i f Y
n H!
p Y f !
j US|i f n f ~ f l2pnmh mp&unmZsZxp&vwxwvpm no8Wx kzop9>kxp
uvnmpx)!
j Sm
n
U'iW
h T
h Yl2j
n Y f l2h g
n g
!
j f US f
h U g j
n S
Z Y^
Xn
{x(SNAME) x
SUPPLIER
\nonumber
y SELLS
z PART (y(SNO)=x(SNO)
z(PNO)=y(PNO) \nonumber
z(PNAME)=Tornillos)} \nonumber
\nonumber
Znmj!U'ihn
3hU g jn
SWhUSYHn
g S1 Xn
g i f Zp&psk klpnsT k!on kknoks>qMWowu^Zxns
h US1Yl2h g
h S1YM f f nl@ g l2hY fg jn
S1ihi f mpaunmsxwp`vwxwvpm n783x kzop`>kxwpuvwnmpx
f U
nn
f XYY f n
mhUnZ f nZn
jnmhbY f n
mhUnZS f U f U f nl@ g l2hOt nkokk toksvwm& fg i f e
YhShqi g n
g hU g jn
S1 g |j fXg+f pj f i f UVhYl2jn
Yoj!S1mn
U'ih3n
f XY9Y f n
mhUnpj f i f U
S@
l XZ
UlhYl2jn
Y g+f j!S1mn
U'ih f n n
jnmh9Y f n
mhUn
hZ
f f Y g g Sh[j f p!Y-hXihphY
dzzVhii f U@R Y g S f p!Y-h fg hY g+f XZ g f Uj!U@n
hY^
Sbl2h /n
hY
Sl2h~i f Y f i'j!mU
i f Vhqi
i !l f
i
US ff
n Y!
j n!
j U f Rp!Y fYg mU@ YX
SY Y
|i f nn
jnmhVY f n
mhUn g+f pj f i f
Y f i=!
j
Y7
n f )!
p Y fYg m
U gUf @
l USwl f US fHf |!
j
Zn f US f i f n!n
f XY^WY f n
mhUn! Ysj!U
i g Yj g m
U6@
l g i f Snm
n
i g
h XZY fVfg S f p!
j USb
h h
i
Y ~1 g+f lpk xwxwjlpm
f i!
f V f f/g |j f nmh g n f Uj!~ fg X
f
n h$;l@ g i f n
YS1
h g |j f nmh g X
p
p! Y
nml f US f ! f n'hY-i f U~i f
fg f m!
!
j UVYhql2!
p m
n i
h Y}W
h
US f Yp!Y f S f |j f i f S
U
El Lenguaje SQL
Vhql2h
U'ih f n
n
jnmh9Y f
n mhUni f Sbjp=n
g
h g j f |j!
n f US f h f n n
f XY^dY f n
mhUnm! g+f pji f hY[l2jn
Y
Sl@XZ
U!
j Sm
n
U'ih d\V h g
U f l@X Yhhp! mi/i fg |j f Ul@ g nmn
i f nin
jnmh
hi f n
n f XY[Y f
n m
h Uf$|jS f U f l2h g j!UXn
g S1i f n
j!U g Y^S f Y^ g S1
g p!Y-hqphYmhe
U
i g p
h Y i
|j f U'W
h
h Y[{
l U6p! Y^S f i f nn
f XY^&si f nn
jnmhWY f n
mhUn fg
f
n
jnmhVY
Vhql@ U'ih
g p!Y^7
U gUf YmUh XhYYihHhHl2hqim mU~i f i Sbh g
Mp! mi/i fg Y^
Sbl@S1
g U
f/g ph g
Xn f
Unmj!
YHhp f Y^mhU fg Y^
Sbl@S1
g g
hql2hbYhql2!
p Y m
h U fg h)phY f ~ f l2pnmhr. P 6S f/gUf |j f U P UhS1Y-h g hp f Y^ihY fg
Y
Sbl@S
h g !
p Y f w U f U f
n
n f XY9Y f
n m
h U
n U f UV
n jnmh$Y f n
mhUn
Select
g
ZUm
U$lYhql@ U'ih g i f ml2p!Y /f g mUT f/g ph g
Xn f ml2p]Y^ml@
Yj!UcY f n
mU3hU g S1Y-j!mi
phYj!U[YhU g jn
S[W g
U Y}j!U9Y f
n mUbn
Yjn
i!&Xj!UVU'hl@XY f i f Y f n
mUT
!
j Um
h U fg Y f
i g z|p f Y m
h U fg Sn fg hl2r
h t onjlk vn p kopkhsZjlpsZjhjl
vj$nM j$p h f Si g+f pj f i f Ubp
n
Y
n g hnmj@
l U g i f !
j U9Y f
n m
U!
p Y^
h XS f U f Y!
j U
US1m
i r
i !U
f/g n
[
U g SY-j!mU
SELECT [ALL|DISTINCT]
{ * | expr_1 [AS c_alias_1] [, ...
[, expr_k [AS c_alias_k]]]}
FROM table_name_1 [t_alias_1]
[, ... [, table_name_n [t_alias_n]]]
[WHERE condition]
[GROUP BY name_of_attr_i
[,... [, name_of_attr_j]] [HAVING condition]]
[{UNION [ALL] | INTERSECT | EXCEPT} SELECT ...]
[ORDER BY name_of_attr_i [ASC|DESC]
[, ... [, name_of_attr_j [ASC|DESC]]]];
i! g p!Y^nmh 9
U f U f UTpMpsk` k$pns`k`on kk
g f ~ f l2pnmh g+g f i f !
noksyqTWowu^Zxnsz
Select sencillas
$|j!iS
f l2h g n
j!U'h gMf ~ f l2pnmh g9g+f
Umnmnmh
g j!Smn
U'ihsn
&
U g S1Y-j!mU
!M
shXS
PNO | PNAME
|
---+---------+----3 | Cerrojos
|
4 | Levas
|
$S1mn
U'ih$;
f U6
n [
U g SY-j!mU
f Y f l2h g Y f jp f YY g qmn h~nmh g
f l2h g
n [
U g S1Yj!mUT
Z|j
Y
PRICE
15
25
M g hn
S1 Y f l2h g Sbhih g mn h g S1Y
Xj!Sbh g i f n
[S1 Xn
g !V$@Ari f
n $S1 Xn
| $j!S1mn
e
SY
Xj!Sh
U fg f
fg
f/g
PNAME
| PRICE
--------+----Cerrojos
|
15
Levas
|
{hY^Y phU'i n
25
;p!Y-h
6S
fg+f |j f
n M i
fg
f
f mU f UOn
f
n
9 g+f n f mU f }8Wx kzopdTkxwpuvnmpxqp! Yl@ g i f S1nmn fg !
g j!n
m! mhU f/gf Un
Vn
j g jn
6 \6Apj f i f U4S1l@X
U4hU f
j!Sm
n
U'ihH
n g !
p n
XY^ g n
fg $>h$($hgV$
XY^[Y
S1 Y
f n
mhU hU'hg
gUf nmZ
l f
US
fg
PNAME
| PRICE
--------+----Cerrojos
|
15
Y f Un
n
g S1i f
h X~ f S1
7h g f Un
&n
j g jn
\6AdhY f ~ f l2pnmhh g |j f Y f l2h g hU'h f Y`j! USbhlYj f/g S1 U g Sbhl@l2h g ih g p! f g i f
j!UV Y^S1
jnm
h hphi!Y^wl2h g j!S1mn
Yonw g
!
j f US f hU g jn
S
SELECT PNAME, PRICE * 2 AS DOUBLE
FROM PART
WHERE
* 2 < 50;
shXS U
l2h PRICE
PNAME
| DOUBLE
--------+-----Tornillos |
20
Tuercas
|
16
Cerrojos
|
30
6S
| j f
n 9p]n
XY(l3gS1Y g n
Mp!n
XYn
f fgf nU'j f h[SwSjnmhXi f n
g+f j!U'i!
fg+f
g SbS1U
6pj f i f j!Smn
Joins (Cruces)
n g
j! f US ff ~ f l2pnmhHl2j fg SY9hlhn
g nvwmZs}u^ouks- g+f Y f n
U f U
! Y^&Y-!
j Y`S1Y fg S Xn
g |>hl [SY Z g i
f g j g
h Yl2j
n Y f l2h g n
g
j! f US f
U g SY-j!mUT
d
SY
Xj!Sh
g hql2j!U fg
h
f U'iY f l2h g n
g
j f
US
S1 Xn
9hql2hgY
fg jn
Si'h
SNAME | PNAME
-----+----Smith | Tornillos
Smith | Tuercas
Jones | Levas
Adams | Tornillos
Adams | Cerrojos
Blake | Tuercas
Blake | Cerrojos
Blake | Levas
U{n
ln
j g jn
$>$ f l2h g
USY-hqij!mih6j!Un
n
j
n
|
i
n
H
l
@
l
@
W
h
[
Y
l
@
hS1
n hl2h g+f l2j fg S1Y^ f U mZp&mmZkonvm~ mZp}nvwmrmko
g+f
f
g
l'
mZp
/!
Yml f Y-h f n!
p Y-hqi!
j Sb
h YS f/g
U'
h |
$
h Y g+f n f m
h Ue
l2h g !U
l f US f |j f nm
n g Sjp
n g |j fg S1 g Z U~
n " g
h U'
i
" m
h U fg
i !
i gVf U~
n $
n j g j
n
\6
A fg i f
Y1h'nmh g S1Y
X!
j Sbh g
h UU'h@
l XY f Yhq@
l !Ui f X f U g+f Y9
!
j n f/g ! Z
Unml f US f
nf m@
l
Ul2h g
n g hqnmj@
l U g Y f p f S1m
i g Vl
h
!
Vl!
Operadores Agregados
p!Y-hp=hYmhUrhqp f YihY fg ZY f ih g hl2h g hUgM0 hzM$$bh lhbh$A!
l U f
n U'hq@
l XY f i f j!UV S1Y^
Xj!SbhWhql2hW Yjl f UShy+nZnmhYoi f nhqp f YihY ZY f Ze
f Sbh@
i h gUf
n Yj
n g
h XY f Sbhqih g nmh g ZnmhY fg i f n
7Yhqnmjl@U fg p f m!i f Un
&S1 Xn
&hql2pn f S1
|j
i&Y-jph
ZnmhY
f/g i f
YS1
jnmh
g i f n
lS1 Xn
Xlh)j!Smn
nY fg jn
Sih fg
|j
f Y f l2h g Y hU'h f
g SY-j!mUT
Y&Yj!USh
AVG_PRICE
------14.5
YSwYjnmh
gXg+f
Y
f h f
U
U n
bS Xn
lh7j!Smn
Y f l2h g n
f
SELECT COUNT(PNO)
FROM
PART;
U'iY l2h
shXS
COUNT
----4
U'h g p f Yl@
S f p!Y^S1
mhU Yn
g Sjpn
g i f j!U9S Xn
f UVZY-jph g U!U f/g S1 g hU'i
mhU fg h
O
nmh g hqp f YihY fg Y f Z/ih g i f/g Y
Sh g US f/g p=j f i f U{pn
U'
i
Zmi!
j nml f US f p! Y9i7ZY-jphq!
nMp! Y^S1
mhUl@ f UShi f n
g Sbjpn
gf U Y-jp=h g6g+f f j!S1mn
U'ihn
g p!n
XY g n
6u|,
A g+f j!mi g i f j!U6n
g Si f SY
Xj!Sh g |j f i f !U f Unmh g Y-jph g yS f U f l2h
6u|r
MXb XY f l2h g p] Y^S1
mhUihsn
9Y f n
mU f UVY-jp=h g hi f S1nl2hqihg|j
...
ih g Sjp
n gog
h Ui f n@
l g l23
h Y-jph g g qnmh g iS1 f U f U f nRl{ g l2h$ZnmhY f U g j g SY
Xj!Sh g
h
...
f
f
YS1
jnmh
U
( f l2h g 'hYj!UXl@
Y^i9nmh3|j ffg Shj!Y^Y f '
U ihW |j!*!Y^ml f
Y hhn
T~@h
Ui f n
g
,
$'hY{p! YS
mhUl2h
l@ g l2hg S1Y^
Xj!Sbh f
S1 Xn
g
n g S jpn
gHf
UY-jph
V[
U ihShqi g
n g
S jpnw g |j f
f j!U f '
g
Y
S1
f
U
f~f n
UU'j f/g S1Y-h f ~ f l2pnmhhqhXS f U f l2h g jSY-hbY-jp=h g r 'hY^phqi f l2h g pn
Y f 7
n hp f Y^ihY
Y f ihM$lV6p! YcicZY-jphh/hXS f U f U'ih f n Y f/g jn
S1ihSbhS1ni f n
MhU g
j n
S1ii!
US f Y^m
h Yl f US f
6S
Having
[n
j g jn
VA0 E ~|i f h l@l2j!6p! f min
n
j g jn
X6A gUf j m
n
!
p Whq g mi f g nmh@|j f nmnmh g jph g |j fg g Zn
bj!n
m!mqii f n
l@ g @
l [ gof )p fYg mh f/g p f l@ mi gof sn
&n
j g jnwVM0 i f f gmhnmj! jmhq
f V
f Zi g fMi f Rp f3g mq|j f j mn
f l2h g
Subconsultas
2n
g n
j g jn
g 46MVM0 g+f p f l@ |
j n g g j g+f n f g !
f f nj g h~i f|g jZhq g
!
j n
|j! f nmj!Z ihq'i fg+ffg p f f
j rZnmh + f g f g hq f nnmh i f f i f
Z i f
n
f V
j mq6p f Z
i f n
g jZhq g jn [nj g hsi frg j
Yhq g jn g l2pn
w f
n phqi f f Rp fg m
f Znm!
hsi f i d
@W
l h g hq'h f nmh g
jnmh g
| j f f f l@ h p f mh|j f6f ny wYjnmh2nmn
l@ih
f f 2
5wRh mnmnmh g 5)j mn
f l2h g n
[Yhq g jn
y|j
SELECT *
FROM PART
WHERE PRICE > (SELECT PRICE FROM PART
WHERE PNAME=Tornillos);
PNO | PNAME
|
---+---------+----3 | Cerrojos
|
4 | Levas
|
PRICE
15
25
f Z g l2h g n
dh g jn c f mh phqi f l2h g f n
9p!n
n
f ih g f
fg [Vp ml f 7n)p mmp!mhHi f n
&hq g jn Zn
&|j f 'h g f f f l2h g Yhql2h|n
M
f f Xn
g+f j'i f ~n
n
j g jn
X6A)ih'i ff l2p] f Xjh g jn mi!i
'h g f f f l2h g f nmn
ghl2h~n
M4m f /! Wi jpn
si f n
M f R
f
n
c{m f i f f g+f f Znmj!i!Zf g i f nmj! m7h'h f f l2h grf n
p f mh2i f
n jp
n nm
n @
l !
i w5 )h mnmnmh g 5KZ2phqi f l2h g f |j f g f np f mh~i f n
jp=n
!
j n fg @
l h
|j f f l2h g Yhq'
h f hqih g nmh g p
h ff ih fYg |j f '
h f 'i f |
m
g
jnmh ph f ~ f l2
pnmhq!
p phqi f nmh gMf
n m@
l m
i f
n
g+f i f
i h g !j m
n
f l2h g
Vj!'ih
SELECT *
FROM SUPPLIER S
WHERE NOT EXISTS
(SELECT * FROM SELLS SE
WHERE SE.SNO = S.SNO);
'j f/g b h f ~ f l2pnmhq=hq f 'i f l2h g j fg jn ih Kh'ph |j f ip h ff ih
i f nl f 'h g j*
jnmh6 fg+f |j f j mn
l2h g b1i f n
M f f
n j g j
n 46Mi f n
]cm f zVhql2hV f l2h g i fg hb fg n
g jhq
p
i jpn
i f n
Yhq g jn f f fg i f f nZZnmh i f b g+f
g+fXf
n !X!
j ni f
n !M f f
g f l2p f i f
n jp
n [ !
f '
n
f
jg n
hq@
l
g
j! f f hq g jn
(l
SELECT S.SNO,
FROM SUPPLIER
WHERE S.SNAME
UNION
SELECT S.SNO,
FROM SUPPLIER
S.SNAME
WHERE
f n fg jn ih
$|j!
fg j f ~ f l2pnmhsi f
$63
S.SNAME, S.CITY
S
= Jones
S.SNAME, S.CITY
S
= Adams;
SNO | SNAME | CITY
---+-----+----2 | Jones | Paris
3 | Adams | Vienna
f f l2h g j f ~ f l2pnmhsp]
V
SELECT S.SNO,
FROM SUPPLIER
WHERE S.SNO >
INTERSECT
SELECT S.SNO,
FROM SUPPLIER
WHERE
i &hqS.SNO
l2h >
jn
|j
fg
!
M
S.SNAME, S.CITY
S
1
S.SNAME, S.CITY
S
2;
ih
Zmnml
|j
SELECT S.SNO,
FROM SUPPLIER
WHERE S.SNO >
EXCEPT
SELECT S.SNO,
FROM SUPPLIER
WHERE
i &hqS.SNO
l2h >
jn
fg
S.SNAME, S.CITY
S
1
S.SNAME, S.CITY
S
3;
ih
SNO | SNAME | CITY
---+-----+----2 | Jones | Paris
3 | Adams | Vienna
Definicin de Datos
nn f j!~ f
Create Table
Z
f n
mq
j
! & f n
g n
g i f mi 9
Y -
g f r
hn
gMg
!
j f fg m g !
j mh7 f g i f i
- -
} H
KK g+f j m n
hq
[ f f h|m mh3h g
'hsi f p!n
[hql2pn f g i f p f g mq'!
=
V f f hsm mhWhq g
'hi f l f i
p!n
g i f p f g mq'!
!Jl hi ml@nhq
'hXi f iwZ h g i f p f g mq g jl@ f 7ih
(
V
p p q n=pf j h{f i ml@n g 2
s
n |i f f |!
p |!
hql@ f gUf g jl f
f
f
q
p
q
q g+f
|j f Zn f
3c+'j@
l
W
h h g
7hi f ihqn f p!n
&WYhql@[}h f
b
n
n
0$TVVl
! i f i f f Yf g i f nmhqZ ji{
n f i f nmhq
Z jil@ iml@
n
n
VVl
m 'j! mq g
j f jXn
g X
i f
n
j'h g m ph g i f i h gMg hqph [
ih g ph `i d
Create Index
f j m
n
nmh g m'i
fg p! W f n f f n! fg hHj f n
mT j f n
mq R f f
j{m'iw ff f n] mj h
phqi f l2h g f jp f hqi g n
jpn
g
|j
!
A
t f f f tA $ a
f j f l2ph{p hml@i/l f f p hqph mhqnnl f hi f n fg jpn
g t l@ g |j f
f j f l2php hqph mhqnn l@ 'hsi f R
7 f jV
!
m'
i
ff i gUf j mn
@W
wv
! b f
j ,m'i
f mn n
l@ih2 g hq ff n b m j h
j mn
f l2h g n
g
j! f f m g b jmqT
b$Ci
f n
f n
mq
M
CREATE INDEX I
ON SUPPLIER (SNAME);
n>m'i
f f /ih +g f l@ f f j hql@
l f f f g i f `i{ f @|j f j'j f
jp
n gUf m g+f ff 6
n f n
mq M g+f i!p f nm'i
f 6 fg+f |j ff n
h
l2
mW
h |j f jj g j mhHpj f i f p f m j!'ih g+f f jrm'i
ffg jVm f l f h f
n
9 f nm
h m!
i id
Create View
n
lZ g ! f
M K ! *!
n nm
j i f nmh g nm
h h g i f n g g f @
l f 9
j
Xi g j g mq6i f
n
g
i
f f fg Y
g !
p 9ml2pn f l f Z g g f !
g+f &ZI
i g+f j m
n
f
n hq@
l 'ih 7
p i f
j
9Z g U!
g m gf/g
M>
~w ]
ihq'i f
fg j&m g b j!mq g+f n f Zn
mihql2h g+f i f m f r 6q
/f gUf |j select_stmt
'h g+fVf ~ f j Mj!'ih g+f f Vn
MZ g ml2pn f l f fVg+f nml@ f
f
f 6nmh g select_stmt
Y g+ff ~ f j i!9 f [|j fg+f f n
n 9Z g
j l g
f Xn
g
j! f f i f
mq{i f
; Y sKK !
j m n
l2h g i f 'j f
hn
g
n
g i f
-
$'h phi f 2
l h g j m n
fg
[w
hl2h g +
g f b +g f i f
London_Suppliers
h b n
Z Ug f
SELECT *
FROM London_Suppliers
WHERE P.PNAME = Tornillos;
h$Yj!nq'h g i f
hn
f
n
g
j f f
n
SNAME | PNAME
-----+------Smith | Tornillos
!
M
n j
n fg f fg jn i'h f n g g f l@i f g+f i f i h g f n
ihp f Z
l f f j
f g hswMn
g
n g i f n
gUf M lyYV ffg h f ~ f j 'ih
n
Yhq g jn |ii f ~n
|i f
mqi f n
$Z g lh b l |j f nmn
g n
g g+f gVfg hqn
g
j
n m mhq fg i
mhqn fg i!i gHf n
{hq g jn {h b n
O g ! gUf p=hi pn
p! hq f f
n
n fg jn f
f j mn
f n
ml@m j n
mnmj!
f 'ih hqi g
n g
!
f n
ml@m n
n
|Aj
m n
f l2h g n
9m g b j!m
f j m n
f n
ml@m jrK'i
f
Zmnml
iij m n
Manipulacin de Datos
Insert Into
! Mm +g f n
p ml f jpn
f n
f
n mq |
s
K^ !=j mn
l2h g n
g
j! f f m g b j!mqT
i f
;
!
7m
g+f n
p ml f
jpn
f 6n
f n
mq
Rj m n
l2h g
Update
! ll2
j'h{hl@ g Znmh f/g i f
hl@'ihW|(lcd[ g m gfg
b m j h g i f jpn
gf 2j f n
mq' gUf j m n
f n
UPDATE table_name
SET name_of_attr_1 = value_1
[, ... [, name_of_attr_k = value_k]]
WHERE condition;
! dl2
f nnmh i f n m j h!MV f f n [
jnmh5wRh mnmnmh g 5Ri f n
f n
mqH $q
j mn
l2h g
UPDATE PART
SET PRICE = 15
WHERE PNAME = Tornillos;
n)'j f
h$nmh i f ni m j h|!Mr~i f n
jpn
&Yj!hH'hql2 ffg 5)h mnmn@h g 5 fg
'h
Delete
|]Aoj
m n
l2h g n
g m
System Catalogs
SQL Embebido
m|j f
fg fg f f n=n f j!~ f i f n]'h g p> f 3j g g f l@Hi f fg+f |i f mnmn f fg hj
m f f !
fg f gVz|n
7mh l{ mq g hq f nmh g mnmn f f/gofg Mnml@ f i! f
j
g+f i f
i h g |j f pj f i f f i f g+f j mn
'ih f l2 f Zmih!
hq
h
f g i f
mi f
g+f b g h
!
j nml
l@'ih g i
|{p
mh
f j mn
l@$|j
!
j
j!
|j f
g h
f l2h g nmh gof ~ f l2pnmh g i f hq g+f Zl2h g |j frf n f/g jn ihi f n
g hq g jn gofg
ml2hOHj{Yhq ~@j h{i f jpn
g YHl@ h wHi f nmh g n f j!~ fg i f 'h g 'h
ih g !
p rhp f Yhqghq ~bj h g i f l2hih3|j f f fg l2h g jl f g l2h
fg
g+f
p! 7 f i f &
i jp
n 7
i f
n Yhq ~@j hHi f jpn
g i f j f n g ph j7m g b j!m7
]cy g f l f
g l2hp=j f i fHg+f p hqph mhihi f n
/'ihj^ gf nmnmhq
phqi f l2h g j m
n
f !
n Yhq@
l 'i{
h
V]
p f Yjp f j jpn
g{pj f n!j g h
n g
j f f jp
n
! Mj
V!
i g j g mH@
l g i f nm
n
i g h fMf n i f l2 f
mih
i ~ g+f d
h K | /
Vj!'ih
n
hl2j!{p
fg i f Yhql f
3i f f
hlp f 'i f n
g g+fg i f n
M |j! f j 9i f
/f g R f 'i f 'ih@hl2hn
g p! fg i f h g fg m f j!n f f
p! jnmhl2j!'hl@ g|g+f mnmnmhRn
l~ f i f g+fg i f i h g h g f/g j
n f f g+f Zmih hq'hmihOYhql2h{;p h fg h~ph j g j! mhz| g+fg mqh
j f fg p
h f/g h g Yhqhqp f
h g i f |
p h l@ g !
f nmh g9g
!
|
h fg H
h i f l2hmh g jp f Z g h
!
postmaster
n
[pn
mq g q
h f n
9|j f b Z~1 f nqj g j! mh q
h f 'i! f
j'hh@
l gg+f mih fg i f g+fg i f i h gf g+f j'
ihpn
'h
!
n g g f l@h g
n g
j! f f
g ~jl2hi f nmh
g f/g hq g g f
|6p
gres
hq hq
n j
Vhqn f mi f Z gUf/g i f i h g ii gf j*
h
g ( f mpostmaster
ih f/g h{jWhqn f mi f g+fg i f i h ggUfg j f n f nmn
l@ jWm g n
mq
hsj g mhy g pn
'h
y
9t 7s9vv/yv
f f np h f/g hi f hq f 'irn)'j f 7h g+f Zmih ^p! i fVfg f pj hq f np h f/g h
h f 'i f n gUf Zmih f ~ f 'i g+f hl2j
g m6n
[m f f mi f n
postmas|j|j f f n
g f l2p fg+ffg f ~ f j 'ih f/g p f 'ihHp f
mhq fg h
h f 'iOhql2hnmh g i f f 'iOZ f f r g+f a
nmter
h g p
h f/g h g i f postmaster
~
n m f
p f l{ f {j
hCp h fg h f hq f 'i f /n
f n g jp f j g !
Whq
i f
~1 h6h g /f g k
f g n f/f6fg f l@'j!nm!j!n
|j! f
g hqC i f fg |j fg+ffg m
|j f h@
l f Yhq f n! f
h g fg i
r
Configurando el entorno
mhq fg z g j
l@ml2h g |j f h g fg g mihgm g
n ih f m
ihgh [ f l f f &ih g jn f n
j!
i f n
|i@
l m g b ih n
g 'h g i f m g
n mq g qi fg+f &m g n
h g fg
h g fgfg j
Wp
n w mq@
n f f g+f Zmih rhl2h~j g
j mhqZ
l f f f fg 3
fg 4
h
n {!
p f
n f f j f ~ f l2pnmhi f j
p
n
mq
n f f6fg|f nol2hq h m f
h
!h g ml2p
n
m
i iZ
g j@
l f l2h g |j f h g f/g g miO
h m g
n ih f f ni f
h mh psql
h nmh hq'ihq'i f f f n
i f h mh
i f f /usr/local/pgsql
g j g !
j nmhph f no'hql2 f i f n}!
i f h mhihq'i f h g f/gH/usr/local/pgsql
f/g bm g
n ih f /nm
l f f Rhih g nmh g p
h @
l g i f h g fgHg+f m g
n f f/g f g h! f f no
i f h mh
h nmh hqi f f W
i f/g f
i f h m@
h
n i fHg j g f nmn
/usr/local/pgsql/bin
j i f i f fg Aj g j
@Z
f i f T
n g f nmn9i f f f n f Y T
n Yhql2h g ,
h g '
i f f [
i
% set path = ( /usr/local/pgsql/bin path )
jlZ
f i f nhqj fXg
f f n
h .login i
f g j{i f h mhsp f g hqn j g
nYhql2h g ' g 6hs g f h f/g i f f 7 i
f nmnm
% PATH=/usr/local/pgsql/bin:$PATH
% export PATH
f f n]
h .profile i fg ji f h mh6p f g hqn/( f/g i f 'h g jl@ f l2h g |j f
imi'h f n)i f h mhmi f h g f/g g jp! Ti f l@ g z f l2h g f f f
7 f j f '
f l f f MYhq'!j jcZ
n f i fMg f nmn
rh[Yhq'!j jdZ
n f i fMf h 'hc
nmh
n hi fofg f i
h jl f h 'h f f 'i f hl2pn f l f fMf nn ml2hXp! @h[n f/g p f
h6i f
n l2h
i m!
m2i fg jp! ' fg i f hq m'j! i f f
3hq g jn nmh g l@'j!n fg
i f
|j f i f/g m f f n g f nm
n |j f j mn
f >
n i@
l m
g ih i f n g g f @
l 2'h f f n
{hq'j mq f f nl2hqihCp=h i f f hq
f 'i r|j f f
n
~@h f b h f ~ f l2pnmhq g A
n {@
l |j!m gUf Zmih i f Z gUf/g i f
i h gMfg j
@
l |!
j m
f l2h f fg 9h'!
j
n [Z
n f i ff h 'h V
h f n'hql2 f i f
n @
l |!
j m
gUf Zmih i f
g+fg i f
i h g l2
6i f f fg p f m!
n
n f i fXf h 'h6
$d i f m
j{p
h @
l i f p
n
mq
V g f
n
Z gUf
master
p
n
mhq fg Yhql2hXj g j! mh rhl2hXl f mhl2h
n !
p Xi f
g |j f
i |i fg @
j m p f f i f i
W
h |j f f 'i 9|j f f f @
l m'h g i f p f
( f g i
pj f i
n
X
pj f i
hq
ihOi
j
i l f
f +!
i f i h g pj f i f
g p f
l f f +i
f fg {n
l@ h
p mT
!
postf ~ f Yj
h /usr/local/pgsql/bin
g f/g nmh
h g fg Z g+fg
f
f f f n f mihp f
g+f i f i h g b g
fogUf g
m
Z g
createdb
% psql template1
Connection to database postgres failed.
connectDB() failed: Is the postmaster running and accepting connections
at UNIX Socket on port 5432?
h
% psql -h localhost template1
Connection to database postgres failed.
connectDB() failed: Is the postmaster running and accepting TCP/IP
(with -i) connections at localhost on port 5432?
'h @
l nml f frfg i f mih7|j f ! f n
'h /f g f gjmhql@ f hqh ! f g
m f 'ih3h f n gUf Zmih f |!
j postmaster
hihy hq f
f f n g
j! f f l f g ~ f i ff [ h
7ih f n g jppostmaster
f j g j mhHi f h g /f g
(l
lh g |j f
| j f f f j'~ g+f i f i h g nmnml2i~l@i)j f i f '
f nmhhqnm
j f f h i f T
g
!
% createdb mydb
f hnmh g p
R'hsj
Zmn
mh
| j f m ih g p V f g+fg i f i h g f
nmh g
j! f '
g f
% createdb mydb
NOTICE:user "su nombre de usuario" is not allowed to create/destroy databases
createdb: database creation failed on mydb.
&|j
@f j 'ih2nmh g p h
jn fg n f p f l@ f bm
g m
f 'ih~jp h
p f @
l f|f Zm i f
l2
+ g [
m f
' $
l2 g i f l2hq h
mqCi
b hij f i f[@f j
l2 f
Ej g 'ih~nmsn
m f
fg i i f/g i f {h f f
i g j mi@
l g i f nm/ ff
fg
!onmh g
f h g fg ph f[@f l2pnmh
i f f/g i m f
7l f psql
f
msi fg j j m' g nmjn=n f
l f g @fg i f fg pj fg f g jp hq
~nm7
; Y Y
i
h g i
f fg Yp f |j
f f l2p! f 2ph f n= / f 'i3h fbf lpnmhpj f i f hq f f nm
ji f i f nm g m g i f 7 m g i f fg i ~h g fgMfg m f 'ihy
mydb=> \h
f $|j f ' f l@m'ih~i f m hqij h g jn g 7p=j f i f p g f nhq f mih{i f n
fg pmh|i f hsn gUf Zmih h g f gf/g m f 'ihy
|'W
mydb=> \g
g hn f im f n g+f mih |j f p hq f/gUf nmhq g jn f l@m' g jhq g jn Yhq{jpj h
{hql2nmg'iZs7h fg f fg m
p h fg j hql@ ml f f nm g hq g jn g f
l@m'i g hpj h2hql2/ spsql
n ff h g jn g i f/g i f j
hqi
lh g l@Zmn f
j i f m hqij nm g m f
l f f fg m
f nm!
mydb=> \i nombreDelFichero
g n
i f
f
psql
fYg 9|
fg m
mydb=> \q
f l@m' 9Whqn
f nmn
m f Xi f i f fg h'hq f l@ g
p f psql
fg m f f np hql2p i f nl2hq h ! f pj f i f j mn
f/g pmh
f[@f l2pnmh f/g p=mh g jnmih f n f i f 'j f n
m f ! f nm g h
n
m f grg ml2pn fg hl f i g Yhql@ f ph hV|j f ' i fg pj!
' g f nR'ni f
n m f g+f M
'h ihh g hql f mh g l@n mpn fg nmh g
i f j'
n K f g+fg+f 'nmhqV
7
I * i
qi
h g i ffg
grf nm'h ph
g
g jn g i d
j mh f/g
g i f nmh g !
|j f hqYjps@
l g
'ih{nm g m
f/gXf
f f h i f b
!
j!
% dropdb mydb
g m f n
ml@m'l g ml f f q
h ih g nmh g
h g |
H g hqmih g |nm g+f i f i h g
s'hspj f i f f Yjp f g+f g |j f i f f 7' f gUf Yq
h 6p f jmqT
Monitor interactivo
nYhql2'ih
n f/fXf ~nm g Yhq g jn g
phq frf sl2hqi\i
h g mn fVg f pz|j f ' f
g h g jn g i fVfg g+f m fg
f f mh g hl2'ih g
p
psql
hl2'ih g p M
f @
l g i f nm\d
n fg
i f hql2'ih g
i g phq
mn fg
i f g i f nmh
j'Vpj
f f nq
f h r
g
g fg p f mih g Uhp=mq -s n f
g f g i 9
f f Zm nmhq g jn n gUf Zmih
f h
basics.sql
Conceptos
X'hqmqj'il f n f ~h g f/g9fg nmXi f Ynm gUf |j ffg j'hn f Ymq~i f m g 'm g
i f j6h @f
h Vi9m g 'm f f nmXl@ g lhqn f Ki f b mj h g iX b mj h fg
i f j mph fg p f Ky
h g '7igm g 'm f f jw +7 |(|!
p f l2 f f |j ffg
mYhsnmhsnm h|i f hinm9m g nmmqT [|j f nm g m i g i O'
f f f f ' m nm g Rj g f l2h g nmh g @
l m'h g 3 * Y- m'i g m l f f f g ml@ g l2h
j' i fg j'H * ~nm g *w | i g h zZ zrhl2h g+f i h f
mh l f f nm g nm g+fggUf jp f g+fg i f i h g j'XYhqn f m~i f g+fg i f i h g
f/g mhq'iph jV
mhsp hq f/g h
hq g j f j'9
m g nm mqh g mhy
postmaster
j f i f f
j 's7j f 7HYnm gUffg p f mY'ih f n='hl2 f i f nmsnm g+f i f l@ g i f hih g
nmh g 'hq2
l /f g i f mj hH g j g mph g
CREATE TABLE weather (
city
varchar(80),
temp_lo
int,
temp_hi
int,
prcp
real,
date
date
);
- temperatura mnima
- temperatura mxima
- precipitacin
f j f d|j f nm g p=nm g Ynm f Xnmh g mi f mih fgg h gUf g mn f/g 9nm g l2 g
f
jnK g l@m g jnm g +h g mi f mYih f/g pj f i f 6nmn f gUf g+f g mn fg l2Z g jnm g h
l@m
g Yjnm gHg gUf n f/g phq f{f b f ihqn f/g hql@mnmnm g nAhl2hnmhCp f l@ f i !h g
f/g i g hqph [ nmh g mph g ' jn fg i f i {hql2hm Rhq f /nm g l2nmn
m R' 6!
' !i f ml f = ml f/g l2p' g Yhql2hh b h g i f mph@ f f nh b h g hCj
mhHYhq j hi f mph g f hl@ mh g f)nhl2hW f f l2h g l@ g i f )h g fg p=j f i fg+f
h'!
j ihhj
l f h b mhCi f mph g i f i h g i f mih g ph f nMj g j mh
Vhq g+f j f f l f f =nmh g 'hl2 fg i f mph'h g hq g m ml f f p=nm g nm f f R
f p h|ihq'i fg+f f |!
j f p g hqph [ g h gfg p f mn fgf f n fg 'i `i g f 'ih
l@ g n f h g f nYhql2'ihh g fg 7
i mhnhl2'ihj g ihp V f j'
T
fg m
nm f f n g g f l2 f nm mhq'ni fVg f l2p f m f l hq f f l2h g |j f nm g nm g+fg f f
p h]
p f i/i fg |j fg hq f f g mhq fg i f nl2hqi f nmh f nm mh'n
2
l
p
m
n
h
K
f[@f
gUf
)l2Z
/Hpj
ihq'i V
n p si f )
n f hh
f i f r
f f R
f g+f fg mn f n gUf Zmih
&
|j
n f s
h i! f /l f f
f f n g+f mih n fff
f 'i'h|n)n
f f
j'sjn
mm nmp f |j s
f fg p f msjn
|j! f r f/g b m Ymq'!/h f[@f l2pnmhq7p=
f +jp f hqi g nm g nm g i f f f f g m
SELECT * FROM weather;
+---------+------+------+----+--------+
|city
| temp_lo | temp_hi | prcp
+---------+------+------+----+--------+
|San Francisco | 46
| 50
| 0.25
+---------+------+------+----+--------+
|San Francisco | 43
| 57
| 0
+---------+------+------+----+--------+
|Hayward
| 37
| 54
|
+---------+------+------+----+--------+
| date
| 11-27-1994 |
| 11-29-1994 |
| 11-29-1994 |
f 'nm)pj f i
f fg p f mY |j f mn h g fg jn ih g i f j g+f n f pj f i gUf i f
f n h g i f | h3|j! 'ihsnm g [ K K
Vhql2hpj
j
Xnm g+f
f hq g jn g+f n f pj f i fg+f f i f Ymhq'iXj''j f 7
g hlh
h f no
yv 3
fg jn
jn
|j! f hqp f m g h f nmHYnm gUf
f hql2hnmhW' Kl2h gMg h f jn
|j! f h nm g+f
6 g V 'h /'j fg b g hq g jn gAg nmh| f im/Vj'nm g+f Vnm& f - g h g jn g pj f
i f Y f i f sl@n mpn fg YnK gUf/g |nmW f h~ f i f snmHl@ g l2nm g+f i f n=l2hihO|j f
l@n mpn f/g m g 'm g i f nmXnm g+fg+f p hq fg i g nql@ g l2h f l2ph'XYhq g jn |j f
f i=~l@n mpn fg m g 'm g i f nm g l@ g l2 g hi
f f f/g nm g+fg {nm{ f g+f h'hq f
hl2hj'Hhq g jn hmTrhl2h f[@f l2pnmhqi
l2h g |j f |j f f l2h gf 'Yhq b hih g nmh g
f g b h g |j fsfg f f n hi f f l2p f j g i f h b h g f Z g b h g f f h7 f f
g l2h g hql2p nmh g b mj h g f l2pnmh f l2p oi f YiOm g 'm!hqnKh g
b mj h g f l2pnmhs f l2p qi f hi g nm g i f @
l g m g 'm g !
Nota: Esto es slo un modelo conceptual. El verdadero join puede hacerse de una manera ms eficaz, pero esto es invisible para el usuario.
Nota: : Los matices de este join estn en que la cualificacin es una expresin verdadera
definida por el producto cartesiano de las clases indicadas en la consulta. Para estas
instancias en el producto cartesiano cuya cualificacin sea verdadera, Postgres calcula y
devuelve los valores especificados en la lista de destino. Postgres SQL no da ningn significado a los valores duplicados en este tipo de expresiones. Esto significa que Postgres
en ocasiones recalcula la misma lista de destino varias veces. Esto ocurre frecuentemente cuando las expresiones booleanas se conectan con un "or". Para eliminar estos
duplicados, debe usar la declaracin select distinct .
f g f g hq hrhl2h4 g hq g j g !
j mih g
p h j'7m
g+ff f 'i f ~
ph A hi g nm g m g '
m g i f mn nm g+f
~nm
g 'mi f nmrnm +g f f f
l2h K
f l@m7hnmhmXi f nm
i f mn h grg g f l2 g i f
g+fg i f
i h g g+f h'hq f {hql2h 3 - 3 -
' !'|hq g
j n Hp=j f i f Y hq f f jl f h6 Z b mhi f 'hql2 f g i f nm gU/f g
g j g jmh7 fg
Actualizaciones
j f i f jn
m g 'm
j f |j f mn n f j Xi f nm g
nm f l2p f j f n[j f i f
n hl2'ihsjpi f
j phq[|j f i f g
gf i g f f/g j g 'ih f
f l2p f j gMf ni f 6h f l2 f j f [ ih g9g jp f mh
jn
nmh g
i h g i ffg l2 f
UPDATE weather
SET temp_hi = temp_hi - 2,
WHERE date > 11/28/1994;
temp_lo = temp_lo - 2
Borrados
h g h [ ih gAgUf '
f j g 'ih f nqhql2'ih /
g nmh g f g b
p f ZmihHYhq6nm
)hqih
h g i f f f p f [ f f f f g 66 i g hq2h ih g ( f f m Ug f
j n g i f mn [h l2
g Yhq g
h g n f j @fg i f Yhq g jn h g f i g hqph bj'mh f/g i f hq j h |'
f hq j hnmjnmjbmh fg jn ihp i f l@n mpn f/g nm g i fVf i
h fbf l2pnmh f g f 3j'mh f/g nmhqn fg p nmjnm
h !R
g jl2 ! avg
l f im!@
l@ ml2h!''i
l@mml2hq! g hq f j6hqcount
j hi f m g sum
'm g
max
min
g ml2ph f hql2p f 'i f nm f nm mq f b f nm g j' mhq fg i f hq j hHnm g
n j g jnm g
6
i
f f ' mc
j'il f n f b f
yv fg |j f 6
| yv ;r
g+f n f mh'nm g hnmjl2' g i f9f ir fg i f nmh g jph g f h' fg}g+f Yhql2pj snm g
j'
mhq fg i f Yhq j h i fVfg f l2hihHhq hqnm9
|!
j nm g nm7
j7 mq6i f hq j h7!
l@ f b g |j f yv gUf n f mhq'l
jph g i f nm g i fg p!
j g i f nmh g jp=h g f hq' f/gVgUf
hl2pj 6nm g j' mh f/g i f hq j y
h +( ffg f l2hqihnmX
n j g jnm6
pj f i f 'hh'
f f j' mh f/g i f hq j hp=j fg @
h |j f 'h f f6g+f mi@
h m f j g j'V
j' mq
i f hq j hsp i f f @
l m' |!
j nm g+f nm f ii f nm9
j' mT
+h h p f nm g
n j g jnm g yv g f l2p f hq f f g
j' mh fg i f h j y
h g b m l f f 'nm7ih
j g f ipj f i ff/g m
j'rY
n j g jnm yv' |j f 'hj g+f j' mhq fg i f jphq3p f hX'hl f
f f nmp f '
@
l g l2hq'
i m K6phqi K g+f j g ii f jl2hqihH@
l gMf Vh=6
!
Vhql2hh
j'mqi
Vhql2h
l h gg f
| j!mjiihsmjii fYg ihq'i fg+f
i f h f/g g f l2p f j g phqi f
f f 2
l2h g p hq
i|j
h|j f
f/g h [ f hqO|j f nm g j gUf n f mq fg j'hp f mqm'i f p f 'i f f |j f
nmjnm g {
j p hqp!m9j'mi f jph g mrml2ph nmhW|j f p g+ff f n gUf n f f f mh
g j' mh f/g i f jp=h g hq lZ
/2l2jO mn fg hl2m'ihnm g hqn
j g jnm g '-
h f[@f l2pnmhq=phqi f l2h g hq f f nm f l2p f j l@mml2 hql2i f Yimjii
h4
SELECT city, max(temp_lo)
FROM weather
GROUP BY city;
f 'h g i f j f
n f j'|nmHph mjiidYhqi f l2h g n b fg g nm g jpi g j g 'ih
yv=
|j
j n ih g )
p f hi f mjii f g Yhq f l2p f j g 6
h f hyZm
f 'h g inmh g l@ g l2h g /f g
'nml f f g g qnmh~'h g m f f/g {nm g mjii f/g jh g '
hql2 fV
p h K5 5Kqi f f
g f l2p] f f
Kl2h g ' f
|j
i f mjii f 6
'i nm /f g b mYmq
hi g nm g
nm g |j f
Herencia
(
text,
float,
int
- (in ft)
fg f g hqj'[m g 'mXi f p! n g hqih g nmh g b mj h g 'l f phqpjnm mh
n ji f !i f9g j6p=i f 3 f/g -n mphi f n) mj h'l f 'hl f ! fg f 3j mph'
h
i f h g fg p= i f ' g ri f nmhqZ ji{7 m/n f *n mp=hsi f n mj h|php=jnm mhq
phnmmq'! f/g hq )j mphi f i h g l2
~'
7hi f h g f/g p Xl f h g i f
pj hh f i f ihn f p f g mqT[ g nm g+f p! n g f f j b mj h f g f |j f
l2j fg V7
|!
j fg ih|p f [ f f f T-sh g fg j'Ynm g+f pj f i f f f i i f mj'h
m g h g nm g+fg j'Xh g jn Xpj f i f ' f f f f 'm hs hqi g nm g m g 'm g
i f j'nm g+f hql2hs hqi g nm g m g ' m g i f j'Xnm g+f g j g i fg f 'i f fg
Nota: La jerarqua de la herencia es un grfico acclico dirigido.
h [f @f l2pnmhqnm g
j! f f hq g
j n f 'j f b hqi g |j f nmnm g mjii fg |j H
f fg g m
ji g Xjn j i f hsl{ g !
p f/g
SELECT name, altitude
FROM cities
WHERE altitude 500;
+-------+-------+
|name
| altitude |
+-------+-------+
|Las Vegas | 2174
|
+-------+-------+
|Mariposa | 1953
|
+-------+-------+
h h b H
h nmihp= f '
hq nmh g 'hql2 f/g i f q
h i g nm g mjii fYg m'Ynmj!Ki g mn g Yp!
n fgAfg n f/g |j ffg g ji g Xj'n ji{i f hHl@ g p! f/g RnmYhq g jn fg
SELECT c.name, c.altitude
FROM cities* c
WHERE c.altitude > 500;
Vm
f j g
+-------+-------+
|name
| altitude
+-------+-------+
|Las Vegas | 2174
+-------+-------+
|Mariposa | 1953
+-------+-------+
|Madison
| 845
+-------+-------+
|
|
|
|
Valores No-Atmicos
f n
nmh g
mj
h
mph
mj h
h g pj f
g jn [h
g g+f
g i f j'
i f 2hq f
fbf l2pnmh
f mn mq
f g j
gUf pj f
Vectores
h g fg p f l@ f |j f nmh g b mj h g i f j'K g 'm gUf i f mih g Yhql2h f h fg
l2jn miml f g mhn fg i f nmhqZ ji 6h mn f Rj f i f f f h fg i f jn
|j! f
i f nmh g mph g gUf h2i f mp=h g i f mih g ph f nj g j mhyR Vmnmj g b g
j j g hq= ff l2h g
p ml f hHj'nm g+f hqr f h fg i f mph g g+f
CREATE TABLE SAL_EMP (
name
text,
pay_by_quarter int4[],
schedule
text[][]
);
l2h g n
j'h g
$
!
g &'h f |j f j'ih f l2h g nmh f/g Hj f h f ' f l2h g nmh g nmh f/g
f b f nmnm fg snmh g9g+f p /l2h g l f im f hql2 g j g f i~h'hq f fg hs'h fg i g m hH
nm g m g p 9
m
m m
n
fg j j g
INSERT INTO SAL_EMP
VALUES (Bill,
{10000, 10000, 10000, 10000},
{{"meeting", "lunch"}, {}});
h g fg j mn
g
j! f f hq g jn f jp f f nqph|i f n f f } m l fg f i f hqih g nmh gf l2pn f ih g
+----------+
|pay_by_quarter |
+----------+
|10000
|
+----------+
|25000
|
+----------+
Yhq'
f h f g [ g
h g ih g iK g i f nK
SELECT SAL_EMP.schedule[1:2][1:1]
FROM SAL_EMP
WHERE SAL_EMP.name = Bill;
+-------------+
|schedule
|
+-------------+
|{{"meeting"},{""}} |
+-------------+
f hi f9g n
nm7 f g mW ri f h g fg Z // K
X K H g f m g hq fg p fg hml2p= h g hq f6f n
f '
i ml@ f hq f n l2 'hHi f nml2 f 'l@ f hqRj
hHp! ml f |j f f f ' g f n
m'
h f p=hh f l2phy
l2
mhq=i g phq f i f 'j f g Y f g mY g hl2hnmh g i g p= ih fYg
Z f g !>|j f
p f @
l f O
m@
l f nhql2ph l@ f hi f nZZm @ff f n f l2p=hYj'ih g+f i f/gUf/f g mm'j
[ f g h f j'ihH'h g+f f fg f b f f nmnml2h p f i f n f l2phq!+0 f
nmh gMf[@f l2pnmh g9f f nq
i f h mh
p l2h mh l2mT
|nl2hl
contrib
Time travel ha sido descartado:: : El texto restante en esta seccin se conserva solamente hasta que pueda ser reescrito ajustndose al contexto de las nuevas tcnicas que
permiten obtener los mismos resultados. Voluntarios? - thomas 12-01-1998.
h g fgMg hph Xnm[mi f Xi f nm bff f n f l2phyU g hp f l@ f Xj6j g j mhh [ f hq'
g jn g g m g 7h [f @f l2pnmhqAp f 'hq nmphnmmq jni f mn 2mjii4i f
mph g j g f i{i f f f /n
nm g
j! f f h g jn
SELECT * FROM cities WHERE name = Mariposa;
+------+--------+-------+
|name
| population | altitude |
+------+--------+-------+
|Mariposa | 1320
| 1953
|
+------+--------+-------+
g fg
f l2hql
f
j f f
g !
h
fg
p
ihq'i f
Nota: En los sistemas Unix, esto siempre es la medianoche del 1 de enero de 1970,
GMT.
i'
f n
ih hih g mn h M
hqn
f
g f[@f l2pnmh g ' g 'h nmXYhq g jn X f m h i f
+------+--------+
|name
| population |
+------+--------+
|Mariposa | 1200
|
+------+--------+
|Mariposa | 1320
|
+------+--------+
n7nmh p f i
|j f pj f i f
i f a
n m f 7nmh
h g jn X f
f
i f
f
ih f mn
Ms caractersticas avanzadas
h g fg
p h Ug f/f l2j' g f g m g |j f '
h gUf ' Z g h f fg f j h mnm f nMjn
' g mihh f ihg'mj g j mh g 'j f 7h g i f i d g l f 'mhqi g Y / f g m g9g+f
i g Yj f h f 6nm j!mi f
n g j mhHhql2h f
nmXi f n h l2ih
m/i
f/g
f f nm
h f/f
A(l
Zona de Tiempo
fuera de UTC
P
(
P
P
T
X
P
P
P
(
P
(
P
P
P
!
P "
!
P (
P $
P $
P $(
*
P $
G+
P $
,-
P $
descripcin
6h Xi f nmjXi f nimi f
'j f f nm'i
f
7
K f ' mhq'nqn
m f nm
g f
6h ii f 6j f f nm 7i
6h Xi f 6j f f nm'i
h Xi ff 'h i~i f
j g b
n mi f n fg f
6h Xi ff 'h ii f
j g b nm f n
6h Xi f nmjXi f niKi f
j g b nm
6h Xi f nmjXi f niKi f
j g b nmi f n g j
6h ii f j g b nmi f n
fg f
6h ii f j g b nmi f n
g f
6h Xi f ! jl# i"Mhq' $
i f&% '
) f nmhqj f j g b nm
6h
f
h
6
f
6h
g j
h
j g
i~i f j g b nm
n
i~i f j g b nm
n
i~i f j g b nmi f n
i~i f7f 'hHi f
b mnmi f nqh fg f
6h
ii f Gpq'"Mhq
i f&%
'
6h f g 'i [ i f ,h f
./"/
Zona de Tiempo
*=
fuera de UTC
>$
descripcin
6h i?Vnmji?niKi?n-@ A ?
i? jA nm
)B
>
C Xi?)DCqnmjYA
*
>(
C
i~i? jA b nmi?n
CE?A ?
F
>
C Xi?nmXGC3A i?&F
m'
=
>
C X
i?nmjXi?niKi?n
CE?A
? i?jA nm
*
>
HC
i~i?/n-@I?A ?i?
jA b nm
J+
>K
MN "
>K(
HC L?J
C LOL?P-@ ?A ?&L?
Q A b Pm
RS
>(
C L?R UT
V
>
C L?V 3
LL
WW=
>(
C L?P Q L?P-LK?
W Q E
C XL?P-?A ?
W=-
>Y "
C L?P Q ZL?P-Lm&?
W Q E
C X?/ P
WW
>Y
>Y "
W Q C3XL?P-WA ?/[\Cq'XL?
% -'
C L?m ?
C^] 'G?A
RS"
>Y
C LOL?RSA "?P
)BW
>Y
)BW=
>Y
C L?P Q L?P-LK?
W Q E
C XL?PG? b C
>Y(
V
> "
W
>
C L?W Q CEXG? b P
=_
> "
C XC :` "P3L?=Aba
=
>
]3-
>
)BW
>
)BW M
> "
)BW
>
C'ZL?W Q C3XL?P-?/ C
_@ '
>(
W
> "
C L?-?/G
?PP?A
>
] M
./h
Zona de Tiempo
Wj=-
fuera de UTC
>
descripcin
C L?P Q L?P-LmL?P
@ ?A ?L?W Q C3X=
! )D
C X m'X=P-L?
! ?/? g Ak
W Q C3X&L?P-@ ?A ?
MN
_=
eY
C L?P Q L?P-LmL?
_? g l C Q LPmL
=
e3
C L?P Q L?P-LmL?
Pm m
_]3
S(
_
e
C
?A L [ L?
_? g l C Q
L PmL
em
nCEo[ peLOL?
pePmqprmGceVq'Lf
W=
sem
tm
sSm(
! )uv>m
C Q oUA
=
sSw(
W
sSw(
nC3oUx ?AbprxqLxoUp(L?P-?Abpe?
tw
sSw(
! )uv>w
C Q oUA
sey
nHC3oUx peLOF?qpeoUxP
)B=
sey
ty
sSy(
! )uv>y
C Q oUA
)B
seK
nCEo:x ?AbprxqLxoUp(L?Px
` CEqpex"{x
t=
seK
t
se~
nCEo:x prLOL?P-tx|G}|GC
=
se~
n=
se$
nHC3oUx L?P Q
L?PLx?q
nx g x" Px Aba7x
-
se$
n
sS"7 "
se3
_
seG "
nHC3oUx _C ` ?
RS= M
sS"Y7
q?x L?]3?|G
x
Reqpe?oUqx|GCEqxP@I?Abpe?
W
./"
xA CEqxA
CEoUxoUxA Q AbpeoUxPxqxA BA Q A x"o:xqpr?A L?L?qC ` qx"|Eq| Q ?qpexqu|GCEq Q q
| Q oUxprCL?&PxZprC3prxPLxLvL?Px"A8CEqxA
CEoUxoUxAL?&PxZprx3Px L?&3Ab Q ?LxZL?&PxA8C3qx"A
CEs
o:x"o:xAL?8tC3Abpr7o?A:nx"LC3A|CEq|GprC3A
L?L?qC ` qx|G3q|CEq^CEqxACEoUxoUxA?qI|C ` q
L?}qLxA
?qPCEA8WAbprxLCEA % qLC3Ab
CST EST
7PxICEX|G3qL?P|GC ` XjPxLCEo % W % ' R _"' % W ?Abpexx|Gpr(x ?qpeCEq|G?A
CST
Ab?qpr?oUXo?prxoUxqAk Q ?qLCIPC3A8|GC3q7?qCEA Q AkproUxPxqCEA
EST
Desplazamiento desde
UTC
>
W
>(
Descripcin
Y
|
on
now
(
qCPC?q| Q ?qpro:x"-x|G? Q qx 3Ab Q ?Lx3qxoUx Ab ` Pxo8?qOPx prx3PxL? |CEqs
A Q Pprx XxoUx?q|GCEqpeoUxoPx ` Q ? AbpeoUxxPx CEqxCEo:x"o:x
|
./
x
7x
` T AL? mZL3peCEAbEAbqCAb?xP?LCH|CEqXCEAbpe?oUCEo:Lx"LCEpeoCH|Gx ` XC
L?IpeXC l ?|GxE?qprC3q|G?A PCqpr?oUXo?pexo T |C ` C Q q l ?|Gx|GC3q|Gxpr?qxLx"\ce?7
fFC3q~vyL3prCvAb?Iqpe?o:Xo?pexI|GC ` Cvx{CE ` ?Ab7OLx ` ?qpeoUxA
Q ?|GC3qKwL3peCEA
Ak?qpe?oUXo?prx|GC ` Cx{(C3"LzxL?P-x{CE"oU?AbX?|Gpr(x ` ?qpe?3
19990118
|
EqCEAk?&qpr?oUXo?prx&|GC ` C Q qx"{C
Sugerencia: Los aos Gregorianos 1-99AD pueden ser introducidos usando 4 dgitos
precedidos por ceros (p. e. 0099 es 99AD). Los tres dgitos tambin son aceptados
como un ao bajo muchas circunstancias, sin embargo dependiendo de la posicin
la cadena numrica puede ser interpreta en lugar de un da.
Historia
Nota: Contrido por Jos Soares 1.
WP3Lx J Q PxqC leQ ?q7?qpex"LC^XCEo
?o Q LprC l oUxq| AFJeC3Ab?XjOJ Q Abp Q A |GxP3?o
cewmseyf
XoC33x3P? ` ?qpr?^|CE3?^A Q qC ` 3o?L?PXxLo? |GxP3?or7?P?o Q LprCpexPx"qCJ Q P Q A x?Akx"o
|GxP7?o8cS"m~m"sS"ww~"fbkPCEAxAbpeoU3qC ` CEA&pr?q?qv Q ? Q Abxo\?P(X?oUCELCJ Q PxqCHXjxo:xZxAb3qxo
Q qq|GCDq ` ?oCD|GxLxLzxL?AbL?vL?vWq?oCL?vmK" 3WAkprC?A^?P8PPx ` xLC=x
J Q PxqCceJS=f"Je=L?Ab7qxYmC3oUxAbjL?P ` ?LC3LzxH L?PL?^Wq?oCL?HmK"^
xAbpex?P ` ?LCELxuL?P-YWq?oCm"K& I
= x^J Q PxqCE^?A L l ?o?qpe?I Q ? ]7?|x^J Q Pxqx(WP|GxP?qLxoUCJ Q PxqC leQ ?IqpeoCEL Q |Gs
LCXC3oJ Q P Q Ax?Akx"o\?qmw ] Q ? Q AkxLC|GC ` q ` ?qpr? xAbpexI?Pw~YELC3qL?XxAb?A
? ` X?xoCEq^x|x ` 7x"o:Ab?xP|GxP?qLx"oCIZo?3CEo:x"qC?q^?P|x"P?qLxoUCZJ Q PxqC3?Px{CproC3s
X|GxPj?A&xXoC3" ` xLx ` ?qpr?I|GC ` COyw -m^LzxABy"w7 YwILxAWAkprCvLx Q qN?oUoC3o8L? Q q
Lx ?qOxXjoUCE" ` xLx ` ?qpe?Y"~Lx"AbWP3?oUoC3ox| Q ` Q PxLC^L?P3|GxP?qLxoUC ` CE(Hx"P7txXx
Zo?3C3oUCH\ReRSRx o? l CEo ` x"o
?P|GxP?qLxoUCHx|GC3oL?|GC3qvPxAqAbpeo Q |G|CEq?AL?P(CEq|PCL?
-o?qpeC
"
% cal 9 1752
Septiembre 1752
S M Tu W Th F S
1 2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Nota: SQL92 dista que Dentro de la definicin del fecha/tiempo literal , los valores
fecha/tiempo estn restringidos por las reglas naturales para las fechas y los tiempos
acorde con el calendario Gregoriano . Las Fechas entre 1752-09-03 y 1752-09-13,
aunque se han eliminado en algunos pases por el "fiat" Papal, conforme a las reglas
naturales y son por lo tanto fechas validas.
Notas
fich2
1.1
1.1
1.2*1.2
1.3 \- 1.3*1.4
\
fich3
fich4
fich5
1.1
1.1 /-1.1*
1.2
-1.2*1.3
/ 1.3
1.4 / 1.4
\-1.5*1.5
1.6
<-*-
TAG (etiqueta)
TAG
Nota: Para crear la rama de una nueva release, se emplea de nuevo el comando -b, del
mismo modo anterior.
$ cd pgsql
$ cvs tag -b REL6_4
Q boUx Q bpeL ` xqprqoUbXoE ` xPx leQ qpeZx|Gp Q xPL Q qx l 3o ` xOo Q Pxo
XELo:zx Q bprLDo&x Q b|Gxo:PEZxq Q bpeoXoEXbo:7LEo& Q prPxo&qpEq|G
XxoUx&o| Q Xox"oPx\x|Gp Q x"Px|GEqLpe ` Xqpr ` X
h-,
0213
3+
\P8Xo Q
q prxo T Q Xxb g 3oLGqpro3L Q |Gx:
< 3P q|kprxo T x|Gojbp
Q
q x7X Q PXjxk g EoLbxP ` x|Gqxo T postgresql
q
Gq Q Lo|GpEo:LFL l |Gp
.cvspass
cS
Q o `
L o|GpEoU7f
;b|Gxo Q Px leQ qpe\L&tEbpe3o
cvs -z3 -d :pserver:[email protected]:/usr/local/cvsroot co -P pgsql
-z3
-d -P
xP-| ` x qL|G( Q XLxpr7
3oUx"b ` XP ` qpe&prq& Q pe|GPx"o
$ cvs update
h"4
Atencin
Algunas versiones anteriores de CVS tenan un error que llevaba a
que todos los ficheros comprobados se almacenasen con permisos de
escritura para todo el mundo (777) en su directorio. Si le ha pasado
esto, puede usted hacer algo como
$ chmod -R go-w pgsql
q xxPpeo:qx"pe7x&xP Q L x"q3q ` ^Xjxo:xo| Q XoUxoP T oUEP el Q qpeLt3bpr7o
Q X8:F Q X leQ Lbxo:oEPPxL XEo)@EqOtEPbpeoUx#A3Xx"o:xLbpro: Q ooXEbp(oUE8F
3pro T o:
EP\L}|o3\XxoUx&WPEXoE7|pI]3oV B
q x7q(pexb+x ` XEoUpexqprIL Q prPxo Q X Q IX Q LoXP|GxoL l 3o ` x}|GxP
oXEbp7o: U q Q kbpr ` x^PE|x"P3Xo ` peqL Q qx|G|GOP
3|GxPo T XLxPx2EXs
o:x"| EqLH|G7Z| `
o Q oqL3 T oxXxoUxZ Q F Q XX Q Lxx|Go\ Q pro:x"7x Q qvoUX3bp3oUP3|GxP
LF cb ` XP ` qpe Q q T oxvLHLo|GpEoU3 b Q kprLkp T p ` x"qL Q qx l EpN}rx
cekqx"XkEprfqOP Q 3xo\L Q qoX3bp3oU37x `T Fx3xbEf T ox PE|GxP(L xqEpex"|EqFL
T oU3P-LLo|GpEoU3
Q X8:Wbprx8
L 3 T ox"8X Q LqH|3bpeoqP ` `
/opt/postgres/cvs/
Lbx Q bpeL ` xqprqo Q oXEbpEo:Iq
q|GP Q 3x
/home/cvs/
q Q }|Go
/ Q qxPqx b ` Pxo8q Q }|o
.bashrc
LqL L& Q k.cshrc
PP
-LXqs
.profile
h-D
$ ls $CVSROOT
CVSROOT/
oU} Q Q
bq| Q qpro:x^q Q Xx"pe7qNPx ` x*EoUx^LPEZbkpr ` xb(X Q L
Q kprLOx"|okpcvsup
pr|GPxqL
which cvsup
cvsup
Q pePx"qL
$ cvsup -L 2 postgres.cvsup
LEqL
x|Gpr(xxP Q q3 ` qbxb+L bpexp Q XxoUx Q X Q Lx Q kprL ` 3qp3oUxo8P
Xo 33oE-L
L2 Pxx|Gp Q x"Px|G3qE
&P x^o Q prxPq ` 3oI Q Q bpeL
xLx
L x Q }|GoIL|Eq} Q o:postgres.cvsup
x"|EqL Q X8
Q P ` EbpeoUx ` E Q qH}|Go3L|3q} Q oUx|GEqHL Q X ` 3L}|GxL XxoUx Q qxqbs
pex"Px|EqHbX|z}|Gx^ Q ` x"qpeq Q qHoX3bp3oUF PE|GxPE| ` XPpbcS_NLP-b*3
xOpro:x"L Q |oP E | ` qprxoU3Ix ` ELBLHLE| Q ` qpex|GEquLP}|Go#CI37x ` qprjq
peoUxL Q |Go P 3| ` xq
L EkP D Q X Q LvLxo Q qx ` x3q x"P*
D| ` XP|GxLxXo `
Xxo| Q ^X Q LI(x"PoPxHXqx"7oUxL|Go ` E Q Z| ` qpexoU EZxH
L 3|Gse
X Ekpr7ok3Ps
b bXx"Pq Q j bf
# Este fichero representa el fichero de distribucin estandar de CVSup
# para el proyecto de ORDBMS PostgreSQL.
# Modificado por [email protected] 1997-08-28
# - Apunta a mi foto fija local del rbol fuente.
# - Recupera el repositorio CVS completo, y no slo la ltima actualizacin.
#
# Valores de defecto que se aplican a todas las recolecciones.
*default host=postgresql.org
*default compress
*default release=cvs
*default delete use-rel-suffix
# activar la lnea siguiente para tomar la ltima actualizacin.
#*default tag=.
# activar la lnea siguiente para tomar todo lo que se ha especificado antes
# o por defecto en la fecha especificada a continuacin.
#*default date=97.08.29.00.00.00
# el directorio base apunta a donde CVSup almacenar sus ficheros de marcas.
# crear un subdirectorio sup/
#*default base=/opt/postgres # /usr/local/pgsql
*default base=/home/cvs
# el directorio prefijo apunta a donde CVSup almacenar la/s distribucin/es actuales.
*default prefix=/home/cvs
# la distribucin completa, incluyendo todo lo siguiente.
pgsql
h"
#
#
#
#
Instalando CVSup
021+3
hh
Q pePx Q kprLv]3oV
qbpex"P&PxxLxXprx|EqL Q X8
UGe+Ge3ORQeS
ReqkprxP28HEL Q Pxse
x/ ` PxLbpeoU Q | EqL28H3L Q Px"sSLbLFtEP3pe|Gq Q >8H3qpro xP JLT " Q q
` xqpeqHx"|pr7x ` qprHP|GEL*3xbM3oU3qxP ` qprLkx"o:oUEPPxLXV3o&pr
h"
ZYSqbprx-[>[3\o\]G^28_^`[xse3
# rpm -Uvh pm3*.rpm
;b]b\x*`pr2[x'^bpeoU`|G3qc^|7`\8
a
# cd /usr/local/src
# tar zxf cvsup-16.0.tar.gz
3qbpro `3d
4
x [d
x ^bpeoU
`|G3e
q ^ |G7E`\j(`\oU]qpb[x^qpeogfex|G 3oh}|xi\xoUx7pexo
xq|Gb^x-^R^[x=[7oo:zx\\G(
[
# make M3FLAGS="-DNOGUI"
m;Yeqkprx-[.[E7q(xo:I|3qbpeo`^
# make M3FLAGS="-DNOGUI -DSTATIC" install
Notas
j]x
[p k|GoUx-\\3` Eo
j]x
[p ^3|Gs\Ebpe3ob*[seb'[bprx E\x[q` Eo
a
-p
8=k++8_k |G7`\
`\
Gfep\8[#\3bpr7ob*[ Eo%\`
-a"pep\8[%]( \[]pq[ |Gx#]
"pep\8[%mcmRmH okxo|G
^3pex-[ |]
I#]
^`[x"sS(-p]
[-*]7 p]
[
-p"
-p
Mapa de la documentacin
t3bpr7o
prq&|`xpeof3o]xp3\hb|E=^2^E|`]qpE
s
pM\[x"q|3qqf3o]x|GEqx"|o|bx'^2[xW\osSqbprx-[x|G3q
s
+ `]
s
\h
3|
3qx=]xq|] o.fSoq|Gxoh-\^x
7e2ueu3GeGS3v3Ge7U"
Fichero
[C t tYSZn
Descripcin
+\`qpe=^4\3oU7p
[#Ywv -
Sqbpeo`|G|G3qt^&qbpex[x|Eqcxepep3
b*]
[syo:pfeswyprpz
Y
[=k++8{k
Y f ]
[o3bpeo: prp
8
t[xqpr[[x'\xoUxqf3o]=^2^.\`o:x"|Eq
[#^3|#\Ekpr7o prxo 3
+ `]
[#^3|#\o33oUx] ]o \ 7
7`x'^[%\joE3o:x-]x^3oxet3bprk|GoU\pz
7`zx'^[%\oE7oUx-]x^3oxen8Dz
[#^3|o}feoq|3 \ 3
8
[#^3|o}feoq|3 prxo: 7
Sq 3o x|GEqOqpro^`|Gp3oUx
Dqbxb+=^o3bpeo^`oUxqpe]x-|7
3|
qp(8q(pe3oUx-^3txen8Dz
Dxq`x-[%^oU.feoq|Gx'xet3bprk|GoU\pz
Dxq`x-[%^o.fSoq|Gx'xen8DVz
8
[#^3|p`p3oUx-[ \ 3
[#^3|p`p3oUx-[ prxo 3
Y
Sqpro^`|G|GEq~xen8Dz
[#^3|#`bo: \ 3
7`zx'^[%``xoUMxet3bprk|GoU\pz
[#^3|#`bo: pexo: 7
7`zx'^[%``xoUMxen8Dz
:
^\Eqqd^:\h3qx6]xqxb|]
|]
+`q^3o:xqq]o+^F}|GoE)^prp7^.[
pe \I=k++8HkOqp^xt[x=f`qpe=^tEbpe3o
El proyecto de documentacin
t`^W^\3qo=^'^3|`]qprx|G3qOpex"qpqRfwEo]xpHnH8D|] c U z -x]3
-p
xf`qpe)^4[x^E|`]qpex|GEq^bFx"qb|Go:p+`kx"q^Z}|oE)^prp7\[xqqif3os
]x
p 7
8D k[/\o \Ebp 7^. [ 7
8ur
+3||I [/^4
\go ]pro
x `q-x `p Eo \|G}|Gxo
[xHbpe
o `|Gp `oUxH [| Eqpeq ^
^M
`
q ^E|`]qp p |Gq|
x`bx
q ^.[
+E||*z8
pex ]7 q [^ prq4
o `
q ^3|`]qp n^Ikpr [v`i
^}qx^|G
]
ObI| Eqprq ^vbI7o h
}q-x []qpr
x\3o8Ur. ]
\[3`pr [x
q ^~8H^`[x"o pr*
[ prk-c
n +x>
^+
kbpr [R8H^`[xor
^2
vcEo]x [k
z
xHYSqpro^`|Gpr3qp+3|| J \xoUxprqo`q^`qHIoh-\^Z`]xoU^4[x"|x"o:x|GproUbs
pe|Gx4
^+
+E||W
+3||Rk[]qpe T [+^x+`qxi\^oEbx ofoq|Gx^7[x|GxoUx|bprs
o:zbpe|Gxt
^2
+E||
E| 3q `qp d^&bpex'^E|`]qprx|Eqbx |Eqbpeo`^d`bxq^I(x"o:x
o:oUx-]qprxbqs
|[`7q^+x-^ ^2@ex-]\4[xog|I;8H^`[xoE|| pr*[kpr ^2vcEog]Nx-[b
k[
Eo -x []qpe>
[x"|\x"]
\obx
bW\o^`|Gq]
\EoUpexq^}|GoE:" zg ' V3G
e*z^^
x^+\\[/Nxo\xoUx[]qx"ox-[3qo:oEo4^fwEo]xpOxd\xoUpro4^
x*`#\V3oUpexojade
[ |]
^}|GotEbpeb|Go:\p:
vc g]
x
t58`q_f3o]xpB\EoUpex-^B|]
bx-[^xn\Eo
\oNqBbR`bxqDkp3M]
3s
]q
p 3b*
\oUq| \j-x []qpr
\EoF `q|G-x \x|G ^.x ^\xoUxIjade
x|Go:f3o]xprE>\j*`{EW^[V^Es
| `]qp xqprt
^2
[x| \x ]
\obxM
\Eo [-q-x ^| `-x ^ \3oUpr2
^prx
[xr
q [x"\
+x
^bpr
[
Fuentes de la documentacin
xtf`qpeG^[x'^3|`]qprx|GEqR\`^qH7qoq~fEo]xpi^&pepM\[x"q3-\h3qxW^
]xq
p ]
[ q ]3xo
3[d
x ]x"*
Eo:zd
x ^i
[d
x ^E|`]qpex"|Ee
q ^I
t 3bpe3o&kk|GoU3go h
. x 7
`kx"
q ^d(3S 32 G 2ZU3 U ! 2 G 3
8D
zn+E|| ? g 3 U "t
3 x
+z2
x ]x
3oU2
x ^2
[>
x ^3|`]qprx|G3qxk ^I|3q7oUpe ^2
x Ibgo h| Eq7oUpe ^x
x 7
8u8
o \Ekp r^ 7
8DF. [O^'
\o ]peo
+
x `qx `p Eo\ \|G}|x"t
o [x bpeo `|Gp `oUx. [(| 3qs
peq^b^M`qe^3|`]qp
x\3o:+]
\[E`bxq^.[E||z\
\og]pro&*`[
bpe [r^ [O^E|`]qp c^}qxZ|G
]
b 7go hZ. [(o `[pe-x ^}q-x [Ox\Eo\:+ ]
\[E%`pr [x
q ^
[x
+xG
^bpr [M^>
vcEo]Nx [k
z
k[O\
xr^3|`]qprx|GEqbHxo`q^
^^^7xoUx'f`qpr/3^x*`Hqpe3oUx-]
E
xb ] [-x ]
E'[M
x ^E|`]qpex"|EqNkprqprI
[x^| 3q7oUpe ]
E
q `qN| 3q `qp |Eoqpr
[x 7oUb
3qZxqpr*
`xW
\xbxo hqxb
o 33 [pex bo hq
EoUo:-x ^x"W
^M
[r
x ^bpeoU
`|G3q
zqO ]3x"oU
Ebp HqrE|`oUoUgo hZ
q ] ^xpe-x ]qpeHpr-x ]
\E|r3|`oUo:o h | 3qOp ^E4[34^3s
|`]qp E
-x [#] ]
pr ]
\txoU>
x fex|G [pex"
o [xpeoUxqb|G3qHIx
`^xo>
x [Et^bxoUo [[-x ^3o
k|GoUp Eo=
^
`xb" ]
E:^}q( ^M`qb*
` ]'
x ^peoUxqb|G3q
\
-,
p`p3oUx-[ b]
[
k&.
[jp `p 3oU-x [jqpro ^`|Gp 3oU 37| Eq:+ ]
\[E vrOq| [`3I [ ]qp EW^7\o33oUx-]xs
|EqH`vq(peq|GEqv=[x'^&x`^xox-[[|GpEoqMfex-][xoUx^|3q # kbpr&\[
^3|`]q
p 3prpeqkprxoUpe. ^"|G
]
I]
\"xo
ko: k]
[
`
k>
[xI7
`M
x ^. [`E `x"o: YSq| [`3
q f3o]x|G3q E3oUpe \E2^
^xp E&qpeofex|Gx
q(.[^2``x"o:kbpe8.[-kprd^Eq^&]
\[x"xoqf3o]x|GEq~^&\3o*` k
of+oq|3 k]
[
k[8ux
q `x [.^
o feoq|Gxq YSq| [`3bqprx^tEbpe3o % qkbpe\.[[`3xoO^3qO^
oU|33oqf3o]x|GEqR^[3\|G]
E
k
[x7
`=
x ^ [\o 33oU-x ]-x ^Eo:q YSq| [`7
q fwEo]x|G3q 33o=[x8prqb3[^x-^M^\tEkprs
7o
EE3o2[x\qpeofex|GG^>\oE3o:x-]x|G3q
x-^]q
b]
[
x7`x'^.[-x-^]qbpeoUx-^Eo: 3xo|bx'[x&qkprx-[x|GEqqEpex=^>[x7oUb3q
Estilos y convenciones
3|
Nprqd
`{
q `qoU| |Eq `qp
^^pe`pex"Z|Eq|G\p3Ze`qB3oUxqBq]o
^
[[E3q]
`Zpr[\x"o:x:^E|`]qprx|Eq 3q+f3o]x-^x [ o|Gqpe.]qpr
["|3q`qs
p>^=
[:
x ^E|`]qpex|GEi
q ^\
t Ebpe3oxb ^x-^x-\prx^xx 78DIZq`q+f`p`oW\oUE]
7xo:x:
\x"o:prt
^k&| Eq `qp Ibo hqk. [|G| Eq-x ^x"\r
]xqprq ^x
| ]
:+ ]
\[E:^ [
`E
{^R
+3|| 3-x ]3 qbOq| [`o hx3xb `
q \j*
`
{ BE`]xoU ^vpe*
`pexi
^
+3||
+ |
emacs/psgml
xe
zjpeqn
q `n
q ]
^c^pro:x3xrx 2 z 78D 7k |3q}`o:x|3s
:oemacs
o|Gpex-]qxemacs
pe+[\o]peohM`pr[xo
\xoUxqko:prxope`pex"&v|3qpro[xoG[x|Eqkbs
emacs
peq|x>^2[x=]xo|Gx
Sqpro^`|Gxr[x b*`qpe[zqxq`}|Go
Sx x`bprxq^[)\xprb6f`oUx
~/.emacs
q|GbxoUz
Y
"4
x^kproU*`|GEqr^tEbpe3o q|[`32`q^}|Go^^}q|GEqb
reference.ced
`x
q ^bp `bx
q ^
\k
#
]
[#
`q7
x ]xq(o:xZ|G
]
^+
x ^ peoUx3xUrxo
|Eqn[E}|o3
b\xoUx^3t^:\xoUpe6^emacs
[/[3o
qboUpexo`qx2^|[xoUx|G3qd+C tk~]qproUx=[Ebph
^prx
q ^ } \3o:+ ]
\V[3`bpr ^bp `7oUxproUx3xb+x
q ^Z33obpe}|o7fw`qpe*`
`qx \
q ^|G
`bpr ^ \|G}|x"o:zxI*
`W
`qx^qkprxq|Gx^-x \\
q ^=
^i
`
q ^E|`]qp
+3||x|G
q ^I*`>
['
x \oU ]oU>
x [qx kW
x \xo|b ^x xbp
!doctype appendix PUBLIC "-//Davenport//DTD DocBook V3.0//EN"
-D
Haciendo documentaciones
k[
^O7
v kR
`pr [b
x \xoUxO| ]
\ [x7
o ^3|`]qprx|G3
q ^E ^c
f`qpei
+E||
nxmake
Ix-[`qx"G^}q|GEq:^qp3oUq^*`&`h8bx&q|GbxoU}rx"o6M]
^}|Gxoq`
qbpe-x [x|GEq
`b|Gx
\ ]
\V[|Gpex ]qpe
doc/../src/Makefile.custom
\xoU=
x E3peqojMakefile
q fEog]x"|E+
q ^ [doc/../src/Makefile
qp 3oU
q Uk
q ]bbpe. ]x [}|Go
src/Makefile.custom
peqbpexE \j|Gp
# Makefile.custom
# Thomas Lockhart 1998-03-01
POSTGRESDIR= /opt/postgres/current
CFLAGS+= -m486
YFLAGS+= -v
# documentation
HSTYLE= /home/lockhart/SGML/db143.d/docbook/html
PSTYLE= /home/lockhart/SGML/db143.d/docbook/print
^Eq^n
kNt
k^peo ]qxq. [)\xprDx
\xoUx
+x
^kpr [
n8DvH|\x]
\obx8oE\|pr7x-]qpr7kbpEF}docbook.dsl
|Go3G^&ex:^bpe[H3qR\xoUx
[8H^`[xo pe
[ prb- ^2
vcEog]N-x [b
3b>
`bx~
q 3pro:x"8
+x:
^&kpr [3qp Eq|Gb
\`
^
q ^}q(oc
n ^Z
t | ]
Z[\xprI| ]
\[p ZZ| ]
q]3oG
^ ["}|o '^=
[x
++
x ^ bpe [|]
b - c]
hFxoUo:3xZ| 3qvn
kt
kE kn
q ]
`|G
3bbpe. ]x
bpex"
rx'
^bpe [bq| 3qproUxgo h"qq
q \x*
`peqbpe-x [-x ^3q
/usr/lib/sgml/
/usr/share/lib/sgml/
/usr/local/lib/sgml/
E)\x*`pr6^:^E|`]qpex|GEq^n8Dd\`^qIko7q(o:x^3^^G[x>f`qpr 78D
b|Go:3
q ^i[^b
`qpr7
%
%
%
%
%
%
%
cd doc/src
make tutorial.tar.gz
make user.tar.gz
make admin.tar.gz
make programmer.tar.gz
make postgres.tar.gz
make install
bpE:\x`peG\`.^qkoqbpex[x-^E:^^&.[*^o|Gp3oUM\oUq|G\x-[^>[x'^E|`]qpex"s
|G3qb|Go:3q^
k
% cd doc
% make install
Pginas man
b-x ]
Et[>
x `pe [ ^-x ^
\xoUx
| 3q7oUpr)
o [x"=
\h"7qx
t
k*kvH ^4
+3||
docbook2man
xbx-[^x"+Uoff
x-^|`
x-^x+\xoUx~\h"7qx+]x"q
-nxbpex[)]
]qp{^Hb|Go:3obp3V[x
`pe
[ ^x ^*o
`oU
x `
q \xo|Gn
\xoUx:+| `pexo| EoUoU|pr-x ]qprn
[xr
]xo|GxM
^v
t Ebpe3o
]
E8x{x ^ ^`q>
x \*
`{(x|x"qpe ^x ^~^
q `7x=
f`q| Eq\*
`2
\go ]prq| 3q}
`o:x"o
[xb|G|G3c
q ^2
\Vh7qx"G
]xqq. [-}|Go i^b-x [ ^x
"
*`&3qoUxoh>`q}|oIpex"oq.[%^o|GpEo:
doc/src
U3GGeGeS"e3O3G7v
jYeqkprx-[
.[\x*`pr
docbook2man
;Yeqkprx-[
^\3q[qr[x6^feoqpro
\O]
"b3p^x7xqi[peq>^qbprx-[x|G3q~^
nsgmls
jade
|Gx6^Ftv
\[
k x|Gp`x[xqq|Gx-^xZ7oUkEqq`7xkt3o8oUx-EqFbpr3oU|Gx kp3
}INSTALL
|oEbpHISTORY
hq q`qMfEog]xp'^\prpW\[xq3\o>\o37qqi^
}|GoEf`qpr 78D
UGe7Oe-SeS
x"qp
|]
kv3qo:xq_^E^cf`qpe 78u*`v7xbpeq
INSTALL
HISTORY
peoUxqc
^^[E}|Goqpeo]^
txoUx&3qo:xo^k|GoU3x
% cd doc/src/sgml
% make installation.rtf
;Y]
\3oUpr
a
installation.rtf
x \\['e3o^
m;k[]q2[xt\xo:prt^[^E|`]qp*`&q^bx"qHq|GbxoUx
tx"o:x
[]q8p^x[xqEpex"^=[xF7oUkEq^^\["}qx-[-^[pep x|.\s
INSTALL
|En
q ^
x"*`[[xF`Zprq3xqv*` 7o
|Eqb[xZ(o:bEqvx|Gp`x[GtxoUx
[]q
p ^[prp *` kp \3o8q|G ]
x ^+
[x
q Epex"
^7oUb3q%
\obHISTORY
oUExq^n]
^}s
|x"
q ^I.[3prp `[ [E#
EI
w;k/\Eo:pr[-oE`[prx-^ |]
YYjx`pe
-p
y*bxq^&.]x|G&7G[]qG[x8qf3o]x|GEq^\pex[xq
wEo:o6[3 ]x[p3
INSTALL
:
^W
[E*
`xqv| EqpeoU
` ^Hx-[O\V3oUpeW
\xoUx | ]b\o:]
o=[xZx-[p`o:x7^W[x|[`]s
qx
nxI*`&xEo^xo(x"o:x
|3bx=]qproUx8b3qoUxqtEbpeb|Go:\pxo^j|\j-
U3S38O+S-W
\
xo|bH*
`+
\\[/
mxoHx3x3qD [proUx3xb e^H ]
\Eo:prxoN7qoUx-^\3o
+xs
7#8 /kq\xoUpr|`[xor(xOp^N.[pepkr[c^xc[xOpe*`pex~^Hx"peoU`p nx^oU
x-`q*`i\Eo[R^]
h[fEog]xprR^[jprpvx|G.\pex[-x]7 qki^x*`i[E qs
]
o E6^2
\h3q>
x ^
[x&x
[W
x ^4
3qprq ^E\
q o feoUq|GxqH| 3oUo|Gpex.]qprxW[xk||GEq
[bpex ^xd
q [xprx
[xk
q *
`bo}oUr
q ^o|Gpr-x ]qpr2
x [W
x \h3q>
x ^4
[xx"
[>
x ^F
3q(pes
q ^E
vc\
^
3o:x2`qq`Oi^E|`]qp^q+\\['e3o^\d^E\V` \
]
\3oUpe[E}|Go
a
w
-oUx3xbrE3oU[*^3|`]qpHxb`bprxq^^bx-[p3G^W\h3qx Hxq|G3:^&|[`]qxq
x
pex[x
[
y
^
3xIproUxpexq^H[^E|`]qp~]xo|Gxq^r[x x[x^Z43qprq^E|Eq[(|EoUoUE\V3qs
qprq]oM^\h3qx'\xoUx&|Gx-^xqpeoUx-^x3
o
oU]x[%^3|`]qp^xW`q}|oIqcf3o]xpItEbpeb|Go:\p:
Y] \
G8]
\o:]x[7}|GoHtEbpeb|Go:\p`pr[xq^
k[3*`Z[7}|GoH|]
\o:]^
gzip
q [%^o|Gp 3oU
doc
"
Herramientas
jxo:x>@Sx^M[3=\x*`pr\o[x|GEqx-^3
B \
YSqbprx-[[x[pr]xrx"6^Fkpr[^4vr3o]Nx-[b
g\jq^q^7^[xxqpe`^x-^
^=
[3\
t 8D} [x
[pe ]x"
+x)
^8kpr [7\` ^q (x3ob ^']
`+
]U Eo:x ^xo \|p
xx*
` [[x"8*
`&x \xo<|GqH| EqR[E\\
t 8
a
\xoUx
*
`8q|[`3xq+[x^}q|G3q^
n k
*|Gp`x-[|G`
^t
d
kOsrc/Makefile.custom
*`&x-\`qprxqxW[x\+x=^bpr[
Instalacin en FreeBSD
nx`q3oUxq|3q`qpe^ GU U ^r[x~^E|`]qpex|GEq^c[x"ZoUo:x]qpex"+^E\V3qs
[6
\xoU4
x 7o. v |E\Ebpe3ob*[ Eo7q^[`[x>^3|`]qprx|G3qHbFx|p`x-[x
x-`p ]
hpr|G-x ]qpr|G-x ^x&prxo ^G
`q>
x ]
h*
`qxZ| Eqc3oU O
UGe+e34:3Ue3U-I
3
u
txoUx|]
\[xo[x'^3|`]qprx|GEqE3oU7o.
kq|Gbpexqbprx-[xo`q38|`xqpE
\3oUprb
%
%
%
%
cd
cd
cd
cd
jade
Nota: Esto no era requerido para la mquina FreeBSD de postgresql.org, as que puede
que esto no sea necesario.
export SMGL_ROOT=/usr/local/share/sgml
SGML_CATALOG_FILES=/usr/local/share/sgml/jade/catalog
SGML_CATALOG_FILES=/usr/local/share/sgml/html/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/local/share/sgml/iso8879/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/local/share/sgml/transpec/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/local/share/sgml/docbook/catalog:$SGML_CATALOG_FILES
export SGML_CATALOG_FILES
tEo6^b|Eqprx-^I`&q|Gbpex"oghW`bxo*]x|7qIb[d]x-|3z\x"o:x|] \[xo:
Instalacin en Debian
;Yeqkprx-[2[x"8[pr]x8+x:^bpe[
a
xoU}*`&*`
unzip
kphqbpex-[x^MIqkprx-[&[\x"*`pr7
HSTYLE= /usr/share/docbook/html
PSTYLE= /usr/share/docbook/print
bpex^W`qx^3o7i^b|Go:\|GEq^.[\oE|Gb^iE3peqoqbpex[xo[fepmxoI*`qs
|Gbpexohr\xoUx.^pexo>[x~f`qped+E||B|EqHk]x|GZNpeoUxprxo[x|3q{[x+x^^bpe[
- ~
^
vc3o]xc
q N-x [b~
\xo|oxo}|Go E\nH
8DO
k
"
gnum4 -version
Requisitos previos
*`>`kpr^vq|Gkprx
s
qx&qkprx-[x|GEqRf`q|G3qx"q^M^Za o( a
s
qx&qkprx-[x|GEqOpro:x"3xbrx"q^i^k]x|G
2M\EbpeoUEo
s
xW`pr[^x-^n`q\~\x"o:xW^b|] \oU]o}|Go3
3|Eqk*`o
@ex ^>
^>
@e-x ]\[x"og|
b|GoU3okpz
s
3|
x 7o:bEqv q[E}|Go
JJ x[
jade1_1.zip
q[] ]qpr^
^(oUbEq( JT
+ |
s
8_^`[xo pr
[bpr J ^>
vc3o]xq~Nx-[bRx[x 7oUb3q >fw`>EoU7qx-[]qpe'`bx-^x
x"o:x2\o^`|GobpEG^E|`]qp3z
s
\
t 7
8D J ^Iqqxo pex
q xw[x^7oUb3q ( Iq
oUxM[x^*`
bprx3x>^\Eq[qH[]
]qpd^&b|Go:3obpz psgml-1.0.1.tar.gz
s
]
\3oUprxqpe
s
xWmM^2@ex-^
s
xW\h3qxWmM^2+E||JL?
s
x`xW^ pr7t\\oJLF
s
JL5
NM^t 78uJ
JLA
TK
Instalacin de Jade
UGe+Ge3Ot
x>[x\qbpeo`|G|EqG^qbpex[x|G3qqc[x\R]
EbpeoUx-^x xoUoU7x3
b|]
\jo:]x[x+^kpro:`|GEqv|3qn`q\vqv.[O[`7x"o
x-^|`x.^Nk[7|]xq^r\xoUx
\xoUx&x|Gob
p i\` ^ko| ]
Ibpe3
a
Makefile.jade
\|Eo:oUx[\}|Go
[3q^{[x^qbpeo`|G|G(qM^n@Sx]Oux|Gq^[E
|x ]7 Eq|GbxoU 3Makefile
nxx-[`q(x7xoUx[*`\q|kprxqboj}+x-^x*`b=]
`bs
peoUW
x `qE `]x"o: i^2
[x=
]
h\oU. \obqprxpr(x"\| EqO `\(-x [Eot
]
h
pe
\| 3
prefix = /usr/local
XDEFINES = -DSGML_CATALOG_FILES_DEFAULT=\"/usr/local/share/sgml/catalog\"
XLIBS = -lm
RANLIB = ranlib
srcdir = ..
XLIBDIRS = grove spgrove style
XPROGDIRS = jade
Makefile
m;kb|GoU7x
\ xoUx&|]
\[xo6@ex-^Fd[x"8oUoUx-]qprxt^ t8
wqx7*`&kp |]
\[x-^E -ee xohW[x&qkprx-[x|GEq
>u7I\3
CATALOG /usr/local/share/sgml/CATALOG
jk[}|G
|r^Ux:e\V3^t[(x<xG\U]UxGx\|Gx-[z/[x:^|[x-Ux
CATALOG
| 7
8D
SGMLDECL docbook.dcl
\` b)
[x"M
^ fe ri
fe} . |x"^b
x
D}|GEd^n[xIr^x-^Etx-Uxb[3
}|GEG+E||d[x"G[
x
bUx-|]
Iex
PUBLIC
PUBLIC
PUBLIC
PUBLIC
PUBLIC
333
W3UnBeG
Q
^t
[G^ :
`G
[[`
-O-^ `.^<+
`. [`
-O\-\
-G [b U
/usr/local/share
`I ]
\[ M[3W[3
*
} G. E& `e^ U. : Ob
/usr/local/share/docbook
k[%]
-^k.
:
>-[
M\ G ^i
a
[
doc/src/sgml
book1.htm
-,
Instalacin de PSGML
UGe+Ge3O
3
cQ
\` G--^'[G["b*`.e[7}G
^d
]
^*`M
k]
W
\`/usr/local/share/emacs/site^d--g].ed 78D
lisp/site-start.el
`-^i[d.
Gb e7
(setq load-path
(cons "/usr/local/share/emacs/site-lisp/psgml" load-path))
(autoload sgml-mode "psgml" "Major mode to edit SGML files." t)
%GbW`E6 78u~`-^i-]3
^^iH8DR-^&E
(setq auto-mode-alist
(cons ("\\.s?html?\\" . sgml-mode) auto-mode-alist))
;`^}--)[ O:[>^.g
SGML_CATALOG_FILES
^F[`I^-[-}Gf`.e
e6^4]
\[F-
7
8D ^4
]
^I*`>
-]32
[EG\psgml.el
er\-&`&k-^`d>[3\`*E
\)^
fe
`
[-)
Instalacin de JadeTeX
(
*`%-]3 n\`^ZE-[-G@-^_\-+`E]
~`e[^^e\-ifg]
e.
-@w^7:c`*`&t^7
>`EfmcUkc^.\`gI3-h&-[^
]
\ Z fe U U7
R['
3r ^+
^E ^H
\ ->^d
^Ef`G v3. j
\
G -[] Oei
\-M[E'^`] E7]
hb ]
\[
`d
n`E
[b
-^ ]
h"k
]
@-^j*b
[
"7
^I r [3 hH e`\VG br `^i
]: gcd] ^ ^H*
`
\
&. [r ]
\
"4
g -]
r>^i]
\[[}Gn^ifg]
7W\3b[I*`*`.g^.^-
jadetex.fmt
[
} G
\-~-]3 ->[~}`-GH^d3[\V-gcb`-[~`
-[-G
jadetex.ltx
b
W[
WW-]3 -b>
\- >
&
\RequirePackage[german,french,english]{babel}[1997/01/23]
`\` 3`-^
H j
\--hd^`-ei
[b
`^Ur. `G
{^ G ^
*``b-\.G^-^vb ZE*.\-^Ek^:^3^i-[]
^HO`'@-^D3
f]
-G
M^:
U. fS. } G 6
`- -^:e
\V` ^k. ]
\ [-^^4
]
- *
`
`r [ G
``4
^7
^-3]
"*
E2^ -[[4
^Z *-U -h-n^7
-` ^Vc E ` -[-
G
Otras herramientas
Notas
jade
d+|
-D
] [
"
-p
Bibliografa
.[Gr^U.fe}G\d[.`g"\E # OM3e
Procedimientos y Articulos