Re: [HACKERS] dumping rules - Mailing list pgsql-hackers
From | jwieck@debis.com (Jan Wieck) |
---|---|
Subject | Re: [HACKERS] dumping rules |
Date | |
Msg-id | m0z8pnB-000EBPC@orion.SAPserv.Hamburg.dsh.de Whole thread Raw |
In response to | Re: [HACKERS] Rules: first fix on monday (jwieck@debis.com (Jan Wieck)) |
Responses |
Re: [HACKERS] dumping rules
|
List | pgsql-hackers |
I wrote: > > > > > Jan, > > > > Whilst you are working on the rules system it would be nice if > > you could look for an oportunity to store the plain text rule > > definition at creation time. > > > > If the definition were stored in a table column it would allow us > > to dump and restore databases in a more complete way. > > > > I looked at this some while ago myself but never got close to > > making it work. > > > > Keith. > > > > Yes, that would really be nice and I had something the like > already in mind. > > [...] > On the other hand wouldn't it be too complicated to > reconstruct a command from the parsetree, that exactly > creates the rule. Reading a parsetree isn't fun, but after > all I did on the rewrite system I'm somewhat familiar with it > now (sometimes I see the cup in a targetlist, the coffee > machine in the rangetable and all the buttons in the > qualification when pulling a coffee out of it - think I > should I consult a psychist when the rule system is fixed > :-). > > > Jan To demonstrate that it really isn't that complicated as it looks, here is a C function that if defined in the backend as CREATE FUNCTION get_ruledef(name) RETURNS text AS '.../get_ruledef.so' LANGUAGE 'C'; can be used to see a textual representation of the rule given as argument. It is able to handle ALL the rules I defined in the test suite for my first fix (sent yesterday). In addition I tested a ... WHERE (att, att) IN (SELECT ...) in the definition of a view. Worked too. The output can easily be fed back into a psql and produces exactly the same pg_rewrite entries that where there before. It is not complete (aggregates are not handled up to now and there might be some other expression constructs, that could occur). But it's a starting point I think. At least we could produce a view CREATE VIEW pg_rule AS SELECT rulename, get_ruledef(rulename) AS definition FROM pg_rewrite; Now pg_dump could output views as commands for regular tables and add commands for the rules. It must omit the rule _retpg_user in the dump, but that's all. All views and rules are restored. pg_dump should not select all rules at once, because if only one of the rules cannot be converted back to it's definition string, none could be dumped. Instead it should get a list of all the rule names in pg_rewrite (without _retpg_user) and then loop over it getting one at a time. As soon as anybody reports an error (pg_dump cannot save rule ...) we know what case isn't handled by get_ruledef() and could implement it. 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 get_ruledef.tar.gz M'XL(`,:UV34"`^P\^7?;-M+YE?HK$#6I)44^<[2U-]FG2'+,_63)E61WNVV? M'T5!-C<4R?*(H^W+__[-#``2I*C#3=)CMWIY,0D",X.9P5P`></CZS!Q^93/ M]A]\IA][=O#5\^?L`8/?TP/Z>W@D_LK?`6,OGK]X\?3IT8L7<'UX^/3I\P?L M^8/?X)=$L14R]B"XB7YVU_2;3JP'_X6_&TW^Y]9;/G-<_JEQ'!X<O'CV;*7\ M#[]Z_I64_]'1BV='T/+T\.#I`W;PE_P_^^^+W4_UJWQ1^8(I%8)+^*D[-O-# MIFE:K<YFB6?'CN_1*+/3[8_-4[/=&IN#OAC[Z(Q;4QX>L_TD"O==W[;<_2BT M]TE.XLJ%?]GML#U*-;CYCAWN';'#;[[Y>O_@Z_W#I^SPQ?'SI\?/OF8T@'7? M!^P1XOYTTZ>9C+GKLCE0P>YN><A9?,M9X$?Q3<@1;>0GH<TCYCKO@$65T;#= M,8<O5TY1P#0]VTVF`M:-ZT\LEUG>%,"&,8L";CLSQTY9'<$01PYX5!,(ZBE? M]L3X=3T0;*72/NVUWHR>O&2[YJ-:SWQ]\2WVHCLU0L(`&MDIB'<VOPGW;O,# M5=>)9;_EWK12Z75:G0X^[.6@NL'/8JJ=WN#U/Y@3T5RG"\^:.\`4=['K^J`, M4^9/_LWMF!&A,("ZO]0UZU&MTQM=GIZ:_ZQ7*O!P]-+0GN[YE4JKUWMI8#=X M6A=87R>..R64T:T5IFC@&>`^!B;!&.BJ!AW#<`0M1[==;GD,+FV\.*X8X9SM MSM0H>==`U(X'M@8APG\5`&+V1V/LQ,1E[QI8<CVX&(^P1>#"B^YHC&PBCA$[ M,^I+2,I-]S@W>]"GM?8_U_<WL_\O7CP[?)[Z_R/R_\\@`OC+_O\6O_W&)_E5 M6(/EU,?89:?2Q+/8QV?,8O@T8O#<\1SQA+^/8:AA&(SY2<S\&7/B'5C^20`^ MA!'8@G.`EA7>09C-$J\0N->W8#%='N[9Y!D.4\]P\!4$F\=/OP'GD/,,`C7\ MQK=@C2)_%M^!94#+9/O!(G1N;F.P$Y,%^P>L_>\<;K]EN^S,FD^2\&9/'\V9 ME<2W8!_1'4#_F]#RXH@%/)P[480\0/:P).)-1K#AS]R?.K-%4\*8.E$<.I,D MQAYH^,%[V-R+T"'HM.$C!T!/?3N9<R^VR+T*&.A_+6_!@B0$;P2`@M!_YZ!% MC6^MF/'W@,/Q;K+),<^/'?14`%G""'EL.1X,80X0#2:,Z'6@CZ"*(`F:QD MEG024PGC'0\G0-<<02`]Z=R`U&B/]7UV%SIQS.$I>$R.TVBJZ2I^P%18Z"\L M-U[`Q#AGB"?D/R<.FFXU4]"D.&6^\Q]X`BR.]B2,<^0PN!;"BP+(LW)N+=B$ MLYRL4=@(T@DE#"E7,7F/8Q>8-_+:=?T[ZBM)1\[&('!4_<B&^:;\0*4H"@/' M>?Q.CD!R&'J6T%T@YZ=(->)*98O]9TX8Q2RP;CA.G%OV+?G(+`A9,"L(W(6F MFF:?]0>L>P6+BXW.P`VQ\5F7M2['9X,A@W\=<S0>FJ\OQX/AB+WNLI[9>MWK MLO&`M?K?2Q@7K>'X>\9.H3OT'W;;XR9!SJY'%]VVV>J)YC8M97$W&$H8[4%_ MU/WV$M=XJP?WG=9YZTUWQ%AK:([,_AOH>CF&_TX9$<@N1UUU9XXDC-'@=/Q= M:]AM,G,\8IU!^_(<$:&]:.)<@&+6Z0[-*VBZ`M@`:-@=G#9I^HH?"H%D`3MK M775AXMT^:W6NS%&W@UBQQ\5@-#)?FST3Y@Y-H\OVF80A:-?7OPZPU>^P/%L% M>]"T]7K?,WK8[K7,<\8T)L/$ABW@3G?4)";V+CO`%KA^C7SI#^"_GGENCH%` MD$Y3(C7/+WIFM[,$0_#NO#MLGT%#2TP#!IV:XWYW-)+";`G9FNW+7DL)ZN)R M"#,''M-$^H/^KMD_'0(I763VGA!(*@H&UQ?#P16('!BGF-SJLVIK!,^J['5K M9,*,$):F>&5,(D$`0@EC\+IGOB'9(H,'2)G`@^NZ9?;'W7ZKW^Z2]EU>7`R& MJ(B7%YW6@H873[9]@'"1^1AIP/.JF+&4D!?I+?/@2)*MK^6Q1/'7_O]E6^ MR74F2VT6N)%<6^*!J9SFVV:V%[O%H2%8&VS+&JO\/;>3V`_WH\#9NZUJ3VQ_ M/@?[%>W#L)L;\(^YIV"6W6B?N_Y-6?L$HF9P&E'^F>>#C=NG__,/_`#L/ACB M<-]V+;+%)3"C162#\>)ES]SRAV`.+:`0O/\U`(ZBE4_C15`8*E*6:J52V6\P M+9,#'7DC\JPI#,?;W,/]2H3.U68V9`NL@4$-)"K\1#6_\YTI:P2NY5U#V(./ MV4O6O^SU3O(#?TYXN-"Z5$?='IA-0'<Z')Q#.'(=<G2'G'V']HHI1-#UT6'U M9`W9*KF.2FC'D(LU]&2\#S`[,%&8"H*OET+N88BU%G!N;I@"IP@@5@O&&-'1 M%""V:S*Z[8`W%$VQ72\P!PD4#$((W^*5Y%A9SXB[D+#=8P#H+0_O,R`)0!?X M/09,@:1[#4!&7//W05CKP5('8<36Q(7HP/%B%B+%4_Z^"2$2:&X#UU>337S? M9>^L,`@AHGY?!A/EM1DFA+S0'[MM`S/>ALPQ`>=[T8IQR[6Q%K@U[%`G0; M+UF#6MY9;BF[N$OAVS7J;&T`2PY:G&E95RN6`72A+Q%]Q."QE\RS@40IV!G[ M[;4SNPYA&)BK:6VU'/!)E`3E"T=;:9#F[+*.#U$ZA<\8.$)0G800[6J9D"%# M:=M/W"F&H8B=61`*,B20@N*LIP\@[)!#.P6"B&GEHJ^L6_657RH434)/PVC( M7B?4!MV2N6&`2*,?#G\2;<A=P_`2UXU^.))MP`<@"IQ,:(N&=.$;AESYHCU= M_;(]MG6@C7@>Z`#!Z@%G\;[`7/PUV'=<1-]J^I!^H)&,_#D7X>^4\P"RHCM/ MC5B"L4]_-?N*?R`?K:4&<25VT%0/2U(@B-&%"9F#!T%XN`&3,V,UZ(T:CX-K M=?;P)0Z_'OS?-<3#??`"]8K:&T'_6^L.AX-ADU4U"1XSV_(PX[!+2:BN)7O@ M:7D#EM@@">&!I2J6X+L0G.O[;Y,`/1&D*/:>QG'0N*EJ9SZD=31.0\^PV(6= M(!]),`-2@ZG,)CTYX@`%I[4F<S<";-F0>D:0XBRA7L/0O,,5'K?.?JD8L-Y1 M=]'_"_TUT$,;Y*&!1]FS@Y_04;?.NP.S<Y+RGY@AQ"-Y5,MY[B8[;#(%`YAN M*&)2(BK&DAQU:'4VLR!9$_/_L?HX^K%:;;(<#@1;""@00F2]X]A,Z.J"Y`]K MI/Z&B_12"RVHTD*8*046]F,MK\D,$*LN?%B@/`2H9"%J:@%)2H1QH)ZU;&TI MP?R=[7@[[)CML!V]^R%VW_GQ0#:2,9&SQ3`VR(F9^!XUQ5"0@T2,`A`#LV4E M8BO4A])U)24@*U6E_'D<@50*4_R06\ZHJ:"W``?P'BI<AGJ,5:_H-K?83\V^ M.3HK4Y#<0L^-%J16ZYF&RGY*26$U^W;MJC4\ZPQ'_V)/B"\&W(_,?W5KLG,= M>NM=1`](DEII#R&ZG5T0A2']5,XM2$V3EEUBARL*"'9?@=]&Z9]DG6)[J1-< M84WD9`NE72H>TB9($J,[!3WTF4IS(C;G<S]<;-!C\#)`3BY03</3+"C%GB!R MZ`FI%5S48%@=&*9XETUO20+06P(HX3TY-7P&M-K!HE9D?A/I:Q+JW1396I/> M<2+E"6:A/_\5[FB-@FYV1BMT=#6]72M:P-R<R-M!&?Y]DW<N:."'LF!+ER9% M6Q`<80P9)K90HO:PVQIWV?"RUV4R^4UC*2H=LAOG'?>6+,"F?*=R_X1'!EP4 M\S0FR4P+@?@[RE9%"[HO;*'L-HV+CK`)`UO1@C&KX437TNMJL!K0[^?$<@M- M%N5QHA$#>:,A6B)T@69/B[]FGI_#@<9VG5Q;J/P8CT:!92O7PJ7\P#:2_UK: M`U@K>^`.D"67U=>'WQS5MS$8:=@/:8>;@.V@99&9$BG8M9AA\G)1SR!'F/"P M)L4'ZB^EI"RQO$5OAURNXR!8(1/'`_1+IJ6)H)OL2\%/-9\-Z$@%-'QTCPA! M1SX'/N2@A@YO$1NJWR='ERFOPIBU(%+4OL\Q1UP;VASQ5G8'1*0XY7BT6$/B MTX:+:L]6+*95IS-9[)G]>A)2`(((U2-[\C"+C959S]:^S.KKHI`X]C'/S<9N M$6-FF^DK=OO6KC=`B]X0%CRP1S?6NB\92^`BT=-&6K$868C2]$=5UAJQ07\) M'@>KG\49N*4T2_>3%(8[)[9OB9.XT"FWL*V(LYW#G6,CAT16\L8#P@/>90)Y MS5M,-L2`H^(`49]>/>!I<8#9'W6':S`\*P[H`$FE&)0.@*"LQ(V/#7BXVLT3 M=QY'[-:*6.)%28#G18!/DG]H`!]/(5!(:20U,91RF0%'E>F4BNLJQ3(@IH M+)'U<BU(&<9Z/:_]:+U>L0-=[W,<VB/&%&$7BD<*>%,9Q/K2FC!G&?'()L@$ M!7?0.*3;CI"[3''#5@_"4@.B5FAF4:I5+;<1D:A\6"]."I>LT1`^WZ"JHR&J MCJ@=$EQQ>1.@$WR,14HP`[):67>I1%"3!J*NZ4M^58D2=2D'L\(F0=]]I4J& M!TUB"01'P\MN@8]YZ)W!TH+%$S/=5H>]Y8L[/YR""9RQR*_K[,P<B`A@EU80 M`=`!GSH>'C?2S)>RC!I8X/U-?)NR!-A/N9ZAAU$EG,\AKQ&GP+C07JV$U60I MS%]$2KA>'`BB;#ED-6=1;"[K5ST1POI0(*Q^HGS1!PCVP9+\(@H:Q4F#BAZD M9.8@]`?C,[/_YD2`3X%@OR)+-D\Q^K@YRBEN\EGC6PM/G3CQ=CD(!>L?5A5[ M4\HH`;FP0I@_'H`#^\6E@"D2E7F'(7;P`^P7AYSCT0B*7M.-%MG+!?7:F(:L MV3:1^8;R8G(MRB1HG'-H[?..+)@<"Z[*B9=NM:@-#>HH[3I=:\"$>UL&MK2K ML@TPX?J6@2WMZ6P#3+C%96!+VS>K@2F#F,*4*R`/5*V+:AY$Q5!^=WT1".NH MCZ-CN5RDU)2_I8,GSAS2&=P<`%>YX'&U*0#J7KA$YGEJ]+*.(%L$D2N5O:@- M19VWF`R%4OW>2H77[^?IF;,!B_$'3`ES^Q*-B*NMAFPC"G<67)E4#RWOAH\G MKGC0@!!&RW'QGO9\]%T(:!(VL-`(03UMT(`]U$&$<C_+]URT;NCA](&.EGD; MC;7Y]"G5Z._D+H?8ZO#96\^_8W>W#BQE5(1;N)MGYY[4V!"GR<C=,M",$$]K M2?LB%`DK_D2^;(V)7=+6"!@0`&-?')H+8#;92L4O4>Q"YY%S_]++2$YGZ7WD M_(?[,Y'NX0P4&-D?X_&:0]QF#OM;]AQNGSS1PR#T6B6[>%CL;+*:V+^K*YK$ MO%$<=8A+ZJEGD^3]X/R4"E&U2\$_>;+DYNZ%F2*O',Y5>(T"TKR3+AUYVNJ- M%,D?MO&$?=`C(ATGH9VC(QF1-A64"1(\9S;C(6U*"AA49FGTN]\U2#4;[<OA ML-L?-_8P,HY\5&681,S\N2,R+CKN($Z%*!@0S_-PXZY/MNC22,I-K9Q4,Q7` M/$P9\^3)3[+B#BLT=KR$:U$MB`N#D9Q]R((25^WO/,0X8Q[4H#M@XC-A7ZLT MZVI]"?S:,8H_)>,TLG+F1,FU-(U:E9,G@;;P10+`=N46(,@DLA;26-\G1Q<C M"L&YA_!B?!7BCDXT^DP8=%;+;`R:F#1:!W.-.0ZKKI2FMD#5ODI,^V"UW% MG*#T6!`P4)-`A+%A93E3B5<G*G2&H:;9>XSZ2W,_9:E]F&LH;&\D=O3%FL"" M@A(YY8"%):"G&@]S<O_R2Y8C0`3@^4P)`9$T#+DZ#(VWQOIEHK#F5@H^,#:O M"NBTU;HH*KBQ_=)8'KHD8*;+-_]<@G9E74C@+<B3YKJ<?8J"R5*12:.5.GQ8 M:6=;4LHB299B!OQBKT&3M^83RLITGRCE3G%LH]%E1QZ"Q;(EH2TX2];^I[+X MKQUQV3:Y"@#>-`EP+O4U@6<QV%\*/#TF2V3WBSS7'PS[WXH\TY,U,MP$#2T: M-:_$J*GAQ=B26$A!`*0K3?&B1R:FO;T]=M7J7=(A71EY(K([)^*%;L+G[/T5 M@/ZY`]"_PK<MP[<1*$>L6=P[!Y1:K@>S/QXPZ=8V+HA2WGC:PN!1XL9#58+? M174I6S.Y"%`GI%JRXU)PO$6?J&6<Q6BPMFTXN#$4+/6@)1_CAVB>YHZL_I M[]*QGWS=-%='5I,3!HW)+7!UOCOS]\7P3O?_+S?X?PE;5)+E+%;$>`5NT>F7 M31PSMF!766'VU\30RU7HY2)T$<^*.N2?)7XI5CY+XA>Y)WB_^&7].?7/&+]L M$U"4&C(Y36DA8)&,?Q\[)NG8PH0MA^)`=.GZITHKKADK)*TB*^?/V`Z>.1=' MC6E_?Z=@^CYI'EPQ/M[J%;+,E^5IQZJU7RJ6)FX1DTDHV?[3]N(P1;;^`*G3 MZDGD,JKRR?Q!K5!QEV.Y?"^/#=S/"*U_]V6=$2JS+O>T)Y)BJJC\KH&13L@] M`R/K#U@JH*#U3Z/9Z;1*'"LV<WKY?BMM_N@7LW2%U_0]%24.REX62'.&_'RK MJ7]!$`?9,?G5@K@,,'7'S-UD4Q^/V:HT'E_XH/?,$3.]N,`FW/7OU$@;N`2N M!\VO;]L)OLU1.`^!DLMM!T5[V6XZOG4SI\\(3,2+..S.#]]"%CZ+-V7M8GN: M6#*V;NAO/=N8'E^W;FY"?G,,9A=K=48`NA7/:M4?O<?1CQ[X,QKHCTCGY&@Z M[93;5Q5`:-=TP>G=+7&*J:KJ>(735./K-Z&?!&U:C1^)6X-T'P+P';T4<Y?T MFM[80\,EWM^K(T;"MV19Z;A706N@*:\T>,B@(=X%I-=WV:WU3KVA(SZ?@79I MXL1LBE^"@%LYI`AC'_^DA^4`WNXK/T@/&,@R+LYJ<''=_>?%\)C.BJVV2VJ] MI6NM(D]$L+26@0-0N_R`$-:U+MDR%,(PRFJ[R^C]@(Y[U6J#@"-SU3QX6,<_ MGG\_</>>#7UV8IOIE)I%0S\0J'-\N(+C\D#2[R:'.KZ$7_OMN;><=6[#4PE- M'"71V-OJ=_[B[V?D;W\P7L5?_`[&[\WCZJ]9DJ>7_78VJ8+SS[_#O8YXS0>4 M$IQC:H&.[`32?;Q:WJU)OU'JSXP/NCC+O-N5E3FW*RI#`.7HVJZLG&=;3@]6 M!>XP'E]!"SU?1.MIF(Y@MB@!9ZXJ)V./W^VI2:6E*2,MNF]1(\X&+`&'0`O/ M42@$^?J7)#N5*)8+M4E""J#40J+8O&%9,C^%FZ2DJO;R;L/):)7.X'OUBC`L M<Y"GK*Q>%F7Z@('V1\99%*O?(\`:)9.>X[U-L<I[K(@E$Q>N4--DHZZ2XDRK M/-2JGV.MR7&[K^!"5"L%F5FE+(W51-5-J68Z$,T0AEYZ@E<FM9JF,5HE6#3H M1:0ER&O4L6Q#_5>85B.M1#67[&>J7R7E=+.O@JD/E<HJ;[K-J>`R*WU/=:3/ M4:2:H=EF[9,5ZIL5I!E+D(HO652V5^M-)T(3#[,Z+\OE\$!H7C3U*@DC.PB: M3Z]6OY0AIRKWJU8FVZF+6JX?X4<`"=U6J?9'?Z]D76U)^QH%OJF=?HWBU`_G MU_)#`_1D1.^+%LO:935RG!W<(]FX]&FRL/*U9&&;%Q73K^JD7U38YM5$.0=\ M4XQ;H7T[6D1M_*@"3;%V,1P,S$Y32G9`'S0UI^FK^HAR]Q7^[TSK5.O!?]H+ M,P]3;IG1%:3YTYK$5Y?O4N344GS-07XN`G?(:1:@A_)%X";+(91,R7A-S-/$ M4&=ONN/1>'C9'J=X3S8><+-4K0E6!HPBKX0?"*C?XT";^O+'E[6,NMU7$EIZ M/&;9&*TOW@N%(%I6U.@VE.4WF%JVRLBNVJVL;OBHB:S@*<T4GPCY?2IY<5;( M`^/2RFT89Y4\/(E*U8GLA8GT8*HXD6J!&0KGEJL-VLLZRY>V)'#;=Y.Y)]_> MRCI9'KY4##9V[D.0D[ZV$;(D2K!8EO4,DACI":SI%%BVNV\G\6Z.F1K0T$^\ M_V_O6GK:B(%PK_17Y$+9H`"BXD1+)0YMA=2B"J5"/:&E;$(D("B[E/;?US/C ML<?K?3AT2WN8[P)YK#VVQ^.Q9_R%PD6R.95Q&6:[H_/"?Y,39T'"U>**V%(G M/DU&-/WA]G[/^&++_&H/_H>LF4?B$P)NRH?[\/*)KY<8,GOM]#`<4-98/\DN MBR.PR!33&[@>H[$VJ_35A1&F4^4YZ9GNJL-Q/U_><T-.%*M!@KT<,9E!3]J) M34?%K(U]+QU#/0QG!7AK<SZ%"])E%;`46B?E3C!D+F%?P'T9^1_HQ''0RFK' ME:)"<4]3'!>"&&YW/)@D9)MUP?ZW"_9)1:;LLI"3`^-WU>,2:'V0P[@4-/JX MPO'S9E+9FPDEA-'1[<U+031!<76<L?@M-`+F,9><"!.V.D@BEJH[`F89!]U\ M/?A4K-5DBJ[L/*A](BBK_K80@CD+!#DYG1X8/1UV.K;<>Z+X?T8AB&I9X<LR MGQ5C.::L*UZA7!0+=V2@`K<Y!"/@(5(+:ZO)SI?>PO=&I]Q:`A/`[?BJZVP_ M</+>1-:53Q=]"=;,8B#R)P=!R,,U\;W/HC,L6'`FMN7F&>85S/X:[:SF@. M5Q:K7;QQ)!P:<JK0:_*_$9+D3B:ZR&*40KE;'5"_R4</%'XIPV\U5@4X`()N MG7TU-&77UC1]SR'OAPCN<_),&OPLX6!U<&'&7A-4X;D5S0M\'\PS?B3=I@^W M\]7)W6RYL3%;F#\71B;CJ@:;V^(G5",SRIGSIW%G35Q:)$'+TC;]]J5K:>.6 M615%GHBT%<Y6"XFW[:L;*)4]%7&+6U.5HBE^C0MZ4RYR7#6'\;&+S!.UD@.Z M).`;OH!NSWPE.^_,_S0*D]$K.2A,"8/#P:Q"X*QL8SDS,TE66?C$N-Z7.-VY MXRTOSF2TL\]BE_80BG:%6YOEUN$A\MQ1K7([7!,YV`ZOF9HAV3IP2GVD7X?@ M]!K,C+O\!<Q7:0D:+52P\4Q!ZHYH@X'OTF<\5TC7[;=;U/KL_:<NM289TA29 M:^KWU8PVNWZ2&LWDMU[PV%$C5A2AQ*[:8!C]F(MR?*92U]"&(0$_MG>"C(M' M%^Y_>'O)C2IAU.UO66R5EILW20O26'YCG8#%GS7BF,OP%M1\'"@%?;U%)8ZG MT].OGWM5(L.78Q(I03VHSB3E\/V\B1=O&I4%#H.Y\D!Q7&-!;>+.D+IC96K1 M'%>066HIU;55;Z*+*J@VM!_/Y78:+Z+GXN0$$IEL8ESM:K(XB3$[!;Z$M.C@ MSX"5[N532)^M0O7F<=DS]*0D)W%RXJ(.,AU[NS'EET)2(D(1-\<W!8,S[BJ0 MWXI/+)-U<R"DEGU%+XW/D,_1(;9Y52(ZMK8DIB1.<NZ1I2DE2[RWL3U?P33- M9,+5GTAFBC-]!'W=(]@ZJ5IK2Q&XKUU2I(;4K00R8'[D8\DRRGQ3_"AN2K!] M1YTU!\%;<2W`O))GXLPTA]H?AM&[ND.<=)?D^M%SW!"^JT8QZW#R/5/D-P[\ M^MAN5]-:;N9!EP.)KVMJT-*U"H[CO[5>C(I.Z4`7'JU_N2/Z^:2HYJ)II@P8 MW'RA4"@4"H5"H5`H%`J%0J%0*!0*A4*A4"@4"H5"H5`H%`J%0O'_XS>B9>)Y $`*`````` ` end
pgsql-hackers by date: