From 94e167995537015f5100b526791cd51268aa0f2f Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 31 May 2016 09:13:03 +0200 Subject: [PATCH] adding a few more uniqueness constraints to DB --- src/Makefile.am | 6 +-- src/benchmark/taler-exchange-benchmark | Bin 20776 -> 24848 bytes src/exchange/test_taler_exchange_aggregator.c | 44 +++++++++--------- src/exchangedb/plugin_exchangedb_postgres.c | 44 +++++++++++++----- src/include/taler_exchangedb_plugin.h | 12 +++++ 5 files changed, 69 insertions(+), 37 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index a1db78b48..45ff87a09 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -22,12 +22,12 @@ pkgcfg_DATA = \ EXTRA_DIST = \ taler.conf -SUBDIRS = include util json $(PQ_DIR) $(BANK_LIB) wire exchangedb exchange exchange-tools benchmark +SUBDIRS = include util json $(PQ_DIR) $(BANK_LIB) wire exchangedb exchange exchange-tools if HAVE_LIBCURL - SUBDIRS += exchange-lib + SUBDIRS += exchange-lib benchmark else if HAVE_LIBGNURL - SUBDIRS += exchange-lib + SUBDIRS += exchange-lib benchmark endif endif diff --git a/src/benchmark/taler-exchange-benchmark b/src/benchmark/taler-exchange-benchmark index 034b287e4199e4595f327b0479ce365f2bba484f..ae793dc928edf868454e8568abb3ab639222a5ed 100755 GIT binary patch literal 24848 zcmdUXdwf*Yz3-ZtOlD6WlR$WbFltb0B?%A^0cG+Sn9vZ?5ELIUOlEeHk;zP)2e0~| z2e9U%6{^Q$Ew$>Ut?i|ida5F|m=+YZ=eF_H()RR}RPCOl1b>><1B`GF0oKf~ zS;%7nTKgNx5astz&;<5R@bHX;<3u1NlzN|q9{Kr6Q>75BjfA@v)YnErvm@bXYRl{` z3m42@P+yaX)y(DolN=SfyloBFknwN>qq4{0k3vTL`p17Yb>BOeJaXcT>|IxQ%)uKk zxPpguBKR`?w+~iNWS{@L}` zEAP6%Hccl%9c#k*umC*>$IawtL*8v-XFF(S@=HK>kG(# z2LUwmr@erkuYhhQe?bBJFBg#CSD@VM3ecY^VCT^S^cM@*Nf)4d3;3TD@*7G$C@Gs> zhkPY^T6)HYED^aOPM^#M4fLCZ{XGUdzYune^55j;ma?G|PmcZfIK6^3kI$tujJKX( zd~1J_kFh%DZ|Pj=52S&y{c{}|*YSJHx_4tEwE8tAe*(UTQizT} zuF8ClTsRs|<`9HpJm?R`)j(1$zznI0WIVPthuaNfyxn;nWVPnZlR{aK zYVY*xD7+EWWGd4tSv{(0qBoTc#WrUQWVuF;Fr7djNQI+Ga_xpdG$9(Gp78!;FKQXe zgg;2R1?Z6A1x1JK3xuQ0uZ9B202p0~ghmG`8e+A*u|Bo7Cmu`o#=5)dF2k0$wlp^R z=hn=vnV&OMID+9dYO?S<2wgF-kO+RCk4a4}H6`q%hl!7bp+nO*a0cBIG>N2mL$OtW%FTSc29x$Q-Kcy!jwweq<&pU>gEcbq zRa`4(c#tE!mzcvRN04T|NH}$k;USLym~iS6!-E_@OgMFg;e#B1jBx5=!w+)&+k{h> z7~aG2hY6={IJ}+X_Y+RtV7Q;-Um~2k#P9}=|1ZMPm)UST$NzH@5%xK2*_Hi`i8sBWXuljbJb@>L~*fjMJnWE+!v+fyUjGTn~Gx-y^OIxlfuZ*y5Vimq5Ph8NB>6vj1aeP z;O6vk@5hKg+il-9#?5w|9ZAjH?ftl6VDPE!_{nj2En4jeMf@4++G+dWM@9zh*FiFU z1G2jYZyBR;sY|7w1nI5myX}j?N2`rHl7Kc>-v*o)>tlpwe}y^aMx7bWbrzgC`!2_Mh* z<@RMBllgFK!2W+AnZ6%cLrnev62)XU_&g?Ob7S%(_(z_{#QO~W+)CdL6fyZcq*1?Z z1a=LkZaMBfeGhlY2Z|V6yuTP6qLGo_f0i7Y4#~7L-=V9>p;^1_=gLG+Cc~!vWf~;Y ze}FM~avIXq2KNyNVWPh)mFco;(L$a$#GGc$2X?}j7Kc?T1|?SnzB z8dLoYbs-Y6r6H6x5sJlNF!*BBN zHq{;LcFzR80l)O)$#5*{?hb?_YRDZ(x@RU9%?#C)uqNVkhlBV<>ZTv_U4h_6Y4K7m z6OQ({4P}-v6dff7ccFy!CX@Y(YHK4g*yxQVl8YABEu6!yZs=%hXi~M8!2PSBi zskX(H=%nW(-+E?bB1oC*ZdL_X8dTJO=nA;3>c(fJJzEe-^MB@IL^X z0bcg6!>2rgnmDWkt1{2H2Xa`Zgg$=H{2G^`cmm6}BZ*(bq zp18D#v01P~ZWxoh+@p~s6awTDB_q5+BWLJign*R0(16c3;64NXHv@i;a8i&N^&v_U zr!_)K6&he^ftLwfuG^OjT&~wo7P#CWoGNg+b|=@^7K;5qYF|o{|Ngm=7~vbN9$d3~ zmi=}Orv)KO4_ZCAGFHN`j5(+ck>uLmBn@TywJ#zGF*Z1T1D6ohVkbq#<$TZkIwU4? zDfEBE!*h~;Lg3PGSspDwQIa@rJG?%Jggk!sb6m#xw7|CrzNY=(f0g^N#*&KhEK6yE zfENk4K)_`JUL|0+fSUxoO~88v{Dy!}2>6_UKNs*#0Y4D1xJ;BU;6(y15Rf~kyF7TC zg)h(1ddfeOmNzvma?fg3yTXB}dw$KlnmM!Q%=?suR*Uig>{zXiW=tH`A_x5hu_}(o30R6B zhvh51ZBBgd*%4{gmuFykh>3G7Iz!$sXCY;P8t^9fLrTFw}j9#m9HKJAg=S9dDDZhq%@tK#9S766Oc1YLp0_;vJ z{`gh0Q-$~!pVRF4NPdLdDc=v@ikanW@Vlsd1+K*w3ms!n%KNA^E9Xpt+1tr1nJR0+ z#jgC8aC&Gc+r_K%F5zbgKR_W+m1;k>@jaQrpGd3}Gz@iz$P_5Cf!-zS{c_g#+LQ3Y28vZW&& zA5ZuU!Yh!oD>DgSMfeQlijPy&r&9|!)}mF5if2&MDCZIH{90TAX-}Xybq}%?mBp{z z4r1l2)N-%!>>k9r_!svP^?DLK@d#--2XG-G@1hmVN$SMmxPv*VNNQ`2+nD1sz$=Si z;vK0I`Ql%#Cp*kZBj|Th(19BK0f>u603QY)OV&mV;G(%0C03>AD!6B@Ecz_Kn6tPP zT@7(pi)A&cIQ9^{ytV2vG&rl;0D`6J5?rlSF?5xps(#Rws^6eel~vyZ-OU^?BU*}b z*%n~Rr=hG|PUe_$hC~-pz6frS?NX9)EJGjkIG67uc{+vQY@sY5)%gIjGA2~DrzJjv zIjkti?Hqayq;WU;w=(C?Ng5WfqmoMM-T|gKkuRD5ZKAWXc`$ERi0=3t@L8pGZRFrO z)VXv4MU5%PsI3=MUQzxE@lwyD5UEtY13RVO!^lrkJP2Fq3YwMNii7g2C|`}yftV~T z?I8_iF)8#>^qEqG5=-Nn(GO7F(#@2wM6t-;x0mEJXrA|_K8%~!08#N9> zdle9O`ICJa#?ylFJZBueEyH+TV@!Mu&MD;!EDwQGUQMQ+{98P$O)Unj{W)H~ct8opLEP<|G3JcF8^tnlqZ zIhw*s@(A4k*NToE5K=Vdt4YD9{Fap0QNCSy7}ts}%CA+%z_p5vl;6N3R?$!K>{Z?( zdW!Pfm6Ir>VjJb}Q>eFB+)DX_%0{$s#ZJmU&m44kYGK9hA4698Eh*nkv15t@*NT1A za&F~Pa^fMX{Vb)9^4}tH>Jk)HyYf?9T@(YyDKwt1;$S@tDRDGa#S_#-Oqq&mSNwp; zZq35rBIIW&7m~GSJ;>K76G`SpDrKQo;?F3*M43S{uTtKFvMBm?g$lDP6h*tz3T@Xb z$WES!idpWFj}M^mWZ5^l1g==_T`3+&bc{`;abIUX<0YtC_Fb3HI6xW?bmcQ{M5rte zhVvP2GWBqOKI3_`iDm!he8wVj_mNxj8EX+D%eQysGd`d)4&0H?px$Nq?%nx}rNlUR ze?H?OD&w(-@)_@u#^aCVGX~HAmP3!`Gib-za`=gS#^=xkmZyK1&u~&mjvUKp&~4E& z_>+8wm)hg#%lV9IYL91sna_Be$~b;9pYa&E`@$dc7*i&|U27w4%}}CeH%gX$EARtq zYA})jljb?=-nG;Iic+ry*=eI4PDhPQP0*_e_G*G0bK3SuLFS~Ho=WBOX*qL|V^cmrFS4$sod-&My#Ua%?_8PmdadTQ z&%FRc%zDi-)Ze<-!|UL}Z&ef_>u^q3*~)EU6(CcGbvbq5nA3KTbnU#o6&|i470*NA zTAkMC)QMwG+kF|u@s*mQ9IRJm6#bfFNDBtXoVG_Yik}vWvc$VGid~xG22GJ;PTRhW z;-iKVpU)@;HO1>SMUFXb`=#RfPY6ZXz*_ynn$lWLiDORNgHlOrGm0{AGY4}~vrIWe z9bpsgyioc)zfzkmg`n2cHbp?R?(Jn4(CW4IF504?R0K^*mVN78QuZ!QR_m2fkP%?n zqAv

GTsQL34bs=D6sU9CO+ZNXO5+ZmfqFB;)&TM)97U_;So?JD5@YbXBh6EI6c< zc)zA7T9ji>+xMm7`QH+XvMXpxU(uArnBbVxc1S8|@ufQR_}Z9@!gAqPF@_|wd1ieUv z_5ArbfkH_}NAvYNny(_H9CO;9&iYDER%Dg?in|%P!Ur{3=fooXGC;lzorIO`#0*wO zi#XFCCWp?ad!y4vJ8G1w<3VPUAT&8U}GHQ70o{~ zIext5;>ns96YSjj#Ej3}!X%wZUWv&yq7oNRrpS0E{aYhEol=96$*iQ_+c=pVm}<`y zXT>@gRu*ioma6*6gq&B3D35iJ*mR<6UJ++Tsbvi!?uN3CdcG!)1#A??>tHDC!Wzrc z$Ey(8E zj*KO@_NzFq8{9a%Cm5{hrCJr*ki_mPQX(0`G7}^*?0EHiYZc~=GX;Q z78mQoVQ;M{O;GM0`?3AIDI6s4_&n>h%I9d?-4@G=EAh|6uerG^S1iRpqR~H@E3(=? zyk*G`@H5|9thnjdzIEnU0Q(+XiWSN_9w=6>05lP>7r#wnwkV zhnrM1lTI>O!cCSvfUHY-{(<82x$LP=CcF8c5#GjyN2$}5%C)wVnjbv<#&@;dZ zgK{m*T8aWzjsm8I5slemuZi3+(+ zxdJO377I?A2jk&>Iu{_%jPn!jO|fWF-I8Q}8sUC5kl2d;!+WP1kNar^P)`kZG1nhvnlq#!cB2qhsL<>iv0#_E+T;C(e;Kq2mUkp;k-=?eSPp#X<78bYfE=5)S#h z)pY1ErY+0sOV=MO0@IGKTkZnkVq zTT^Gtsy4h46brWYU@B!5*B;i6`AT+PP-O^7145|IGMD}eOU7v1T)B2eL?#KGosCKue*y^gNZ^uv! z17_3!;N27S=j1kjAKq?Es)@~bJx6a%7qI?#tOu1!@bctXo;Q~!C>k9w(-)vOwEX=k zyvx$I#@#e$j$xn8J-aW7*Oad4QKM=+90VGO2Yav3-l=rY?s3mvm3ae87lt)$tJ}Rz zEz4TG&DjBkUyx|RIL?i2<>NsNEO|bP4qefM5esPj%ukPVd?FWu|DZz^2tqla;)sGo!Ozi!5Gc z>sS5ZPys*qh@*paI6sG{N^y_F%Xjf?Aj63mOVF~EHuC7Eq|FLqy3iF#<4g`6mF9Nd z@#JjeQzQLZvjLim#c+$LJ%NZW4oSMl(G7jxT=ZelEyO*eLx0EM_hvDqw28T`@bp5J z><+7u5MDtvoqv|Kw0cE{jKnt6)Tl;bd~1S=cQKf zI-7lbqee$b~ej-{u zc?vdW&AflFXWH;{aEYmWQRe(kuDm^SZYP&s%;fo=T)Kmqor|$yv;UCd(TnoDjXBu~ zQ+i3}{ElA9hSNgw98)g6jGZp==t(?p!(j(cnHk-c`R;>W$%fNY@?2Cdy^^($H?uPa z-!Cwuk7b7@n$fH9U4{+Jm~1$WCeK&tc{ZGeqSvyF$;Kw&I}K*^iA=r^s@JjMbdx+k zl}n$@w#daa9m9tA$Old7Q*~0=tc{=g%i=O;<6k|HSQgsY^em#w*%;q%&{4Fkjk)t^ zM6mIb(zz@eN=59?Be_&8*MVR$i6@rDFj`z}yP=;@O^H5epw|dGEB7FmP0h$!ba9hI zdNrr#x9>L4$-diQ=Qb{%-%q{{x>>yjg&nz4A{VHCE$GG#$BzZwxZgOLrV{vL+-|&5 z(2cu|bT*yjjhl_16LjNVBb{s@dE-{&pr9Lf8h zA<(H_#+}Rm;_{Q3+-j8NzR&5EOm1DeM7atC$WOWBDCK7$L-vh(j28=exeX}gujKSf zCbt!(pPv=-_lbE=%F`RqRIc2klk{5!UGAny`n|}IKgRvD9avZ;x^b_J4pfkRxw$3n zJjLmiOm3D*`hN&{xu+%RuM4`|vXb-<1zqm+NctG81Y7XMkbUC*1(YXx_k#S9TZ>YD zv7kRG1&ZrtPB*{bnaz7UAdkJ2y!-FH+)n=e?f{ps z%Dd10P|%I{Wjak{F}cq+VS;rdKF0gzFCjlRr$!p`UI98CeHn}X;1SOim@ar)4*Nux z-=(@l(5G;Df#^Uz=x!Y@vrPr$*B6k#76W0d$@5RVfSoTCpwqD>ii7d{G(Rm+?jJ!P zgMKKVuVjDwTLJqeJU+6PS$HvTmn<%G4WL(=v{xJGV{pHgn~8EBSVweg{`Ydig1%k! zb7_AQ=+s{H+CL?gU-AA3r{hiDQjef$;H!e3Lj>|Y(CPa8DM0suPVqO^YgGaH4V>=E+Z#`FKl7je)dF@{FrG{#u~veu zGQWRCQ-{B`WpyW(60@Hm@+bTJLHuB(uM7FHTH6zebp;~+5LPp>teV=wg0a5-h?-PG zH483ZIM-arPanO(+G#wn72ktN#<$Whb8MW2Qhj|}p`yd^yEmN75#@_O<}Xj0|Ni7Z zZ_QbJbwOJOG#3!RUCo)FX!k+>jx{%tSs*rN)31O0B|Ye{ zBD;ZNE+AL*%(-&e(3~r`Jj}T{%Xj7?d@aeG^$*vfcr@gyoVg7yqAiu13y5749aF!4 zmEVE%Tw~YN^YYiP^<14>*_9L=Afb~Ya)DI0&PQjCj2kyKbLtn&nS*h+lYe+ke9J4CNb$K^u1=bKHq7uDIZo}i67zWUp9hnx)c@#rZ7p3h>0`% z5jDPdC5~WZKkmj2n|@Xgw?usKOnmArvo+!8tL%P1KHryV@lYb>$CvkLJ5m>GYEtQp z@k4Be$nr1l>A$Qd_(F~1C@A9NdjjKC(wCEsJ$)!n_eng8hT%JYJV3fn{~6*Vzi%hL z`=&3Ef98(AvoEN*#b&-j$7&K=`;vh!z+_y5y)uVw3Ke_sHPKj7t!Zd%nVk&u2n=mh z)0GP2OQqO>sUfTvn>MT_v^5HQ8cfDD&L%aUpmPyiOdx*n;%X#73L@7ZNwOLqs2XHz z@cji=!_Q9C@VeB*V|@9$M(q{PE7*Zx8B9~v9$XmLkog;e5JNH83lGAFSdz?xLSM?O z!H4o#4IZKRo^p+LUk=3S3yq*_DBmrStgf!Ox=C{Qmbc&_W|Az_jStWNA2_Y=(Qj1w zyNg*pz>oxCnucYrB&$ys0>LAx6wj=;%kSX2^}@)@-!+mv2N}Ko603)^=!H8<)f&iL zjrz^t;1%ka^nZiZ0}6h334(^<%p<4bSfhXvv>}6|g&F@Jw0eLstoL)kzZ*(9{0!r9 zlKME7$J14~VyPyhFZTobMS*lQRG*CTTMs7Q|IGL=_YJm)f|dwn>A$R}gd4%9cXcH$ z_ZJQceYemz`Y*_g)?X>6QeW;voDll5p0a#n{dWreMqyCCZ+uz^o)i@(eX?cL{~~B4 zLjF;b`x-+yO-o6>cdcRh{bv9Sy}sQ4I4$(s4FRtdh9tblpzkU3a0w4Blp{%hH7p>~Z|64*|wx3)-XczjQHPqkW4*Q-# zU+&|`?@^C4=o`y_#-K0vdk*19ETyDD!C3wakfF6rIZWjGQ=OQ2jPgeOHR$4CbVgt9 zA1(ZZ`oDuNRZ*5N_nADOQ2$NnQs0&OazDx^^yPQLW&f7`%YJa5p?tY-bx3RtNqLCz zBykDf1y%3A+}|1$`iF#`1X54Jvj%;+p0`D8LHVSjfKpGA&mluJS%0~{F(~wBNkIXP z`ZhRE{?{4gr2a()I>}O!uuSM{)a><5QNGcx)RU6*Hk^@0ya{ei;s|vvT{6nj_w$T2 z5`VQ;Q~Ha6X+RmhJ#M6t=5usoL^>k_tD$+a4MN{o&%^UIg%`y30P&`kXW%KjfooRn(- literal 20776 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 = &postgres_wire_prepare_data_insert; plugin->wire_prepare_data_mark_finished = &postgres_wire_prepare_data_mark_finished; plugin->wire_prepare_data_get = &postgres_wire_prepare_data_get; + plugin->gc = &postgres_gc; return plugin; } diff --git a/src/include/taler_exchangedb_plugin.h b/src/include/taler_exchangedb_plugin.h index 978c335d6..d55bd8d15 100644 --- a/src/include/taler_exchangedb_plugin.h +++ b/src/include/taler_exchangedb_plugin.h @@ -1488,6 +1488,18 @@ struct TALER_EXCHANGEDB_Plugin void *cb_cls); + /** + * Function called to perform "garbage collection" on the + * database, expiring records we no longer require. + * + * @param cls closure + * @return #GNUNET_OK on success, + * #GNUNET_NO if there was nothing to GC + * #GNUNET_SYSERR on DB errors + */ + int + (*gc) (void *cls); + };