Rules: first fix - Mailing list pgsql-hackers
From | jwieck@debis.com (Jan Wieck) |
---|---|
Subject | Rules: first fix |
Date | |
Msg-id | m0z8PEC-000EBPC@orion.SAPserv.Hamburg.dsh.de Whole thread Raw |
Responses |
Re: [HACKERS] Rules: first fix
(The Hermit Hacker <scrappy@hub.org>)
|
List | pgsql-hackers |
Hi, as proposed here comes the first patch for the query rewrite system. The tar archive contains mainly a little test suite that would fit into our regression tests. You'll find the patch itself (src.diff) in the directory ./ruletest. Changes: The syntax of CREATE RULE now accepts () in addition to [] to group the action statements. I looked around to see, what ANSI says on CREATE RULE with no luck. But I found what other database systems expect: Sybase, Microsoft SQL Server and some others use CREATE RULE to add value checking on table columns. But Sybase says for ANSI compliance the check clause on CREATE TABLE should be used. Ingres uses CREATE RULE where PostgreSQL uses CREATE TRIGGER (and it uses ... EXECUTE PROCEDURE proname(args) too on it). AMOS uses ... DO proname(args), so I assume this means trigger like in Ingres. INSTEAD NOTHING rules now create an action. It is a new query command type CMD_NOTHING that is treated in the rewrite handler as a null statement (thrown away). This allows now event qualification on instead nothing rules (formerly not supported). Queries that are fired in by the rule system are now executed before the original query (if it still exists after rewriting). This is required because a constraint delete query fired in by a delete rule would become a mergejoin (or the like) that does a scan on the triggered relation, but in the case of a delete it cannot find the deleted tuples if the delete takes place first. The same would happen if an update modifies the key fields. This might interfere with table constraints or triggers that check for foreign keys. It could be a situation where only a real trigger can help (Bruce, did you receive PL/pgSQL?). Major change is that relation level rules seem to work now (as far as I tested them). I was able to create insert/update/delete rules on a view that do the required actions on the tables behind it. Constraint update/delete rules work. Instead rules with qualification can be used to distribute insertion into different tables (user inserts every time into the same table but tuples are really inserted into different and/or multiple tables depending on qualifications). Left to do: Create more tests. There are still problems (don't know how to copy object...) when using a rule after creation without starting a new backend. This must get fixed. Create more tests. I haven't had a look on attribute level rules. Create more tests. I still must look at the update new stuff. I don't know what it currently does at all, but I know what it must do. It must modify (or extend) the actual parsetree's targetlist entries putting in the rule actions target list expressions. Create more tests. Last but not least: create much more tests (would someone be so kind to assist?) Jan -- #======================================================================# # It's easier to get forgiveness for being wrong than for being right. # # Let's break this rule - forgive me. # #======================================== jwieck@debis.com (Jan Wieck) # begin 644 ruletest.tar.gz M'XL(`%H@V#4"`^P]:W?32+)\C7Y%DV''3G`2/?T(`^<P0[C#+H39P%S.GMT] MK&QW8H$M&4DF9-?<WWZKNEL/VVJI93LAS$8'8DM=KZZNJGZIR^%L3&,:Q4?W MKN\BMMYQ''*/P&7I[-,P^:>X=$+:3KNMF[IN.U"J=_3V/>+<NX%K%L5N2,B] MZ47T:5P"-^R[]_Z`5YBT?S0(O6D<'7W#]G<Z'4LW#"RU=?NN_;])^X<S_WWR M\+!<):J7H>MMVY:UOPG&82;M;YL="TK;N@'^K]^U_[5?!P?:P0%Y"XT=D<`G M+OGLT4L2C]R8>!&)Z)@.8K)/@G,HBMW^F"*XZP_)R(V(YT<TC(]FTZ$;TZ,A M1:O!AS%UAP2-*")Q@`A].G(_4S(8!Q$E8^\C!0Z4A-0=<Z*'`*1I7)9WE/B4 M#@D:($'"9`Q_0BSE_(!#')`0R]_')OGLCF?`J&FTB&GL/2H',@'(K`*R`,@" MH"(H*\_/DO"S\OPLLPH(^%E6%9`-0'85D`-`#DH.>A2`O*@`[;.1KXI17)4< M$%3%P*JD-G$>!I,4C/,4)G#IQ2,R",`07#\F],LTI%'D!;XFRA<PR>6(AA3, MZS$QY-25Y"\AWT?RYIKTDZI7`EDE^MG?)V=T0B=]&C+K%\*BFZ#G)8#'Y$5, M(O<J0H1GK\F+TS=O3YX^(\].7IZ\/2'/SUZ_2MK=(.]^/3D[8:H;S,*0^O&A MBVAO`N``[AM[$ZAY`(T1!I<1;Q8$-LD$PAZYH+&08JC]8ZK](]Q$@46H"X;( M$8MU6$0T7HM9Y$Z$_467[G2*<<0-H:)C+Y+P;O9;Q-U+1,`;52F0GQ]<<G:! M/[Z"/U3P(VX<AUY_%E,)UXSE(C]+SJ_X>=H^7N3/QF,NUC@O`7`8>N?G8'=- MUNY],#Z4-+4ZL"30'`7`?O"9[FD\H&>%$5*#]G?)0QB;KS`LM9H$J$J)G&<D MCQT+0GWF0J%1VF8N@I2TE@R_U\M9N+T&@6XW)?`3<?2Z5EOF$(D-'KJMU#X. M^X)=5@A"I*5NN:H3-7O8UT\HF.J'P),K-^71SRDY8UPSGA:ZN:6H<;D=/H%1 M9;UF6]084#/UG!%DFB[593)P(N=!R"TV=*&^B8K%>"@J'KA$5S!*FJ2=1R,( MP<8;+=)XZ?FS+^3/KD_>>73PL5'8[2QC^T'\X1*QWWG^Z=L,FS2AA/:#X..> M(B$ZC6=,CN<>#-]H^)F&C>*A$'REX;D[H`65H/%(+V98@64H8Z55KL4KJU^" M5H`WI6$$L3%%XGPJFF09J3]!I)_#&;!_%4P^>*XO8><.)]X*-ZZ40DZ%\%P= M*O!<,*$(E&C!081!H)/`5Q][T\>D,1W/XJ`A7"3W7%`!(D5^DNJ_V(V87,O\ MA1J1_S3A\N&2J5VPGPYI-,#'68-(^"<,5N.NJ.5*?;C6-ZL.#PQG.*S[-'/' MWKDW<&,@RR8TQ<&`3J99^V!E1]A$CJ[KA[K$MA=0+C#>($I7SW`6U(K@J%.: MU!2Y?$E4NO!TU%#!_0CL(G?LAE?XI"W8%M'[(J.7H7=*T+%U5QL0:2P!<R5( MV@[@Q\&%1)$3-XHR94[H%<0\4*9=H?\E--?C:$Y-M"N&U:YJ;$FMD-JCTBHO MZY[Q7]"_^/*0-`PA156++1`[%(\7VV,1A#TMEU.ED6L3%=[X:C:.O2EXY,"- M!NX09@7"->%;?KVBQ$=C.S_=;)S101`.230*9N,AN8`)5P98W(@Y`N:F!`R] MG()33<'9F$*O@@);)HH[U=JHJ(S-";6K";65"'6K"76W1,C2-VUI6X5"H0O$ M=K%KQ([D>5ORO"-YWBWL6I%MP5.G\&F[\&FG\&FW>$&NMZE;]C9UR][&;MG; MV"U[VW++WK;<LK<MM^QMRRU[&[MEKZ9;%GIVH2_UTNGU3S`7_98>75_F/OD_ MTA":OZV2LQ6#%HA:K'28'S%[1\.P]6\:4?F`Y9<1SM[9-@RN%8.9T=#S+W`? MAN^KG'LACETB`B88XKIJX:"%X>76R27+TPS,7&+NG:=#(YA<CI#[Y1&NS@6S M>&EF<QF$'R7K'(CJ+ZS4-RYQ80_7IXN];`G#K(W!HO`0YG&-F-3$[*V+R8)E M391>;11K[9I9:]?,KE\SISY*>P6ET%`Y5J&OLR)ST0CB("#1Q!V/2V0P%\6N MAP+S)<!Y_1<E8#,'+*^=9`&:E5F%(ZY$*9(24UIBR15IU_98N[;'VFM[K+VV MQ]KU/=:N[['VVAYKK^VQ=GV/M>M[K%WFL5(OEQJT7>7G$LNUE2Q7U9_M^B'` MKA,"[.(0(`T8ZZFK*G`HOO\3T7@VW>X;0.7O_QB&W>XLO_]C.<[=^S\W^/X/ MOH03L>F3&%X&_"4%_C:06!0;A!37!-D;.]FF7!.'S[&-@VO\!,LN@C,5X:P" MN`20"9/NX[E1\;3$2`FS%;T$_CVX&^+`<%4X7GYG<A@D@UUMIV`>D0U4?'J) MF['XT=^3<)I-AX*36$65<9+M;PHF??&UK^UDFZ_IBQX2YA`Q!7,1.V7,"Y98 M\N_BY/AH%4:RLO>9O`J6&`X@GP8Q/<8O.U/P,S(-Z6>@'G'VTUD<X_QB$(R! M%-=\/W0''VF,;<;00OIIQN8\R'6"Z[G$';#9!Q/F$%]ZN<2W:LX]GY((R/%W MU78R6:D[&*5(>7)^<"FQ;[%1U$SVB&+Z)6[ACA';A,*[8CO.MAZ74+WS]*88 M4VR`-:<YI&D%-[[#MX"2YYISH9RM``1:JB$Q55%SL)@E.\VJMKA)B)::W&D[ M.\M[:XD]B2>/Y!*9=27BU=],&HDX8,B&Q)U2<8I<*5/2FGH`DN8ZC+DNUJDN M&EY)Z!)V6:;]:4[W_+O8L5V28EHN@SR"Y64HK[J,944D&P<7%QB(2GH\W)1J M\OVHP<@-84BWE^Z$3@*?7A6[*-^06L6\'`4$'[62P,2*#"P"-0)=3K1%@O$P MO9.R8'M[5=(5Z!U02_I'K#):6^'&)-8JWSE27IL+&D\O9@"/M\V]%OC@3F.$ M$;?!>T\N%(R&DVU/B5ARB\RV!S-ZY'[.V/F3[4@>^,&J[(N<Y'606[2R:A-6 M94*>"_5RE1:)5V'^D^IM4L1/=TJ);%1HYT=Q\GXK=A3AVHIP'46XKB)<KP"N MH(UC&[W'D+A/;*<=$!O8D2>/\>TU5#^_QR7_JA&H(QN!2L4Q:XAC+HICZ1*C MA(:H(893$E-B9UD*8C@RKITZ7-ME7-LK7$VG2O5=*?<*=V)2H5/R]?NR7D4L MU`MK*[9&ODJ_/#\"-U^VS`C&MM0?I,,)^JE04XS>^]"2Z$J(5*X<(=.*@K[$ M\*C92`5HL!#58-PM<L!?3Q<;9^',)U8X!"41.QY)N@(AK%TJ;-JX:,2&KE^# M\':!\*8_+)?:K%+QMJ0S"Z0SHKA<.N.F#<"H-H`*SUK>F"KQ++$$J13OQ?J; M.JQ5`]96ZTL8K+Q1>'6T.OT)3$'Y.HE1RM&LQ]%:Y&@O<!3M4L;.*F-G%E2P MRIM%@ZCW%$(0NT*0PFK]\<Y_TB]3L!$ZO(8#P#7._]J6V<%2QS+NSO]^F_9? M.``<S.+K/O]K&WIN_9^W?]NPS;OU_YNX_OK[R=G?CHG2R5H5V.2`K0IL<LY6 M#KMZVE8%-CETJP*;G+U5@4V.X*K`)B=QI;`%QU=58).CJ`)6=CS)G9.^=O`0 MAD3&W#`T<VZ86M-DQT#WM`2Y^C2N,A?.P$`&&?TZE58X>5JORK6$6=*JTCG? M-5H`_EA:TU)O!L6JW^ZCQ14-4WPJLJPE9*>%:[2(B2UBFIHU-Q5;I%RDZD/$ M6Q.N]G'B=3D;<T+@%OY8^,?&/P[^:7:71%(\F.S.&2,DC'21+%)%HEK36:)9 M\PRRBB\MP6[>%*I'DNLQ9+S,N6VJ,UPYP[P6QUY/G>/*H><:707P,>;=+K"% M/UMPOHT.2]?0E(7&8*$Q6#6,H?((]?5&!MF9Z_6CPH(:[+EE@P-;SFI4J'5Z MNT(<PN5A`A$F$6$B$2X3$\I@4AE,+(/)92@(5OM$^$:2FEQ]3%*326HR2<UB M23<[-ZY,1/'XN#H]R2ER*0&5L^3K(AMUD5=.EM="7CE@+L56.&:NC"LY;2[% M+S]S7@\M/7JNBK9\`KW(+=<\AU[BG/GCVQQSSE_&`6=EUT/^H3$U$#+'!H31 M3N[6@%M6VZR4293=-FV%H9$X*<[>29@+6;2\"`<:LB!SP5K<"<Y:?X)W@G%% M/[3F<7I%X<FB])GX3,1,1LXQ5QUVF]1'8010=5Y_&\U>T;!FS8:MJ9M4&69E M%U"9+4`-LS!I0)$-U<P=H$RB7@J!,K+JF02D%E:24*"DP9-CYAQG\9KCJSUD M+E[K80[,7^AAGLW?YH$K,<.%Z^&"R4B_:DSGRWS92N:<O6O#'SQP6EPM\)5] M,+ZL>M6X75T@YW&9.B6X_$T9AMO.^*8BJ.)V,MR43)G,YSF94T%SXJ_.,-?, M!5$#NR`E1!WLE<P0I8Y=FB#BSH;_$#;,[+&ZOG:1KI@UKJEGM$52C=LNPBV? M?BDG)%&*_^OF);ESCSOW^$;N4<:W2L]E?*OT7*:K'&ZNOJG:M*9A5`[9%9/W MW'G>G>?=>9ZRYY7(+&FCMHK,$MR.BLP27"<7+>S*D7?-[%HJ=,PMT5%*ZJ-$ MR-D6H1HI?I0T52/3CQ*]&@E_E.AUMTM/*?V/"B&[!B%90AGBSOND\M(6NB;I MA3L.I8H2U(BI!&;J<P6ST,RV`EA7,[M*8):N))NM!M;L**S;80*?[;:#42J= MDU`S'#6PWES!W5<74F5)B;9;5T4K67[O0Y89:<L-H:@Z%>&Z6]?<5AU'X?TN M##CR0J>LL%U6V"DK[)8%T]Z6^OW>EOK]WK;Z_=ZV^OW>EOO]WI;[_=Z6^_W> MEOO]WK;Z_=Y:_?[Z.0`K!@[ED4@KCT!:^3A!*Q\?J.V&_;?UJLGK;4U=!>&V M]W32VFR:(/)['@]OM[^V[YSH#^Y$W]5P<9OY4^^</`$SE"9'EEH5;.-NTGM+ M)KW&W:3W.XEB!4F02RJ<Y$*&.L\'*K5^J-@F<V->=D8_-?NY.2_+-)#!67.% M=`H`9\\53MVOCD;JYW)61337193FB54FT-N0P&K66&7,WKJ8UJ:UMC:MM;UV MK9VU,=LRS+)\L?E(M1"/<(R0$L.10'9CZOF;7N[&SI<X^9MV_F:EMUTC.;4J MIK,V9CY/K2J.N8I3EGZVUM@]R4M+6)MI?.\=AA#Z_/5?H$W8A\**9M+RY0!F M%8!5I11[W;!GKQOV[$W#GKUIV+/7#GOVVF'/WC3LV9N&/7OML&>O'?;LZK"W M5G+M[R9DRO-\UW*2&I'17CNFVFO$5+LLIJZ5"/S;QN-[=]<?-?_+4@+X+62` MJ<K_;MCF<OX7NWV7__TF\[^HIG8O`3?K@5N5X,KIWA?1;B#K>QG#FTK^7B;# M->2`E[>D4HIT.;IBIG0Y@<J$Z7+4ZKSI4BVK9D^OGSQ=)5MYE5AF3;$J,JAO M+-(-I%&OXG^=V=2EO%5SJF\KI7JY(`J)U=?,JRYW,95TZ:786\V:7LI)*7FZ M5,.W(85ZJ7#?52+UTIK<EG3J):.;HF2O)>!./?!V/?!./?!N/?!>)?@MR91> M(=3-YDN7"W/]6=/EO&\N=[K<H%92H5>`EF5$7T0MRHLNU<7MS8Y>)?)MSI%> M)?MMR)1>)>,MS)<N=Q%I^O,*%+,^BE4?Q:[3=UQS9O0JOM>2'[V*Z0UG2:\2 M9YU<Z7=KK-_%^B_^&7M1?`T\RM=_\:'-UW]M@`,`S/]N6W?KOS=Q+:[V:_GD M[W>>^]_D_]DO_HZNP?_+?O_!L-H6\_^V;G1,F%/`$].\R_]_(]</]X_ZGG\4 MC33MV<^G3U^=/$[=GWZ9!M#)\\>:]OSL]>G;D]-GCW?9+[@>^.2`DH-/Y&!( M'G"8W00E`=4T.A@%9'<?+S($HF%PA6MR"089NC`F="-*&,BN)F"&_01BD808 MF,!P14J!@ZP2V!6?9S/?3WXR*-J%TC!\K&OLAX7P-?9_#=R8)'WAO\@CG'*@ MD3)DJ//N@Y@<'AZ27?;T05)3\E/R^]D/V&]FDR<AC69C?A_,8F(^^=%@*-XY M&4RFY"`B2Q#I!JRX?X2IW'TMZ2.Y],%'SIB.([I4]/SIBY<GSW:U':P1YW7N M:</`IYH&3/].'D`!M-DGHI,#EQR<LZ52#/],X'_F&28JR[Z'0FUYG-T56&89 M2<O\E(?50)82,>+9^7E=,1(<%3$26!3C+N@7Q?\H'!P.O?/S&Q__V;JE.R+^ MZTY;M['4=N[B_XU<V.3D8!`2;/\@]"Z.^OB[V_[P:.J&,,D[<GUW?/5O>CA` M"&FAAM&YDL3.\]`C3V<7A'2(81SK]K%E$*/7Z^+K1J7T=U[!K!,Q#<`TC^WV ML='CF/N+%Q.D8YNMCF.R+H&19@\Z-N'OM9$X=/T(0O[D#*S_33R)F[\AOS<Q M=B[[TP@_6R0I)/L1_-T#O/_`_YV_SFAXM0.&N_\IO'JD/<P_X;M1^!+5SDOH M/W+/(GR(SS^Q1'43]R,]#8:TR7#W'HF2@R>#8#)Q_>';JRENL_WRZMG[W]^^ M>/GB[=\8/C`[VL>_9)\TEF;:#?$;>>*G.,0OMT)WAOMC/J5#X@K,3\@30$`+ M%Y2OR40!_\5*>AEZH(,1B#"F(1FX/G&'0RP3N#[%-%'\]_B6>,2<!EJ`!^W& MV1R2=PFJZ+Q=P9_)B0C8FXMJDQCKC;4^??WVUQ>G_R-0V2I'/(*N&7]ZA/?P M)(+^T@,^_:L%V?F&[B''/,(/Z'::V(0'3T1;D,>/R>F+EWO0H%`LVF]G7RCR MO:2)$#0'4M160FJ$9>"@NS-4,OLAPQ,_#J^:B75Q@8+^!^CT#V"T,.8[4;O[ MO_Q^=G9R^G9_M\5(X`5F]/SIRS<G+?XA9%F'^.G)NRK"J_4,N8T\)IS\P1.8 M,+)'*?B2=LG8G4[!C9N@Y!;)T>*2?T4T,/@,?@$_\92C_6+G;G>9+[,'`+:3 M2>5%;/(*!.-P1A_M``GVDY$PM$+C<L=CM(A%G)$;/;VX0"'.71A4,>;W`6)\ M[H51W!0R[3&:(FJPB)&H>@F.NW*N:F-<VTV+6>E7C6>F(YV>WNKTNDE8NJZJ MB#WRQX2;,MG?6Q+Z$0-#-^%/%DW[_H)M[S'8:U=/9;]T$;J3PZNB3H.7E/9( M'&2Y.W*.8?)9UAT)M#<ST1>UB6X=F_:QV97W14;/T%OPQ\EZH^11.VGXU],8 ME89=QC$A0M',0?]#'CP@+%@](E^9ZN8([4V\?Z,#(E8.;#P`)38?&"T6W3*, MQM\;"8^?Q\'@(VG\LY%A/3`1\B&';"Y#[JU`(DWAHWG0X_3V%?Z,>'4+LH_W M$)Q8]U$\P%B&*6W59>""]NV6MN\*@<66MCO'3KNTI:%5NVE@0G_B;H`N=/K[ MRY<XAMAA@PA6&%+VBEL6Q'\+(C_U'%':(C]&,RC[#%.^][/I'M+2R8\_<C=L MWO?\YV$P^65,YG.2!\0^3M]C''=VZ#BX:)Z<G;T^@TZ`L6*OSY`_1;P79;_P M/@EX)^N3P!_0W52"G%?"9XBQ1O0HO$L(A[-I4SP!6&'A+5.WTL!V*U0!O3T# M1'[W06R8AC=3RKE^=P_Q"P!8WYF1V?'\&+3QWO.']`NF-UVG"H\$K1#FR:%/ MFAR[/V;=.01J/QXU4QX'>`1_N0].2'S=3DMC&/A:J[WE?BY&9,GG,WKN^<L3 M"0E,L9]+@)F?_WDVAMDE,2`:6\<PRRST<QF!_.S"@"AQ;)3YN>.TC'8[&X#L M\H$WC'.P7PXN0</858M-,O@F7E."5O?C",?).*R.X]#KSV*ZFQ\4<%=A@.]Q M=`W63>Z+*01^AV&!&/;O(7"^N=G];H;*-NIDDP245;S/-(9.=#;%=3LZ1%D. ML-E_`#%T_A7'882-PO&G!"E(#3RP$H,QYO%-ZU&POXFC=>B2/E.D#2B"3D.= M4`K6S(H?\Q##6L'@(4;9!G_E$YMR(TR!E*PPA5[M;BQ;R0PS"HMV:,`LUY+; MH:FWS-RH`F_3$<4/GC\8SX:4[/HPA8F.IJ$W8=\.1[O<L3.(?.<'<RL*(,EH M,WT&LR'?F\YXQ\BG5<4$LMZ3,5J1`V%D@BRIY0VW2@0LJK[MM!P]J[[=;CEI MAX,QTAL0'%"1?3;H/>,T7_LT&02G=6/^MX`QI'0J$!AP*<KGP!N27T9T\/%_ M/7KY&PTG4?-,*(&=86@)JFF\?KB`*AC]%M)I&`QH%$E9IGBB+,$,HEB@G@;^ M&_9&0['$\(\Y,_@@S.)A4BTHO**Q2PZ*@YW5!3<SDV#W-:5R'ZEX0^JR*7E` MIK,X\UH68_Z_O:/K:1O9WM?\B^E+&QH7DI"$4$0E[BXK(57=6\I*O4_(Q`9\ MF]AI[)1&J_[W/9_S83MTVTNU?2!2"_',F3DS<[[/&7.57J.>6:4W0#<K>4B! MAKAB\/0S(FW*%*@+U@7"<X/!@;BD'\#XI8E!1#VKC*PO30C[O?J!P7<JK,&0 M3=GE9VB3EARU>>*%8Q0=,JHCUIWX/#L*NLE2+AEKML!%(^*JXMEM-P/O1N<0 M4T;V$]&`F>#_2S*BP?,*6G;4+<IVK)-&5I!"O'B5E6<JY]EHJ>&C'G;P/#)V M!#$+)$]`%H:N6T'E20@DFD@-DAS$]\SU#&:CWM:7'8S`^CWH*P=N)Q0LJZT1 M!6U&1'%_C2F!OM`J%AJ`.Z+KN\X;7:05U$BU:T[RC9FGBX75/^N\8HV\^W\1 M3T@YCEK:2:71ZI!N]/B'",NWA[T.9'8<JY6NINYW41^37SB$OP_U86Q;<Z@O MYOM(N6>\[ENHV4[+0-]$^JV*>7\4#4=]9R#*(78<-5S/XQM`Z.+\C],C:?LM M^WR>EDFQP*!+V;62^\6K*E[=I!0=4//,<QG8Y[>]Q?7G/NP3?&'S8#0$I`Z8 M/UOUZ6`0C093#VOYT*;*D#SB;1HO+V?SHDS1.4G15[%ZWPLF!:O=T;,CK#GW MZ<2-TB#WDD[$)J3;!]-HY(R;!T?-_-F*7.`+W8-BZVY.)]'H<*R[Z31O!^4? MB1K0N"C:4-V<5>F*"B1O5\7ZYI:CZR0##%#X?(.RC`AOUYB3:^B,'H0O_.Q( M!'D;H_8%88K`S$Z,[O_P;W-CO-T9=BA2P3LQOKUC1\/<6$71=5'`%'@L/B$" M-W&6`SH7MQ93DNLD2LG:!YL17&3XYX9+\S*C=(-H_'(7-I+_</E+@`4VK#8H MM*_):8*U766K!#;JA;E!'X$V<(L0)SHY'(%-:.GDP3;=@IS`ZED&:D7K;9JM M3'&7NQV%,SKSU9(%IH1'2]ZDC#^E8>;$CF5A*>;+B1B83Y,PC?Q+!OKO'+8Q MT)U*%JAG<[*Q<,5W)KZ+-UOF=2MV(SS0.;4QRW@`QOMPZ(D>G[W4.0;>Y=,Y M]O4U:\HC]%A":X`4H03)'UBS(JV-AP?@<.Q[,NF[<%YYI^69,3\&[]:]W^]' MX]'8[7U=1[79#BQQO3!%T`V?U./\7K--\Z@P]L:1Z""&.FK:@ZR(Y]CI$F11 MLIY5,*S8%FH&A,UBW,/GEV*Y.<F3DR1Y"QU\92FX1,;AX,#8,]#PF_31%(8> MS<H.PHI!5(G+"=/*;0I&3F.E*AHSC*Z;[.4,\/V=DG?>WJ@'U\%<T(MO_C`D M6-+OJG1I!B_U.TPN!..N>]M0"["W/*3L[GHYQS]UO,K0D64N`*M_?#AT7/!S M4H^:NIKI]>E$3%79A+/\NNA0<P:_81LW`ZMZ>_E$]O+L&@4H7J:!?R$7D[0/ M!+02),`U\^0H3<LJ`_VR3%>814N37?/O-444`[#M"?C2%(2.)_P93'PG1#-) M,'&.BL(D!3S,JF>ETJ\I\OG&`F6YF<4E+D22[ZF;DF9"2V#[3)2!W`7K(,L_ M8&^8$(P2'"5)KV,PKRR,L`;,%].,6#&@.A$V!9Z';&T!81F-0,V.+5G(*BU( M^"@F#4-A79^)R8:ZH[#6S3REWNNE27,T!'9MW^:)[SF7J2Z+;$D!BP^_%>/F M*G,T7$_^S+;>-E&+\?]^5-L!%_)7ZK0$NTO<T.D<&Q\BR.<>U4'`'KP$ILX+ M@)JG^0U,&0)+X,KTS-`'=NC6Y*O?&AD5IU;4ZH,6D6ME;=!'UUM'W).LM04[ MOK42`@\(T]AG;]Z=GE]@BB=X_,=_?CVY.%5_%WRQ-^E=]ZF=*PJ&WW'CUZD@ M+'UH`,FA_8,*I!>X_&WY_N-:OI^+1<#-K+)\S34?/Y$6:K5I)OO1>'+HN[(. M?:=$+9^?$B6\#:QI.)X9VOFPD^@(@`AS/A-JOO?OWZ-5;A=4@J=5511TPMM6 MU5UA8YA%GIJ[/7L^D3R`#;;0MG$7?`P0;"C!\#ZZ*`<ZUH)N<:$,YE-3X#W2 MQ)-!/YH,`A_Y0=?\LZRU[;PG_0&L?>@YV]!Y>0UH=Y%Y;8!@2V""MN0*N/%# M(_XI-=I'+J)9#QW>FR>(S%51S$-C1-,!-9E.L48ZR!'6-^U[3NRVQ1#B3<-$ M[1)0GG<QQDRWADPC[>\YA-"=1,::/$74PXEY)CK[6>"9MJE(U9`UP^SX:X99 M0XQJB-0+P&PYDIX)MZ"'X>+VI(KAUDZ<4"`D2:LXFY.)02$.=VK6VN%B0H9* M4A3L2.(\1VW.O3"O`]_^;F8'NO[)I9WAF&2&73L;AN(ZL6R`II@PM@,N=W:3 M>U6:W`5,/`S!F'R-CGNI]I`3K-J0^;`<;30VCV=$&>X8MP%H+]UAM!Z6-H]G M(`D$^#D8$SC]-=B,.<H2,NL\1M9JS?3S$I`L4>T)*+UQQA5R5I0+P`I2::]O MC2WM]"*EX=:85Z:O-9Y!847G^:I*.;ZG?3NKA!]03+[SO)KSUPO:#8&JY@*% MI1]`CQBMS0MZ1(]7F)UN+^+8CB16=6A!IM_+90MA8(R64VBS@"-8=?VB#%>T M*1:%Z58@=]OCQ[(;G8I*"[O>ZEQ58#676>T*H2L0#4YV4E5OUHON*@$>F?-: MH`?]]`I(.HVV@@IDO/WB(M!>+6*;N`)1:;^?O5LRGY;',81GI9W<\V;_I,AM M$3+_\=(,R9+!FI7$7V-V86>/W_]6/E:97NAMQ?%F)BQ75-3W"LP[R%RDBP,# M+\P0$R%:T[(*Z$!("GML80H.F'M69K539Y-Z4-VP:)=NL+^OP4UW8UUJ^,MU MDA7;AK/PN>J';>WX7)&R@:X.F;^6$W0'>[TC_=[`.F`G;@YYR@-37!KC`(2D MA.S<9%L'@&Q""^?A":/K/ULD%1>.RZG6G#3JW-8DI>;O3E^?_G(A_00_$2.+ MN)K=XC&47=<S,B%2D1?8DFEV[I_5P]JQ,*^7YW_"+K"_6BN2L(<&,54(=:3" MN1:Q%-J3+![W5(>EEK\4L5DG&4[=!4]Y;CL>HRX_W#K"@;Z^GJ"_0X@J`X5" M+JG8[\AK612))D#[EFJ^93/"H1&&MP85.TK:8_-BL..-?(*B\%PJJ7#<KIRP MU3ML#/;J3K@^".;S^X7,8%N>ZA(5Y2_;17Y+DDZO"/1<+I;Q/5*]\(/-\%8? M`\SRR=B[=B!^NJT841ZDIQX+DAG<PGUD!;B],[X<UR2OH'6IWI6,[M)97BS; M)D9-8VSR*Z;]PV@Z&&U/`$_&!]%DXMV:F@X.HNEH/TR[&F9B?[IZ<,KX9]TP M:M&6J\?M.!B)18E\\XCLP#(#)X2</X'2]Q;YJOMJH_;E&H.5NN22JXP$\!:C MB:VF0$(5H(GI8J$6UY?@U//L0[JSJ^#O"@P5SBBLB?>$;],%W4BR'1H+W+,2 MI7Z"3X*;1U(!LOPH?,**_GFU6![Y[1BAJ_M&V%R32<N/D:G-YV02C-ER`V3Y MT4H5[G"?#0,];.\:2AKU\A^#B6@!\**G"MT&41L?RK,.O3Q[#<;YZ505TDK- MAP?10=^GYH-I-)V.E9JMY/#+`UO,-,,[N,67"XTO>SWP7"L8KUYG^0??^+>! MN*]U!)H%M^JMC=NUK7':/R"6]N(>2N7'?*-+"EK(&SP.A:0G'9\*%/Q6YV6I M2'X25!T[#^UX>_V)G[_,5=Y)`A//X_"P'QT>CK?+H^D`!-9PXMV;Z??[T:#O M%X(@;GJ_V^IKR<8Z'+641YY$]OJXJQ+:YG^'<8EXE;;E;KRKC)2<42^\F>O' MO$FM<F.;=RLE)R$"_A+O76']'+>O\*(U%\7\#)*1LM&`"`IG3?<PX%4ZBT'H MZNM$479*H;OG[Y=FD=W<5@2>%`(9YQNI#Z?HQD;29Y^*#WA+E7(SN)LR<+$2 M,!D=L/-R9(B^WA[E6C^LO)]AN4)>64RK.RR'<9&4]',Z6].)X#5/34SA\*`+ M,-3)@(MX<Y5ZN(#12>%G4!Q9B5L4K_3J;#F+72A#M81$EH+]@'ZX&:!W2-<L MOAK?<+S7J_.>+7^SY]XH^'5A,^G#@;-FQ;R48>]QH;;4:%/9>FM+6!O?VJ5> M$#]YV3\("^+;P;Q;5X/)R^'!R_X]5?#[_7&T[V*_'9?CB<@\X;H0O(B!ETQ- ME^AF-=\(A>\(JR'8K^`H79Q&^O7-[Q=GO_V78J3>/6P=%#RADNP$*06*]/TF M$3GGD5>G!H?[*9ZMUXO(I-5LEV?\8GY9B*M'YT1[PHMQ\NU'+R9ZF-7T[!SV MXB*,F:P7BXWES6MF8SM&[:I(T%;+H/MMK5OW^!J/!WC_D[R-Y@?,84;WOO\) G/GUY_\<0WP!"[_\8#/YEQH_O_WC\/'X>/X^?'_;Y"ZF1A?@`\``` ` end
pgsql-hackers by date: