From 1ce47a8d64aef4ee1f0ba56b10e2ce7ce1387f7a Mon Sep 17 00:00:00 2001 From: deffpuzzl Date: Fri, 1 Jun 2018 13:04:49 +0800 Subject: [PATCH] add increase --- demo/count | Bin 8746 -> 15370 bytes demo/create | Bin 9583 -> 16255 bytes demo/delete | Bin 8577 -> 15145 bytes demo/drop | Bin 7854 -> 14406 bytes demo/extreme | Bin 8800 -> 15432 bytes demo/group | Bin 9564 -> 16244 bytes demo/insert | Bin 8859 -> 16200 bytes demo/insert.c | 3 +- demo/makefile | 2 +- demo/press_demo | Bin 9619 -> 16267 bytes demo/query | Bin 9572 -> 16276 bytes demo/select | Bin 9525 -> 16133 bytes demo/truncate | Bin 7861 -> 14429 bytes demo/update | Bin 8681 -> 15281 bytes src/makefile | 5 ++-- src/stvm.c | 31 ++++++++++++++------ src/tcp.c | 75 +++++++++++++++++++++++++++++++++++++----------- 17 files changed, 87 insertions(+), 29 deletions(-) diff --git a/demo/count b/demo/count index 6d7bd5cd09953957ec345e72fe957502d8869dff..c1076df2fcd20a5e1d43de0cd394b15919c32a30 100755 GIT binary patch delta 6393 zcmZ`-dvILUc|Ye$tG!z79!ZvM3FC)MAT>C)gl%N;^g|C@SdxV#n?M5B`?!)eTJ4Ix zyYhpi*MVe)mdDspGB98oQCu)44^#L9Ff=N0s7WA!1X7a+m79>HGfl%xJB3bWpugXD zcV$ecJJP-9cfR*`zVF<7?(xpQ-gjtKW9uq4|J$tEm8~|bOVmYAZHie7xBunYuhx$* zzx>DdpL{BE&yw5T{N`gjpWb8biY@sJWGs=h<$BcKEcdId={NLZ|1yApoUKvnzKBwp zj$AQY*yXwTp6p0Y{Tfpf@pM*%z5t#I8QFRacl|zOKZ}{N)^{SCh0Kd}B`-f~$F;%^ z$H7@y8A@jhs-iMH0#sp#V!oEU&6~C#s>IC-zeS?1dRS2C1a6qX)V+OF*iPzwGF(lu zhc;n0WLMcUY7OqkOz;oqhs8|ljDp`p4x^x$r-d= zsL4E61<)j**&Kl{RTl_YWgdmjswDzi%^PI9P(ZsmLUl_8%qsH{g_a9CtxP`|R|tAt zneWq7v!FA|Gy(Zl7wH@{&ndH%E?%sQKz~r?YAXG-c>kU= z&;#0Vp{jZW&1iEoOh?pvsp@%#9q}I~%Snz^|f^`&sb907xUQcNiGGTnSZ zfNl0t=0yQ@W{lzfgMcP8$bi46?*@0Xd7frw1_$|gWE9_JHcNmzh z7WNsk3qnR#6TKpg$jHq^KNK1=atV$7NYI=z zM;Xeif{>Aw)cKmop{3f%`D0&*=%P=N^(TVRMS~3CbwTKqZA5PfLZirn{8SJc<$Zen zGu;hwG|II^Zwfl9&2gG|OJYUa{EilWF0^A|Q>4y+);<$)B5dXe&xq0!G2>J4ZSnNk zn7NY?{z7Q8G4l(W_@%xS0;gl&{FiPn)vj0Z& zITE`Sd{KLywGDLBNul-Dcj1*Xx6|SVs~h7=6Q{i^0DRn4{m-eP%~}AV1+RfrSz%vk zeUU1bQN>jvrOcaTyIKg9Dohji;J;ka_pt`Av4$`e`zn+S*w7W=Nwv{GoNfF|=SRSyVgHmB&t4WfFLSxL&E=x#M#3~@-< z+RZaGG%R3Nnfs}Gm++nDQ`-6ll3RZ=MEkp~2jKI9<51OpqkWV0Xf^y?KwURm!S>+M z%I74Jwpj~F`||>#=6`7A7K^J|7X*5%7-=%^(@n=>hMLX4QD%>TqgCej)SZwB{9{q` zeQHk%d?ISzBWp^~@u+!+`dvX!Mope*L>xR3HK&=PQAysjQIjPavz|wwFGS5Ct*6Dw z*{C_h=)Yh+j>%I|qiA7V&}lzvo*>K!d^Kt&=-Y${z8*Dyq-$Bp!kMV~I%zp^W-e+T zC7QIJK(@|CO)CxFW^o5PYs_<`<*nyHyQ>y^wGA8L8L)6h3g#mfz7ECVzfzv~P}SE` zhi6@n`6`=)hFZwAY8_sWm%vCXoY6MRLq+aFM7o;OcH~E#k91(XETTEC8Nzr)WF?%? z(Im$2smNkDrehw!VJmQj0=CcXcwsO>De+AQn394A0!(4SGXcJ{jF&4b3rDs2C463} z-{828ewN=#zZKaGgxMo}n_W~*Cl^q>!aqForA2KNXke*T9Dd+Si@F)x!ndHyI{aC+ zSpS}`ua;+eSyA~lS07o1H{!-AM!K30RqJr3@flQtUQL2^cn>nkm#(HZD6M{s&vvbw z!r-WWoWR%mf?t7dzbm^|b;ZHjJ%InefYwUa>q|^SO@+D8)awPh4$7>>s={1Vb9GHm z1A@3%)zn-EIyREh5Gxw0#Vi(U)Gc@QtqZp_s#fLd?qWy&!BBYjvc__RK*Xm8t za)bW>&{ z{bxj^@gu-rOVP`>WYUS2(PXk^UwfO=wqZ@)O^wA1YclC;igCI9q&%vWLZd#5QArk)toZZ!ov_Tu?5QJI-W0wO$pw zGbylr=kM`@jMeeyt~gC+|}<7_w-5NL+(J%6Me{=|~tdpltw(SbC>X|9%Jk6B0dR3VY+k59Nk ztl0_VWS8f=c`%hYoW1dJx5%VTPHjo0@@ja?*4{1^PbLdan(?7J+BQf+@_RG6Lke1&VjDMEyI!~Bz=gbi7*H9?%p64wuq97JKw4^iIj55M@HOaVZQt5h8Lf5okSe* zpO>R@g$>@=E8&e~;-lU=JeqMYp83`>FMv@NyfqS=vYCGWOAsb z#E=`$qu(-8^SMllmEgIO3vLdjmgA6BJmD1LL5;c{xlAsvQVD*B!n{`q+7jz3W!vXF zJGySd5=f$zvo)7PR?3xw9fv~u``~J@ylhoA(Uwd)?x{>>sOtt`uE!@ocVTu|oIsUN zrYM!z4#$-CftYuo&l{Bml)V!b zi%KsH7PG@?bn<*92iuQ_d|`W(ro243t)oiWd*DiMoclOi_6p?`v)J=e{yM0`?torT zWLSb=+nqyX+{Ka;+zVtc4wlt(OC=_C%(-Hxo6P08%h8uaJUL#RWM8qZxWp{GPFZ7w zI6lOtf=2A#lGQ=i4|0wjtgp9cXqZH7kS>;aXgi+)YHLZxD+Eo41Wt*qpf|)6eMCCW zZJ&Vy9-lvf8{50KbUK|~-PDg=C$3(S7X!SvDaG%ld}s86M;O0Gm7jxml*h8`-76?~ zB=86jj1EH6|LIPC%V9!F4ampA^3Jm!87> z#8BFtcvcEFXr7^iUf@@dk3Ug)^erWl-!10bPF95HVZXHOJoJ7dRXiG(9Tn?7thpZ=ikU{#2pDKx&fH%uRDv~}xreXMc1wI1KUv7$0x{Voq*_^q9%Ei2O^ z4Rrx6TQj|+etC#5ry>;j@`V9mj~2qldBRzKOvP`F5H97{B>dq!^Z7rsJivd(5kh{` zD`SnJ{&_Xkmju%~WfEar`jX9Kd0c0e=iOZ#`x-;zXSYn> zoWK;yJNdlYzsZyMTsIeJG_XzHU?9P{l^P>Vfi}h(G!oPu7;K3d+ zR);n01isF-9ex@Tfp2gf3I7N2-{iVJd>q%nG}lex-@$I+Av)6>ewjM|mg~jg*SUU} z##_U0as3F_E5e7tUkW@<;kBx^Bk;AmU_3HO?Z~VIr@6s&E3!+tk-lxnOkuQ&eQkfW}9w^1m_bdse1Ded(9@z-eXPrqEJ>&M32$jLQUi zLz!o3s#T!#%6wQ2`@zd~4w^40vzRU}*DTJzD{~!{UM1eYuS}4}uMy~v%B*E%tMnuU zK2TeHc7Pv|*Wo z+w?I&$FyOgf>D8{wHc&|?E)RwW&UxllX)BTOr>Ze2!t4!c$~d-V$j6iBm zEQ>AJhbq`c?6B%3P*7!8KMfhHhb-HBAZgtX8=)Pdw-iMFTSK>5;0*r>m(U*Ruz!i@j&TZ7+$@^f{Qe zm(fJs5nK+~kLuF%Ae%2i#(qpvsLWv)u^-nY*ycyP9@msXGrdm*-x5AF(`QM0LTG5F zzb5V5LPIb8FH`XyfzV4$O_l5PY^nHcT9EDAf!jkNoUcz;@%bxhA0fsm28gnlfH$jAVpp9l>Z zSwv$$73hL84??efRv=_#A$7j0`w+jv_F6;M*Mx`-bp=^p7YG~bCWi2aK-e@J2)!u~ z_KXzd9|Xdl`7OQvneKr&_RJze=LC90n`v73M+p@>=p9;k3pCh29x}I6>Cc6DGGtyR zbY7I6tTROl{*y%bOr1H%2>)4Vr|Zn?H1P|4H3ZJonLknKFa2E9nN_5{EztQovy$SFLbVz09XK{q!rjO(lu@Jg9GXt3St;ry*OyJ_%Kgm9$KeT}#E z))ELcyaY;hmHlb!uc)GtDsB)yWzLfAMj=$I5KVjy|Kb+hm|!z)u=W5|_ZLtyU~jj! z;5ae0)Um_j)>bC2Vc+icEt}hzus#7I<`n|{7WZAfxr#zN1!y++Q}uuVt>zTHxLH)M zFb$*(ite@MMus>fY#ru1j4&p^X=T1l-NV9n2KBGf);-AX-0x9hm-R4wZul}(b=+d_ zww|nkpC7PXpS4zt)5ElKt0dAkSCH~K0V3uPv~rt;s={XpbdMNmHovEvj>QbMn%60_ zSAa)?CG$4TCM1O85%VauCk6Ue#Jok;lt51aqJCGPZ%54Sghs@{lM(X*Q#2~cdnRI1 zgvPAr5a_9h8Km{JIC(l^vW)(A>v14ojF{4Y5!@%>nTYuY4Q2#78!<_`HZFp1M9fd< zT2``fK4R`6Eho-gh?x5bO;|rbw%(1HwKRB##R>GTF(*jNTQ7q4#W@(;Hf)5ZX&#u8 zbj(L86h(KO147^r)!aGM;aS5#2W=7>t0A`*J7^=G2g8@a8EvyYRCoj-=o+H!@OOz1 z_hY>z{NJ#zYxiKiEF6LpI+DfueHAt&)ZGc-Xvy+@p@f)j@?lB|tbLf00uT5wg$17W z;jdKSrOHaeQEmPeJ~!z_v|G=UzVd+j+uBZgt@ML@ur19iBr-}juxYHLvH9Pp{|$`G zI{N2of&LX;T`tFYMX>UOs~@}y55vtFT3EhGBzl{lK;`vv60D=0^OrL-S6zT7)E2b) z^tG@F$ePD^$ZNf@bP?h;kNZ%|IneF*WMKT{=EXvATiEJUQqm3F1`!W@6Yy+*PQPJ%O4Tm7gcg~lVbnD0DkE|M%9%1P5N)K~oQh}Io->Rku`stx0w*@V5CgC- zS{i3SVQpHYH$^HDGU(1QZOv=PvyLCOg|f~ESk3~$1+zkb7Kt{_iZz!4A7flNE4L}K zA)-`E83E6zNbxMT)PG{7_5UD1jUNI0wH3X5TPB@o8%-wL4s@({*0-$k`nGg7nJK1RCG6>v549!I1+R=MW4wbON2s>3+_>B3750zM=uk;{Ra=vU z3(6~`Qtrr_F*;K?IN^F&qMIvA^xH&X4E(7I2E2JsR{-E0>dzrzOVbW@-wHWv!XF%?T>wz?xoYENp1dr*x!nf`QU=ZHrQH{~aWC$R7ez=5SJ zm!)K;`v6pBRVJ4mZIuh(b&DmuNIMf_xvX23?RDY3v(G(uK4h^MYo#hy$GY~&g$;2j-{39oQVF29e84h_WfOl)jdpEEezAB*-$yrm&` zAm@obWXlnC$zt9~<}$@`(bZMVOa4;1Vj?46`Yy({^g3NT`?p48PEYSvm`KQ{0sm`& zWRKZK_7sL_e|+3kMaG&PhZALrGZ`=KbBoN@#Qx2xR9?k4Z|Ut;@no{#q!}36VST$~ zB0rhQCHMKUwo5=gX*VO8jd}z7RHi4*RG`S?@%%nFPo3WWt?@!!^`xW*j*}up7OAT= z0_x9<>>TJG+#HjPAiYCuJ_Iz7cPD+Xxhs_PRBJKop~Ku%E9=L)j*Pg;!t7?FelNb? zbrNw8UB@=6gj;T-!CQJIl#xt)wB)T*&bV}N0T~vJ(bNHS5NbCRNB6@75dFpROZRxn z9nYy@Hw!H2J^7s6WnT~h{qamW-)x(M?4sGuyCj4XEl%u5ktP4L$zdmyM}p($UbdIN zBT%?<-Mq2!D2tEw9&&G%Hg#6N6dxmeIO6%yq|67V5{$8Y5qpVKq2x!A=!z%D z(5+ct%sbTQjY2QDect{wAqfDV|{o6X|PRQheE4^_JZ_cPs zDW{l4z^QdSkK8==dnu7&Z-Q-C4v}$&CC51sWD@&z_1togNq-Yp-0CKCdCoZcl87hw z6(=hDjWuT9ZIvn`#(hKFZP19>EmA%f+($j?LsWpAF~msWp{ z@O{J&o8N03CP#9^H-hpB%+C+y;l)Q{e^~SV+TRm=kS>SMk0qC$tb9W*rr-bd%(q+r80HIYMf1$L#Mip=0l=3>&@VXvqxLpL zRBmg&&G_WXX}~ud{}F`m3%=^vamBZa@{B<}rp`8e{K?emJkNCK7pfe+9y$pj%nvfvd8F0v-VD;W3?7BxQ6H`ct`fF*uw zr><>U7N|pUef-5TzD@8;D)`l_@I1^PKj>fj1H;FDS63uz9$xAba#MHATNb!}2H()? z<2Mn1c^C0O@b&W2-_4i#&Re0H zyl2|W3Q#@%mg9f@)Ww#S*2xV|U9;#(YwCiouBuXtkdAq{FD~Dgl)&K2e%H-Av>Vta|1g%A9AL!3^p9b(l!=*WfHcIw0Cos13#9ZXrEhyuZYN!*ah5MEU?4lxO@6mU%ljY(ss?MzcTWg2D@LVv&S z?#j5)*n7`+zW4Lob3fnt=-9nWTMm9&P5o_D9m-Z4)u+_rzu(Yk&HDYRzwzFB?>A2* z9-n{U?78u;*Z+Fs(kJ&>Zzkq`20WJV+47sUH_G!PJ^ph&C%6(oi0*1o>ML=jye+Qh zmfhXHTk0tc71b-)%cpV$;o1bEI$7Cz1W)}!M5!cpYGPCIje_Qnbq#-B@4#=J9lH%` z>gyx9LRr<-$HoBF*^!`8%hTpV+h424!-}0JQb)foP~-$2Vq)DreH6Hj*ssX)O0s=p z19l^J)SjRs9i1Tka$xFjzXv-pZvP1XZ5pzUrg)Grts`=5j}DZIFNO;d5u)OM09)k# zZV=YT+dvihTdwW+^KdcpO|BF1Ca%B5byNH#ej^iH&x(Hly^#lKOl$l(%KSU7=f_{= z`avphi=W~8A+DFk?*e@gd4$X>RYOPQYe%3w@i4U>e-WDrCM@#I_qg21<+JozSx->^ zb9+D>n*jU`EX1`%s_{R7Ivbs?*Wqct1o_b>O(T@K1wYZ*`WPOz=>to24uL>5nfqW< zv_(*@=DSezvxS6< z1bR)GlT_6v&{<_75$KOD)ps@Ky$A) zOjC55z7NoS+AvYk9)TvbxtS`q3v^tYTNsud0-e<6KS|lEmxJ#qZC2CJelc`Xn-7TF zrH^9slvdM!MdbIJ?gD>n^l7>s#J@z6XSi1JHyEsE82~%JihfKoc}*&6uP3L?RL3T; zMGqwB+-0(5_kr4OGdiq(2?W&H^{;}*@<_718=TfL=!oqQxj_{1Z;O4_0%iOo{KRgR z3X6Xg2F4sl!j2EXzSusJG{w(zo#MI`dVdU|)@%^P(z0Aa^>bOo*0m5|&li1@ptctz zLDqOLeh%6X>yy|r4}#AAb|7(6<`5*?j|j##FOcQ9rY)$Te}}>Lqe6!YN)h*%;7~z# z5%;*@P(XFWoe&5GG>^~|0=*9#Cm>C1Ve@TJGsemKoj|VvS>x^a*=Ikkm%$8kKM3q+ zM1?YEXy&s5*d|Y&=LBdnS-ShY0IeoXhyOu;8Psj&2h=<%z@$<$>dEzw`X%hn`~}t% zi|kYSJuJ+C6#(^P-3*j6B?^2&1a_EC>ivmWKdB7uvQG?qS0(8?j3>7Hk#G+_h0n?LfE-R zvzHovr5ECH?gn!MWuDUkGxnPs%-tk?S5o$c_2$1Q^w*l@a(umtG5QoD9TyAXXsimO zlwKzJzv`<&)|doc!d_)<1>Rgsrq$MWVU;o?)VRj##=735sPAg48~MjMKI04@Ypt1J zn)wb;^>y|&)?ZLWGeul0T*|ybvg-sdlY1G^+0&R19z<~7$lrXOl=(pH+P3Cek?G&KZoTlhq0<@V^wBkk)z0_Pq z%z(&VX;#t2K_Tlf7_mG-5t$F{@3XqqmBZR`WZW=~#?Vn>j?Ihinb)BDd^k6`mu!u)~Ieu0A13G*-&dIG+bFgMe-yfD6&Fdx#i zf<)nL!hD{%q8M{7VeTa~YCVc*y_+yAsqi+7_57|e-zKhP{Sde>PRFdap(8c{67ERB ze5_*Y>HmwhjX$ax(<#HZwxejGHWAGY;9IG6Y&Bj2;~Qa&wpku3{ss7;r*Yekzs>!4 zC)Nw%Gq`RT#ClQOzzChlVEw*|&w*jO(FbtU3QZwHAhyg3H^?Qh4qOC(Z8dBWpaquIBV~<`hJ5~;Fb(sTgFq=I_kANhSck2L|8}nA#{ApYW)Z#(;ner zuJt9q#EyMl2Gg`UHGLmIAwmDwXq29zKV_O5>dZVdL(kMr5Ngd)b>`ZJ>l%8R(KJg` zL&JLDF(0Z+Bq}l;yT}(Gq>5?X)2y+uFI7Fw?LbXy)(s65!rge|l*Eok_}|d-31s2| z5;LS(*BN1qkkM3ek)CEUPOn*pzMCQx4Ku135TdCC7lC#W(mVwU>8urj-jJwyNT)Z( zscZI{DI+Z;Y0io%s!u0+nlI3`L@uIhy}-61aeYFmOR5_%g>uy8$g8D(iDheKKi z8e59#Zm;;Ib}yH1AI@aj4|c3|)~;DzaBgMSi?w7~%QzBH>^#a_qR%Bp;^2^z*JG5ei#*`0@x;~aD)7lbc zG+G`hxv6Yz2S}KkD}oNSU-ru-tWa}M5iTIHhD8xrwO*)e()QxFFj_Y^KW7EmX6t(V zn`O@eJihk{?3R4zwu)PEv%se}mCKnCl}zL2I)pfO zXLq=V)Uf0A=e(UmJ|%1|jqV=B!Y^YFB%Q?qIlZof5LHlKu`t}`6$AY8dRoEN*BKot z7ThXtuM0Pv{q7;SMIn^$4COqxP$WfP>fk`}zy+^d2zQ*(RCcwhbbDEl{mG>oT!ZCQ znF>bz@=e9keyjrj@UB#e5l`;va|U+zCwuxN5QFZnqA&6hMn}YFDkUdV^eTDDLT9BU zfz1{xX-}*UO-^p^bvk$UZ|O-o-Mw3&BHf9&!wF_jqRBKMnyQ@k`h!&74V^FK5hQ*A z08y2~Igr}#Rv5(5u}#@*NhLRJ?(I^kOs4GQ=r5{e?HUPC>3~Dum%kN;qIL4 zWouzZlq&@vrQv2J++KH%0qfZrIQdj*Ka?^kV_QKfRTlrSL)gDh3JxvS(J2wh>jC@H~)=X5m-(@&KT50zk5&u(^V>APNYi185su* z9SD=93VMV-ghr=3Q$c0~G<1;mSbQMcQ-q70U70*PUM6su zP~WWo@*ZkSva+!m&n&h8&%A3-8!wuE=U4TFy{)fe>k z3?_-h6m*f`!EK!UYIBvxFNf`hNRElFa1=;nXd~isVMvCp?DNOA7DCmh4P4ToL8?-`#wM|p{@ z29jSOE^0W%n=Q^wW*xUz_8;4EDpb7WR*zL)P5*yBc>xU%Ti!WqlBZ4^-n^>woA*25 zKXIzz?xAYM%=-qhYx|tqH0R|beBB_K^Dy0g; zD1$0ET1gjhs7=8+e$cLwrqd;NtOns7&#kTTDpgxT01ps<{8F>&$%9Qtq7i;@;HUHE z@un7AuN=Q>Zu9twrbL7vvSojo%WD+=+NW>}YPk4UtGKR)@ncO3Bg>``Z_N#v_Gv+^ zn?hW}&!YIdLJ*7jT?qg1#rWdC%z_a9@96lk#KK7b6n}C_hr@BkYSpZN&0>N z-IZ;!Gkfp(-|utpxle6+Y2wJr#;q&V+;6LDQ?}ZwR;cCQ+7hwqH>N-GfAGTmlXHVccvp43WS>0cy?H8GoQrpeFM~ z0Hh`Xn$2nkaBL7Am=@j6|Eou4bSjY@w-z!Sr_EY&ZqfH3|LTY~EK^{+ zeh3l|X~RMVdIXx$CQ1`K1UjkBAS2u<&?#;HjhwxD737}L<_0?2FOJS?^FC<<`Y4cR zwW@iG#J{RN4Ed(OnJl2t7s*k2mTMJyoymHR39v)g)4N#~uT}-@&6KoR>fj7ej6iBm zEQ>AJM=IDlOjy+tDDc@;FG0qNlVwLYB(1N&MsTO-y&KEs;ODF=fjf9b$C1wsQYAm@_;y$>H}ply~Y4&N3v|BDoTO1AzAmBlrOV+;^5L48}5MCDuld_S}4+X-YNI~8Z z2!rzP^!i7-8{!z0HH6+2=!7=MXyV5bE5_y*wD6YDP6o{wb^e3UPL+b@EWz`l^i;&$ zMZvel(`O>4$O!*YXtNRX8cn>TIUnaD#?P4E^>Pt0?WFxgpz{&4k+gr(A41uMh#8=T zf7Vyyc43ogrOpddqkq{{GWU}8qJV$2*?dS(f2!FoCpW7gyMjujb%Guo2$o^A(wk)e znO+CB$N>1l_FC&!(9L=Z-DEutuarsCVyo4Sb(I;Ty>$ZEYJTY_)Ue)K0HFnMf>hgen!Ji7((^>F6)Bn{Kg&fQozpN(Ss5)&@L7OprQuTAXKP zCTO|WvutwASD#g)Q(?m?w)-v4U9DM8pH^Wf))EZ1kO zRWPQ^AzHaz5^0-jNcpS)VWUX-oW-ivdV$^{Mw-m8>84{bL(S$j%Ip{5M8LdFvoVR_ zWY~P)!v1H+1$;bg-Xv>6pl^iDdyK*r=!vkIA~Yfno(h{YOwp*M@|m#NPiV|KgFv4P zn?YJnij%Wpb1$R6(|QcZvtjcAp>cuEh0U=lJb&zzfUky)L*LRO_AXq)Y!LVTj?c|_ZxH;4~)V0~4{ z=DKt!K7oY3Jo*6*v(Rd7s4@&Jxno+}g(SL#b1f>MIe9!yDr2RxX<0?&Bxy%qRs zWkunrHt)dadcB)=Yw2g@t#qBem0l}-jBm3IwRCa;#eGL-e!t=75`(GxF@&w7pH>U? zf6>)6$)bTB==~rNx_ZT1MS}*z; zF!p=0G0pRx5AO$f84LPPYo+HyM_skgEHU%-0$mHG)>H6-BSl&uT$04n?c9^ zP+p=?{u*FWFW$%%)VilmV_{#Tdg@w0npdZ*tEq(8P-ISHTSTeqM$$@UV)zmfdq|!3 z84>hT(3ENZo;nKFR6N7n%`u9F`DF?iG1Nly!@4M`n*)Wlezo2bMu4>6Q^%mUhG?sy zbqwB{Ri?Ev>6tS8r%ZX5y)0!d1dv23lgtLjFoj ze(FkuY8lI>-Ijb|GCik4C2-7I9ft!Yl`kX`?#Svf1%C=t6K)<$G-+jtCYmUW<=kkZ zf&mfECbQr}=NIyY99HN!81NR*SfQc?tjZ+#YPG%mZEURD>ZZNxzDMj*?|YN`EDQN? zob1SmQ&5hRPabmBQ2X#?T6OgGCiB3>$9N1(JE>c9+2X`tHd_FYKh&Q^KFBU|(NuCY zqn!L$HdlxhN66kajEI!ev&&%w&O{-nZtdUG+|ev4ZC<-(`h)P|lH&|*cLui&4|a7? zs5_TU^FEw&T`}c2nVfSVmn^usymMF4ExL(H2GdTgy-r9MgGj3V7*F{v$ zxI2X?sf7BSkz~rvWXaJNJvf*>a4AR^${lASnz%_7yHg3Uk!z?BEl}Y^zHnPMH%>)| z2BJCUyEMGF&l%j)KitzN@ejEJ*}UjO79CL+FXo(hHdRcEu8v|(@|wsNV=3{{b8&cE zuhX%szq4o9>F(`>iC72H4yRc>Ng}I&B&tFz)gMi}UaX}|8cE@)A53Kq=RkDaEi!2n zlkJH_P7Swj>+Mp}c)Z{w86TQueXArScOaFGj{}8}TP3dUq?<~pOIa;u^5_gV(aiLw zx|2*0S|T0Ijl*WTgrrP%Mhj8ZosiNvPJ$45r0UW)j>9zV8t58qAC@#B=|k*PggKCN z4|uU~NR)J7^A%QE?U4~Tj(kIFK04_-v1lHxiPkF31zql~!P|NzqLEZ|G{06kX|_2u z^dt_Vk5Iv(C}zV$^cT~YPk6#jOH=gZ2gcPNHv=m8WNNs8-e}76RGMdsy;Ne7QB%qD zrJz~(^5{EWj%CWcIk;4x{8+k&wMI7&xw|Di)`Pr=w7UmYqo>j^X=iE(2I+`9!q#KQ z>?sX(4LUvj-MdH_OpcBf)JQ6ezKIRF(Hv&WnP5L=Qwdf*?{W%K+!xB@#U(p7?G&P3 zKe`>+R5qs)F=;B!j5mUw!H!*h&d#oVFfR#KC1+bUi>y?-1e*=I!kOxWt6nMDHyoJu zR5F@Zsnk%{Zu)?F@HQ+~(ZLf5vc6&u)5RH5K#YEM>IZ$Zp=^#@qPJGsh@0{(y95vU@pcmeThZmVoLyxPNzp)vTo4*&Jjn;Jf0{e0c&I~$&|rZ4C!pHD4; k)dt*`mhV@U?^l=a%gXm=-m84-8Z~_+RDXJD)0YDO56g=`uK)l5 delta 133 zcmX?Bu+DaZhPVJ90~|OoSTJxfI55aDNN=>~WfIBs;Sqcw@Zl&+__>y>|Me^xe==um zPGDNgHTj|PzsW*8uA3WF8`vfv(3Rli<%O8?Z}LJ_`AK>bq7y_R0teV2v@DR)pRB8= S%@iQBIZAIG)8-9^)7St2OCme~ diff --git a/demo/extreme b/demo/extreme index 9aefbee0a1c1e6566c1e50a92247df4f0ae89493..e5227b4098cb6f41f734ba5b659fb336324670a8 100755 GIT binary patch literal 15432 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 diff --git a/demo/group b/demo/group index bc259e10fdcd068b78cf987af23b9b73b8d7e47c..91389a24b3ef839ac1b774e154d7c14f270e3e1a 100755 GIT binary patch delta 6970 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 lPL`+aSa31fJP;e-l;SG0Y!R! zZ-7KSI?s7@9)IBsQq+2ACa-4MXWz|eUBB*6ue=sXA(o&XZ|=#{l*0#evU**GvEv`o_ut diff --git a/demo/insert b/demo/insert index 18a0ec17e8a8d5c9049918c785a3ff9a1eb46aa9..d4c42b5ecf3557bbac4cb60c6ec9fa53be5e8ad8 100755 GIT binary patch literal 16200 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 BS-AiJ delta 133 zcmeCKpX@zBL;Qj;0~|OoSTJxfI55aDNN=>~WfJ*!ZARX;An(nx``+hdbqoJ2eP+FR za{^PYz$C4IlY{tNH!sj`V4M8FSc3Dc5X6vwlMiakPgXFI5Dk!qh-9!sXjveoKiStr Tn`wvA<|>nQOq(y5?`8)86ow_! diff --git a/demo/query b/demo/query index f9623c72294f34d31a0d7e50487310a4b358fcef..94f7f89bc7da157291e95af24378b67b0627ffab 100755 GIT binary patch delta 6468 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 delta 133 zcmbPI|HNy8hWH6#1~_nFuwdX|aA1&Qkltv|%OtYKnsw^6ExQ?PO%MN=D;Zz-q+p-@ z<^-lxfyoA1|0aLpbKQJFyMb-8fQba>Q6Y#a|0aLbmY*D8A|dJ_4G{@ohtRS>N`G># Ti8j*=rOm5M)-i3en8FSKs*EHV diff --git a/demo/select b/demo/select index 32d4b839455617e2b3a5b4c8abbfc4e914759b65..8fc7fba6d7161b74e85ebe1105a909b74494ecce 100755 GIT binary patch delta 6486 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 CYfA~WfFP4s;=uq6XT_n`3DbisNLP+xa;EE z%?V7g0+UZ_{+qms*L8D-b_3hw6~+>ij5wJ7F-$&XY$oa;4KdGx9YV_jDgDW!CfZCD QN}HWb)-i3KVV=tl08qUoS^xk5 diff --git a/demo/truncate b/demo/truncate index b9664f64b8c21e817a8b4d352acc96f5d6f8079d..4650decda9c3514c51d23b7b242df366b89c144f 100755 GIT binary patch delta 6453 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 WZ{@wVMqQyMkA)l0ENlK;@c#j~(nJve delta 133 zcmcaxu+?^ghPVJ90~|OoSTJxfI55aDNN=>~WfJ+}67WH|Bq*#|MC8=Tt$$*VI98W$ zPGDNgHTjeBzsW*8uA3*QHn2^;pew=2%L_5(-{g&|@{mtkm diff --git a/demo/update b/demo/update index f64f5a02493139c8a3b01ddbe801bcc9413eed92..04ffe705be5c64ca64ab2a0cce2b8081c751f751 100755 GIT binary patch delta 6479 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 ALLOC_CMD_LEN) + return ; + strcat(g_stCustom.m_pszWord, supper(pszTable)); + strcat(g_stCustom.m_pszWord, ","); + + g_stCustom.m_lWord = lgetstrnum(g_stCustom.m_pszWord, ","); + return ; +} + /************************************************************************************************* description:create table by file parameters: @@ -1067,7 +1087,7 @@ long lCreateByFile(char *pszFile) return RC_FAIL; fprintf(stdout, "---(%s) was created ---\n", szTable); - + vAppendTabList(szTable); TFree(pszCreate); return RC_SUCC; @@ -3770,15 +3790,8 @@ void vInitTableList(SATvm *pstSavm, bool bRmt) return ; for(i = 0, lRet = strlen(g_stCustom.m_pszWord); i < lRows; i ++) - { - lRet += strlen(pstIndex[i].m_szTable) + 1; - if(lRet > ALLOC_CMD_LEN) - break; - strcat(g_stCustom.m_pszWord, pstIndex[i].m_szTable); - strcat(g_stCustom.m_pszWord, ","); - } + vAppendTabList(pstIndex[i].m_szTable); - g_stCustom.m_lWord = lgetstrnum(g_stCustom.m_pszWord, ","); TFree(pstIndex); return ; } diff --git a/src/tcp.c b/src/tcp.c index 682bb37..6c3846e 100644 --- a/src/tcp.c +++ b/src/tcp.c @@ -1339,7 +1339,8 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat else { lData = pstFace->m_lDLen + sizeof(TFace); - pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lDLen = pstSavm->m_lEType; } lSendBuffer(pstCon->m_skSock, (void *)pstFace, lData); @@ -1347,8 +1348,12 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat case OPERATE_QUERY: if(RC_SUCC != lQuery(pstSavm, (size_t *)&pstFace->m_lRows, (void *)&pvOut)) pstFace->m_lErrno = pstSavm->m_lErrno; + else + { + lData = pstFace->m_lDLen * pstFace->m_lRows; + pstFace->m_lDLen = pstSavm->m_lEType; + } - lData = pstFace->m_lDLen * pstFace->m_lRows; if(sizeof(TFace) != lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace))) { TFree(pvOut); @@ -1359,14 +1364,29 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat TFree(pvOut); return RC_SUCC; case OPERATE_REPLACE: + pstSavm->m_bWork = pstCon->m_bWork; + pstSavm->m_pstWork = pstCon->m_pstWork; + if(RC_SUCC != lReplace(pstSavm, pvData)) + pstFace->m_lErrno = pstSavm->m_lErrno; + else + { + pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lDLen = pstSavm->m_lEType; + } + pstCon->m_pstWork = pstSavm->m_pstWork; + lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); + return RC_SUCC; case OPERATE_UPDATE: pstSavm->m_bWork = pstCon->m_bWork; pstSavm->m_pstWork = pstCon->m_pstWork; if(RC_SUCC != lUpdate(pstSavm, pvData)) pstFace->m_lErrno = pstSavm->m_lErrno; else - pstFace->m_lRows = pstSavm->m_lEffect; - pstCon->m_pstWork = pstSavm->m_pstWork; + { + pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lDLen = pstSavm->m_lEType; + } + pstCon->m_pstWork = pstSavm->m_pstWork; lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); return RC_SUCC; case OPERATE_DELETE: @@ -1374,12 +1394,20 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat pstSavm->m_pstWork = pstCon->m_pstWork; if(RC_SUCC != lDelete(pstSavm)) pstFace->m_lErrno = pstSavm->m_lErrno; + else + { + pstFace->m_lDLen = pstSavm->m_lEType; + pstFace->m_lRows = pstSavm->m_lEffect; + } pstCon->m_pstWork = pstSavm->m_pstWork; - pstFace->m_lRows = pstSavm->m_lEffect; lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); return RC_SUCC; - case OPERATS_REPLACE: + pstSavm->m_bWork = pstCon->m_bWork; + pstSavm->m_pstWork = pstCon->m_pstWork; + if(RC_SUCC == lReplace(pstSavm, pvData)) + pstCon->m_pstWork = pstSavm->m_pstWork; + return RC_SUCC; case OPERAYS_UPDATE: pstSavm->m_bWork = pstCon->m_bWork; pstSavm->m_pstWork = pstCon->m_pstWork; @@ -1405,7 +1433,7 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat pstFace->m_lErrno = pstSavm->m_lErrno; else pstFace->m_lRows = pstSavm->m_lEffect; - pstCon->m_pstWork = pstSavm->m_pstWork; + pstCon->m_pstWork = pstSavm->m_pstWork; lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); return RC_SUCC; case OPERATE_TRCATE: @@ -1418,6 +1446,8 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat case OPERATE_COUNT: if(RC_SUCC != lCount(pstSavm, (size_t *)&pstFace->m_lRows)) pstFace->m_lErrno = pstSavm->m_lErrno; + else + pstFace->m_lDLen = pstSavm->m_lEType; lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace)); return RC_SUCC; @@ -1431,7 +1461,8 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat else { lData = pstFace->m_lDLen + sizeof(TFace); - pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lRows = pstSavm->m_lEffect; + pstFace->m_lDLen = pstSavm->m_lEType; } lSendBuffer(pstCon->m_skSock, (void *)pstFace, lData); return RC_SUCC; @@ -1479,8 +1510,12 @@ long lEventOperate(SATvm *pstSavm, SKCon *pstCon, TFace *pstFace, char *pvDat case OPERATE_GROUP: if(RC_SUCC != lGroup(pstSavm, (size_t *)&pstFace->m_lRows, (void *)&pvOut)) pstFace->m_lErrno = pstSavm->m_lErrno; + else + { + lData = pstFace->m_lDLen * pstFace->m_lRows; + pstFace->m_lDLen = pstSavm->m_lEType; + } - lData = pstFace->m_lDLen * pstFace->m_lRows; if(sizeof(TFace) != lSendBuffer(pstCon->m_skSock, (void *)pstFace, sizeof(TFace))) { TFree(pvOut); @@ -4002,6 +4037,7 @@ long lTvmSelect(SATvm *pstSavm, void *pvOut) return RC_FAIL; pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; if(pstSavm->lSize != lRecvBuffer(pstSavm->m_skSock, (char *)pvOut, pstSavm->lSize)) { pstSavm->m_lErrno = SOCK_COM_EXCP; @@ -4083,6 +4119,7 @@ long lTvmQuery(SATvm *pstSavm, size_t *plOut, void **ppvOut) *plOut = pstFace->m_lRows; pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4406,11 +4443,12 @@ long lTvmDelete(SATvm *pstSavm) return RC_FAIL; } - pstSavm->m_lErrno = ((TFace *)pstRun->pstVoid)->m_lErrno; + pstSavm->m_lErrno = pstFace->m_lErrno; if(0 != pstSavm->m_lErrno) return RC_FAIL; - pstSavm->m_lEffect = ((TFace *)pstRun->pstVoid)->m_lRows; + pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4474,11 +4512,12 @@ long lTvmUpdate(SATvm *pstSavm, void *pvData) return RC_FAIL; } - pstSavm->m_lErrno = ((TFace *)pstRun->pstVoid)->m_lErrno; + pstSavm->m_lErrno = pstFace->m_lErrno; if(0 != pstSavm->m_lErrno) return RC_FAIL; - pstSavm->m_lEffect = ((TFace *)pstRun->pstVoid)->m_lRows; + pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4528,7 +4567,7 @@ long lTvmReplace(SATvm *pstSavm, void *pvData) vBuildPacket(pstRun->pstVoid, pstSavm->pstVoid, &pstSavm->stCond, &lWrite); vBuildPacket(pstRun->pstVoid, pvData, pstCond, &lWrite); - pstFace->m_lRows = lWrite - sizeof(TFace); + pstFace->m_lRows = lWrite - sizeof(TFace); if(lWrite != lSendBuffer(pstSavm->m_skSock, (void *)pstRun->pstVoid, lWrite)) { @@ -4542,11 +4581,12 @@ long lTvmReplace(SATvm *pstSavm, void *pvData) return RC_FAIL; } - pstSavm->m_lErrno = ((TFace *)pstRun->pstVoid)->m_lErrno; + pstSavm->m_lErrno = pstFace->m_lErrno; if(0 != pstSavm->m_lErrno) return RC_FAIL; - pstSavm->m_lEffect = ((TFace *)pstRun->pstVoid)->m_lRows; + pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4682,6 +4722,7 @@ long lTvmGroup(SATvm *pstSavm, size_t *plOut, void **ppvOut) *plOut = pstFace->m_lRows; pstSavm->m_lEffect = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4742,6 +4783,7 @@ long lTvmCount(SATvm *pstSavm, size_t *plCount) return RC_FAIL; *plCount = pstFace->m_lRows; + pstSavm->m_lEType = pstFace->m_lDLen; return RC_SUCC; } @@ -4809,6 +4851,7 @@ long lTvmExtreme(SATvm *pstSavm, void *pvOut) if(0 != pstSavm->m_lErrno) return RC_FAIL; + pstSavm->m_lEType = pstFace->m_lDLen; if(pstSavm->lSize != lRecvBuffer(pstSavm->m_skSock, (char *)pvOut, pstSavm->lSize)) { pstSavm->m_lErrno = SOCK_COM_EXCP;